Create note literal node
This commit is contained in:
@@ -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)
|
||||||
@@ -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
10
smnp/newast/node/note.py
Normal 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)
|
||||||
Reference in New Issue
Block a user