20 lines
577 B
Python
20 lines
577 B
Python
from smnp.ast.node.atom import AtomParser
|
|
from smnp.ast.node.list import ListParser
|
|
from smnp.ast.node.operator import BinaryOperator
|
|
from smnp.ast.node.valuable import Valuable
|
|
from smnp.ast.parser import Parser
|
|
from smnp.token.type import TokenType
|
|
|
|
|
|
class Chain(Valuable):
|
|
pass
|
|
|
|
itemParser = Parser.oneOf(
|
|
ListParser,
|
|
AtomParser,
|
|
)
|
|
|
|
ChainParser = Parser.leftAssociativeOperatorParser(itemParser, [TokenType.DOT], itemParser,
|
|
lambda left, op, right: Chain.withValue(BinaryOperator.withValues(left, op, right)))
|
|
|