Create statements and block nodes

This commit is contained in:
Bartłomiej Pluta
2019-07-11 00:18:40 +02:00
parent 5a25ec6ffe
commit 101ce862b0
4 changed files with 43 additions and 31 deletions

View File

@@ -1,17 +1,32 @@
from smnp.ast.node.expression import MaxPrecedenceExpressionParser
from smnp.ast.node.model import Node
from smnp.ast.parser import Parser
class StatementNode(Node):
class Statement(Node):
pass
@classmethod
def _parse(cls, input):
from smnp.ast.node.block import BlockNode
from smnp.ast.node.expression import ExpressionNode
from smnp.ast.node.ret import ReturnNode
return Parser.oneOf(
ExpressionNode.parse,
BlockNode.parse,
ReturnNode.parse,
)(input)
def StatementParser(input):
from smnp.ast.node.block import BlockParser
parser = Parser.oneOf(
BlockParser,
MaxPrecedenceExpressionParser
)
return Parser(parser, "statement", parser)(input)
# class StatementNode(Node):
#
# @classmethod
# def _parse(cls, input):
# from smnp.ast.node.block import BlockNode
# from smnp.ast.node.expression import ExpressionNode
# from smnp.ast.node.ret import ReturnNode
#
# return Parser.oneOf(
# ExpressionNode.parse,
# BlockNode.parse,
# ReturnNode.parse,
# )(input)