diff --git a/smnp/main.py b/smnp/main.py index e68357a..d0b5b55 100644 --- a/smnp/main.py +++ b/smnp/main.py @@ -8,7 +8,7 @@ from smnp.program.interpreter import Interpreter def main(): try: stdLibraryEnv = loadStandardLibrary() - Interpreter.interpretFile(sys.argv[1], printTokens=False, printAst=True, execute=True, baseEnvironment=stdLibraryEnv) + Interpreter.interpretFile(sys.argv[1], printTokens=False, printAst=False, execute=True, baseEnvironment=stdLibraryEnv) #draft() #tokens = tokenize(['function a(b...) { x+y}']) #FunctionDefinitionParser(tokens).node.print() diff --git a/smnp/runtime/evaluator.py b/smnp/runtime/evaluator.py index a3ca29e..d722577 100644 --- a/smnp/runtime/evaluator.py +++ b/smnp/runtime/evaluator.py @@ -1,5 +1,6 @@ from smnp.ast.node.block import Block from smnp.ast.node.condition import IfElse +from smnp.ast.node.extend import Extend from smnp.ast.node.function import FunctionDefinition from smnp.ast.node.imports import Import from smnp.ast.node.program import Program @@ -75,6 +76,7 @@ def evaluate(node, environment): from smnp.runtime.evaluators.imports import ImportEvaluator from smnp.runtime.evaluators.function import FunctionDefinitionEvaluator from smnp.runtime.evaluators.function import ReturnEvaluator + from smnp.runtime.evaluators.extend import ExtendEvaluator result = Evaluator.oneOf( Evaluator.forNodes(ProgramEvaluator.evaluate, Program), Evaluator.forNodes(IfElseStatementEvaluator.evaluate, IfElse), @@ -82,6 +84,7 @@ def evaluate(node, environment): Evaluator.forNodes(ImportEvaluator.evaluate, Import), Evaluator.forNodes(FunctionDefinitionEvaluator.evaluate, FunctionDefinition), Evaluator.forNodes(ReturnEvaluator.evaluate, Return), + Evaluator.forNodes(ExtendEvaluator.evaluate, Extend), #Evaluator.forNodes(ImportEvaluator.evaluate, ImportNode), #Evaluator.forNodes(FunctionDefinitionEvaluator.evaluate, FunctionDefinitionNode), #Evaluator.forNodes(ExtendEvaluator.evaluate, ExtendNode), diff --git a/smnp/runtime/evaluators/extend.py b/smnp/runtime/evaluators/extend.py index f1747f9..546487c 100644 --- a/smnp/runtime/evaluators/extend.py +++ b/smnp/runtime/evaluators/extend.py @@ -17,11 +17,11 @@ class ExtendEvaluator(Evaluator): @classmethod def _typeToMethodSignature(cls, node): if type(node.specifiers) == NoneNode: - return signature(ofType(node.type)) + return signature(ofType(node.type.value)) - elif node.type == Type.LIST: + elif node.type.value == Type.LIST: return signature(listSpecifier(node.specifiers[0])) - elif node.type == Type.MAP: + elif node.type.value == Type.MAP: return signature(mapSpecifier(node.specifiers[0], node.specifiers[1])) @classmethod