import parsing
+DesugaredBuiltinExpression = collections.namedtuple(
+ 'DesugaredBuiltinExpression',
+ (
+ 'metadata',
+ 'symbol',
+ ),
+)
+
DesugaredFunctionCallExpression = collections.namedtuple(
'DesugaredFunctionCallExpression',
(
),
)
+DesugaredSymbolLiteralExpression = collections.namedtuple(
+ 'DesugaredSymbolLiteralExpression',
+ (
+ 'metadata',
+ 'symbol',
+ ),
+)
+
DesugaredAssignmentStatement = collections.namedtuple(
'DesugaredAssignmentStatement',
(
if expression.operator == '.':
return DesugaredFunctionCallExpression(
metadata=expression.metadata,
- function=DesugaredSymbolExpression(
+ function=DesugaredBuiltinExpression(
metadata=expression.metadata,
symbol='__field__',
),
argument_list=(
desugar_expression(expression.left),
- DesugaredStringLiteralExpression(string=expression.right.symbol),
+ desugar_symbol_literal_expression(expression.right),
),
)
return DesugaredFunctionCallExpression(
metadata=expression.metadata,
- function=DesugaredSymbolExpression(
+ function=DesugaredBuiltinExpression(
metadata=expression.metadata,
symbol=function,
),
def desugar_list_item_expression(expression):
return DesugaredFunctionCallExpression(
metadata=expression.metadata,
- function=DesugaredSymbolExpression(
+ function=DesugaredBuiltinExpression(
metadata=expression.metadata,
symbol='__get__',
),
def desugar_negation_expression(expression):
return DesugaredFunctionCallExpression(
metadata=expression.metadata,
- function=DesugaredSymbolExpression(
+ function=DesugaredBuiltinExpression(
metadata=expression.metadata,
symbol='__negate__',
),
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,