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

View File

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

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)