Refactor parser
This commit is contained in:
@@ -1,11 +0,0 @@
|
|||||||
from smnp.ast.node.expression import ExpressionNode
|
|
||||||
from smnp.ast.node.iterable import abstractIterableParser
|
|
||||||
from smnp.ast.node.model import Node
|
|
||||||
from smnp.token.type import TokenType
|
|
||||||
|
|
||||||
|
|
||||||
class ArgumentsListNode(Node):
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def _parse(cls, input):
|
|
||||||
return abstractIterableParser(ArgumentsListNode, TokenType.OPEN_PAREN, TokenType.CLOSE_PAREN, ExpressionNode.parse)(input)
|
|
||||||
@@ -1,8 +1,7 @@
|
|||||||
from smnp.ast.node.access import AccessNode
|
from smnp.ast.node.access import AccessNode
|
||||||
from smnp.ast.node.args import ArgumentsListNode
|
|
||||||
from smnp.ast.node.assignment import AssignmentNode
|
from smnp.ast.node.assignment import AssignmentNode
|
||||||
from smnp.ast.node.expression import ExpressionNode
|
from smnp.ast.node.expression import ExpressionNode
|
||||||
from smnp.ast.node.invocation import FunctionCall
|
from smnp.ast.node.invocation import FunctionCall, ArgumentsListNode
|
||||||
from smnp.ast.parser import Parser
|
from smnp.ast.parser import Parser
|
||||||
from smnp.token.type import TokenType
|
from smnp.token.type import TokenType
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,15 @@
|
|||||||
from smnp.ast.node.access import AccessNode
|
from smnp.ast.node.access import AccessNode
|
||||||
|
from smnp.ast.node.expression import ExpressionNode
|
||||||
|
from smnp.ast.node.iterable import abstractIterableParser
|
||||||
|
from smnp.ast.node.model import Node
|
||||||
|
from smnp.token.type import TokenType
|
||||||
|
|
||||||
|
|
||||||
|
class ArgumentsListNode(Node):
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _parse(cls, input):
|
||||||
|
return abstractIterableParser(ArgumentsListNode, TokenType.OPEN_PAREN, TokenType.CLOSE_PAREN, ExpressionNode.parse)(input)
|
||||||
|
|
||||||
|
|
||||||
class FunctionCall(AccessNode):
|
class FunctionCall(AccessNode):
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
from smnp.ast.node.ignore import IgnoredNode
|
from smnp.ast.node.ignore import IgnoredNode
|
||||||
from smnp.ast.node.model import ParseResult, Node
|
from smnp.ast.node.model import ParseResult, Node
|
||||||
from smnp.ast.node.program import Program
|
|
||||||
|
|
||||||
|
|
||||||
def parse(input):
|
def parse(input):
|
||||||
return Program.parse(input)
|
from smnp.ast.node.program import Program
|
||||||
|
return Program.parse(input).node
|
||||||
|
|
||||||
|
|
||||||
class Parser:
|
class Parser:
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
from smnp.ast.node.program import Program
|
from smnp.ast.parser import parse
|
||||||
from smnp.environment.factory import createEnvironment
|
from smnp.environment.factory import createEnvironment
|
||||||
from smnp.error.base import SmnpException
|
from smnp.error.base import SmnpException
|
||||||
from smnp.runtime.evaluator import evaluate
|
from smnp.runtime.evaluator import evaluate
|
||||||
@@ -14,8 +14,8 @@ def main():
|
|||||||
|
|
||||||
tokens = tokenize(lines)
|
tokens = tokenize(lines)
|
||||||
|
|
||||||
ast = Program.parse(tokens)
|
ast = parse(tokens)
|
||||||
ast.node.print()
|
ast.print()
|
||||||
|
|
||||||
|
|
||||||
env = createEnvironment()
|
env = createEnvironment()
|
||||||
|
|||||||
Reference in New Issue
Block a user