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

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)