37 lines
837 B
Python
37 lines
837 B
Python
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) |