Fixing loop variables
This commit is contained in:
		
							
								
								
									
										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): | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user