Fixing loop variables

This commit is contained in:
Anthony Debucquoy 2025-04-29 21:38:31 +02:00
parent e2e058c8ac
commit 69d2bbaaf3
Signed by: tonitch
GPG Key ID: A78D6421F083D42E
3 changed files with 22 additions and 5 deletions

15
examples/boucles_var.spf Normal file
View File

@ -0,0 +1,15 @@
entier x = 0;
tant que x < 10 faire {
entier y = x;
x = x + 1;
afficher x, y;
}
afficher "yess";
pour chaque entier i dans [1:5] faire {
entier y = i;
y = y + i;
x = x + i;
afficher x, y;
}

2
spf.py
View File

@ -30,6 +30,7 @@ class SPFInterpreter(lark.visitors.Interpreter):
except SPFException as e: except SPFException as e:
e.errorline = el.meta.line e.errorline = el.meta.line
raise e raise e
old_inloop = self.variables.variables.copy()
target = self.visit_children(el.children[2])[0] target = self.visit_children(el.children[2])[0]
for i in target: for i in target:
@ -39,6 +40,7 @@ class SPFInterpreter(lark.visitors.Interpreter):
e.errorline = el.meta.line e.errorline = el.meta.line
raise e raise e
self.visit_children(el.children[3]) self.visit_children(el.children[3])
self.variables.variables = old_inloop.copy()
self.variables.variables = old.copy() self.variables.variables = old.copy()
def afficher(self, el): def afficher(self, el):