Rename Chain to Unit
This commit is contained in:
@@ -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),
|
||||||
|
|||||||
@@ -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"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
@@ -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()
|
||||||
|
|||||||
@@ -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 = '}'
|
||||||
|
|||||||
Reference in New Issue
Block a user