yparse.py (4479:61d3ed46e373) yparse.py (6498:e21e9ab5fad0)
1# parser for Unix yacc-based grammars
2#
3# Author: David Beazley (dave@dabeaz.com)
4# Date : October 2, 2006
5
6import ylex
7tokens = ylex.tokens
8

--- 11 unchanged lines hidden (view full) ---

20 '''defsection : definitions SECTION
21 | SECTION'''
22 p.lexer.lastsection = 1
23 print "tokens = ", repr(tokenlist)
24 print
25 print "precedence = ", repr(preclist)
26 print
27 print "# -------------- RULES ----------------"
1# parser for Unix yacc-based grammars
2#
3# Author: David Beazley (dave@dabeaz.com)
4# Date : October 2, 2006
5
6import ylex
7tokens = ylex.tokens
8

--- 11 unchanged lines hidden (view full) ---

20 '''defsection : definitions SECTION
21 | SECTION'''
22 p.lexer.lastsection = 1
23 print "tokens = ", repr(tokenlist)
24 print
25 print "precedence = ", repr(preclist)
26 print
27 print "# -------------- RULES ----------------"
28 print
28 print
29
30def p_rulesection(p):
31 '''rulesection : rules SECTION'''
32
33 print "# -------------- RULES END ----------------"
34 print_code(p[2],0)
35
36def p_definitions(p):

--- 36 unchanged lines hidden (view full) ---

73 | tokenid'''
74 if len(p) == 2:
75 p[0] = [p[1]]
76 else:
77 p[0] = p[1]
78 p[1].append(p[3])
79
80def p_tokenid(p):
29
30def p_rulesection(p):
31 '''rulesection : rules SECTION'''
32
33 print "# -------------- RULES END ----------------"
34 print_code(p[2],0)
35
36def p_definitions(p):

--- 36 unchanged lines hidden (view full) ---

73 | tokenid'''
74 if len(p) == 2:
75 p[0] = [p[1]]
76 else:
77 p[0] = p[1]
78 p[1].append(p[3])
79
80def p_tokenid(p):
81 '''tokenid : ID
81 '''tokenid : ID
82 | ID NUMBER
83 | QLITERAL
84 | QLITERAL NUMBER'''
85 p[0] = p[1]
82 | ID NUMBER
83 | QLITERAL
84 | QLITERAL NUMBER'''
85 p[0] = p[1]
86
86
87def p_optsemi(p):
88 '''optsemi : ';'
89 | empty'''
90
91def p_optcomma(p):
92 '''optcomma : ','
93 | empty'''
94

--- 65 unchanged lines hidden (view full) ---

160 p[0] = (p[1],p[4])
161
162def p_rule_empty(p):
163 '''rule : ID ':' ';' '''
164 p[0] = (p[1],[[]])
165
166def p_rule_empty2(p):
167 '''rule : ID ':' morerules ';' '''
87def p_optsemi(p):
88 '''optsemi : ';'
89 | empty'''
90
91def p_optcomma(p):
92 '''optcomma : ','
93 | empty'''
94

--- 65 unchanged lines hidden (view full) ---

160 p[0] = (p[1],p[4])
161
162def p_rule_empty(p):
163 '''rule : ID ':' ';' '''
164 p[0] = (p[1],[[]])
165
166def p_rule_empty2(p):
167 '''rule : ID ':' morerules ';' '''
168
168
169 p[3].insert(0,[])
170 p[0] = (p[1],p[3])
171
172def p_morerules(p):
173 '''morerules : morerules '|' rulelist
174 | '|' rulelist
175 | '|' '''
169 p[3].insert(0,[])
170 p[0] = (p[1],p[3])
171
172def p_morerules(p):
173 '''morerules : morerules '|' rulelist
174 | '|' rulelist
175 | '|' '''
176
177 if len(p) == 2:
176
177 if len(p) == 2:
178 p[0] = [[]]
178 p[0] = [[]]
179 elif len(p) == 3:
179 elif len(p) == 3:
180 p[0] = [p[2]]
181 else:
182 p[0] = p[1]
183 p[0].append(p[3])
184
185# print "morerules", len(p), p[0]
186
187def p_rulelist(p):

--- 30 unchanged lines hidden ---
180 p[0] = [p[2]]
181 else:
182 p[0] = p[1]
183 p[0].append(p[3])
184
185# print "morerules", len(p), p[0]
186
187def p_rulelist(p):

--- 30 unchanged lines hidden ---