Files
smnp-py/smnp/ast/parsers/access.py
2019-07-05 17:00:43 +02:00

24 lines
773 B
Python

from smnp.ast.node.access import AccessNode
from smnp.ast.parsers.expression import parseExpression
from smnp.token.type import TokenType
# access -> expr '.' expr
# TODO: dodać dziedziczenie wszystkich expressions po jednym typie ExpressionNode
# i potem sprawdzać przy wszystkich parent.pop(-1) czy pobrany z parenta element
# jest rzeczywiście wyrażeniem, bo teraz możliwe jest np. {}.fun()
def parseAccess(input, parent):
if input.isCurrent(TokenType.DOT):
token = input.current()
input.ahead()
element = parent.pop(-1)
property = parseExpression(input, parent)
node = AccessNode(element, property, parent, token.pos)
element.parent = node
property.parent = node
return node
return None