runtime.Scanner#scan

#!/usr/bin/env python

import re
from yapps import runtime

patterns = [
    ('END', re.compile('$')),
    ('A',   re.compile('a')),
    ('B',   re.compile('b')),
]

s = runtime.Scanner(patterns, {}, "aab")
print s.scan('A')
print s.scan('A')
print s.scan('B')
print s.scan('A')

で、

a
a
b
Traceback (most recent call last):
  File "20090529_yapps200.py", line 15, in ?
    print s.scan('A')
  File "/var/lib/python-support/python2.4/yapps/runtime.py", line 343, in scan
    tok = self.token([type],context)
  File "/var/lib/python-support/python2.4/yapps/runtime.py", line 296, in token
    raise SyntaxError(self.get_pos(), msg, context=context)
yapps.runtime.SyntaxError: SyntaxError@('<f.0>', 1, 3)(Trying to find one of A)