X-Git-Url: https://code.kerkeslager.com/?p=fur;a=blobdiff_plain;f=normalization.py;h=a9fa3ec9f29a46c0c19cd5e4a60d7a66ee28fa2a;hp=a5863a10b4266de99f75265a1b5e7f7a36c5d8ec;hb=777a46709a4353837a34df7fc0f7d9f3d47902a7;hpb=22577cbe31443795595635ea03eefb504738b0c2 diff --git a/normalization.py b/normalization.py index a5863a1..a9fa3ec 100644 --- a/normalization.py +++ b/normalization.py @@ -10,6 +10,20 @@ NormalVariableExpression = collections.namedtuple( ], ) +NormalIntegerLiteralExpression = collections.namedtuple( + 'NormalIntegerLiteralExpression', + [ + 'integer', + ], +) + +NormalStringLiteralExpression = collections.namedtuple( + 'NormalStringLiteralExpression', + [ + 'string', + ], +) + NormalNegationExpression = collections.namedtuple( 'NormalNegationExpression', [ @@ -104,6 +118,12 @@ NormalProgram = collections.namedtuple( def fake_normalization(counter, thing): return (counter, (), thing) +def normalize_integer_literal_expression(counter, expression): + return (counter, (), NormalIntegerLiteralExpression(integer=expression.integer)) + +def normalize_string_literal_expression(counter, expression): + return (counter, (), NormalStringLiteralExpression(string=expression.string)) + def normalize_function_call_expression(counter, expression): assert isinstance(expression, parsing.FurFunctionCallExpression) @@ -308,9 +328,9 @@ def normalize_expression(counter, expression): NormalVariableExpression: fake_normalization, parsing.FurFunctionCallExpression: normalize_function_call_expression, parsing.FurInfixExpression: normalize_infix_expression, - parsing.FurIntegerLiteralExpression: fake_normalization, + parsing.FurIntegerLiteralExpression: normalize_integer_literal_expression, parsing.FurNegationExpression: normalize_negation_expression, - parsing.FurStringLiteralExpression: fake_normalization, + parsing.FurStringLiteralExpression: normalize_string_literal_expression, parsing.FurSymbolExpression: fake_normalization, }[type(expression)](counter, expression)