16498Snate@binkert.orgimport sys 26498Snate@binkert.org 36498Snate@binkert.orgif ".." not in sys.path: sys.path.insert(0,"..") 46498Snate@binkert.org 56498Snate@binkert.orgfrom ply import lex, yacc 66498Snate@binkert.org 76498Snate@binkert.orgt_A = 'A' 86498Snate@binkert.orgt_B = 'B' 96498Snate@binkert.orgt_C = 'C' 106498Snate@binkert.org 116498Snate@binkert.orgtokens = ('A', 'B', 'C') 126498Snate@binkert.org 136498Snate@binkert.orgthe_lexer = lex.lex() 146498Snate@binkert.org 156498Snate@binkert.orgdef t_error(t): 166498Snate@binkert.org pass 176498Snate@binkert.org 186498Snate@binkert.orgdef p_error(p): 196498Snate@binkert.org pass 206498Snate@binkert.org 216498Snate@binkert.orgdef p_start(t): 226498Snate@binkert.org '''start : A nest C''' 236498Snate@binkert.org pass 246498Snate@binkert.org 256498Snate@binkert.orgdef p_nest(t): 266498Snate@binkert.org '''nest : B''' 276498Snate@binkert.org print(t[-1]) 286498Snate@binkert.org 296498Snate@binkert.orgthe_parser = yacc.yacc(debug = False, write_tables = False) 306498Snate@binkert.org 316498Snate@binkert.orgthe_parser.parse('ABC', the_lexer) 326498Snate@binkert.orgthe_parser.parse('ABC', the_lexer, tracking=True) 336498Snate@binkert.orgthe_parser.parse('ABC', the_lexer, tracking=True, debug=1) 34