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('<')
|