Add call stack to RuntimeException based errors

This commit is contained in:
Bartłomiej Pluta
2019-07-10 12:53:58 +02:00
parent d10df10282
commit 9ea2202d14
7 changed files with 39 additions and 24 deletions

View File

@@ -1,5 +1,6 @@
from smnp.ast.parser import parse
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
@@ -9,18 +10,22 @@ class Interpreter:
@staticmethod
def interpretFile(file, printTokens=False, printAst=False):
lines = readLines(file)
tokens = tokenize(lines)
if printTokens:
print(tokens)
ast = parse(tokens)
if printAst:
ast.print()
environment = createEnvironment()
evaluate(ast, environment)
try:
lines = readLines(file)
return environment
tokens = tokenize(lines)
if printTokens:
print(tokens)
ast = parse(tokens)
if printAst:
ast.print()
evaluate(ast, environment)
return environment
except RuntimeException as e:
e.environment = environment
raise e