Create parser for chain (dot operator)

This commit is contained in:
Bartłomiej Pluta
2019-07-10 21:31:02 +02:00
parent e31dab52f6
commit ab990f3071
4 changed files with 52 additions and 5 deletions

View File

@@ -122,10 +122,10 @@ class Parser:
# leftAssociative -> left | left OP right
@staticmethod
def leftAssociativeOperatorParser(leftParser, operatorTokenTypes, rightParser, createNode, name="leftAssoc"):
from smnp.ast.node.operator import OperatorNode
from smnp.ast.node.operator import Operator
def parse(input):
operatorParser = Parser.oneOfTerminals(*operatorTokenTypes, createNode=lambda val, pos: OperatorNode.withChildren([val], pos))
operatorParser = Parser.oneOfTerminals(*operatorTokenTypes, createNode=lambda val, pos: Operator.withChildren([val], pos))
left = leftParser(input)
if left.result:
operator = operatorParser(input)