Refactor parser

This commit is contained in:
Bartłomiej Pluta
2019-07-06 16:04:56 +02:00
parent f81279094f
commit 6fd49ba54a
5 changed files with 18 additions and 18 deletions

View File

@@ -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)

View File

@@ -1,8 +1,7 @@
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.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.token.type import TokenType

View File

@@ -1,4 +1,15 @@
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):

View File

@@ -1,10 +1,11 @@
from smnp.ast.node.ignore import IgnoredNode
from smnp.ast.node.model import ParseResult, Node
from smnp.ast.node.program import Program
def parse(input):
return Program.parse(input)
from smnp.ast.node.program import Program
return Program.parse(input).node
class Parser:

View File

@@ -1,6 +1,6 @@
import sys
from smnp.ast.node.program import Program
from smnp.ast.parser import parse
from smnp.environment.factory import createEnvironment
from smnp.error.base import SmnpException
from smnp.runtime.evaluator import evaluate
@@ -14,8 +14,8 @@ def main():
tokens = tokenize(lines)
ast = Program.parse(tokens)
ast.node.print()
ast = parse(tokens)
ast.print()
env = createEnvironment()