Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update lampy #1

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions lampy/__init__.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# -*- coding: UTF-8 -*-

from .lexeme import *
from .ast import *
from .datatypes import *
from .syntax import *
from .compatibility import *
from .semantic import *
from .codegen import *
from .lambdify import *
from .utilities import *
from .printing import *
from .interface import *
from lampy.lexeme import *
from lampy.ast import *
from lampy.datatypes import *
from lampy.syntax import *
from lampy.compatibility import *
from lampy.semantic import *
from lampy.codegen import *
from lampy.lambdify import *
from lampy.utilities import *
from lampy.printing import *
from lampy.interface import *
11 changes: 8 additions & 3 deletions lampy/ast.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
# coding: utf-8

import random
import string
from sympy import Symbol, Tuple, Dict, Lambda

from pyccel.ast.basic import Basic
from pyccel.ast.core import FunctionCall, FunctionDef
from pyccel.codegen.utilities import random_string
from pyccel.ast.core import FunctionCall, FunctionDef


#=========================================================================
def random_string(length):
letters = string.ascii_lowercase
return ''.join(random.choice(letters) for i in range(length))

class BasicMap(Basic):
"""."""
_name = 'BasicMap'
Expand Down
54 changes: 37 additions & 17 deletions lampy/codegen.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

import os
from os.path import join, dirname

import string
import random
from sympy import Symbol, Lambda, Function, Dummy
from sympy import Tuple, IndexedBase, Indexed
from sympy.core.function import AppliedUndef
Expand All @@ -12,12 +13,13 @@
from sympy import FunctionClass


from pyccel.codegen.utilities import random_string
#from pyccel.codegen.utilities import random_string
from pyccel.ast.utilities import build_types_decorator
from pyccel.ast.core import Slice
from pyccel.ast.core import Block
from pyccel.ast.core import Variable, FunctionDef, Assign, AugAssign
from pyccel.ast.core import Return, Pass, Import, String
from pyccel.ast.core import For, Range, Len, Print
from pyccel.ast.core import For, Range, Len, SymbolicPrint
from pyccel.ast.datatypes import get_default_value
from pyccel.ast.datatypes import NativeInteger, NativeReal, NativeComplex, NativeBool
from pyccel.ast.basic import Basic
Expand All @@ -27,15 +29,19 @@
from pyccel.ast.parallel.openmp import OMP_NumThread
from pyccel.ast.parallel.openmp import OMP_Reduction

from .datatypes import TypeVariable, TypeTuple, TypeList
from .semantic import Parser as SemanticParser
from .lexeme import _internal_applications
from .lexeme import _math_functions
from .lexeme import _internal_map_functors
from .ast import Call
from .ast import BasicMap
from lampy.datatypes import TypeVariable, TypeTuple, TypeList
from lampy.semantic import Parser as SemanticParser
from lampy.lexeme import _internal_applications
from lampy.lexeme import _math_functions
from lampy.lexeme import _internal_map_functors
from lampy.ast import Call
from lampy.ast import BasicMap

#========================================================================
def random_string(length):
letters = string.ascii_lowercase
return ''.join(random.choice(letters) for i in range(length))

# TODO improve or copy from pyccel.parser
def _get_name(i):
if isinstance(i, Symbol):
Expand Down Expand Up @@ -150,19 +156,29 @@ def _get_default_value(var, op=None):
raise NotImplementedError('TODO')

#=========================================================================

class Types (Function):
def __new__(cls, *args):
return Basic.__new__(cls, *args)
#=========================================================================
class LambdaFunctionDef(FunctionDef):

"""."""
def __new__( cls, name, arguments, results, body, **kwargs ):
generators = kwargs.pop('generators', {})
m_results = kwargs.pop('m_results', [])

obj = FunctionDef.__new__(cls, name, arguments, results, body, **kwargs)
obj._generators = generators
obj._m_results = m_results


return obj

def __init__(self, name, arguments, results, body, **kwargs):
generators = kwargs.pop('generators', {})
m_results = kwargs.pop('m_results', [])
super().__init__(name, arguments, results, body, **kwargs)
self._generators = generators
self._m_results = m_results

@property
def generators(self):
return self._generators
Expand Down Expand Up @@ -422,7 +438,11 @@ def __new__( cls, block, **kwargs ):
# ...

# ...
body = [OMP_Parallel( clauses, variables, body )]

body = [Block( 'function' , variables, body )]



# ...

# TODO this is a hack to handle the last comment after a loop, so that
Expand Down Expand Up @@ -769,6 +789,7 @@ def __init__(self, parser, **kwargs):
self._typed_functions = parser.typed_functions
self._default_type = parser.default_type
self._generators = {}

# ...

# ...
Expand Down Expand Up @@ -1386,9 +1407,7 @@ def _visit_LampyLambda(self, stmt):
# decorators = {'types': build_types_decorator(args),
# 'external_call': []}

decorators = {'types': build_types_decorator(args),
'external': []}

decorators = {'types': Types(*build_types_decorator(args))}
tag = random_string( 6 )
name = 'lambda_{}'.format( tag )
# ...
Expand All @@ -1399,6 +1418,7 @@ def _visit_LampyLambda(self, stmt):
generators = self.generators,
m_results = m_results )


def _visit_Integer(self, stmt):
return stmt

Expand Down
8 changes: 6 additions & 2 deletions lampy/datatypes.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-

import random, string
from sympy import Tuple, IndexedBase

from pyccel.ast.basic import Basic
from pyccel.ast.core import Variable, For, Range, Assign, Len
from pyccel.codegen.utilities import random_string
#from pyccel.codegen.utilities import random_string


#=========================================================================
def random_string(length):
letters = string.ascii_lowercase
return ''.join(random.choice(letters) for i in range(length))

class BasicTypeVariable(Basic):
_tag = None

Expand Down
21 changes: 13 additions & 8 deletions lampy/interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

import os
from os.path import join, dirname

import random
import string
from sympy import Symbol, Lambda, Function, Dummy
from sympy import Tuple, IndexedBase
from sympy.core.function import AppliedUndef
Expand All @@ -12,7 +13,7 @@
from sympy import FunctionClass


from pyccel.codegen.utilities import random_string
#from pyccel.codegen.utilities import random_string
from pyccel.ast.utilities import build_types_decorator
from pyccel.ast.core import Slice
from pyccel.ast.core import Variable, FunctionDef, Assign, AugAssign
Expand All @@ -23,14 +24,18 @@
from pyccel.ast.numpyext import Zeros
from pyccel.ast.basic import Basic

from .datatypes import TypeVariable, TypeTuple, TypeList
from .semantic import Parser as SemanticParser
from .lexeme import _internal_applications
from .lexeme import _math_functions
from .lexeme import _internal_map_functors
from .codegen import BasicGenerator, Shaping, LambdaFunctionDef
from lampy.datatypes import TypeVariable, TypeTuple, TypeList
from lampy.semantic import Parser as SemanticParser
from lampy.lexeme import _internal_applications
from lampy.lexeme import _math_functions
from lampy.lexeme import _internal_map_functors
from lampy.codegen import BasicGenerator, Shaping, LambdaFunctionDef

#=======================================================================================
def random_string(length):
letters = string.ascii_lowercase
return ''.join(random.choice(letters) for i in range(length))

def compute_shape( arg, generators ):
if not( arg in generators.keys() ):
raise ValueError('Could not find {}'.format( arg ))
Expand Down
Loading