projects
/
fur
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Start working on the interpeter
[fur]
/
desugaring.py
diff --git
a/desugaring.py
b/desugaring.py
index
47dfe6f
..
f3c7728
100644
(file)
--- a/
desugaring.py
+++ b/
desugaring.py
@@
-2,6
+2,14
@@
import collections
import parsing
import parsing
+DesugaredBuiltinExpression = collections.namedtuple(
+ 'DesugaredBuiltinExpression',
+ (
+ 'metadata',
+ 'symbol',
+ ),
+)
+
DesugaredFunctionCallExpression = collections.namedtuple(
'DesugaredFunctionCallExpression',
(
DesugaredFunctionCallExpression = collections.namedtuple(
'DesugaredFunctionCallExpression',
(
@@
-80,6
+88,14
@@
DesugaredSymbolExpression = collections.namedtuple(
),
)
),
)
+DesugaredSymbolLiteralExpression = collections.namedtuple(
+ 'DesugaredSymbolLiteralExpression',
+ (
+ 'metadata',
+ 'symbol',
+ ),
+)
+
DesugaredAssignmentStatement = collections.namedtuple(
'DesugaredAssignmentStatement',
(
DesugaredAssignmentStatement = collections.namedtuple(
'DesugaredAssignmentStatement',
(
@@
-152,13
+168,13
@@
def desugar_infix_expression(expression):
if expression.operator == '.':
return DesugaredFunctionCallExpression(
metadata=expression.metadata,
if expression.operator == '.':
return DesugaredFunctionCallExpression(
metadata=expression.metadata,
- function=Desugared
Symbol
Expression(
+ function=Desugared
Builtin
Expression(
metadata=expression.metadata,
symbol='__field__',
),
argument_list=(
desugar_expression(expression.left),
metadata=expression.metadata,
symbol='__field__',
),
argument_list=(
desugar_expression(expression.left),
-
DesugaredStringLiteralExpression(string=expression.right.symbol
),
+
desugar_symbol_literal_expression(expression.right
),
),
)
),
)
@@
-179,7
+195,7
@@
def desugar_infix_expression(expression):
return DesugaredFunctionCallExpression(
metadata=expression.metadata,
return DesugaredFunctionCallExpression(
metadata=expression.metadata,
- function=Desugared
Symbol
Expression(
+ function=Desugared
Builtin
Expression(
metadata=expression.metadata,
symbol=function,
),
metadata=expression.metadata,
symbol=function,
),
@@
-203,7
+219,7
@@
def desugar_lambda_expression(expression):
def desugar_list_item_expression(expression):
return DesugaredFunctionCallExpression(
metadata=expression.metadata,
def desugar_list_item_expression(expression):
return DesugaredFunctionCallExpression(
metadata=expression.metadata,
- function=Desugared
Symbol
Expression(
+ function=Desugared
Builtin
Expression(
metadata=expression.metadata,
symbol='__get__',
),
metadata=expression.metadata,
symbol='__get__',
),
@@
-221,7
+237,7
@@
def desugar_list_literal_expression(expression):
def desugar_negation_expression(expression):
return DesugaredFunctionCallExpression(
metadata=expression.metadata,
def desugar_negation_expression(expression):
return DesugaredFunctionCallExpression(
metadata=expression.metadata,
- function=Desugared
Symbol
Expression(
+ function=Desugared
Builtin
Expression(
metadata=expression.metadata,
symbol='__negate__',
),
metadata=expression.metadata,
symbol='__negate__',
),
@@
-251,6
+267,12
@@
def desugar_symbol_expression(expression):
symbol=expression.symbol,
)
symbol=expression.symbol,
)
+def desugar_symbol_literal_expression(expression):
+ return DesugaredSymbolLiteralExpression(
+ metadata=expression.metadata,
+ symbol=expression.symbol,
+ )
+
def desugar_expression(expression):
return {
parsing.FurFunctionCallExpression: desugar_function_call_expression,
def desugar_expression(expression):
return {
parsing.FurFunctionCallExpression: desugar_function_call_expression,