Productions of C Grammar
1 translation-unit-prime -> translation-unit
2 translation-unit -> external-declaration
3 translation-unit -> translation-unit external-declaration
4 external-declaration -> function-definition
5 external-declaration -> declaration
6 function-definition -> declaration-specifiers declarator declaration-list compound-statement
7 function-definition -> declarator declaration-list compound-statement
8 function-definition -> declaration-specifiers declarator compound-statement
9 function-definition -> declarator compound-statement
10 declaration -> declaration-specifiers init-declarator-list ;
11 declaration -> declaration-specifiers ;
12 declaration-list -> declaration
13 declaration-list -> declaration-list declaration
14 declaration-specifiers -> storage-class-specifier declaration-specifiers
15 declaration-specifiers -> storage-class-specifier
16 declaration-specifiers -> type-specifier declaration-specifiers
17 declaration-specifiers -> type-specifier
18 declaration-specifiers -> type-qualifier declaration-specifiers
19 declaration-specifiers -> type-qualifier
20 storage-class-specifier -> auto
21 storage-class-specifier -> register
22 storage-class-specifier -> static
23 storage-class-specifier -> extern
24 storage-class-specifier -> typedef
25 type-specifier -> void
26 type-specifier -> char
27 type-specifier -> short
28 type-specifier -> int
29 type-specifier -> long
30 type-specifier -> float
31 type-specifier -> double
32 type-specifier -> signed
33 type-specifier -> unsigned
34 type-specifier -> struct-or-union-specifier
35 type-specifier -> enum-specifier
36 type-specifier -> typedef-name
37 type-qualifier -> const
38 type-qualifier -> volatile
39 struct-or-union-specifier -> struct-or-union identifier { struct-declaration-list }
40 struct-or-union-specifier -> struct-or-union { struct-declaration-list }
41 struct-or-union-specifier -> struct-or-union identifier
42 struct-or-union -> struct
43 struct-or-union -> union
44 struct-declaration-list -> struct-declaration
45 struct-declaration-list -> struct-declaration-list struct-declaration
46 init-declarator-list -> init-declarator
47 init-declarator-list -> init-declarator-list , init-declarator
48 init-declarator -> declarator
49 init-declarator -> declarator = initializer
50 struct-declaration -> specifier-qualifier-list struct-declarator-list ;
51 specifier-qualifier-list -> type-specifier specifier-qualifier-list
52 specifier-qualifier-list -> type-specifier
53 specifier-qualifier-list -> type-qualifier specifier-qualifier-list
54 specifier-qualifier-list -> type-qualifier
55 struct-declarator-list -> struct-declarator
56 struct-declarator-list -> struct-declarator-list , struct-declarator
57 struct-declarator -> declarator
58 struct-declarator -> declarator : constant-expression
59 struct-declarator -> : constant-expression
60 enum-specifier -> enum identifier { enumerator-list }
61 enum-specifier -> enum { enumerator-list }
62 enum-specifier -> enum identifier
63 enumerator-list -> enumerator
64 enumerator-list -> enumerator-list , enumerator
65 enumerator -> identifier
66 enumerator -> identifier = constant-expression
67 declarator -> pointer direct-declarator
68 declarator -> direct-declarator
69 direct-declarator -> identifier
70 direct-declarator -> ( declarator )
71 direct-declarator -> direct-declarator [ constant-expression ]
72 direct-declarator -> direct-declarator [ ]
73 direct-declarator -> direct-declarator ( parameter-type-list )
74 direct-declarator -> direct-declarator ( identifier-list )
75 direct-declarator -> direct-declarator ( )
76 pointer -> * type-qualifier-list
77 pointer -> *
78 pointer -> * type-qualifier-list pointer
79 pointer -> * pointer
80 type-qualifier-list -> type-qualifier
81 type-qualifier-list -> type-qualifier-list type-qualifier
82 parameter-type-list -> parameter-list
83 parameter-type-list -> parameter-list , ...
84 parameter-list -> parameter-declaration
85 parameter-list -> parameter-list , parameter-declaration
86 parameter-declaration -> declaration-specifiers declarator
87 parameter-declaration -> declaration-specifiers
88 parameter-declaration -> declaration-specifiers abstract-declarator
89 identifier-list -> identifier
90 identifier-list -> identifier-list , identifier
91 initializer -> assignment-expression
92 initializer -> { initializer-list }
93 initializer -> { initializer-list , }
94 initializer-list -> initializer
95 initializer-list -> initializer-list , initializer
96 type-name -> specifier-qualifier-list abstract-declarator
97 type-name -> specifier-qualifier-list
98 abstract-declarator -> pointer
99 abstract-declarator -> pointer direct-abstract-declarator
100 abstract-declarator -> direct-abstract-declarator
101 direct-abstract-declarator -> ( abstract-declarator )
102 direct-abstract-declarator -> direct-abstract-declarator [ constant-expression ]
103 direct-abstract-declarator -> direct-abstract-declarator [ ]
104 direct-abstract-declarator -> [ constant-expression ]
105 direct-abstract-declarator -> [ ]
106 direct-abstract-declarator -> direct-abstract-declarator ( parameter-type-list )
107 direct-abstract-declarator -> direct-abstract-declarator ( )
108 direct-abstract-declarator -> ( parameter-type-list )
109 direct-abstract-declarator -> ( )
110 statement -> labeled-statement
111 statement -> expression-statement
112 statement -> compound-statement
113 statement -> selection-statement
114 statement -> iteration-statement
115 statement -> jump-statement
116 labeled-statement -> identifier : statement
117 labeled-statement -> case constant-expression : statement
118 labeled-statement -> default : statement
119 expression-statement -> expression ;
120 expression-statement -> ;
121 compound-statement -> { declaration-list statement-list }
122 compound-statement -> { declaration-list }
123 compound-statement -> { statement-list }
124 compound-statement -> { }
125 statement-list -> statement
126 statement-list -> statement-list statement
127 selection-statement -> if ( expression ) statement
128 selection-statement -> if ( expression ) statement else statement
129 selection-statement -> switch ( expression ) statement
130 iteration-statement -> while ( expression ) statement
131 iteration-statement -> do statement while ( expression ) ;
132 iteration-statement -> for ( expression ; expression ; expression ) statement
133 iteration-statement -> for ( ; expression ; expression ) statement
134 iteration-statement -> for ( expression ; ; expression ) statement
135 iteration-statement -> for ( expression ; expression ; ) statement
136 iteration-statement -> for ( expression ; ; ) statement
137 iteration-statement -> for ( ; expression ; ) statement
138 iteration-statement -> for ( ; ; expression ) statement
139 iteration-statement -> for ( ; ; ) statement
140 jump-statement -> goto identifier ;
141 jump-statement -> continue ;
142 jump-statement -> break ;
143 jump-statement -> return expression ;
144 jump-statement -> return ;
145 expression -> assignment-expression
146 expression -> expression , assignment-expression
147 assignment-expression -> conditional-expression
148 assignment-expression -> unary-expression assignment-operator assignment-expression
149 assignment-operator -> =
150 assignment-operator -> *=
151 assignment-operator -> /=
152 assignment-operator -> %=
153 assignment-operator -> +=
154 assignment-operator -> -=
155 assignment-operator -> <<=
156 assignment-operator -> >>=
157 assignment-operator -> &=
158 assignment-operator -> ^=
159 assignment-operator -> |=
160 conditional-expression -> logical-OR-expression
161 conditional-expression -> logical-OR-expression ? expression : conditional-expression
162 constant-expression -> conditional-expression
163 logical-OR-expression -> logical-AND-expression
164 logical-OR-expression -> logical-OR-expression || logical-AND-expression
165 logical-AND-expression -> inclusive-OR-expression
166 logical-AND-expression -> logical-AND-expression && inclusive-OR-expression
167 inclusive-OR-expression -> exclusive-OR-expression
168 inclusive-OR-expression -> inclusive-OR-expression | exclusive-OR-expression
169 exclusive-OR-expression -> AND-expression
170 exclusive-OR-expression -> exclusive-OR-expression ^ AND-expression
171 AND-expression -> equality-expression
172 AND-expression -> AND-expression & equality-expression
173 equality-expression -> relational-expression
174 equality-expression -> equality-expression == relational-expression
175 equality-expression -> equality-expression != relational-expression
176 relational-expression -> shift-expression
177 relational-expression -> relational-expression < shift-expression
178 relational-expression -> relational-expression > shift-expression
179 relational-expression -> relational-expression <= shift-expression
180 relational-expression -> relational-expression >= shift-expression
181 shift-expression -> additive-expression
182 shift-expression -> shift-expression << additive-expression
183 shift-expression -> shift-expression >> additive-expression
184 additive-expression -> multiplicative-expression
185 additive-expression -> additive-expression + multiplicative-expression
186 additive-expression -> additive-expression - multiplicative-expression
187 multiplicative-expression -> cast-expression
188 multiplicative-expression -> multiplicative-expression * cast-expression
189 multiplicative-expression -> multiplicative-expression / cast-expression
190 multiplicative-expression -> multiplicative-expression % cast-expression
191 cast-expression -> unary-expression
192 cast-expression -> ( type-name ) cast-expression
193 unary-expression -> postfix-expression
194 unary-expression -> ++ unary-expression
195 unary-expression -> -- unary-expression
196 unary-expression -> unary-operator cast-expression
197 unary-expression -> sizeof unary-expression
198 unary-expression -> sizeof ( type-name )
199 unary-operator -> &
200 unary-operator -> *
201 unary-operator -> +
202 unary-operator -> -
203 unary-operator -> ~
204 unary-operator -> !
205 postfix-expression -> primary-expression
206 postfix-expression -> postfix-expression [ expression ]
207 postfix-expression -> postfix-expression ( argument-expression-list )
208 postfix-expression -> postfix-expression ( )
209 postfix-expression -> postfix-expression . identifier
210 postfix-expression -> postfix-expression -> identifier
211 postfix-expression -> postfix-expression ++
212 postfix-expression -> postfix-expression --
213 primary-expression -> identifier
214 primary-expression -> constant
215 primary-expression -> string
216 primary-expression -> ( expression )
217 argument-expression-list -> assignment-expression
218 argument-expression-list -> argument-expression-list , assignment-expression
219 constant -> integer-constant
220 constant -> character-constant
221 constant -> floating-constant
222 constant -> enumeration-constant