pytholite/compiler: SymbolStack

This commit is contained in:
Sebastien Bourdeauducq 2012-11-09 23:02:16 +01:00
parent 5750c7c07e
commit f57da497b2
1 changed files with 23 additions and 1 deletions

View File

@ -55,13 +55,35 @@ class _Register:
sync = [Case(self.sel, *cases)]
return Fragment(sync=sync)
class _SymbolStack:
def __init__(self):
self.stack = []
def push(self, init={}):
self.stack.append(init)
def pop(self):
return self.stack.pop()
def __setitem__(self, key, value):
self.stack[-1][key] = value
def __getitem__(self, key):
for frame in reversed(self.stack):
try:
return frame[key]
except KeyError:
pass
raise KeyError
class _AbstractNextState:
def __init__(self, target_state):
self.target_state = target_state
class _Compiler:
def __init__(self, symdict, registers):
self.symdict = symdict
self.symdict = _SymbolStack()
self.symdict.push(symdict)
self.registers = registers
self.targetname = ""