Files
smnp-py/smnp/newast/node/program.py
Bartłomiej Pluta ec3675ac43 Create BlockNode
2019-07-05 22:06:07 +02:00

26 lines
803 B
Python

from smnp.error.syntax import SyntaxException
from smnp.newast.node.expression import ExpressionNode
from smnp.newast.node.model import Node, ParseResult
from smnp.newast.node.statement import StatementNode
from smnp.newast.parser import Parser
class Program(Node):
def __init__(self):
super().__init__((-1, -1))
@classmethod
def _parse(cls, input):
def parseToken(input):
return Parser.oneOf(
ExpressionNode.parse,
StatementNode.parse,
exception = SyntaxException("Unknown statement")
)(input)
root = Program()
while input.hasCurrent():
result = parseToken(input)
if result.result:
root.append(result.node)
return ParseResult.OK(root)