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>