[Wisp-cvs] wisp/users/dig tran-builtins,1.18,1.19 tran.py,1.90,1.91
Status: Alpha
Brought to you by:
digg
From: <di...@us...> - 2003-05-17 10:43:59
|
Update of /cvsroot/wisp/wisp/users/dig In directory sc8-pr-cvs1:/tmp/cvs-serv1440 Modified Files: tran-builtins tran.py Log Message: converted outer_state into a method of the Interpreter class Index: tran-builtins =================================================================== RCS file: /cvsroot/wisp/wisp/users/dig/tran-builtins,v retrieving revision 1.18 retrieving revision 1.19 diff -u -d -r1.18 -r1.19 --- tran-builtins 17 May 2003 10:29:40 -0000 1.18 +++ tran-builtins 17 May 2003 10:43:54 -0000 1.19 @@ -81,7 +81,7 @@ interpreter.recordee = Meaning[name] = [] def record_state (tok): if tok == Semicolon: - interpreter.state = outer_state + interpreter.state = interpreter.outer_state interpreter.recordee = None else: interpreter.recordee.append(tok) @@ -110,7 +110,7 @@ if tok == Semicolon: interpreter.regpaths.pop() if len(interpreter.regpaths) == 1: - interpreter.state = outer_state + interpreter.state = interpreter.outer_state else: r = interpreter.regpaths[-1] if interpreter.hanging.has_key(r.parent()): Index: tran.py =================================================================== RCS file: /cvsroot/wisp/wisp/users/dig/tran.py,v retrieving revision 1.90 retrieving revision 1.91 diff -u -d -r1.90 -r1.91 --- tran.py 17 May 2003 10:38:09 -0000 1.90 +++ tran.py 17 May 2003 10:43:54 -0000 1.91 @@ -217,35 +217,6 @@ except StopIteration: pass except StopIteration: pass -def outer_state (tok): - if isinstance(tok, Integer_Literal): - interpreter.regstack.append(tok) - elif isinstance(tok, str): - root = tok - mg = match_generator(root) - try: - while not Meaning.has_key(tok): - tok = mg.next() - if tok == None: - raise 'stack too empty or meaningless word', root - except StopIteration: - raise 'meaningless word', root - m = Meaning[tok] - if isinstance(m, list): prep.push(Macro_Cursor(m)) - elif isinstance(m, Stackable): interpreter.regstack.append(m) - elif isinstance(m, tuple): - mtype = m[0] - if mtype == 'builtin': - if m[2] & MA_PREFIX: - tok = prep.get_token() - if not isinstance(tok, str): raise 'word expected', tok - m[1](tok) - else: - m[1]() - else: raise 'Unknown meaning type in', `Meaning[tok]` - else: raise 'Unknown meaning format for', tok - else: raise 'bad token', tok - Generic_Register = Register() MA_PREFIX = 1 @@ -284,7 +255,35 @@ this.regpaths = [Register(0)] # for generating new registers this.hanging = {} this.regstack = [] - this.state = outer_state + this.state = this.outer_state + def outer_state (this, tok): + if isinstance(tok, Integer_Literal): + this.regstack.append(tok) + elif isinstance(tok, str): + root = tok + mg = match_generator(root) + try: + while not Meaning.has_key(tok): + tok = mg.next() + if tok == None: + raise 'stack too empty or meaningless word', root + except StopIteration: + raise 'meaningless word', root + m = Meaning[tok] + if isinstance(m, list): prep.push(Macro_Cursor(m)) + elif isinstance(m, Stackable): this.regstack.append(m) + elif isinstance(m, tuple): + mtype = m[0] + if mtype == 'builtin': + if m[2] & MA_PREFIX: + tok = prep.get_token() + if not isinstance(tok, str): raise 'word expected', tok + m[1](tok) + else: + m[1]() + else: raise 'Unknown meaning type in', `Meaning[tok]` + else: raise 'Unknown meaning format for', tok + else: raise 'bad token', tok interpreter = Interpreter('<') |