[Wisp-cvs] wisp/users/dig tran-builtins,1.17,1.18 tran.py,1.88,1.89
Status: Alpha
Brought to you by:
digg
From: <di...@us...> - 2003-05-17 10:29:45
|
Update of /cvsroot/wisp/wisp/users/dig In directory sc8-pr-cvs1:/tmp/cvs-serv22927 Modified Files: tran-builtins tran.py Log Message: renamed Regstack to interpreter.regstack Index: tran-builtins =================================================================== RCS file: /cvsroot/wisp/wisp/users/dig/tran-builtins,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- tran-builtins 17 May 2003 09:51:15 -0000 1.17 +++ tran-builtins 17 May 2003 10:29:40 -0000 1.18 @@ -7,38 +7,38 @@ #### @(#) $Id$ $-t, sum - s = Regstack.pop() + s = interpreter.regstack.pop() scalar = long(s[0]) symbols = map(str, s[1:]) interpreter.current.emit_tetra_sum(symbols, delta = scalar % 0x100000000L, relative = 1) $-t, sym - interpreter.current.emit_tetra_sum([str(Regstack.pop())], relative = 1) + interpreter.current.emit_tetra_sum([str(interpreter.regstack.pop())], relative = 1) $-w, sum - s = Regstack.pop() + s = interpreter.regstack.pop() scalar = long(s[0]) symbols = map(str, s[1:]) interpreter.current.emit_wyde_sum(symbols, delta = scalar % 0x10000L, relative = 1) $-w, sym - interpreter.current.emit_wyde_sum([str(Regstack.pop())], relative = 1) + interpreter.current.emit_wyde_sum([str(interpreter.regstack.pop())], relative = 1) + int int - n = Regstack.pop(); m = Regstack.pop() - Regstack.append(m + n) + n = interpreter.regstack.pop(); m = interpreter.regstack.pop() + interpreter.regstack.append(m + n) - int int - n = Regstack.pop(); m = Regstack.pop() - Regstack.append(m - n) + n = interpreter.regstack.pop(); m = interpreter.regstack.pop() + interpreter.regstack.append(m - n) - sum int - n = Regstack.pop(); m = Regstack.pop() - Regstack.append(m - n) + n = interpreter.regstack.pop(); m = interpreter.regstack.pop() + interpreter.regstack.append(m - n) - sym int - n = Regstack.pop(); m = Regstack.pop() - Regstack.append(m - n) + n = interpreter.regstack.pop(); m = interpreter.regstack.pop() + interpreter.regstack.append(m - n) .bss interpreter.current = interpreter.bss @@ -50,31 +50,33 @@ interpreter.current = interpreter.text // - Regstack = [] + interpreter.regstack = [] 3rev - if len(Regstack) < 3: raise 'unstacking is not implemented yet' - r = Regstack[-3:]; r.reverse() - Regstack = Regstack[:-3] + r + if len(interpreter.regstack) < 3: raise 'unstacking is not implemented yet' + r = interpreter.regstack[-3:]; r.reverse() + interpreter.regstack = interpreter.regstack[:-3] + r 4rev - if len(Regstack) < 4: raise 'unstacking is not implemented yet' - r = Regstack[-4:]; r.reverse() - Regstack = Regstack[:-4] + r + if len(interpreter.regstack) < 4: raise 'unstacking is not implemented yet' + r = interpreter.regstack[-4:]; r.reverse() + interpreter.regstack = interpreter.regstack[:-4] + r 5rev - if len(Regstack) < 5: raise 'unstacking is not implemented yet' - r = Regstack[-5:]; r.reverse() - Regstack = Regstack[:-5] + r + if len(interpreter.regstack) < 5: raise 'unstacking is not implemented yet' + r = interpreter.regstack[-5:]; r.reverse() + interpreter.regstack = interpreter.regstack[:-5] + r :[ # intended to be used before the macro's pattern - if Regstack: raise 'stack not empty for :[', Regstack + if interpreter.regstack: + raise 'stack not empty for :[', interpreter.regstack ]|name - if len(Regstack) > 2: raise 'too long argument pattern', Regstack - name = ' '.join([name] + [matchers(i).next() for i in Regstack]) - Regstack = [] + if len(interpreter.regstack) > 2: + raise 'too long argument pattern', interpreter.regstack + name = ' '.join([name] + [matchers(i).next() for i in interpreter.regstack]) + interpreter.regstack = [] if Meaning.has_key(name): raise 'duplicate declaration', name interpreter.recordee = Meaning[name] = [] def record_state (tok): @@ -126,53 +128,53 @@ regs_state0(family) align int - interpreter.current.align(long(Regstack.pop())) + interpreter.current.align(long(interpreter.regstack.pop())) b, int - interpreter.current[::1] = long(Regstack.pop()) + interpreter.current[::1] = long(interpreter.regstack.pop()) b, sym - interpreter.current[::1] = str(Regstack.pop()) + interpreter.current[::1] = str(interpreter.regstack.pop()) commit - Regstack.reverse() - prep.push(Macro_Cursor(['$push'] * len(Regstack))) + interpreter.regstack.reverse() + prep.push(Macro_Cursor(['$push'] * len(interpreter.regstack))) drop any - Regstack.pop() + interpreter.regstack.pop() dup any - Regstack.append(Regstack[-1]) + interpreter.regstack.append(interpreter.regstack[-1]) label|name interpreter.current.place_symbol('&' + name) minor reg - Regstack.append(Integer_Literal(Regstack.pop()[-1])) + interpreter.regstack.append(Integer_Literal(interpreter.regstack.pop()[-1])) include|name prep.push_file(str(name) + '.tran') ref|name - Regstack.append(Symbol_Literal('&' + name)) + interpreter.regstack.append(Symbol_Literal('&' + name)) reserve int - interpreter.current.skip(Regstack.pop()) + interpreter.current.skip(interpreter.regstack.pop()) swap any any - y = Regstack.pop(); x = Regstack.pop() - Regstack.append(y); Regstack.append(x) + y = interpreter.regstack.pop(); x = interpreter.regstack.pop() + interpreter.regstack.append(y); interpreter.regstack.append(x) t, int - interpreter.current[::4] = long(Regstack.pop()) + interpreter.current[::4] = long(interpreter.regstack.pop()) t, sym - interpreter.current[::4] = str(Regstack.pop()) + interpreter.current[::4] = str(interpreter.regstack.pop()) w, int - interpreter.current[::2] = long(Regstack.pop()) + interpreter.current[::2] = long(interpreter.regstack.pop()) w, sym - interpreter.current[::2] = str(Regstack.pop()) + interpreter.current[::2] = str(interpreter.regstack.pop()) # vim: ft=python Index: tran.py =================================================================== RCS file: /cvsroot/wisp/wisp/users/dig/tran.py,v retrieving revision 1.88 retrieving revision 1.89 diff -u -d -r1.88 -r1.89 --- tran.py 17 May 2003 10:16:53 -0000 1.88 +++ tran.py 17 May 2003 10:29:41 -0000 1.89 @@ -200,27 +200,26 @@ def match_generator (root): yield root - if len(Regstack) < 1: yield None # want more registers - m = matchers(Regstack[-1]) + if len(interpreter.regstack) < 1: yield None # want more registers + m = matchers(interpreter.regstack[-1]) try: while 1: yield root + ' ' + m.next() except StopIteration: pass - if len(Regstack) < 2: yield None - m1 = matchers(Regstack[-2]) + if len(interpreter.regstack) < 2: yield None + m1 = matchers(interpreter.regstack[-2]) try: while 1: n1 = m1.next() - m2 = matchers(Regstack[-1]) + m2 = matchers(interpreter.regstack[-1]) try: while 1: yield root + ' ' + n1 + ' ' + m2.next() except StopIteration: pass except StopIteration: pass def outer_state (tok): - global Regstack if isinstance(tok, Integer_Literal): - Regstack.append(tok) + interpreter.regstack.append(tok) elif isinstance(tok, str): root = tok mg = match_generator(root) @@ -233,7 +232,7 @@ raise 'meaningless word', root m = Meaning[tok] if isinstance(m, list): prep.push(Macro_Cursor(m)) - elif isinstance(m, Stackable): Regstack.append(m) + elif isinstance(m, Stackable): interpreter.regstack.append(m) elif isinstance(m, tuple): mtype = m[0] if mtype == 'builtin': @@ -247,7 +246,6 @@ else: raise 'Unknown meaning format for', tok else: raise 'bad token', tok -Regstack = [] Generic_Register = Register() MA_PREFIX = 1 @@ -268,7 +266,7 @@ np = (name + '|').split('|') name = np[0] pa = np[1] - exec 'def _p (%s):\n global Regstack\n%s\n' % (pa, code) + exec 'def _p (%s):\n%s\n' % (pa, code) flags = 0 if pa: flags |= MA_PREFIX Meaning[name] = 'builtin', _p, flags @@ -286,6 +284,7 @@ interpreter.recordee = None interpreter.regpaths = [Register(0)] # for generating new registers interpreter.hanging = {} +interpreter.regstack = [] default_output_names = {'elf': 'a.out', 'pe': 'untitled.exe'} verbose = 0 @@ -320,14 +319,14 @@ prep = Preprocessor(args[0]) tok = prep.get_token() while tok <> None: - if verbose: print '(%s) %s' % (' '.join(map(str, Regstack)), tok) + if verbose: print '(%s) %s' % (' '.join(map(str, interpreter.regstack)), tok) interpreter.state(tok) tok = prep.get_token() interpreter.text.dump(title = 'TEXT') interpreter.data.dump(title = 'DATA') interpreter.bss.dump(title = 'BSS') - if Regstack: - raise 'Regstack not empty after parsing ended', Regstack + if interpreter.regstack: + raise 'Regstack not empty after parsing ended', interpreter.regstack argum = { 'text': interpreter.text, 'data': interpreter.data, |