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.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

View File

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

View File

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

View File

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