字句解析:トークンの選ばれ方
%% parser Test: token END: "$" token A: "a" token AA: "aa" rule start: A A END {{ print "*a a*" }} | AA END {{ print "*aa*" }} %% if __name__=='__main__': while 1: try: s = raw_input('>>> ') except EOFError: break if not s.strip(): break parse('start', s) print 'Bye.'
で、
>>> aa *aa*
長い方
%% parser Test: token END: "$" token A: "a" token ANY: "\w" rule start: A END {{ print "*a*" }} | ANY END {{ print "*any*" }} %% if __name__=='__main__': while 1: try: s = raw_input('>>> ') except EOFError: break if not s.strip(): break parse('start', s) print 'Bye.'
で、
>>> a *a*
同じ長さの場合、上に書いてある方
%% parser Test: token END: "$" token ANY: "\w" token A: "a" rule start: A END {{ print "*a*" }} | ANY END {{ print "*any*" }} %% if __name__=='__main__': while 1: try: s = raw_input('>>> ') except EOFError: break if not s.strip(): break parse('start', s) print 'Bye.'
で、
>>> a *any*
同じ長さの場合、上に書いてある方