From 0435bc776e861eaa47199358a276f5430aeceab7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Pluta?= Date: Fri, 12 Jul 2019 16:00:39 +0200 Subject: [PATCH] Rename Chain to Unit --- smnp/ast/node/condition.py | 16 ++++++++-------- smnp/ast/node/factor.py | 6 +++--- smnp/ast/node/{chain.py => unit.py} | 8 ++++---- smnp/main.py | 2 +- smnp/token/type.py | 2 +- 5 files changed, 17 insertions(+), 17 deletions(-) rename smnp/ast/node/{chain.py => unit.py} (81%) diff --git a/smnp/ast/node/condition.py b/smnp/ast/node/condition.py index 5621839..35eb40b 100644 --- a/smnp/ast/node/condition.py +++ b/smnp/ast/node/condition.py @@ -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), diff --git a/smnp/ast/node/factor.py b/smnp/ast/node/factor.py index fcdd708..72dbb74 100644 --- a/smnp/ast/node/factor.py +++ b/smnp/ast/node/factor.py @@ -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" ) diff --git a/smnp/ast/node/chain.py b/smnp/ast/node/unit.py similarity index 81% rename from smnp/ast/node/chain.py rename to smnp/ast/node/unit.py index 74ad8dc..aa897a2 100644 --- a/smnp/ast/node/chain.py +++ b/smnp/ast/node/unit.py @@ -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) diff --git a/smnp/main.py b/smnp/main.py index 518c283..2b970b5 100644 --- a/smnp/main.py +++ b/smnp/main.py @@ -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() diff --git a/smnp/token/type.py b/smnp/token/type.py index 56b4e5f..8c6aff2 100644 --- a/smnp/token/type.py +++ b/smnp/token/type.py @@ -2,7 +2,7 @@ from enum import Enum class TokenType(Enum): - RELATION = 'relation' + RELATION = '==, !=, >=, <=' DOUBLE_ASTERISK = '**' OPEN_CURLY = '{' CLOSE_CURLY = '}'