Create literal helper class

This commit is contained in:
Bartłomiej Pluta
2019-07-05 21:20:37 +02:00
parent 15c73efb79
commit 6281ab5c99
2 changed files with 22 additions and 6 deletions

View File

@@ -1,15 +1,13 @@
from smnp.newast.node.access import AccessNode from smnp.newast.node.access import AccessNode
from smnp.newast.parser import Parser from smnp.newast.node.literal import LiteralNode
from smnp.token.type import TokenType from smnp.token.type import TokenType
class IntegerLiteralNode(AccessNode): class IntegerLiteralNode(LiteralNode, AccessNode):
def __init__(self, pos): def __init__(self, pos):
super().__init__(pos) super().__init__(pos)
del self.children[1] del self.children[1]
@classmethod @classmethod
def _literalParser(cls): def _getTokenType(cls):
createNode = lambda v, pos: IntegerLiteralNode.withValue(v, pos) return TokenType.INTEGER
return Parser.terminalParser(TokenType.INTEGER, createNode)

View File

@@ -0,0 +1,18 @@
from smnp.newast.node.expression import ExpressionNode
from smnp.newast.parser import Parser
class LiteralNode(ExpressionNode):
@classmethod
def _getTokenType(cls):
pass
@classmethod
def _processValue(cls, value):
return value
@classmethod
def _literalParser(cls):
createNode = lambda v, pos: cls.withValue(cls._processValue(v), pos)
return Parser.terminalParser(cls._getTokenType(), createNode)