24 lines
773 B
Python
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 |