c-next 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/README.md +726 -0
  2. package/bin/cnext.js +5 -0
  3. package/grammar/C.g4 +1112 -0
  4. package/grammar/CNext.g4 +817 -0
  5. package/grammar/CPP14Lexer.g4 +282 -0
  6. package/grammar/CPP14Parser.g4 +1072 -0
  7. package/package.json +85 -0
  8. package/src/analysis/DivisionByZeroAnalyzer.ts +378 -0
  9. package/src/analysis/FunctionCallAnalyzer.ts +526 -0
  10. package/src/analysis/InitializationAnalyzer.ts +725 -0
  11. package/src/analysis/NullCheckAnalyzer.ts +427 -0
  12. package/src/analysis/types/IDivisionByZeroError.ts +25 -0
  13. package/src/analysis/types/IFunctionCallError.ts +17 -0
  14. package/src/analysis/types/IInitializationError.ts +55 -0
  15. package/src/analysis/types/INullCheckError.ts +25 -0
  16. package/src/codegen/CodeGenerator.ts +7945 -0
  17. package/src/codegen/CommentExtractor.ts +240 -0
  18. package/src/codegen/CommentFormatter.ts +155 -0
  19. package/src/codegen/HeaderGenerator.ts +265 -0
  20. package/src/codegen/TypeResolver.ts +365 -0
  21. package/src/codegen/types/ECommentType.ts +10 -0
  22. package/src/codegen/types/IComment.ts +21 -0
  23. package/src/codegen/types/ICommentError.ts +15 -0
  24. package/src/codegen/types/TOverflowBehavior.ts +6 -0
  25. package/src/codegen/types/TParameterInfo.ts +13 -0
  26. package/src/codegen/types/TTypeConstants.ts +94 -0
  27. package/src/codegen/types/TTypeInfo.ts +22 -0
  28. package/src/index.ts +518 -0
  29. package/src/lib/IncludeDiscovery.ts +131 -0
  30. package/src/lib/InputExpansion.ts +121 -0
  31. package/src/lib/PlatformIODetector.ts +162 -0
  32. package/src/lib/transpiler.ts +439 -0
  33. package/src/lib/types/ITranspileResult.ts +80 -0
  34. package/src/parser/c/grammar/C.interp +338 -0
  35. package/src/parser/c/grammar/C.tokens +229 -0
  36. package/src/parser/c/grammar/CLexer.interp +415 -0
  37. package/src/parser/c/grammar/CLexer.tokens +229 -0
  38. package/src/parser/c/grammar/CLexer.ts +750 -0
  39. package/src/parser/c/grammar/CListener.ts +976 -0
  40. package/src/parser/c/grammar/CParser.ts +9663 -0
  41. package/src/parser/c/grammar/CVisitor.ts +626 -0
  42. package/src/parser/cpp/grammar/CPP14Lexer.interp +478 -0
  43. package/src/parser/cpp/grammar/CPP14Lexer.tokens +264 -0
  44. package/src/parser/cpp/grammar/CPP14Lexer.ts +848 -0
  45. package/src/parser/cpp/grammar/CPP14Parser.interp +492 -0
  46. package/src/parser/cpp/grammar/CPP14Parser.tokens +264 -0
  47. package/src/parser/cpp/grammar/CPP14Parser.ts +19961 -0
  48. package/src/parser/cpp/grammar/CPP14ParserListener.ts +2120 -0
  49. package/src/parser/cpp/grammar/CPP14ParserVisitor.ts +1354 -0
  50. package/src/parser/grammar/CNext.interp +340 -0
  51. package/src/parser/grammar/CNext.tokens +214 -0
  52. package/src/parser/grammar/CNextLexer.interp +374 -0
  53. package/src/parser/grammar/CNextLexer.tokens +214 -0
  54. package/src/parser/grammar/CNextLexer.ts +668 -0
  55. package/src/parser/grammar/CNextListener.ts +1020 -0
  56. package/src/parser/grammar/CNextParser.ts +9239 -0
  57. package/src/parser/grammar/CNextVisitor.ts +654 -0
  58. package/src/preprocessor/Preprocessor.ts +301 -0
  59. package/src/preprocessor/ToolchainDetector.ts +225 -0
  60. package/src/preprocessor/types/IPreprocessResult.ts +39 -0
  61. package/src/preprocessor/types/IToolchain.ts +27 -0
  62. package/src/project/FileDiscovery.ts +236 -0
  63. package/src/project/Project.ts +425 -0
  64. package/src/project/types/IProjectConfig.ts +64 -0
  65. package/src/symbols/CNextSymbolCollector.ts +326 -0
  66. package/src/symbols/CSymbolCollector.ts +457 -0
  67. package/src/symbols/CppSymbolCollector.ts +362 -0
  68. package/src/symbols/SymbolTable.ts +312 -0
  69. package/src/symbols/types/IConflict.ts +20 -0
  70. package/src/types/ESourceLanguage.ts +10 -0
  71. package/src/types/ESymbolKind.ts +20 -0
  72. package/src/types/ISymbol.ts +45 -0
