字句解析
正規表現でそのままパターンマッチしているだけみたいなので、普通に色々書けそう
%% parser Test: token END: "$" token A: "a" token ABC: "(a|b|c)" token AAA: "a+" token NUM: "\d+" token VAR: "[a-zA-Z_]+" rule start: A END {{ print "*a*" }} | ABC END {{ print "*abc*" }} | AAA END {{ print "*aaa*" }} | NUM END {{ print "*num*" }} | VAR END {{ print "*var*" }} %% if __name__=='__main__': while 1: try: s = raw_input('>>> ') except EOFError: break if not s.strip(): break parse('start', s) print 'Bye.'
で、
>>> a *a* >>> b *abc* >>> aaaa *aaa* >>> 012 *num* >>> abc *var*