From bacaeb00058d0c9308e2e59c19c3974deb4d2596 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Pluta?= Date: Fri, 5 Jul 2019 18:39:41 +0200 Subject: [PATCH] Create note literal node --- smnp/newast/node/expression.py | 4 +++- smnp/newast/node/integer.py | 2 +- smnp/newast/node/note.py | 10 ++++++++++ 3 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 smnp/newast/node/note.py diff --git a/smnp/newast/node/expression.py b/smnp/newast/node/expression.py index 1f1fe1d..4a5cf83 100644 --- a/smnp/newast/node/expression.py +++ b/smnp/newast/node/expression.py @@ -18,7 +18,7 @@ class ExpressionNode(Node): @classmethod - def withValue(cls, pos, v): + def withValue(cls, v, pos): node = cls(pos) node.value = v return node @@ -28,10 +28,12 @@ class ExpressionNode(Node): def _parse(cls, input): from smnp.newast.node.integer import IntegerLiteralNode from smnp.newast.node.string import StringLiteralNode + from smnp.newast.node.note import NoteLiteralNode from smnp.newast.node.list import ListNode return Parser.oneOf( IntegerLiteralNode.parse, StringLiteralNode.parse, + NoteLiteralNode.parse, ListNode.parse )(input) \ No newline at end of file diff --git a/smnp/newast/node/integer.py b/smnp/newast/node/integer.py index eb68862..6e81224 100644 --- a/smnp/newast/node/integer.py +++ b/smnp/newast/node/integer.py @@ -7,5 +7,5 @@ class IntegerLiteralNode(ExpressionNode): @classmethod def _parse(cls, input): - createNode = lambda v, pos: IntegerLiteralNode.withValue(pos, v) + createNode = lambda v, pos: IntegerLiteralNode.withValue(v, pos) return Parser.terminalParser(TokenType.INTEGER, createNode)(input) \ No newline at end of file diff --git a/smnp/newast/node/note.py b/smnp/newast/node/note.py new file mode 100644 index 0000000..4bb2353 --- /dev/null +++ b/smnp/newast/node/note.py @@ -0,0 +1,10 @@ +from smnp.newast.node.expression import ExpressionNode +from smnp.newast.parser import Parser +from smnp.token.type import TokenType + + +class NoteLiteralNode(ExpressionNode): + + @classmethod + def _parse(cls, input): + return Parser.terminalParser(TokenType.NOTE, lambda v, pos: NoteLiteralNode.withValue(v, pos))(input) \ No newline at end of file