Working proof of concept of multiple left associative operators

This commit is contained in:
Bartłomiej Pluta
2019-07-10 15:02:17 +02:00
parent 823c5cb18f
commit 0a7d29d4a1
15 changed files with 138 additions and 58 deletions

View File

@@ -1,13 +1,33 @@
from smnp.ast.node.access import AccessNode
from smnp.ast.node.literal import LiteralNode
from smnp.ast.node.relation import RelationOperatorNode
from smnp.ast.parser import Parser
from smnp.token.type import TokenType
class BoolLiteralNode(LiteralNode, AccessNode):
class BoolLiteralNode(LiteralNode, AccessNode, RelationOperatorNode):
def __init__(self, pos):
super().__init__(pos)
del self.children[1]
@classmethod
def _getTokenType(cls):
return TokenType.BOOL
return TokenType.BOOL
@classmethod
def _parse(cls, input):
x = Parser.oneOf(
cls.relationParser(),
cls.accessParser(),
cls.literalParser()
)(input)
return x
@classmethod
def _accessLiteralParser(cls):
return cls.literalParser()
@classmethod
def _relationLiteralParser(cls):
return cls.literalParser()