001    //
002    // Generated by JTB 1.1.2
003    //
004    
005    package jtb.cparser.visitor;
006    import jtb.cparser.syntaxtree.*;
007    import java.util.*;
008    
009    /**
010     * All visitors must implement this interface.
011     */
012    public interface Visitor {
013       //
014       // Auto class visitors
015       //
016       public void visit(NodeList n);
017       public void visit(NodeListOptional n);
018       public void visit(NodeOptional n);
019       public void visit(NodeSequence n);
020       public void visit(NodeToken n);
021    
022       //
023       // User-generated visitor methods below
024       //
025    
026       /**
027        * f0 -> ( ExternalDeclaration() )+
028        */
029       public void visit(TranslationUnit n);
030    
031       /**
032        * f0 -> ( FunctionDefinition() | Declaration() )
033        */
034       public void visit(ExternalDeclaration n);
035    
036       /**
037        * f0 -> [ DeclarationSpecifiers() ]
038        * f1 -> Declarator()
039        * f2 -> [ DeclarationList() ]
040        * f3 -> CompoundStatement()
041        */
042       public void visit(FunctionDefinition n);
043    
044       /**
045        * f0 -> DeclarationSpecifiers()
046        * f1 -> [ InitDeclaratorList() ]
047        * f2 -> ";"
048        */
049       public void visit(Declaration n);
050    
051       /**
052        * f0 -> ( Declaration() )+
053        */
054       public void visit(DeclarationList n);
055    
056       /**
057        * f0 -> StorageClassSpecifier() [ DeclarationSpecifiers() ]
058        *       | TypeSpecifier() [ DeclarationSpecifiers() ]
059        *       | TypeQualifier() [ DeclarationSpecifiers() ]
060        */
061       public void visit(DeclarationSpecifiers n);
062    
063       /**
064        * f0 -> ( &lt; AUTO &gt; | <REGISTER> | <STATIC> | <EXTERN> | <TYPEDEF> )
065        */
066       public void visit(StorageClassSpecifier n);
067    
068       /**
069        * f0 -> ( <VOID> | <CHAR> | <SHORT> | <INT> | <LONG> | <FLOAT> | <DOUBLE> | <SIGNED> | <UNSIGNED> | StructOrUnionSpecifier() | EnumSpecifier() | TypedefName() )
070        */
071       public void visit(TypeSpecifier n);
072    
073       /**
074        * f0 -> ( <CONST> | <VOLATILE> )
075        */
076       public void visit(TypeQualifier n);
077    
078       /**
079    
080        * f0 -> StructOrUnion()
081        * f1 -> ( [ <IDENTIFIER> ] "{" StructDeclarationList() "}" | <IDENTIFIER> )
082        */
083       public void visit(StructOrUnionSpecifier n);
084    
085       /**
086        * f0 -> ( <STRUCT> | <UNION> )
087        */
088       public void visit(StructOrUnion n);
089    
090       /**
091        * f0 -> ( StructDeclaration() )+
092        */
093       public void visit(StructDeclarationList n);
094    
095       /**
096        * f0 -> InitDeclarator()
097        * f1 -> ( "," InitDeclarator() )*
098        */
099       public void visit(InitDeclaratorList n);
100    
101       /**
102        * f0 -> Declarator()
103        * f1 -> [ "=" Initializer() ]
104        */
105       public void visit(InitDeclarator n);
106    
107       /**
108        * f0 -> SpecifierQualifierList()
109        * f1 -> StructDeclaratorList()
110        * f2 -> ";"
111        */
112       public void visit(StructDeclaration n);
113    
114       /**
115        * f0 -> TypeSpecifier() [ SpecifierQualifierList() ]
116        *       | TypeQualifier() [ SpecifierQualifierList() ]
117        */
118       public void visit(SpecifierQualifierList n);
119    
120       /**
121        * f0 -> StructDeclarator()
122        * f1 -> ( "," StructDeclarator() )*
123        */
124       public void visit(StructDeclaratorList n);
125    
126       /**
127        * f0 -> ( Declarator() | [ Declarator() ] ":" ConstantExpression() )
128        */
129       public void visit(StructDeclarator n);
130    
131       /**
132        * f0 -> <ENUM>
133        * f1 -> ( [ <IDENTIFIER> ] "{" EnumeratorList() "}" | <IDENTIFIER> )
134        */
135       public void visit(EnumSpecifier n);
136    
137       /**
138        * f0 -> Enumerator()
139        * f1 -> ( "," Enumerator() )*
140        */
141       public void visit(EnumeratorList n);
142    
143       /**
144        * f0 -> <IDENTIFIER>
145        * f1 -> [ "=" ConstantExpression() ]
146        */
147       public void visit(Enumerator n);
148    
149       /**
150        * f0 -> [ Pointer() ]
151        * f1 -> DirectDeclarator()
152        */
153       public void visit(Declarator n);
154    
155       /**
156        * f0 -> ( t=<IDENTIFIER> | "(" Declarator() ")" )
157        * f1 -> ( "[" [ ConstantExpression() ] "]" | "(" ParameterTypeList() ")" | "(" [ IdentifierList() ] ")" )*
158        */
159       public void visit(DirectDeclarator n);
160    
161       /**
162        * f0 -> "*"
163        * f1 -> [ TypeQualifierList() ]
164        * f2 -> [ Pointer() ]
165        */
166       public void visit(Pointer n);
167    
168       /**
169        * f0 -> ( TypeQualifier() )+
170        */
171       public void visit(TypeQualifierList n);
172    
173       /**
174        * f0 -> ParameterList()
175        * f1 -> [ "," "..." ]
176        */
177       public void visit(ParameterTypeList n);
178    
179       /**
180        * f0 -> ParameterDeclaration()
181        * f1 -> ( "," ParameterDeclaration() )*
182        */
183       public void visit(ParameterList n);
184    
185       /**
186        * f0 -> DeclarationSpecifiers()
187        * f1 -> ( Declarator() | [ AbstractDeclarator() ] )
188        */
189       public void visit(ParameterDeclaration n);
190    
191       /**
192        * f0 -> <IDENTIFIER>
193        * f1 -> ( "," <IDENTIFIER> )*
194        */
195       public void visit(IdentifierList n);
196    
197       /**
198        * f0 -> ( AssignmentExpression() | "{" InitializerList() [ "," ] "}" )
199        */
200       public void visit(Initializer n);
201    
202       /**
203        * f0 -> Initializer()
204        * f1 -> ( "," Initializer() )*
205        */
206       public void visit(InitializerList n);
207    
208       /**
209        * f0 -> SpecifierQualifierList()
210        * f1 -> [ AbstractDeclarator() ]
211        */
212       public void visit(TypeName n);
213    
214       /**
215        * f0 -> ( Pointer() | [ Pointer() ] DirectAbstractDeclarator() )
216        */
217       public void visit(AbstractDeclarator n);
218    
219       /**
220        * f0 -> ( "(" AbstractDeclarator() ")" | "[" [ ConstantExpression() ] "]" | "(" [ ParameterTypeList() ] ")" )
221        * f1 -> ( "[" [ ConstantExpression() ] "]" | "(" [ ParameterTypeList() ] ")" )*
222        */
223       public void visit(DirectAbstractDeclarator n);
224    
225       /**
226        * f0 -> <IDENTIFIER>
227        */
228       public void visit(TypedefName n);
229    
230       /**
231        * f0 -> ( LabeledStatement() | ExpressionStatement() | CompoundStatement() | SelectionStatement() | IterationStatement() | JumpStatement() )
232        */
233       public void visit(Statement n);
234    
235       /**
236        * f0 -> ( <IDENTIFIER> ":" Statement() | <CASE> ConstantExpression() ":" Statement() | <DFLT> ":" Statement() )
237        */
238       public void visit(LabeledStatement n);
239    
240       /**
241        * f0 -> [ Expression() ]
242        * f1 -> ";"
243        */
244       public void visit(ExpressionStatement n);
245    
246       /**
247        * f0 -> "{"
248        * f1 -> [ DeclarationList() ]
249        * f2 -> [ StatementList() ]
250        * f3 -> "}"
251        */
252       public void visit(CompoundStatement n);
253    
254       /**
255        * f0 -> ( Statement() )+
256        */
257       public void visit(StatementList n);
258    
259       /**
260        * f0 -> ( <IF> "(" Expression() ")" Statement() [ <ELSE> Statement() ] | <SWITCH> "(" Expression() ")" Statement() )
261        */
262       public void visit(SelectionStatement n);
263    
264       /**
265        * f0 -> ( <WHILE> "(" Expression() ")" Statement() | <DO> Statement() <WHILE> "(" Expression() ")" ";" | <FOR> "(" [ Expression() ] ";" [ Expression() ] ";" [ Expression() ] ")" Statement() )
266        */
267       public void visit(IterationStatement n);
268    
269       /**
270        * f0 -> ( <GOTO> <IDENTIFIER> ";" | <CONTINUE> ";" | <BREAK> ";" | <RETURN> [ Expression() ] ";" )
271        */
272       public void visit(JumpStatement n);
273    
274       /**
275        * f0 -> AssignmentExpression()
276        * f1 -> ( "," AssignmentExpression() )*
277        */
278       public void visit(Expression n);
279    
280       /**
281        * f0 -> UnaryExpression() AssignmentOperator() AssignmentExpression()
282        *       | ConditionalExpression()
283        */
284       public void visit(AssignmentExpression n);
285    
286       /**
287        * f0 -> ( "=" | "*=" | "/=" | "%=" | "+=" | "-=" | "<<=" | ">>=" | "&=" | "^=" | "|=" )
288        */
289       public void visit(AssignmentOperator n);
290    
291       /**
292        * f0 -> LogicalORExpression()
293        * f1 -> [ "?" Expression() ":" ConditionalExpression() ]
294        */
295       public void visit(ConditionalExpression n);
296    
297       /**
298        * f0 -> ConditionalExpression()
299        */
300       public void visit(ConstantExpression n);
301    
302       /**
303        * f0 -> LogicalANDExpression()
304        * f1 -> [ "||" LogicalORExpression() ]
305        */
306       public void visit(LogicalORExpression n);
307    
308       /**
309        * f0 -> InclusiveORExpression()
310        * f1 -> [ "&&" LogicalANDExpression() ]
311        */
312       public void visit(LogicalANDExpression n);
313    
314       /**
315        * f0 -> ExclusiveORExpression()
316        * f1 -> [ "|" InclusiveORExpression() ]
317        */
318       public void visit(InclusiveORExpression n);
319    
320       /**
321        * f0 -> ANDExpression()
322        * f1 -> [ "^" ExclusiveORExpression() ]
323        */
324       public void visit(ExclusiveORExpression n);
325    
326       /**
327        * f0 -> EqualityExpression()
328        * f1 -> [ "&" ANDExpression() ]
329        */
330       public void visit(ANDExpression n);
331    
332       /**
333        * f0 -> RelationalExpression()
334        * f1 -> [ ( "==" | "!=" ) EqualityExpression() ]
335        */
336       public void visit(EqualityExpression n);
337    
338       /**
339        * f0 -> ShiftExpression()
340        * f1 -> [ ( "<" | ">" | "<=" | ">=" ) RelationalExpression() ]
341        */
342       public void visit(RelationalExpression n);
343    
344       /**
345        * f0 -> AdditiveExpression()
346        * f1 -> [ ( "<<" | ">>" ) ShiftExpression() ]
347        */
348       public void visit(ShiftExpression n);
349    
350       /**
351        * f0 -> MultiplicativeExpression()
352        * f1 -> [ ( "+" | "-" ) AdditiveExpression() ]
353        */
354       public void visit(AdditiveExpression n);
355    
356       /**
357        * f0 -> CastExpression()
358        * f1 -> [ ( "*" | "/" | "%" ) MultiplicativeExpression() ]
359        */
360       public void visit(MultiplicativeExpression n);
361    
362       /**
363        * f0 -> ( "(" TypeName() ")" CastExpression() | UnaryExpression() )
364        */
365       public void visit(CastExpression n);
366    
367       /**
368        * f0 -> ( PostfixExpression() | "++" UnaryExpression() | "--" UnaryExpression() | UnaryOperator() CastExpression() | <SIZEOF> ( UnaryExpression() | "(" TypeName() ")" ) )
369        */
370       public void visit(UnaryExpression n);
371    
372       /**
373        * f0 -> ( "&" | "*" | "+" | "-" | "~" | "!" )
374        */
375       public void visit(UnaryOperator n);
376    
377       /**
378        * f0 -> PrimaryExpression()
379        * f1 -> ( "[" Expression() "]" | "(" [ ArgumentExpressionList() ] ")" | "." <IDENTIFIER> | "->" <IDENTIFIER> | "++" | "--" )*
380        */
381       public void visit(PostfixExpression n);
382    
383       /**
384        * f0 -> ( <IDENTIFIER> | Constant() | "(" Expression() ")" )
385        */
386       public void visit(PrimaryExpression n);
387    
388       /**
389        * f0 -> AssignmentExpression()
390        * f1 -> ( "," AssignmentExpression() )*
391        */
392       public void visit(ArgumentExpressionList n);
393    
394       /**
395        * f0 -> <INTEGER_LITERAL>
396        *       | <FLOATING_POINT_LITERAL>
397        *       | <CHARACTER_LITERAL>
398        *       | <STRING_LITERAL>
399        */
400       public void visit(Constant n);
401    
402    }