Create ast package

This commit is contained in:
Bartłomiej Pluta
2019-07-03 11:27:51 +02:00
parent 2823fd1896
commit c8ff5ce38f
38 changed files with 622 additions and 11 deletions

View File

@@ -0,0 +1,26 @@
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.current().type == 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.hasCurrent() and input.current().type == TokenType.PERCENT:
percent = PercentNode(integer, parent, input.current().pos)
integer.parent = percent
input.ahead()
return percent
return integer