26 lines
741 B
Python
26 lines
741 B
Python
from smnp.ast.node.integer import IntegerLiteralNode
|
|
from smnp.ast.node.percent import PercentNode
|
|
from smnp.token.type import TokenType
|
|
|
|
|
|
# int -> INTEGER
|
|
def parseInteger(input, parent):
|
|
if input.isCurrent(TokenType.INTEGER):
|
|
integer = IntegerLiteralNode(int(input.current().value), parent, input.current().pos)
|
|
input.ahead()
|
|
|
|
return integer
|
|
return None
|
|
|
|
|
|
# percent -> int '%'
|
|
# int -> int
|
|
def parseIntegerAndPercent(input, parent):
|
|
integer = parseInteger(input, parent)
|
|
if integer is not None and input.isCurrent(TokenType.PERCENT):
|
|
percent = PercentNode(integer, parent, input.current().pos)
|
|
integer.parent = percent
|
|
input.ahead()
|
|
|
|
return percent
|
|
return integer |