Start working on the interpeter
[fur] / desugaring.py
index 28d1a78..f3c7728 100644 (file)
@@ -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,