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):
ifStatementParser = Parser.allOf(
Parser.terminal(TokenType.IF),
Parser.terminal(TokenType.OPEN_PAREN),
ExpressionParser,
Parser.terminal(TokenType.CLOSE_PAREN),
StatementParser,
Parser.doAssert(Parser.terminal(TokenType.OPEN_PAREN), TokenType.OPEN_PAREN.key),
Parser.doAssert(ExpressionParser, "expression"),
Parser.doAssert(Parser.terminal(TokenType.CLOSE_PAREN), TokenType.CLOSE_PAREN.key),
Parser.doAssert(StatementParser, "statement"),
createNode=lambda _, __, condition, ___, ifStatement: IfElse.createNode(ifStatement, condition),
name="if statement"
)
ifElseStatementParser = Parser.allOf(
Parser.terminal(TokenType.IF),
Parser.terminal(TokenType.OPEN_PAREN),
ExpressionParser,
Parser.terminal(TokenType.CLOSE_PAREN),
StatementParser,
Parser.doAssert(Parser.terminal(TokenType.OPEN_PAREN), TokenType.OPEN_PAREN.key),
Parser.doAssert(ExpressionParser, "expression"),
Parser.doAssert(Parser.terminal(TokenType.CLOSE_PAREN), TokenType.CLOSE_PAREN.key),
Parser.doAssert(StatementParser, "statement"),
Parser.terminal(TokenType.ELSE),
StatementParser,
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.model import Node
from smnp.ast.node.none import NoneNode
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.parser import Parser
from smnp.token.type import TokenType
@@ -50,7 +50,7 @@ def FactorParser(input):
parentheses = Parser.allOf(
Parser.terminal(TokenType.OPEN_PAREN),
ExpressionParser,
Parser.doAssert(ExpressionParser, "expression"),
Parser.terminal(TokenType.CLOSE_PAREN),
createNode=lambda open, expr, close: expr,
name="grouping parentheses"
@@ -58,7 +58,7 @@ def FactorParser(input):
factorOperands = Parser.oneOf(
parentheses,
ChainParser,
UnitParser,
name="factor operands"
)

View File

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

View File

@@ -7,7 +7,7 @@ from smnp.program.interpreter import Interpreter
def main():
try:
#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()
#tokens = tokenize(['function a(b...) { x+y}'])
#FunctionDefinitionParser(tokens).node.print()

View File

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