|
1 | 1 | from .values import Value
|
| 2 | +from .types import Type |
2 | 3 |
|
3 | 4 |
|
4 | 5 | class Memory:
|
5 | 6 | def __init__(self):
|
6 |
| - self.variables: dict[str, Value] = {} |
| 7 | + self.variables: dict[str, Value | Type] = {} |
7 | 8 |
|
8 | 9 | def has_variable(self, name: str) -> bool:
|
9 | 10 | return name in self.variables
|
10 | 11 |
|
11 |
| - def get(self, name: str) -> Value: |
| 12 | + def get(self, name: str) -> Value | Type: |
12 | 13 | return self.variables[name]
|
13 | 14 |
|
14 |
| - def put(self, name: str, value: Value): |
| 15 | + def put(self, name: str, value: Value | Type): |
15 | 16 | self.variables[name] = value
|
16 | 17 |
|
17 | 18 |
|
18 | 19 | class MemoryStack:
|
19 | 20 | def __init__(self):
|
20 | 21 | self.stack: list[Memory] = []
|
21 | 22 |
|
22 |
| - def get(self, name: str) -> Value: |
| 23 | + def get(self, name: str) -> Value | Type: |
23 | 24 | for memory in self.stack:
|
24 | 25 | if memory.has_variable(name):
|
25 | 26 | return memory.get(name)
|
26 | 27 |
|
27 |
| - def put(self, name: str, value: Value): |
| 28 | + def put(self, name: str, value: Value | Type): |
28 | 29 | for memory in self.stack:
|
29 | 30 | if memory.has_variable(name):
|
30 | 31 | memory.put(name, value)
|
|
0 commit comments