Make access node more generic

This commit is contained in:
Bartłomiej Pluta
2019-07-10 16:51:11 +02:00
parent 823c5cb18f
commit 88b245dc05
15 changed files with 71 additions and 42 deletions

View File

@@ -9,15 +9,15 @@ from smnp.token.tokenizer import tokenize
class Interpreter:
@staticmethod
def interpretString(string, printTokens=False, printAst=False, baseEnvironment=None):
return Interpreter._interpret(string.splitlines(), printTokens, printAst, baseEnvironment)
def interpretString(string, printTokens=False, printAst=False, execute=True, baseEnvironment=None):
return Interpreter._interpret(string.splitlines(), printTokens, printAst, execute, baseEnvironment)
@staticmethod
def interpretFile(file, printTokens=False, printAst=False, baseEnvironment=None):
return Interpreter._interpret(readLines(file), printTokens, printAst, baseEnvironment)
def interpretFile(file, printTokens=False, printAst=False, execute=True, baseEnvironment=None):
return Interpreter._interpret(readLines(file), printTokens, printAst, execute, baseEnvironment)
@staticmethod
def _interpret(lines, printTokens=False, printAst=False, baseEnvironment=None):
def _interpret(lines, printTokens=False, printAst=False, execute=True, baseEnvironment=None):
environment = createEnvironment()
if baseEnvironment is not None:
environment.extend(baseEnvironment)
@@ -31,7 +31,8 @@ class Interpreter:
if printAst:
ast.print()
evaluate(ast, environment)
if execute:
evaluate(ast, environment)
return environment
except RuntimeException as e: