X-Git-Url: https://code.kerkeslager.com/?p=fur;a=blobdiff_plain;f=desugaring.py;h=f3c7728844f4e3087412f3f933e9e34ea8c5313e;hp=28d1a7820748b4ae463d1dc2b8aab73e3f47cdd7;hb=d70666abc2db430300d48691046ada2395b2f0d5;hpb=b7a244b6319f5c770582283097f6184e5a6ec192 diff --git a/desugaring.py b/desugaring.py index 28d1a78..f3c7728 100644 --- a/desugaring.py +++ b/desugaring.py @@ -88,6 +88,14 @@ DesugaredSymbolExpression = collections.namedtuple( ), ) +DesugaredSymbolLiteralExpression = collections.namedtuple( + 'DesugaredSymbolLiteralExpression', + ( + 'metadata', + 'symbol', + ), +) + DesugaredAssignmentStatement = collections.namedtuple( 'DesugaredAssignmentStatement', ( @@ -160,13 +168,13 @@ def desugar_infix_expression(expression): 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), ), ) @@ -259,6 +267,12 @@ def desugar_symbol_expression(expression): 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,