projects
/
fur
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added lambda expressions
[fur]
/
generation.py
diff --git
a/generation.py
b/generation.py
index
b2e191e
..
6c1cf0b
100644
(file)
--- a/
generation.py
+++ b/
generation.py
@@
-33,21
+33,20
@@
def generate_structure_literal_expression(expression):
expression.value_list_variable,
)
expression.value_list_variable,
)
+def generate_lambda_expression(expression):
+ return '(Object){{ CLOSURE, (Instance)(Closure){{ environment, user${}$implementation }} }}'.format(
+ expression.name,
+ )
+
def generate_list_construct_expression(expression):
return 'List_construct({})'.format(expression.allocate)
def generate_list_construct_expression(expression):
return 'List_construct({})'.format(expression.allocate)
-def generate_list_get_expression(expression):
- return 'List_get(&{}, {})'.format(
- generate_expression(expression.list_expression),
- generate_expression(expression.index_expression),
- )
-
def generate_expression(expression):
return {
transformation.CFunctionCallExpression: generate_function_call,
transformation.CIntegerLiteral: generate_integer_literal,
def generate_expression(expression):
return {
transformation.CFunctionCallExpression: generate_function_call,
transformation.CIntegerLiteral: generate_integer_literal,
+ transformation.CLambdaExpression: generate_lambda_expression,
transformation.CListConstructExpression: generate_list_construct_expression,
transformation.CListConstructExpression: generate_list_construct_expression,
- transformation.CListGetExpression: generate_list_get_expression,
transformation.CStringLiteral: generate_string_literal,
transformation.CStructureLiteralExpression: generate_structure_literal_expression,
transformation.CSymbolExpression: generate_symbol_expression,
transformation.CStringLiteral: generate_string_literal,
transformation.CStructureLiteralExpression: generate_structure_literal_expression,
transformation.CSymbolExpression: generate_symbol_expression,
@@
-141,7
+140,10
@@
def generate_if_else_statement(statement):
return generated_if_clause + generated_if_statement_list + generated_else_statement_list
def generate_function_declaration(statement):
return generated_if_clause + generated_if_statement_list + generated_else_statement_list
def generate_function_declaration(statement):
- return 'Environment_set(environment, "{}", (Object){{ CLOSURE, (Instance)(Closure){{ environment, user${}$implementation }} }});'.format(statement.name, statement.name)
+ return 'Environment_set(environment, "{}", (Object){{ CLOSURE, (Instance)(Closure){{ environment, user${}$implementation }} }});'.format(
+ statement.name,
+ statement.name,
+ )
def generate_list_append_statement(statement):
return 'List_append(&{}, {});'.format(
def generate_list_append_statement(statement):
return 'List_append(&{}, {});'.format(