remove variable out of context

This commit is contained in:
Anthony Debucquoy 2025-03-23 09:52:05 +01:00
parent de80ed0dba
commit d8f9ddcc4c
Signed by: tonitch
GPG Key ID: A78D6421F083D42E

7
spf.py
View File

@ -15,19 +15,22 @@ class SPFInterpreter(lark.visitors.Interpreter):
self.variables = Variables(trace)
def while_loop(self, el):
old = self.variables.variables.copy()
while self.visit_children(el.children[0])[0]:
self.visit_children(el.children[1])
self.variables.variables = old.copy()
def for_loop(self, el):
type = el.children[0].value
name = el.children[1].value
old = self.variables.variables.copy()
self.variables.declare(type, name)
target = self.visit_children(el.children[2])[0]
for i in target:
self.variables.assign(name, i)
self.visit_children(el.children[3])
# TODO: delete the variable out of scope
self.variables.variables = old.copy()
def afficher(self, el):
ligne = ""
@ -126,10 +129,12 @@ class SPFInterpreter(lark.visitors.Interpreter):
return self.variables.get(el.children[0].value)
def test(self,el):
old = self.variables.variables.copy()
if self.visit_children(el.children[0])[0]:
self.visit_children(el.children[1])
elif len(el.children) >= 3:
self.visit_children(el.children[2])
self.variables.variables = old.copy()
# Literals