lex を試す。内部変数

#!/usr/bin/env python

import ply.lex as lex

tokens = (
  'A',
  'PLUS',
)

t_A    = r'a'
t_PLUS = r'\+'

def t_error(t):
    print "Illegal character '%s'" % t.value[0]
    t.lexer.skip(1)

lexer = lex.lex()
lexer.input("a+a")

print dir(lexer)
print lexer.lexpos
print lexer.lineno
print lexer.lexdata
#print lexer.lexmatch

while 1:
    tok = lexer.token()
    if not tok: break      # No more input
    print tok

print lexer.lexmatch

で、

['__doc__', '__init__', '__module__', 'begin', 'clone', 'current_state', 'input', 'lexdata', 'lexdebug', 'lexerrorf', 'lexignore', 'lexlen', 'lexliterals', 'lexmodule', 'lexoptimize', 'lexpos', 'lexre', 'lexreflags', 'lexretext', 'lexstate', 'lexstateerrorf', 'lexstateignore', 'lexstateinfo', 'lexstatere', 'lexstateretext', 'lexstatestack', 'lextokens', 'lineno', 'pop_state', 'push_state', 'readtab', 'skip', 'token', 'writetab']
0
1
a+a
LexToken(A,'a',1,0)
LexToken(PLUS,'+',1,1)
LexToken(A,'a',1,2)
<_sre.SRE_Match object at 0x401e7f08>