Create note literal node

This commit is contained in:
Bartłomiej Pluta
2019-07-05 18:39:41 +02:00
parent 425d23eb5f
commit bacaeb0005
3 changed files with 14 additions and 2 deletions

View File

@@ -18,7 +18,7 @@ class ExpressionNode(Node):
@classmethod @classmethod
def withValue(cls, pos, v): def withValue(cls, v, pos):
node = cls(pos) node = cls(pos)
node.value = v node.value = v
return node return node
@@ -28,10 +28,12 @@ class ExpressionNode(Node):
def _parse(cls, input): def _parse(cls, input):
from smnp.newast.node.integer import IntegerLiteralNode from smnp.newast.node.integer import IntegerLiteralNode
from smnp.newast.node.string import StringLiteralNode from smnp.newast.node.string import StringLiteralNode
from smnp.newast.node.note import NoteLiteralNode
from smnp.newast.node.list import ListNode from smnp.newast.node.list import ListNode
return Parser.oneOf( return Parser.oneOf(
IntegerLiteralNode.parse, IntegerLiteralNode.parse,
StringLiteralNode.parse, StringLiteralNode.parse,
NoteLiteralNode.parse,
ListNode.parse ListNode.parse
)(input) )(input)

View File

@@ -7,5 +7,5 @@ class IntegerLiteralNode(ExpressionNode):
@classmethod @classmethod
def _parse(cls, input): 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) return Parser.terminalParser(TokenType.INTEGER, createNode)(input)

10
smnp/newast/node/note.py Normal file
View File

@@ -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)