Create evaluator for extend statement
This commit is contained in:
@@ -8,7 +8,7 @@ from smnp.program.interpreter import Interpreter
|
|||||||
def main():
|
def main():
|
||||||
try:
|
try:
|
||||||
stdLibraryEnv = loadStandardLibrary()
|
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()
|
#draft()
|
||||||
#tokens = tokenize(['function a(b...) { x+y}'])
|
#tokens = tokenize(['function a(b...) { x+y}'])
|
||||||
#FunctionDefinitionParser(tokens).node.print()
|
#FunctionDefinitionParser(tokens).node.print()
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
from smnp.ast.node.block import Block
|
from smnp.ast.node.block import Block
|
||||||
from smnp.ast.node.condition import IfElse
|
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.function import FunctionDefinition
|
||||||
from smnp.ast.node.imports import Import
|
from smnp.ast.node.imports import Import
|
||||||
from smnp.ast.node.program import Program
|
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.imports import ImportEvaluator
|
||||||
from smnp.runtime.evaluators.function import FunctionDefinitionEvaluator
|
from smnp.runtime.evaluators.function import FunctionDefinitionEvaluator
|
||||||
from smnp.runtime.evaluators.function import ReturnEvaluator
|
from smnp.runtime.evaluators.function import ReturnEvaluator
|
||||||
|
from smnp.runtime.evaluators.extend import ExtendEvaluator
|
||||||
result = Evaluator.oneOf(
|
result = Evaluator.oneOf(
|
||||||
Evaluator.forNodes(ProgramEvaluator.evaluate, Program),
|
Evaluator.forNodes(ProgramEvaluator.evaluate, Program),
|
||||||
Evaluator.forNodes(IfElseStatementEvaluator.evaluate, IfElse),
|
Evaluator.forNodes(IfElseStatementEvaluator.evaluate, IfElse),
|
||||||
@@ -82,6 +84,7 @@ def evaluate(node, environment):
|
|||||||
Evaluator.forNodes(ImportEvaluator.evaluate, Import),
|
Evaluator.forNodes(ImportEvaluator.evaluate, Import),
|
||||||
Evaluator.forNodes(FunctionDefinitionEvaluator.evaluate, FunctionDefinition),
|
Evaluator.forNodes(FunctionDefinitionEvaluator.evaluate, FunctionDefinition),
|
||||||
Evaluator.forNodes(ReturnEvaluator.evaluate, Return),
|
Evaluator.forNodes(ReturnEvaluator.evaluate, Return),
|
||||||
|
Evaluator.forNodes(ExtendEvaluator.evaluate, Extend),
|
||||||
#Evaluator.forNodes(ImportEvaluator.evaluate, ImportNode),
|
#Evaluator.forNodes(ImportEvaluator.evaluate, ImportNode),
|
||||||
#Evaluator.forNodes(FunctionDefinitionEvaluator.evaluate, FunctionDefinitionNode),
|
#Evaluator.forNodes(FunctionDefinitionEvaluator.evaluate, FunctionDefinitionNode),
|
||||||
#Evaluator.forNodes(ExtendEvaluator.evaluate, ExtendNode),
|
#Evaluator.forNodes(ExtendEvaluator.evaluate, ExtendNode),
|
||||||
|
|||||||
@@ -17,11 +17,11 @@ class ExtendEvaluator(Evaluator):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def _typeToMethodSignature(cls, node):
|
def _typeToMethodSignature(cls, node):
|
||||||
if type(node.specifiers) == NoneNode:
|
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]))
|
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]))
|
return signature(mapSpecifier(node.specifiers[0], node.specifiers[1]))
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|||||||
Reference in New Issue
Block a user