Files
smnp-py/smnp/newast/node/integer.py
2019-07-05 20:55:36 +02:00

34 lines
1.0 KiB
Python

from smnp.newast.node.access import AccessNode
from smnp.newast.node.expression import ExpressionNode
from smnp.newast.parser import Parser
from smnp.token.type import TokenType
class IntegerLiteralNode(ExpressionNode):
@classmethod
def _parse(cls, input):
def createNode(left, right):
node = AccessNode(right.pos)
node.value = left
node.next = right
return node
return Parser.leftAssociativeOperatorParser(
IntegerLiteralNode._parseInteger(),
TokenType.DOT,
IntegerLiteralNode._parseAccessingProperty(),
createNode=createNode
)(input)
@staticmethod
def _parseInteger():
createNode = lambda v, pos: IntegerLiteralNode.withValue(v, pos)
return Parser.terminalParser(TokenType.INTEGER, createNode)
@staticmethod
def _parseAccessingProperty():
# TODO: Just for example. It is supposed to be functionCall (and identifier there)
return IntegerLiteralNode._parseInteger()