import Test
import sys
from Plex import *
letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_"
wax = Any("(")
wane = Any(")")
letter = Any(letters)
space = Any(" \t\n")
def open_paren(s, t):
s.counter = s.counter + 1
def close_paren(s, t):
s.counter = s.counter - 1
def got_a_letter(s, t):
if s.counter == 0:
return 'letter'
else:
return None
lex = Lexicon([
(wax, open_paren),
(wane, close_paren),
(letter, got_a_letter),
(space, IGNORE)
],
debug = Test.debug,
timings = sys.stderr
)
class MyScanner(Scanner):
counter = 0
trace = 0
Test.run(lex, "test4", scanner_class = MyScanner, trace = 0)
syntax highlighted by Code2HTML, v. 0.9.1