@@ -0,0 +1,976 @@
1
+ // Generated from grammar/C.g4 by ANTLR 4.13.1
2
+
3
+ import { ErrorNode, ParseTreeListener, ParserRuleContext, TerminalNode } from "antlr4ng";
4
+
5
+
6
+ import { PrimaryExpressionContext } from "./CParser.js";
7
+ import { GenericSelectionContext } from "./CParser.js";
8
+ import { GenericAssocListContext } from "./CParser.js";
9
+ import { GenericAssociationContext } from "./CParser.js";
10
+ import { PostfixExpressionContext } from "./CParser.js";
11
+ import { ArgumentExpressionListContext } from "./CParser.js";
12
+ import { UnaryExpressionContext } from "./CParser.js";
13
+ import { UnaryOperatorContext } from "./CParser.js";
14
+ import { CastExpressionContext } from "./CParser.js";
15
+ import { MultiplicativeExpressionContext } from "./CParser.js";
16
+ import { AdditiveExpressionContext } from "./CParser.js";
17
+ import { ShiftExpressionContext } from "./CParser.js";
18
+ import { RelationalExpressionContext } from "./CParser.js";
19
+ import { EqualityExpressionContext } from "./CParser.js";
20
+ import { AndExpressionContext } from "./CParser.js";
21
+ import { ExclusiveOrExpressionContext } from "./CParser.js";
22
+ import { InclusiveOrExpressionContext } from "./CParser.js";
23
+ import { LogicalAndExpressionContext } from "./CParser.js";
24
+ import { LogicalOrExpressionContext } from "./CParser.js";
25
+ import { ConditionalExpressionContext } from "./CParser.js";
26
+ import { AssignmentExpressionContext } from "./CParser.js";
27
+ import { AssignmentOperatorContext } from "./CParser.js";
28
+ import { ExpressionContext } from "./CParser.js";
29
+ import { ConstantExpressionContext } from "./CParser.js";
30
+ import { DeclarationContext } from "./CParser.js";
31
+ import { DeclarationSpecifiersContext } from "./CParser.js";
32
+ import { DeclarationSpecifiers2Context } from "./CParser.js";
33
+ import { DeclarationSpecifierContext } from "./CParser.js";
34
+ import { InitDeclaratorListContext } from "./CParser.js";
35
+ import { InitDeclaratorContext } from "./CParser.js";
36
+ import { StorageClassSpecifierContext } from "./CParser.js";
37
+ import { TypeSpecifierContext } from "./CParser.js";
38
+ import { StructOrUnionSpecifierContext } from "./CParser.js";
39
+ import { StructOrUnionContext } from "./CParser.js";
40
+ import { StructDeclarationListContext } from "./CParser.js";
41
+ import { StructDeclarationContext } from "./CParser.js";
42
+ import { SpecifierQualifierListContext } from "./CParser.js";
43
+ import { StructDeclaratorListContext } from "./CParser.js";
44
+ import { StructDeclaratorContext } from "./CParser.js";
45
+ import { EnumSpecifierContext } from "./CParser.js";
46
+ import { EnumeratorListContext } from "./CParser.js";
47
+ import { EnumeratorContext } from "./CParser.js";
48
+ import { EnumerationConstantContext } from "./CParser.js";
49
+ import { AtomicTypeSpecifierContext } from "./CParser.js";
50
+ import { TypeQualifierContext } from "./CParser.js";
51
+ import { FunctionSpecifierContext } from "./CParser.js";
52
+ import { AlignmentSpecifierContext } from "./CParser.js";
53
+ import { DeclaratorContext } from "./CParser.js";
54
+ import { DirectDeclaratorContext } from "./CParser.js";
55
+ import { VcSpecificModiferContext } from "./CParser.js";
56
+ import { GccDeclaratorExtensionContext } from "./CParser.js";
57
+ import { GccAttributeSpecifierContext } from "./CParser.js";
58
+ import { GccAttributeListContext } from "./CParser.js";
59
+ import { GccAttributeContext } from "./CParser.js";
60
+ import { PointerContext } from "./CParser.js";
61
+ import { TypeQualifierListContext } from "./CParser.js";
62
+ import { ParameterTypeListContext } from "./CParser.js";
63
+ import { ParameterListContext } from "./CParser.js";
64
+ import { ParameterDeclarationContext } from "./CParser.js";
65
+ import { IdentifierListContext } from "./CParser.js";
66
+ import { TypeNameContext } from "./CParser.js";
67
+ import { AbstractDeclaratorContext } from "./CParser.js";
68
+ import { DirectAbstractDeclaratorContext } from "./CParser.js";
69
+ import { TypedefNameContext } from "./CParser.js";
70
+ import { InitializerContext } from "./CParser.js";
71
+ import { InitializerListContext } from "./CParser.js";
72
+ import { DesignationContext } from "./CParser.js";
73
+ import { DesignatorListContext } from "./CParser.js";
74
+ import { DesignatorContext } from "./CParser.js";
75
+ import { StaticAssertDeclarationContext } from "./CParser.js";
76
+ import { StatementContext } from "./CParser.js";
77
+ import { LabeledStatementContext } from "./CParser.js";
78
+ import { CompoundStatementContext } from "./CParser.js";
79
+ import { BlockItemListContext } from "./CParser.js";
80
+ import { BlockItemContext } from "./CParser.js";
81
+ import { ExpressionStatementContext } from "./CParser.js";
82
+ import { SelectionStatementContext } from "./CParser.js";
83
+ import { IterationStatementContext } from "./CParser.js";
84
+ import { ForConditionContext } from "./CParser.js";
85
+ import { ForDeclarationContext } from "./CParser.js";
86
+ import { ForExpressionContext } from "./CParser.js";
87
+ import { JumpStatementContext } from "./CParser.js";
88
+ import { CompilationUnitContext } from "./CParser.js";
89
+ import { TranslationUnitContext } from "./CParser.js";
90
+ import { ExternalDeclarationContext } from "./CParser.js";
91
+ import { FunctionDefinitionContext } from "./CParser.js";
92
+ import { DeclarationListContext } from "./CParser.js";
93
+
94
+
95
+ /**
96
+ * This interface defines a complete listener for a parse tree produced by
97
+ * `CParser`.
98
+ */
99
+ export class CListener implements ParseTreeListener {
100
+ /**
101
+ * Enter a parse tree produced by `CParser.primaryExpression`.
102
+ * @param ctx the parse tree
103
+ */
104
+ enterPrimaryExpression?: (ctx: PrimaryExpressionContext) => void;
105
+ /**
106
+ * Exit a parse tree produced by `CParser.primaryExpression`.
107
+ * @param ctx the parse tree
108
+ */
109
+ exitPrimaryExpression?: (ctx: PrimaryExpressionContext) => void;
110
+ /**
111
+ * Enter a parse tree produced by `CParser.genericSelection`.
112
+ * @param ctx the parse tree
113
+ */
114
+ enterGenericSelection?: (ctx: GenericSelectionContext) => void;
115
+ /**
116
+ * Exit a parse tree produced by `CParser.genericSelection`.
117
+ * @param ctx the parse tree
118
+ */
119
+ exitGenericSelection?: (ctx: GenericSelectionContext) => void;
120
+ /**
121
+ * Enter a parse tree produced by `CParser.genericAssocList`.
122
+ * @param ctx the parse tree
123
+ */
124
+ enterGenericAssocList?: (ctx: GenericAssocListContext) => void;
125
+ /**
126
+ * Exit a parse tree produced by `CParser.genericAssocList`.
127
+ * @param ctx the parse tree
128
+ */
129
+ exitGenericAssocList?: (ctx: GenericAssocListContext) => void;
130
+ /**
131
+ * Enter a parse tree produced by `CParser.genericAssociation`.
132
+ * @param ctx the parse tree
133
+ */
134
+ enterGenericAssociation?: (ctx: GenericAssociationContext) => void;
135
+ /**
136
+ * Exit a parse tree produced by `CParser.genericAssociation`.
137
+ * @param ctx the parse tree
138
+ */
139
+ exitGenericAssociation?: (ctx: GenericAssociationContext) => void;
140
+ /**
141
+ * Enter a parse tree produced by `CParser.postfixExpression`.
142
+ * @param ctx the parse tree
143
+ */
144
+ enterPostfixExpression?: (ctx: PostfixExpressionContext) => void;
145
+ /**
146
+ * Exit a parse tree produced by `CParser.postfixExpression`.
147
+ * @param ctx the parse tree
148
+ */
149
+ exitPostfixExpression?: (ctx: PostfixExpressionContext) => void;
150
+ /**
151
+ * Enter a parse tree produced by `CParser.argumentExpressionList`.
152
+ * @param ctx the parse tree
153
+ */
154
+ enterArgumentExpressionList?: (ctx: ArgumentExpressionListContext) => void;
155
+ /**
156
+ * Exit a parse tree produced by `CParser.argumentExpressionList`.
157
+ * @param ctx the parse tree
158
+ */
159
+ exitArgumentExpressionList?: (ctx: ArgumentExpressionListContext) => void;
160
+ /**
161
+ * Enter a parse tree produced by `CParser.unaryExpression`.
162
+ * @param ctx the parse tree
163
+ */
164
+ enterUnaryExpression?: (ctx: UnaryExpressionContext) => void;
165
+ /**
166
+ * Exit a parse tree produced by `CParser.unaryExpression`.
167
+ * @param ctx the parse tree
168
+ */
169
+ exitUnaryExpression?: (ctx: UnaryExpressionContext) => void;
170
+ /**
171
+ * Enter a parse tree produced by `CParser.unaryOperator`.
172
+ * @param ctx the parse tree
173
+ */
174
+ enterUnaryOperator?: (ctx: UnaryOperatorContext) => void;
175
+ /**
176
+ * Exit a parse tree produced by `CParser.unaryOperator`.
177
+ * @param ctx the parse tree
178
+ */
179
+ exitUnaryOperator?: (ctx: UnaryOperatorContext) => void;
180
+ /**
181
+ * Enter a parse tree produced by `CParser.castExpression`.
182
+ * @param ctx the parse tree
183
+ */
184
+ enterCastExpression?: (ctx: CastExpressionContext) => void;
185
+ /**
186
+ * Exit a parse tree produced by `CParser.castExpression`.
187
+ * @param ctx the parse tree
188
+ */
189
+ exitCastExpression?: (ctx: CastExpressionContext) => void;
190
+ /**
191
+ * Enter a parse tree produced by `CParser.multiplicativeExpression`.
192
+ * @param ctx the parse tree
193
+ */
194
+ enterMultiplicativeExpression?: (ctx: MultiplicativeExpressionContext) => void;
195
+ /**
196
+ * Exit a parse tree produced by `CParser.multiplicativeExpression`.
197
+ * @param ctx the parse tree
198
+ */
199
+ exitMultiplicativeExpression?: (ctx: MultiplicativeExpressionContext) => void;
200
+ /**
201
+ * Enter a parse tree produced by `CParser.additiveExpression`.
202
+ * @param ctx the parse tree
203
+ */
204
+ enterAdditiveExpression?: (ctx: AdditiveExpressionContext) => void;
205
+ /**
206
+ * Exit a parse tree produced by `CParser.additiveExpression`.
207
+ * @param ctx the parse tree
208
+ */
209
+ exitAdditiveExpression?: (ctx: AdditiveExpressionContext) => void;
210
+ /**
211
+ * Enter a parse tree produced by `CParser.shiftExpression`.
212
+ * @param ctx the parse tree
213
+ */
214
+ enterShiftExpression?: (ctx: ShiftExpressionContext) => void;
215
+ /**
216
+ * Exit a parse tree produced by `CParser.shiftExpression`.
217
+ * @param ctx the parse tree
218
+ */
219
+ exitShiftExpression?: (ctx: ShiftExpressionContext) => void;
220
+ /**
221
+ * Enter a parse tree produced by `CParser.relationalExpression`.
222
+ * @param ctx the parse tree
223
+ */
224
+ enterRelationalExpression?: (ctx: RelationalExpressionContext) => void;
225
+ /**
226
+ * Exit a parse tree produced by `CParser.relationalExpression`.
227
+ * @param ctx the parse tree
228
+ */
229
+ exitRelationalExpression?: (ctx: RelationalExpressionContext) => void;
230
+ /**
231
+ * Enter a parse tree produced by `CParser.equalityExpression`.
232
+ * @param ctx the parse tree
233
+ */
234
+ enterEqualityExpression?: (ctx: EqualityExpressionContext) => void;
235
+ /**
236
+ * Exit a parse tree produced by `CParser.equalityExpression`.
237
+ * @param ctx the parse tree
238
+ */
239
+ exitEqualityExpression?: (ctx: EqualityExpressionContext) => void;
240
+ /**
241
+ * Enter a parse tree produced by `CParser.andExpression`.
242
+ * @param ctx the parse tree
243
+ */
244
+ enterAndExpression?: (ctx: AndExpressionContext) => void;
245
+ /**
246
+ * Exit a parse tree produced by `CParser.andExpression`.
247
+ * @param ctx the parse tree
248
+ */
249
+ exitAndExpression?: (ctx: AndExpressionContext) => void;
250
+ /**
251
+ * Enter a parse tree produced by `CParser.exclusiveOrExpression`.
252
+ * @param ctx the parse tree
253
+ */
254
+ enterExclusiveOrExpression?: (ctx: ExclusiveOrExpressionContext) => void;
255
+ /**
256
+ * Exit a parse tree produced by `CParser.exclusiveOrExpression`.
257
+ * @param ctx the parse tree
258
+ */
259
+ exitExclusiveOrExpression?: (ctx: ExclusiveOrExpressionContext) => void;
260
+ /**
261
+ * Enter a parse tree produced by `CParser.inclusiveOrExpression`.
262
+ * @param ctx the parse tree
263
+ */
264
+ enterInclusiveOrExpression?: (ctx: InclusiveOrExpressionContext) => void;
265
+ /**
266
+ * Exit a parse tree produced by `CParser.inclusiveOrExpression`.
267
+ * @param ctx the parse tree
268
+ */
269
+ exitInclusiveOrExpression?: (ctx: InclusiveOrExpressionContext) => void;
270
+ /**
271
+ * Enter a parse tree produced by `CParser.logicalAndExpression`.
272
+ * @param ctx the parse tree
273
+ */
274
+ enterLogicalAndExpression?: (ctx: LogicalAndExpressionContext) => void;
275
+ /**
276
+ * Exit a parse tree produced by `CParser.logicalAndExpression`.
277
+ * @param ctx the parse tree
278
+ */
279
+ exitLogicalAndExpression?: (ctx: LogicalAndExpressionContext) => void;
280
+ /**
281
+ * Enter a parse tree produced by `CParser.logicalOrExpression`.
282
+ * @param ctx the parse tree
283
+ */
284
+ enterLogicalOrExpression?: (ctx: LogicalOrExpressionContext) => void;
285
+ /**
286
+ * Exit a parse tree produced by `CParser.logicalOrExpression`.
287
+ * @param ctx the parse tree
288
+ */
289
+ exitLogicalOrExpression?: (ctx: LogicalOrExpressionContext) => void;
290
+ /**
291
+ * Enter a parse tree produced by `CParser.conditionalExpression`.
292
+ * @param ctx the parse tree
293
+ */
294
+ enterConditionalExpression?: (ctx: ConditionalExpressionContext) => void;
295
+ /**
296
+ * Exit a parse tree produced by `CParser.conditionalExpression`.
297
+ * @param ctx the parse tree
298
+ */
299
+ exitConditionalExpression?: (ctx: ConditionalExpressionContext) => void;
300
+ /**
301
+ * Enter a parse tree produced by `CParser.assignmentExpression`.
302
+ * @param ctx the parse tree
303
+ */
304
+ enterAssignmentExpression?: (ctx: AssignmentExpressionContext) => void;
305
+ /**
306
+ * Exit a parse tree produced by `CParser.assignmentExpression`.
307
+ * @param ctx the parse tree
308
+ */
309
+ exitAssignmentExpression?: (ctx: AssignmentExpressionContext) => void;
310
+ /**
311
+ * Enter a parse tree produced by `CParser.assignmentOperator`.
312
+ * @param ctx the parse tree
313
+ */
314
+ enterAssignmentOperator?: (ctx: AssignmentOperatorContext) => void;
315
+ /**
316
+ * Exit a parse tree produced by `CParser.assignmentOperator`.
317
+ * @param ctx the parse tree
318
+ */
319
+ exitAssignmentOperator?: (ctx: AssignmentOperatorContext) => void;
320
+ /**
321
+ * Enter a parse tree produced by `CParser.expression`.
322
+ * @param ctx the parse tree
323
+ */
324
+ enterExpression?: (ctx: ExpressionContext) => void;
325
+ /**
326
+ * Exit a parse tree produced by `CParser.expression`.
327
+ * @param ctx the parse tree
328
+ */
329
+ exitExpression?: (ctx: ExpressionContext) => void;
330
+ /**
331
+ * Enter a parse tree produced by `CParser.constantExpression`.
332
+ * @param ctx the parse tree
333
+ */
334
+ enterConstantExpression?: (ctx: ConstantExpressionContext) => void;
335
+ /**
336
+ * Exit a parse tree produced by `CParser.constantExpression`.
337
+ * @param ctx the parse tree
338
+ */
339
+ exitConstantExpression?: (ctx: ConstantExpressionContext) => void;
340
+ /**
341
+ * Enter a parse tree produced by `CParser.declaration`.
342
+ * @param ctx the parse tree
343
+ */
344
+ enterDeclaration?: (ctx: DeclarationContext) => void;
345
+ /**
346
+ * Exit a parse tree produced by `CParser.declaration`.
347
+ * @param ctx the parse tree
348
+ */
349
+ exitDeclaration?: (ctx: DeclarationContext) => void;
350
+ /**
351
+ * Enter a parse tree produced by `CParser.declarationSpecifiers`.
352
+ * @param ctx the parse tree
353
+ */
354
+ enterDeclarationSpecifiers?: (ctx: DeclarationSpecifiersContext) => void;
355
+ /**
356
+ * Exit a parse tree produced by `CParser.declarationSpecifiers`.
357
+ * @param ctx the parse tree
358
+ */
359
+ exitDeclarationSpecifiers?: (ctx: DeclarationSpecifiersContext) => void;
360
+ /**
361
+ * Enter a parse tree produced by `CParser.declarationSpecifiers2`.
362
+ * @param ctx the parse tree
363
+ */
364
+ enterDeclarationSpecifiers2?: (ctx: DeclarationSpecifiers2Context) => void;
365
+ /**
366
+ * Exit a parse tree produced by `CParser.declarationSpecifiers2`.
367
+ * @param ctx the parse tree
368
+ */
369
+ exitDeclarationSpecifiers2?: (ctx: DeclarationSpecifiers2Context) => void;
370
+ /**
371
+ * Enter a parse tree produced by `CParser.declarationSpecifier`.
372
+ * @param ctx the parse tree
373
+ */
374
+ enterDeclarationSpecifier?: (ctx: DeclarationSpecifierContext) => void;
375
+ /**
376
+ * Exit a parse tree produced by `CParser.declarationSpecifier`.
377
+ * @param ctx the parse tree
378
+ */
379
+ exitDeclarationSpecifier?: (ctx: DeclarationSpecifierContext) => void;
380
+ /**
381
+ * Enter a parse tree produced by `CParser.initDeclaratorList`.
382
+ * @param ctx the parse tree
383
+ */
384
+ enterInitDeclaratorList?: (ctx: InitDeclaratorListContext) => void;
385
+ /**
386
+ * Exit a parse tree produced by `CParser.initDeclaratorList`.
387
+ * @param ctx the parse tree
388
+ */
389
+ exitInitDeclaratorList?: (ctx: InitDeclaratorListContext) => void;
390
+ /**
391
+ * Enter a parse tree produced by `CParser.initDeclarator`.
392
+ * @param ctx the parse tree
393
+ */
394
+ enterInitDeclarator?: (ctx: InitDeclaratorContext) => void;
395
+ /**
396
+ * Exit a parse tree produced by `CParser.initDeclarator`.
397
+ * @param ctx the parse tree
398
+ */
399
+ exitInitDeclarator?: (ctx: InitDeclaratorContext) => void;
400
+ /**
401
+ * Enter a parse tree produced by `CParser.storageClassSpecifier`.
402
+ * @param ctx the parse tree
403
+ */
404
+ enterStorageClassSpecifier?: (ctx: StorageClassSpecifierContext) => void;
405
+ /**
406
+ * Exit a parse tree produced by `CParser.storageClassSpecifier`.
407
+ * @param ctx the parse tree
408
+ */
409
+ exitStorageClassSpecifier?: (ctx: StorageClassSpecifierContext) => void;
410
+ /**
411
+ * Enter a parse tree produced by `CParser.typeSpecifier`.
412
+ * @param ctx the parse tree
413
+ */
414
+ enterTypeSpecifier?: (ctx: TypeSpecifierContext) => void;
415
+ /**
416
+ * Exit a parse tree produced by `CParser.typeSpecifier`.
417
+ * @param ctx the parse tree
418
+ */
419
+ exitTypeSpecifier?: (ctx: TypeSpecifierContext) => void;
420
+ /**
421
+ * Enter a parse tree produced by `CParser.structOrUnionSpecifier`.
422
+ * @param ctx the parse tree
423
+ */
424
+ enterStructOrUnionSpecifier?: (ctx: StructOrUnionSpecifierContext) => void;
425
+ /**
426
+ * Exit a parse tree produced by `CParser.structOrUnionSpecifier`.
427
+ * @param ctx the parse tree
428
+ */
429
+ exitStructOrUnionSpecifier?: (ctx: StructOrUnionSpecifierContext) => void;
430
+ /**
431
+ * Enter a parse tree produced by `CParser.structOrUnion`.
432
+ * @param ctx the parse tree
433
+ */
434
+ enterStructOrUnion?: (ctx: StructOrUnionContext) => void;
435
+ /**
436
+ * Exit a parse tree produced by `CParser.structOrUnion`.
437
+ * @param ctx the parse tree
438
+ */
439
+ exitStructOrUnion?: (ctx: StructOrUnionContext) => void;
440
+ /**
441
+ * Enter a parse tree produced by `CParser.structDeclarationList`.
442
+ * @param ctx the parse tree
443
+ */
444
+ enterStructDeclarationList?: (ctx: StructDeclarationListContext) => void;
445
+ /**
446
+ * Exit a parse tree produced by `CParser.structDeclarationList`.
447
+ * @param ctx the parse tree
448
+ */
449
+ exitStructDeclarationList?: (ctx: StructDeclarationListContext) => void;
450
+ /**
451
+ * Enter a parse tree produced by `CParser.structDeclaration`.
452
+ * @param ctx the parse tree
453
+ */
454
+ enterStructDeclaration?: (ctx: StructDeclarationContext) => void;
455
+ /**
456
+ * Exit a parse tree produced by `CParser.structDeclaration`.
457
+ * @param ctx the parse tree
458
+ */
459
+ exitStructDeclaration?: (ctx: StructDeclarationContext) => void;
460
+ /**
461
+ * Enter a parse tree produced by `CParser.specifierQualifierList`.
462
+ * @param ctx the parse tree
463
+ */
464
+ enterSpecifierQualifierList?: (ctx: SpecifierQualifierListContext) => void;
465
+ /**
466
+ * Exit a parse tree produced by `CParser.specifierQualifierList`.
467
+ * @param ctx the parse tree
468
+ */
469
+ exitSpecifierQualifierList?: (ctx: SpecifierQualifierListContext) => void;
470
+ /**
471
+ * Enter a parse tree produced by `CParser.structDeclaratorList`.
472
+ * @param ctx the parse tree
473
+ */
474
+ enterStructDeclaratorList?: (ctx: StructDeclaratorListContext) => void;
475
+ /**
476
+ * Exit a parse tree produced by `CParser.structDeclaratorList`.
477
+ * @param ctx the parse tree
478
+ */
479
+ exitStructDeclaratorList?: (ctx: StructDeclaratorListContext) => void;
480
+ /**
481
+ * Enter a parse tree produced by `CParser.structDeclarator`.
482
+ * @param ctx the parse tree
483
+ */
484
+ enterStructDeclarator?: (ctx: StructDeclaratorContext) => void;
485
+ /**
486
+ * Exit a parse tree produced by `CParser.structDeclarator`.
487
+ * @param ctx the parse tree
488
+ */
489
+ exitStructDeclarator?: (ctx: StructDeclaratorContext) => void;
490
+ /**
491
+ * Enter a parse tree produced by `CParser.enumSpecifier`.
492
+ * @param ctx the parse tree
493
+ */
494
+ enterEnumSpecifier?: (ctx: EnumSpecifierContext) => void;
495
+ /**
496
+ * Exit a parse tree produced by `CParser.enumSpecifier`.
497
+ * @param ctx the parse tree
498
+ */
499
+ exitEnumSpecifier?: (ctx: EnumSpecifierContext) => void;
500
+ /**
501
+ * Enter a parse tree produced by `CParser.enumeratorList`.
502
+ * @param ctx the parse tree
503
+ */
504
+ enterEnumeratorList?: (ctx: EnumeratorListContext) => void;
505
+ /**
506
+ * Exit a parse tree produced by `CParser.enumeratorList`.
507
+ * @param ctx the parse tree
508
+ */
509
+ exitEnumeratorList?: (ctx: EnumeratorListContext) => void;
510
+ /**
511
+ * Enter a parse tree produced by `CParser.enumerator`.
512
+ * @param ctx the parse tree
513
+ */
514
+ enterEnumerator?: (ctx: EnumeratorContext) => void;
515
+ /**
516
+ * Exit a parse tree produced by `CParser.enumerator`.
517
+ * @param ctx the parse tree
518
+ */
519
+ exitEnumerator?: (ctx: EnumeratorContext) => void;
520
+ /**
521
+ * Enter a parse tree produced by `CParser.enumerationConstant`.
522
+ * @param ctx the parse tree
523
+ */
524
+ enterEnumerationConstant?: (ctx: EnumerationConstantContext) => void;
525
+ /**
526
+ * Exit a parse tree produced by `CParser.enumerationConstant`.
527
+ * @param ctx the parse tree
528
+ */
529
+ exitEnumerationConstant?: (ctx: EnumerationConstantContext) => void;
530
+ /**
531
+ * Enter a parse tree produced by `CParser.atomicTypeSpecifier`.
532
+ * @param ctx the parse tree
533
+ */
534
+ enterAtomicTypeSpecifier?: (ctx: AtomicTypeSpecifierContext) => void;
535
+ /**
536
+ * Exit a parse tree produced by `CParser.atomicTypeSpecifier`.
537
+ * @param ctx the parse tree
538
+ */
539
+ exitAtomicTypeSpecifier?: (ctx: AtomicTypeSpecifierContext) => void;
540
+ /**
541
+ * Enter a parse tree produced by `CParser.typeQualifier`.
542
+ * @param ctx the parse tree
543
+ */
544
+ enterTypeQualifier?: (ctx: TypeQualifierContext) => void;
545
+ /**
546
+ * Exit a parse tree produced by `CParser.typeQualifier`.
547
+ * @param ctx the parse tree
548
+ */
549
+ exitTypeQualifier?: (ctx: TypeQualifierContext) => void;
550
+ /**
551
+ * Enter a parse tree produced by `CParser.functionSpecifier`.
552
+ * @param ctx the parse tree
553
+ */
554
+ enterFunctionSpecifier?: (ctx: FunctionSpecifierContext) => void;
555
+ /**
556
+ * Exit a parse tree produced by `CParser.functionSpecifier`.
557
+ * @param ctx the parse tree
558
+ */
559
+ exitFunctionSpecifier?: (ctx: FunctionSpecifierContext) => void;
560
+ /**
561
+ * Enter a parse tree produced by `CParser.alignmentSpecifier`.
562
+ * @param ctx the parse tree
563
+ */
564
+ enterAlignmentSpecifier?: (ctx: AlignmentSpecifierContext) => void;
565
+ /**
566
+ * Exit a parse tree produced by `CParser.alignmentSpecifier`.
567
+ * @param ctx the parse tree
568
+ */
569
+ exitAlignmentSpecifier?: (ctx: AlignmentSpecifierContext) => void;
570
+ /**
571
+ * Enter a parse tree produced by `CParser.declarator`.
572
+ * @param ctx the parse tree
573
+ */
574
+ enterDeclarator?: (ctx: DeclaratorContext) => void;
575
+ /**
576
+ * Exit a parse tree produced by `CParser.declarator`.
577
+ * @param ctx the parse tree
578
+ */
579
+ exitDeclarator?: (ctx: DeclaratorContext) => void;
580
+ /**
581
+ * Enter a parse tree produced by `CParser.directDeclarator`.
582
+ * @param ctx the parse tree
583
+ */
584
+ enterDirectDeclarator?: (ctx: DirectDeclaratorContext) => void;
585
+ /**
586
+ * Exit a parse tree produced by `CParser.directDeclarator`.
587
+ * @param ctx the parse tree
588
+ */
589
+ exitDirectDeclarator?: (ctx: DirectDeclaratorContext) => void;
590
+ /**
591
+ * Enter a parse tree produced by `CParser.vcSpecificModifer`.
592
+ * @param ctx the parse tree
593
+ */
594
+ enterVcSpecificModifer?: (ctx: VcSpecificModiferContext) => void;
595
+ /**
596
+ * Exit a parse tree produced by `CParser.vcSpecificModifer`.
597
+ * @param ctx the parse tree
598
+ */
599
+ exitVcSpecificModifer?: (ctx: VcSpecificModiferContext) => void;
600
+ /**
601
+ * Enter a parse tree produced by `CParser.gccDeclaratorExtension`.
602
+ * @param ctx the parse tree
603
+ */
604
+ enterGccDeclaratorExtension?: (ctx: GccDeclaratorExtensionContext) => void;
605
+ /**
606
+ * Exit a parse tree produced by `CParser.gccDeclaratorExtension`.
607
+ * @param ctx the parse tree
608
+ */
609
+ exitGccDeclaratorExtension?: (ctx: GccDeclaratorExtensionContext) => void;
610
+ /**
611
+ * Enter a parse tree produced by `CParser.gccAttributeSpecifier`.
612
+ * @param ctx the parse tree
613
+ */
614
+ enterGccAttributeSpecifier?: (ctx: GccAttributeSpecifierContext) => void;
615
+ /**
616
+ * Exit a parse tree produced by `CParser.gccAttributeSpecifier`.
617
+ * @param ctx the parse tree
618
+ */
619
+ exitGccAttributeSpecifier?: (ctx: GccAttributeSpecifierContext) => void;
620
+ /**
621
+ * Enter a parse tree produced by `CParser.gccAttributeList`.
622
+ * @param ctx the parse tree
623
+ */
624
+ enterGccAttributeList?: (ctx: GccAttributeListContext) => void;
625
+ /**
626
+ * Exit a parse tree produced by `CParser.gccAttributeList`.
627
+ * @param ctx the parse tree
628
+ */
629
+ exitGccAttributeList?: (ctx: GccAttributeListContext) => void;
630
+ /**
631
+ * Enter a parse tree produced by `CParser.gccAttribute`.
632
+ * @param ctx the parse tree
633
+ */
634
+ enterGccAttribute?: (ctx: GccAttributeContext) => void;
635
+ /**
636
+ * Exit a parse tree produced by `CParser.gccAttribute`.
637
+ * @param ctx the parse tree
638
+ */
639
+ exitGccAttribute?: (ctx: GccAttributeContext) => void;
640
+ /**
641
+ * Enter a parse tree produced by `CParser.pointer`.
642
+ * @param ctx the parse tree
643
+ */
644
+ enterPointer?: (ctx: PointerContext) => void;
645
+ /**
646
+ * Exit a parse tree produced by `CParser.pointer`.
647
+ * @param ctx the parse tree
648
+ */
649
+ exitPointer?: (ctx: PointerContext) => void;
650
+ /**
651
+ * Enter a parse tree produced by `CParser.typeQualifierList`.
652
+ * @param ctx the parse tree
653
+ */
654
+ enterTypeQualifierList?: (ctx: TypeQualifierListContext) => void;
655
+ /**
656
+ * Exit a parse tree produced by `CParser.typeQualifierList`.
657
+ * @param ctx the parse tree
658
+ */
659
+ exitTypeQualifierList?: (ctx: TypeQualifierListContext) => void;
660
+ /**
661
+ * Enter a parse tree produced by `CParser.parameterTypeList`.
662
+ * @param ctx the parse tree
663
+ */
664
+ enterParameterTypeList?: (ctx: ParameterTypeListContext) => void;
665
+ /**
666
+ * Exit a parse tree produced by `CParser.parameterTypeList`.
667
+ * @param ctx the parse tree
668
+ */
669
+ exitParameterTypeList?: (ctx: ParameterTypeListContext) => void;
670
+ /**
671
+ * Enter a parse tree produced by `CParser.parameterList`.
672
+ * @param ctx the parse tree
673
+ */
674
+ enterParameterList?: (ctx: ParameterListContext) => void;
675
+ /**
676
+ * Exit a parse tree produced by `CParser.parameterList`.
677
+ * @param ctx the parse tree
678
+ */
679
+ exitParameterList?: (ctx: ParameterListContext) => void;
680
+ /**
681
+ * Enter a parse tree produced by `CParser.parameterDeclaration`.
682
+ * @param ctx the parse tree
683
+ */
684
+ enterParameterDeclaration?: (ctx: ParameterDeclarationContext) => void;
685
+ /**
686
+ * Exit a parse tree produced by `CParser.parameterDeclaration`.
687
+ * @param ctx the parse tree
688
+ */
689
+ exitParameterDeclaration?: (ctx: ParameterDeclarationContext) => void;
690
+ /**
691
+ * Enter a parse tree produced by `CParser.identifierList`.
692
+ * @param ctx the parse tree
693
+ */
694
+ enterIdentifierList?: (ctx: IdentifierListContext) => void;
695
+ /**
696
+ * Exit a parse tree produced by `CParser.identifierList`.
697
+ * @param ctx the parse tree
698
+ */
699
+ exitIdentifierList?: (ctx: IdentifierListContext) => void;
700
+ /**
701
+ * Enter a parse tree produced by `CParser.typeName`.
702
+ * @param ctx the parse tree
703
+ */
704
+ enterTypeName?: (ctx: TypeNameContext) => void;
705
+ /**
706
+ * Exit a parse tree produced by `CParser.typeName`.
707
+ * @param ctx the parse tree
708
+ */
709
+ exitTypeName?: (ctx: TypeNameContext) => void;
710
+ /**
711
+ * Enter a parse tree produced by `CParser.abstractDeclarator`.
712
+ * @param ctx the parse tree
713
+ */
714
+ enterAbstractDeclarator?: (ctx: AbstractDeclaratorContext) => void;
715
+ /**
716
+ * Exit a parse tree produced by `CParser.abstractDeclarator`.
717
+ * @param ctx the parse tree
718
+ */
719
+ exitAbstractDeclarator?: (ctx: AbstractDeclaratorContext) => void;
720
+ /**
721
+ * Enter a parse tree produced by `CParser.directAbstractDeclarator`.
722
+ * @param ctx the parse tree
723
+ */
724
+ enterDirectAbstractDeclarator?: (ctx: DirectAbstractDeclaratorContext) => void;
725
+ /**
726
+ * Exit a parse tree produced by `CParser.directAbstractDeclarator`.
727
+ * @param ctx the parse tree
728
+ */
729
+ exitDirectAbstractDeclarator?: (ctx: DirectAbstractDeclaratorContext) => void;
730
+ /**
731
+ * Enter a parse tree produced by `CParser.typedefName`.
732
+ * @param ctx the parse tree
733
+ */
734
+ enterTypedefName?: (ctx: TypedefNameContext) => void;
735
+ /**
736
+ * Exit a parse tree produced by `CParser.typedefName`.
737
+ * @param ctx the parse tree
738
+ */
739
+ exitTypedefName?: (ctx: TypedefNameContext) => void;
740
+ /**
741
+ * Enter a parse tree produced by `CParser.initializer`.
742
+ * @param ctx the parse tree
743
+ */
744
+ enterInitializer?: (ctx: InitializerContext) => void;
745
+ /**
746
+ * Exit a parse tree produced by `CParser.initializer`.
747
+ * @param ctx the parse tree
748
+ */
749
+ exitInitializer?: (ctx: InitializerContext) => void;
750
+ /**
751
+ * Enter a parse tree produced by `CParser.initializerList`.
752
+ * @param ctx the parse tree
753
+ */
754
+ enterInitializerList?: (ctx: InitializerListContext) => void;
755
+ /**
756
+ * Exit a parse tree produced by `CParser.initializerList`.
757
+ * @param ctx the parse tree
758
+ */
759
+ exitInitializerList?: (ctx: InitializerListContext) => void;
760
+ /**
761
+ * Enter a parse tree produced by `CParser.designation`.
762
+ * @param ctx the parse tree
763
+ */
764
+ enterDesignation?: (ctx: DesignationContext) => void;
765
+ /**
766
+ * Exit a parse tree produced by `CParser.designation`.
767
+ * @param ctx the parse tree
768
+ */
769
+ exitDesignation?: (ctx: DesignationContext) => void;
770
+ /**
771
+ * Enter a parse tree produced by `CParser.designatorList`.
772
+ * @param ctx the parse tree
773
+ */
774
+ enterDesignatorList?: (ctx: DesignatorListContext) => void;
775
+ /**
776
+ * Exit a parse tree produced by `CParser.designatorList`.
777
+ * @param ctx the parse tree
778
+ */
779
+ exitDesignatorList?: (ctx: DesignatorListContext) => void;
780
+ /**
781
+ * Enter a parse tree produced by `CParser.designator`.
782
+ * @param ctx the parse tree
783
+ */
784
+ enterDesignator?: (ctx: DesignatorContext) => void;
785
+ /**
786
+ * Exit a parse tree produced by `CParser.designator`.
787
+ * @param ctx the parse tree
788
+ */
789
+ exitDesignator?: (ctx: DesignatorContext) => void;
790
+ /**
791
+ * Enter a parse tree produced by `CParser.staticAssertDeclaration`.
792
+ * @param ctx the parse tree
793
+ */
794
+ enterStaticAssertDeclaration?: (ctx: StaticAssertDeclarationContext) => void;
795
+ /**
796
+ * Exit a parse tree produced by `CParser.staticAssertDeclaration`.
797
+ * @param ctx the parse tree
798
+ */
799
+ exitStaticAssertDeclaration?: (ctx: StaticAssertDeclarationContext) => void;
800
+ /**
801
+ * Enter a parse tree produced by `CParser.statement`.
802
+ * @param ctx the parse tree
803
+ */
804
+ enterStatement?: (ctx: StatementContext) => void;
805
+ /**
806
+ * Exit a parse tree produced by `CParser.statement`.
807
+ * @param ctx the parse tree
808
+ */
809
+ exitStatement?: (ctx: StatementContext) => void;
810
+ /**
811
+ * Enter a parse tree produced by `CParser.labeledStatement`.
812
+ * @param ctx the parse tree
813
+ */
814
+ enterLabeledStatement?: (ctx: LabeledStatementContext) => void;
815
+ /**
816
+ * Exit a parse tree produced by `CParser.labeledStatement`.
817
+ * @param ctx the parse tree
818
+ */
819
+ exitLabeledStatement?: (ctx: LabeledStatementContext) => void;
820
+ /**
821
+ * Enter a parse tree produced by `CParser.compoundStatement`.
822
+ * @param ctx the parse tree
823
+ */
824
+ enterCompoundStatement?: (ctx: CompoundStatementContext) => void;
825
+ /**
826
+ * Exit a parse tree produced by `CParser.compoundStatement`.
827
+ * @param ctx the parse tree
828
+ */
829
+ exitCompoundStatement?: (ctx: CompoundStatementContext) => void;
830
+ /**
831
+ * Enter a parse tree produced by `CParser.blockItemList`.
832
+ * @param ctx the parse tree
833
+ */
834
+ enterBlockItemList?: (ctx: BlockItemListContext) => void;
835
+ /**
836
+ * Exit a parse tree produced by `CParser.blockItemList`.
837
+ * @param ctx the parse tree
838
+ */
839
+ exitBlockItemList?: (ctx: BlockItemListContext) => void;
840
+ /**
841
+ * Enter a parse tree produced by `CParser.blockItem`.
842
+ * @param ctx the parse tree
843
+ */
844
+ enterBlockItem?: (ctx: BlockItemContext) => void;
845
+ /**
846
+ * Exit a parse tree produced by `CParser.blockItem`.
847
+ * @param ctx the parse tree
848
+ */
849
+ exitBlockItem?: (ctx: BlockItemContext) => void;
850
+ /**
851
+ * Enter a parse tree produced by `CParser.expressionStatement`.
852
+ * @param ctx the parse tree
853
+ */
854
+ enterExpressionStatement?: (ctx: ExpressionStatementContext) => void;
855
+ /**
856
+ * Exit a parse tree produced by `CParser.expressionStatement`.
857
+ * @param ctx the parse tree
858
+ */
859
+ exitExpressionStatement?: (ctx: ExpressionStatementContext) => void;
860
+ /**
861
+ * Enter a parse tree produced by `CParser.selectionStatement`.
862
+ * @param ctx the parse tree
863
+ */
864
+ enterSelectionStatement?: (ctx: SelectionStatementContext) => void;
865
+ /**
866
+ * Exit a parse tree produced by `CParser.selectionStatement`.
867
+ * @param ctx the parse tree
868
+ */
869
+ exitSelectionStatement?: (ctx: SelectionStatementContext) => void;
870
+ /**
871
+ * Enter a parse tree produced by `CParser.iterationStatement`.
872
+ * @param ctx the parse tree
873
+ */
874
+ enterIterationStatement?: (ctx: IterationStatementContext) => void;
875
+ /**
876
+ * Exit a parse tree produced by `CParser.iterationStatement`.
877
+ * @param ctx the parse tree
878
+ */
879
+ exitIterationStatement?: (ctx: IterationStatementContext) => void;
880
+ /**
881
+ * Enter a parse tree produced by `CParser.forCondition`.
882
+ * @param ctx the parse tree
883
+ */
884
+ enterForCondition?: (ctx: ForConditionContext) => void;
885
+ /**
886
+ * Exit a parse tree produced by `CParser.forCondition`.
887
+ * @param ctx the parse tree
888
+ */
889
+ exitForCondition?: (ctx: ForConditionContext) => void;
890
+ /**
891
+ * Enter a parse tree produced by `CParser.forDeclaration`.
892
+ * @param ctx the parse tree
893
+ */
894
+ enterForDeclaration?: (ctx: ForDeclarationContext) => void;
895
+ /**
896
+ * Exit a parse tree produced by `CParser.forDeclaration`.
897
+ * @param ctx the parse tree
898
+ */
899
+ exitForDeclaration?: (ctx: ForDeclarationContext) => void;
900
+ /**
901
+ * Enter a parse tree produced by `CParser.forExpression`.
902
+ * @param ctx the parse tree
903
+ */
904
+ enterForExpression?: (ctx: ForExpressionContext) => void;
905
+ /**
906
+ * Exit a parse tree produced by `CParser.forExpression`.
907
+ * @param ctx the parse tree
908
+ */
909
+ exitForExpression?: (ctx: ForExpressionContext) => void;
910
+ /**
911
+ * Enter a parse tree produced by `CParser.jumpStatement`.
912
+ * @param ctx the parse tree
913
+ */
914
+ enterJumpStatement?: (ctx: JumpStatementContext) => void;
915
+ /**
916
+ * Exit a parse tree produced by `CParser.jumpStatement`.
917
+ * @param ctx the parse tree
918
+ */
919
+ exitJumpStatement?: (ctx: JumpStatementContext) => void;
920
+ /**
921
+ * Enter a parse tree produced by `CParser.compilationUnit`.
922
+ * @param ctx the parse tree
923
+ */
924
+ enterCompilationUnit?: (ctx: CompilationUnitContext) => void;
925
+ /**
926
+ * Exit a parse tree produced by `CParser.compilationUnit`.
927
+ * @param ctx the parse tree
928
+ */
929
+ exitCompilationUnit?: (ctx: CompilationUnitContext) => void;
930
+ /**
931
+ * Enter a parse tree produced by `CParser.translationUnit`.
932
+ * @param ctx the parse tree
933
+ */
934
+ enterTranslationUnit?: (ctx: TranslationUnitContext) => void;
935
+ /**
936
+ * Exit a parse tree produced by `CParser.translationUnit`.
937
+ * @param ctx the parse tree
938
+ */
939
+ exitTranslationUnit?: (ctx: TranslationUnitContext) => void;
940
+ /**
941
+ * Enter a parse tree produced by `CParser.externalDeclaration`.
942
+ * @param ctx the parse tree
943
+ */
944
+ enterExternalDeclaration?: (ctx: ExternalDeclarationContext) => void;
945
+ /**
946
+ * Exit a parse tree produced by `CParser.externalDeclaration`.
947
+ * @param ctx the parse tree
948
+ */
949
+ exitExternalDeclaration?: (ctx: ExternalDeclarationContext) => void;
950
+ /**
951
+ * Enter a parse tree produced by `CParser.functionDefinition`.
952
+ * @param ctx the parse tree
953
+ */
954
+ enterFunctionDefinition?: (ctx: FunctionDefinitionContext) => void;
955
+ /**
956
+ * Exit a parse tree produced by `CParser.functionDefinition`.
957
+ * @param ctx the parse tree
958
+ */
959
+ exitFunctionDefinition?: (ctx: FunctionDefinitionContext) => void;
960
+ /**
961
+ * Enter a parse tree produced by `CParser.declarationList`.
962
+ * @param ctx the parse tree
963
+ */
964
+ enterDeclarationList?: (ctx: DeclarationListContext) => void;
965
+ /**
966
+ * Exit a parse tree produced by `CParser.declarationList`.
967
+ * @param ctx the parse tree
968
+ */
969
+ exitDeclarationList?: (ctx: DeclarationListContext) => void;
970
+
971
+ visitTerminal(node: TerminalNode): void {}
972
+ visitErrorNode(node: ErrorNode): void {}
973
+ enterEveryRule(node: ParserRuleContext): void {}
974
+ exitEveryRule(node: ParserRuleContext): void {}
975
+ }
976
+