Create new parser (works for lists so far)

This commit is contained in:
Bartłomiej Pluta
2019-07-05 16:45:59 +02:00
parent 23e0f3f33e
commit ed73aa1ad1
32 changed files with 516 additions and 59 deletions

View File

@@ -0,0 +1,37 @@
from smnp.newast.node.model import Node
from smnp.newast.node.none import NoneNode
from smnp.newast.parser import Parser
class ExpressionNode(Node):
def __init__(self, pos):
super().__init__(pos, [NoneNode()])
@property
def value(self):
return self[0]
@value.setter
def value(self, v):
self[0] = v
@classmethod
def withValue(cls, pos, v):
node = cls(pos)
node.value = v
return node
@classmethod
def _parse(cls, input):
from smnp.newast.node.integer import IntegerLiteralNode
from smnp.newast.node.string import StringLiteralNode
from smnp.newast.node.list import ListNode
return Parser.oneOf(
IntegerLiteralNode.parse,
StringLiteralNode.parse,
ListNode.parse
)(input)