Create evaluator for function call and basic atoms

This commit is contained in:
Bartłomiej Pluta
2019-07-12 18:59:59 +02:00
parent 4394c9a8db
commit 1563045de1
6 changed files with 76 additions and 64 deletions

View File

@@ -1,7 +1,8 @@
from smnp.ast.parser import parse
#from smnp.environment.factory import createEnvironment
from smnp.environment.factory import createEnvironment
from smnp.error.runtime import RuntimeException
from smnp.program.FileReader import readLines
from smnp.runtime.evaluator import evaluate
from smnp.token.tokenizer import tokenize
@@ -17,9 +18,9 @@ class Interpreter:
@staticmethod
def _interpret(lines, printTokens=False, printAst=False, execute=True, baseEnvironment=None):
#environment = createEnvironment()
#if baseEnvironment is not None:
# environment.extend(baseEnvironment)
environment = createEnvironment()
if baseEnvironment is not None:
environment.extend(baseEnvironment)
try:
tokens = tokenize(lines)
@@ -30,10 +31,10 @@ class Interpreter:
if printAst:
ast.print()
#if execute:
# evaluate(ast, environment)
if execute:
evaluate(ast, environment)
#return environment
return environment
except RuntimeException as e:
#e.environment = environment
e.environment = environment
raise e