1*09948d41SKrzysztof Kosińskiimport sys 2*09948d41SKrzysztof Kosiński 3*09948d41SKrzysztof Kosińskiif ".." not in sys.path: sys.path.insert(0,"..") 4*09948d41SKrzysztof Kosiński 5*09948d41SKrzysztof Kosińskifrom ply import lex, yacc 6*09948d41SKrzysztof Kosiński 7*09948d41SKrzysztof Kosińskit_A = 'A' 8*09948d41SKrzysztof Kosińskit_B = 'B' 9*09948d41SKrzysztof Kosińskit_C = 'C' 10*09948d41SKrzysztof Kosiński 11*09948d41SKrzysztof Kosińskitokens = ('A', 'B', 'C') 12*09948d41SKrzysztof Kosiński 13*09948d41SKrzysztof Kosińskithe_lexer = lex.lex() 14*09948d41SKrzysztof Kosiński 15*09948d41SKrzysztof Kosińskidef t_error(t): 16*09948d41SKrzysztof Kosiński pass 17*09948d41SKrzysztof Kosiński 18*09948d41SKrzysztof Kosińskidef p_error(p): 19*09948d41SKrzysztof Kosiński pass 20*09948d41SKrzysztof Kosiński 21*09948d41SKrzysztof Kosińskidef p_start(t): 22*09948d41SKrzysztof Kosiński '''start : A nest C''' 23*09948d41SKrzysztof Kosiński pass 24*09948d41SKrzysztof Kosiński 25*09948d41SKrzysztof Kosińskidef p_nest(t): 26*09948d41SKrzysztof Kosiński '''nest : B''' 27*09948d41SKrzysztof Kosiński print(t[-1]) 28*09948d41SKrzysztof Kosiński 29*09948d41SKrzysztof Kosińskithe_parser = yacc.yacc(debug = False, write_tables = False) 30*09948d41SKrzysztof Kosiński 31*09948d41SKrzysztof Kosińskithe_parser.parse('ABC', the_lexer) 32*09948d41SKrzysztof Kosińskithe_parser.parse('ABC', the_lexer, tracking=True) 33*09948d41SKrzysztof Kosińskithe_parser.parse('ABC', the_lexer, tracking=True, debug=1) 34