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