[Wisp-cvs] wisp/users/dig tran.py,1.52,1.53
Status: Alpha
Brought to you by:
digg
From: <di...@us...> - 2003-04-22 15:26:23
|
Update of /cvsroot/wisp/wisp/users/dig In directory sc8-pr-cvs1:/tmp/cvs-serv19424 Modified Files: tran.py Log Message: minor cleanup Index: tran.py =================================================================== RCS file: /cvsroot/wisp/wisp/users/dig/tran.py,v retrieving revision 1.52 retrieving revision 1.53 diff -u -d -r1.52 -r1.53 --- tran.py 22 Apr 2003 15:19:24 -0000 1.52 +++ tran.py 22 Apr 2003 15:26:18 -0000 1.53 @@ -238,25 +238,6 @@ Regstack.append(Integer_Literal(reg[-1])) def dup (x): Regstack.append(x); Regstack.append(x) -def colon_macro (name): - global State, Regstack, current_recordee - if len(Regstack) > 2: raise 'too long argument pattern', Regstack - name = ' '.join([name] + [matchers(i).next() for i in Regstack]) - Regstack = [] - if Meaning.has_key(name): raise 'duplicate declaration', name - newmac = [] - Meaning[name] = ('macro', newmac) - current_recordee = newmac - State = state_record -def colon_regs (family): - global State, current_register_index - if Meaning.has_key(family): raise 'duplicate declaration', tok - Register(current_register_family) - f = Register(current_register_family) - Meaning[family] = 'simple', f - Registers[f] = family - current_register_index = 0 - State = state_regs def plus (a, b): if not isinstance(a, Constant_Sum): a = Constant_Sum(a) if not isinstance(b, Constant_Sum): b = Constant_Sum(b) @@ -381,8 +362,6 @@ Meaning = { '+ const const': ('builtin', plus, 2), '- const const': ('builtin', minus, 2), - ':macro': ('builtin', colon_macro, 0 | MA_PREFIX), - ':regs': ('builtin', colon_regs, 0 | MA_PREFIX), 'align int': ('builtin', align, 1), 'any': ('simple', Class_Marker('any')), 'const': ('simple', Class_Marker('const')), @@ -414,6 +393,25 @@ // Regstack = [] +:macro|name + if len(Regstack) > 2: raise 'too long argument pattern', Regstack + name = ' '.join([name] + [matchers(i).next() for i in Regstack]) + Regstack = [] + if Meaning.has_key(name): raise 'duplicate declaration', name + newmac = [] + Meaning[name] = ('macro', newmac) + current_recordee = newmac + State = state_record + +:regs|family + if Meaning.has_key(family): raise 'duplicate declaration', tok + Register(current_register_family) + f = Register(current_register_family) + Meaning[family] = 'simple', f + Registers[f] = family + current_register_index = 0 + State = state_regs + b, int cursect.emit_byte(long(Regstack.pop()) % 0x100) @@ -452,7 +450,8 @@ np = (name + '|').split('|') name = np[0] pa = np[1] - exec 'def _p (%s):\n global cursect, Regstack\n%s\n' % (pa, code) + g = 'cursect, Regstack, State, current_recordee, current_register_index' + exec 'def _p (%s):\n global %s\n%s\n' % (pa, g, code) flags = 0 if pa: flags |= MA_PREFIX Meaning[name] = 'builtin', _p, flags |