Rename Chain to Unit

This commit is contained in:
Bartłomiej Pluta
2019-07-12 16:00:39 +02:00
parent 916c8c69ef
commit 0435bc776e
5 changed files with 17 additions and 17 deletions

View File

@@ -47,20 +47,20 @@ class IfElse(Node):
def IfElseStatementParser(input): def IfElseStatementParser(input):
ifStatementParser = Parser.allOf( ifStatementParser = Parser.allOf(
Parser.terminal(TokenType.IF), Parser.terminal(TokenType.IF),
Parser.terminal(TokenType.OPEN_PAREN), Parser.doAssert(Parser.terminal(TokenType.OPEN_PAREN), TokenType.OPEN_PAREN.key),
ExpressionParser, Parser.doAssert(ExpressionParser, "expression"),
Parser.terminal(TokenType.CLOSE_PAREN), Parser.doAssert(Parser.terminal(TokenType.CLOSE_PAREN), TokenType.CLOSE_PAREN.key),
StatementParser, Parser.doAssert(StatementParser, "statement"),
createNode=lambda _, __, condition, ___, ifStatement: IfElse.createNode(ifStatement, condition), createNode=lambda _, __, condition, ___, ifStatement: IfElse.createNode(ifStatement, condition),
name="if statement" name="if statement"
) )
ifElseStatementParser = Parser.allOf( ifElseStatementParser = Parser.allOf(
Parser.terminal(TokenType.IF), Parser.terminal(TokenType.IF),
Parser.terminal(TokenType.OPEN_PAREN), Parser.doAssert(Parser.terminal(TokenType.OPEN_PAREN), TokenType.OPEN_PAREN.key),
ExpressionParser, Parser.doAssert(ExpressionParser, "expression"),
Parser.terminal(TokenType.CLOSE_PAREN), Parser.doAssert(Parser.terminal(TokenType.CLOSE_PAREN), TokenType.CLOSE_PAREN.key),
StatementParser, Parser.doAssert(StatementParser, "statement"),
Parser.terminal(TokenType.ELSE), Parser.terminal(TokenType.ELSE),
StatementParser, StatementParser,
createNode=lambda _, __, condition, ___, ifStatement, ____, elseStatement: IfElse.createNode(ifStatement, condition, elseStatement), createNode=lambda _, __, condition, ___, ifStatement, ____, elseStatement: IfElse.createNode(ifStatement, condition, elseStatement),

View File

@@ -1,8 +1,8 @@
from smnp.ast.node.chain import ChainParser
from smnp.ast.node.iterable import abstractIterableParser from smnp.ast.node.iterable import abstractIterableParser
from smnp.ast.node.model import Node from smnp.ast.node.model import Node
from smnp.ast.node.none import NoneNode from smnp.ast.node.none import NoneNode
from smnp.ast.node.operator import BinaryOperator, Operator, UnaryOperator from smnp.ast.node.operator import BinaryOperator, Operator, UnaryOperator
from smnp.ast.node.unit import UnitParser
from smnp.ast.node.valuable import Valuable from smnp.ast.node.valuable import Valuable
from smnp.ast.parser import Parser from smnp.ast.parser import Parser
from smnp.token.type import TokenType from smnp.token.type import TokenType
@@ -50,7 +50,7 @@ def FactorParser(input):
parentheses = Parser.allOf( parentheses = Parser.allOf(
Parser.terminal(TokenType.OPEN_PAREN), Parser.terminal(TokenType.OPEN_PAREN),
ExpressionParser, Parser.doAssert(ExpressionParser, "expression"),
Parser.terminal(TokenType.CLOSE_PAREN), Parser.terminal(TokenType.CLOSE_PAREN),
createNode=lambda open, expr, close: expr, createNode=lambda open, expr, close: expr,
name="grouping parentheses" name="grouping parentheses"
@@ -58,7 +58,7 @@ def FactorParser(input):
factorOperands = Parser.oneOf( factorOperands = Parser.oneOf(
parentheses, parentheses,
ChainParser, UnitParser,
name="factor operands" name="factor operands"
) )

View File

@@ -5,7 +5,7 @@ from smnp.ast.parser import Parser
from smnp.token.type import TokenType from smnp.token.type import TokenType
class Chain(Valuable): class Unit(Valuable):
pass pass
@@ -13,7 +13,7 @@ class MinusOperator(UnaryOperator):
pass pass
def ChainParser(input): def UnitParser(input):
minusOperator = Parser.allOf( minusOperator = Parser.allOf(
Parser.terminal(TokenType.MINUS, createNode=Operator.withValue), Parser.terminal(TokenType.MINUS, createNode=Operator.withValue),
Parser.doAssert(AtomParser, "atom"), Parser.doAssert(AtomParser, "atom"),
@@ -31,7 +31,7 @@ def ChainParser(input):
atom2, atom2,
[TokenType.DOT], [TokenType.DOT],
Parser.doAssert(atom2, "atom"), Parser.doAssert(atom2, "atom"),
createNode=lambda left, op, right: Chain.withValue(BinaryOperator.withValues(left, op, right)), createNode=lambda left, op, right: Unit.withValue(BinaryOperator.withValues(left, op, right)),
name="chain" name="unit"
)(input) )(input)

View File

@@ -7,7 +7,7 @@ from smnp.program.interpreter import Interpreter
def main(): def main():
try: try:
#stdLibraryEnv = loadStandardLibrary() #stdLibraryEnv = loadStandardLibrary()
Interpreter.interpretFile(sys.argv[1], printTokens=True, printAst=True, execute=False, baseEnvironment=None) Interpreter.interpretFile(sys.argv[1], printTokens=False, printAst=True, execute=False, baseEnvironment=None)
#draft() #draft()
#tokens = tokenize(['function a(b...) { x+y}']) #tokens = tokenize(['function a(b...) { x+y}'])
#FunctionDefinitionParser(tokens).node.print() #FunctionDefinitionParser(tokens).node.print()

View File

@@ -2,7 +2,7 @@ from enum import Enum
class TokenType(Enum): class TokenType(Enum):
RELATION = 'relation' RELATION = '==, !=, >=, <='
DOUBLE_ASTERISK = '**' DOUBLE_ASTERISK = '**'
OPEN_CURLY = '{' OPEN_CURLY = '{'
CLOSE_CURLY = '}' CLOSE_CURLY = '}'