X-Git-Url: https://code.kerkeslager.com/?p=fur;a=blobdiff_plain;f=parsing.py;h=12b93f585d22a1c47e11b5ccf1ad47c68139fcb7;hp=20768371b20f039e2e193a6d07f57151d210f19f;hb=328947882d63d9d4f2ead0dbc54bee33bef6c33b;hpb=bca87656ab93d4b99b4b007bfd54580bdb19f9dc diff --git a/parsing.py b/parsing.py index 2076837..12b93f5 100644 --- a/parsing.py +++ b/parsing.py @@ -36,6 +36,14 @@ def _zero_or_more_parser(formatter, parser): return result_parser +NodeMetadata = collections.namedtuple( + 'NodeMetadata', + [ + 'index', + 'line', + ], +) + FurIntegerLiteralExpression = collections.namedtuple( 'FurIntegerLiteralExpression', [ @@ -67,6 +75,7 @@ FurNegationExpression = collections.namedtuple( FurInfixExpression = collections.namedtuple( 'FurInfixExpression', [ + 'metadata', 'order', 'operator', 'left', @@ -270,6 +279,10 @@ def _left_recursive_infix_operator_parser(operator_token_matcher, operand_parser if success: result = FurInfixExpression( + metadata=NodeMetadata( + index=tokens[index].index, + line=tokens[index].line, + ), order=order, operator=tokens[index].match, left=result,