Rename Chain to Unit
This commit is contained in:
@@ -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),
|
||||
|
||||
@@ -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"
|
||||
)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -2,7 +2,7 @@ from enum import Enum
|
||||
|
||||
|
||||
class TokenType(Enum):
|
||||
RELATION = 'relation'
|
||||
RELATION = '==, !=, >=, <='
|
||||
DOUBLE_ASTERISK = '**'
|
||||
OPEN_CURLY = '{'
|
||||
CLOSE_CURLY = '}'
|
||||
|
||||
Reference in New Issue
Block a user