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
|