Remove old parser and move new parser to 'ast' package

This commit is contained in:
Bartłomiej Pluta
2019-07-06 15:56:28 +02:00
parent 9a42bbbb2d
commit f81279094f
64 changed files with 573 additions and 1229 deletions

View File

@@ -1,6 +1,32 @@
from smnp.ast.node.model import Node
from smnp.ast.node.expression import ExpressionNode
from smnp.ast.node.extend import ExtendNode
from smnp.ast.node.function import FunctionDefinitionNode
from smnp.ast.node.imports import ImportNode
from smnp.ast.node.model import Node, ParseResult
from smnp.ast.node.statement import StatementNode
from smnp.ast.parser import Parser
from smnp.error.syntax import SyntaxException
class Program(Node):
def __init__(self):
Node.__init__(self, None, (-1, -1))
super().__init__((-1, -1))
@classmethod
def _parse(cls, input):
def parseToken(input):
return Parser.oneOf(
FunctionDefinitionNode.parse,
ExtendNode.parse,
ExpressionNode.parse,
ImportNode.parse,
StatementNode.parse,
exception = SyntaxException(f"Unknown statement: {input.current().pos}")
)(input)
root = Program()
while input.hasCurrent():
result = parseToken(input)
if result.result:
root.append(result.node)
return ParseResult.OK(root)