[Wisp-cvs] wisp/users/dig interpreter.py,1.6,1.7
Status: Alpha
Brought to you by:
digg
From: <di...@us...> - 2003-05-17 12:29:20
|
Update of /cvsroot/wisp/wisp/users/dig In directory sc8-pr-cvs1:/tmp/cvs-serv3666 Modified Files: interpreter.py Log Message: converted match_generator into an Interpreter method Index: interpreter.py =================================================================== RCS file: /cvsroot/wisp/wisp/users/dig/interpreter.py,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- interpreter.py 17 May 2003 12:25:39 -0000 1.6 +++ interpreter.py 17 May 2003 12:29:16 -0000 1.7 @@ -186,25 +186,6 @@ object = object.parent() yield 'any' -def match_generator (root): - yield root - 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(interpreter.regstack) < 2: yield None - m1 = matchers(interpreter.regstack[-2]) - try: - while 1: - n1 = m1.next() - m2 = matchers(interpreter.regstack[-1]) - try: - while 1: yield root + ' ' + n1 + ' ' + m2.next() - except StopIteration: pass - except StopIteration: pass - MA_PREFIX = 1 def make_universal_meaning (fn): @@ -256,12 +237,30 @@ this.hanging = {} this.regstack = [] this.state = this.outer_state + def match_generator (this, root): + yield root + if len(this.regstack) < 1: yield None # want more registers + m = matchers(this.regstack[-1]) + try: + while 1: + yield root + ' ' + m.next() + except StopIteration: pass + if len(this.regstack) < 2: yield None + m1 = matchers(this.regstack[-2]) + try: + while 1: + n1 = m1.next() + m2 = matchers(this.regstack[-1]) + try: + while 1: yield root + ' ' + n1 + ' ' + m2.next() + except StopIteration: pass + except StopIteration: pass def outer_state (this, tok): if isinstance(tok, Integer_Literal): this.regstack.append(tok) elif isinstance(tok, str): root = tok - mg = match_generator(root) + mg = this.match_generator(root) try: while not this.meaning.has_key(tok): tok = mg.next() |