Fixing loop variables
This commit is contained in:
parent
e2e058c8ac
commit
69d2bbaaf3
15
examples/boucles_var.spf
Normal file
15
examples/boucles_var.spf
Normal 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
2
spf.py
@ -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):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user