Fixing declaration without variable
This commit is contained in:
		| @ -33,7 +33,7 @@ class Variables: | ||||
|  | ||||
|  | ||||
|         def checkType(self, value, typ) -> bool: | ||||
|             return type(value) == self.types[typ] | ||||
|             return value is None or type(value) == self.types[typ] | ||||
|  | ||||
|         def default(self, typ): | ||||
|             if typ == "entier": | ||||
| @ -52,17 +52,27 @@ class Variables: | ||||
|     def get(self, name): | ||||
|         assert name in self.variables, "la variable {name} n'éxiste pas" | ||||
|         if self.trace: | ||||
|             print(f"{trace_format}accède {name}{reset_format}", file=sys.stdout) | ||||
|             print(f"{trace_format}accède {name}{reset_format}", file=sys.stderr) | ||||
|         return self.variables[name] | ||||
|  | ||||
|     def declare(self, typ, name, value=None): | ||||
|         assert name not in self.variables, "la variable {name} existe déjà" | ||||
|         self.variables[name] = self.Variable(typ, value) | ||||
|         if self.trace: | ||||
|             print(f"{trace_format}déclare {name} = {value}{reset_format}", file=sys.stdout) | ||||
|             print(f"{trace_format}déclare {name} = {value}{reset_format}", file=sys.stderr) | ||||
|  | ||||
|     def assign(self, name, value): | ||||
|         assert name in self.variables, "la variable n'éxiste pas" | ||||
|         self.variables[name].set(value) | ||||
|         if self.trace: | ||||
|             print(f"{trace_format}modifie {name} = {value}{reset_format}", file=sys.stdout) | ||||
|             print(f"{trace_format}modifie {name} = {value}{reset_format}", file=sys.stderr) | ||||
|  | ||||
|     def dump(self): | ||||
|         name_len = max(map(len, self.variables.keys())) | ||||
|         var_len = max(map(len,map(str, self.variables.values()))) | ||||
|         print(f"┌{'─' * name_len}┬{'─' * var_len}┐", file=sys.stderr) | ||||
|         print(f"│{'Name':>{name_len}}│{'Value':<{var_len}}│", file=sys.stderr) | ||||
|         print(f"├{'─' * name_len}┼{'─' * var_len}┤", file=sys.stderr) | ||||
|         for name, var in self.variables.items(): | ||||
|             print(f"│{name:>{name_len}}│{str(var):<{var_len}}│", file=sys.stderr) | ||||
|         print(f"└{'─' * name_len}┴{'─' * var_len}┘", file=sys.stderr) | ||||
|  | ||||
		Reference in New Issue
	
	Block a user