BaseTools: use set instead of list for a variable to be used with in
[mirror_edk2.git] / BaseTools / Source / Python / Eot / CParser.py
CommitLineData
f51461c8
LG
1# $ANTLR 3.0.1 C.g 2010-02-23 09:58:53\r
2\r
3from antlr3 import *\r
4from antlr3.compat import set, frozenset\r
52302d4d
LG
5 \r
6## @file\r
7# The file defines the parser for C source files.\r
8#\r
9# THIS FILE IS AUTO-GENENERATED. PLEASE DON NOT MODIFY THIS FILE.\r
10# This file is generated by running:\r
11# java org.antlr.Tool C.g\r
12#\r
40d841f6 13# Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>\r
52302d4d
LG
14#\r
15# This program and the accompanying materials are licensed and made available\r
16# under the terms and conditions of the BSD License which accompanies this\r
17# distribution. The full text of the license may be found at:\r
18# http://opensource.org/licenses/bsd-license.php\r
19#\r
20# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
21# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
22#\r
23##\r
24\r
25import CodeFragment\r
26import FileProfile\r
f51461c8
LG
27\r
28\r
29\r
30# for convenience in actions\r
31HIDDEN = BaseRecognizer.HIDDEN\r
32\r
33# token types\r
34BS=20\r
35LINE_COMMENT=23\r
36FloatTypeSuffix=16\r
37IntegerTypeSuffix=14\r
38LETTER=11\r
39OCTAL_LITERAL=6\r
40CHARACTER_LITERAL=8\r
41Exponent=15\r
42EOF=-1\r
43HexDigit=13\r
44STRING_LITERAL=9\r
45WS=19\r
46FLOATING_POINT_LITERAL=10\r
47IDENTIFIER=4\r
48UnicodeEscape=18\r
49LINE_COMMAND=24\r
50UnicodeVocabulary=21\r
51HEX_LITERAL=5\r
52COMMENT=22\r
53DECIMAL_LITERAL=7\r
54EscapeSequence=12\r
55OctalEscape=17\r
56\r
57# token names\r
58tokenNames = [\r
59 "<invalid>", "<EOR>", "<DOWN>", "<UP>", \r
60 "IDENTIFIER", "HEX_LITERAL", "OCTAL_LITERAL", "DECIMAL_LITERAL", "CHARACTER_LITERAL", \r
61 "STRING_LITERAL", "FLOATING_POINT_LITERAL", "LETTER", "EscapeSequence", \r
62 "HexDigit", "IntegerTypeSuffix", "Exponent", "FloatTypeSuffix", "OctalEscape", \r
63 "UnicodeEscape", "WS", "BS", "UnicodeVocabulary", "COMMENT", "LINE_COMMENT", \r
64 "LINE_COMMAND", "';'", "'typedef'", "','", "'='", "'extern'", "'static'", \r
65 "'auto'", "'register'", "'STATIC'", "'void'", "'char'", "'short'", "'int'", \r
66 "'long'", "'float'", "'double'", "'signed'", "'unsigned'", "'{'", "'}'", \r
67 "'struct'", "'union'", "':'", "'enum'", "'const'", "'volatile'", "'IN'", \r
68 "'OUT'", "'OPTIONAL'", "'CONST'", "'UNALIGNED'", "'VOLATILE'", "'GLOBAL_REMOVE_IF_UNREFERENCED'", \r
69 "'EFIAPI'", "'EFI_BOOTSERVICE'", "'EFI_RUNTIMESERVICE'", "'PACKED'", \r
70 "'('", "')'", "'['", "']'", "'*'", "'...'", "'+'", "'-'", "'/'", "'%'", \r
71 "'++'", "'--'", "'sizeof'", "'.'", "'->'", "'&'", "'~'", "'!'", "'*='", \r
72 "'/='", "'%='", "'+='", "'-='", "'<<='", "'>>='", "'&='", "'^='", "'|='", \r
73 "'?'", "'||'", "'&&'", "'|'", "'^'", "'=='", "'!='", "'<'", "'>'", "'<='", \r
74 "'>='", "'<<'", "'>>'", "'__asm__'", "'_asm'", "'__asm'", "'case'", \r
75 "'default'", "'if'", "'else'", "'switch'", "'while'", "'do'", "'for'", \r
76 "'goto'", "'continue'", "'break'", "'return'"\r
77]\r
78\r
79\r
80class function_definition_scope(object):\r
81 def __init__(self):\r
82 self.ModifierText = None\r
83 self.DeclText = None\r
84 self.LBLine = None\r
85 self.LBOffset = None\r
86 self.DeclLine = None\r
87 self.DeclOffset = None\r
88class postfix_expression_scope(object):\r
89 def __init__(self):\r
90 self.FuncCallText = None\r
91\r
92\r
93class CParser(Parser):\r
94 grammarFileName = "C.g"\r
95 tokenNames = tokenNames\r
96\r
97 def __init__(self, input):\r
98 Parser.__init__(self, input)\r
99 self.ruleMemo = {}\r
100\r
877251b4
GL
101 self.function_definition_stack = []\r
102 self.postfix_expression_stack = []\r
f51461c8 103\r
52302d4d
LG
104 def printTokenInfo(self, line, offset, tokenText):\r
105 print str(line)+ ',' + str(offset) + ':' + str(tokenText)\r
106 \r
107 def StorePredicateExpression(self, StartLine, StartOffset, EndLine, EndOffset, Text):\r
108 PredExp = CodeFragment.PredicateExpression(Text, (StartLine, StartOffset), (EndLine, EndOffset))\r
109 FileProfile.PredicateExpressionList.append(PredExp)\r
110 \r
111 def StoreEnumerationDefinition(self, StartLine, StartOffset, EndLine, EndOffset, Text):\r
112 EnumDef = CodeFragment.EnumerationDefinition(Text, (StartLine, StartOffset), (EndLine, EndOffset))\r
113 FileProfile.EnumerationDefinitionList.append(EnumDef)\r
114 \r
115 def StoreStructUnionDefinition(self, StartLine, StartOffset, EndLine, EndOffset, Text):\r
116 SUDef = CodeFragment.StructUnionDefinition(Text, (StartLine, StartOffset), (EndLine, EndOffset))\r
117 FileProfile.StructUnionDefinitionList.append(SUDef)\r
118 \r
119 def StoreTypedefDefinition(self, StartLine, StartOffset, EndLine, EndOffset, FromText, ToText):\r
120 Tdef = CodeFragment.TypedefDefinition(FromText, ToText, (StartLine, StartOffset), (EndLine, EndOffset))\r
121 FileProfile.TypedefDefinitionList.append(Tdef)\r
122 \r
123 def StoreFunctionDefinition(self, StartLine, StartOffset, EndLine, EndOffset, ModifierText, DeclText, LeftBraceLine, LeftBraceOffset, DeclLine, DeclOffset):\r
124 FuncDef = CodeFragment.FunctionDefinition(ModifierText, DeclText, (StartLine, StartOffset), (EndLine, EndOffset), (LeftBraceLine, LeftBraceOffset), (DeclLine, DeclOffset))\r
125 FileProfile.FunctionDefinitionList.append(FuncDef)\r
126 \r
127 def StoreVariableDeclaration(self, StartLine, StartOffset, EndLine, EndOffset, ModifierText, DeclText):\r
128 VarDecl = CodeFragment.VariableDeclaration(ModifierText, DeclText, (StartLine, StartOffset), (EndLine, EndOffset))\r
129 FileProfile.VariableDeclarationList.append(VarDecl)\r
130 \r
131 def StoreFunctionCalling(self, StartLine, StartOffset, EndLine, EndOffset, FuncName, ParamList):\r
132 FuncCall = CodeFragment.FunctionCalling(FuncName, ParamList, (StartLine, StartOffset), (EndLine, EndOffset))\r
133 FileProfile.FunctionCallingList.append(FuncCall)\r
134 \r
f51461c8
LG
135\r
136\r
137\r
138 # $ANTLR start translation_unit\r
139 # C.g:102:1: translation_unit : ( external_declaration )* ;\r
140 def translation_unit(self, ):\r
141\r
142 translation_unit_StartIndex = self.input.index()\r
143 try:\r
144 try:\r
145 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 1):\r
146 return \r
147\r
148 # C.g:103:2: ( ( external_declaration )* )\r
149 # C.g:103:4: ( external_declaration )*\r
150 # C.g:103:4: ( external_declaration )*\r
151 while True: #loop1\r
152 alt1 = 2\r
153 LA1_0 = self.input.LA(1)\r
154\r
155 if (LA1_0 == IDENTIFIER or LA1_0 == 26 or (29 <= LA1_0 <= 42) or (45 <= LA1_0 <= 46) or (48 <= LA1_0 <= 62) or LA1_0 == 66) :\r
156 alt1 = 1\r
157\r
158\r
159 if alt1 == 1:\r
160 # C.g:0:0: external_declaration\r
161 self.following.append(self.FOLLOW_external_declaration_in_translation_unit74)\r
162 self.external_declaration()\r
163 self.following.pop()\r
164 if self.failed:\r
165 return \r
166\r
167\r
168 else:\r
169 break #loop1\r
170\r
171\r
172\r
173\r
174\r
175\r
176 except RecognitionException, re:\r
177 self.reportError(re)\r
178 self.recover(self.input, re)\r
179 finally:\r
180 if self.backtracking > 0:\r
181 self.memoize(self.input, 1, translation_unit_StartIndex)\r
182\r
183 pass\r
184\r
185 return \r
186\r
187 # $ANTLR end translation_unit\r
188\r
189\r
190 # $ANTLR start external_declaration\r
191 # C.g:114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );\r
192 def external_declaration(self, ):\r
193\r
194 external_declaration_StartIndex = self.input.index()\r
195 try:\r
196 try:\r
197 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 2):\r
198 return \r
199\r
200 # C.g:119:2: ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? )\r
201 alt3 = 3\r
202 LA3_0 = self.input.LA(1)\r
203\r
204 if ((29 <= LA3_0 <= 33)) :\r
205 LA3_1 = self.input.LA(2)\r
206\r
207 if (self.synpred4()) :\r
208 alt3 = 1\r
209 elif (self.synpred5()) :\r
210 alt3 = 2\r
211 else:\r
212 if self.backtracking > 0:\r
213 self.failed = True\r
214 return \r
215\r
216 nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 1, self.input)\r
217\r
218 raise nvae\r
219\r
220 elif (LA3_0 == 34) :\r
221 LA3_2 = self.input.LA(2)\r
222\r
223 if (self.synpred4()) :\r
224 alt3 = 1\r
225 elif (self.synpred5()) :\r
226 alt3 = 2\r
227 else:\r
228 if self.backtracking > 0:\r
229 self.failed = True\r
230 return \r
231\r
232 nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 2, self.input)\r
233\r
234 raise nvae\r
235\r
236 elif (LA3_0 == 35) :\r
237 LA3_3 = self.input.LA(2)\r
238\r
239 if (self.synpred4()) :\r
240 alt3 = 1\r
241 elif (self.synpred5()) :\r
242 alt3 = 2\r
243 else:\r
244 if self.backtracking > 0:\r
245 self.failed = True\r
246 return \r
247\r
248 nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 3, self.input)\r
249\r
250 raise nvae\r
251\r
252 elif (LA3_0 == 36) :\r
253 LA3_4 = self.input.LA(2)\r
254\r
255 if (self.synpred4()) :\r
256 alt3 = 1\r
257 elif (self.synpred5()) :\r
258 alt3 = 2\r
259 else:\r
260 if self.backtracking > 0:\r
261 self.failed = True\r
262 return \r
263\r
264 nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 4, self.input)\r
265\r
266 raise nvae\r
267\r
268 elif (LA3_0 == 37) :\r
269 LA3_5 = self.input.LA(2)\r
270\r
271 if (self.synpred4()) :\r
272 alt3 = 1\r
273 elif (self.synpred5()) :\r
274 alt3 = 2\r
275 else:\r
276 if self.backtracking > 0:\r
277 self.failed = True\r
278 return \r
279\r
280 nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 5, self.input)\r
281\r
282 raise nvae\r
283\r
284 elif (LA3_0 == 38) :\r
285 LA3_6 = self.input.LA(2)\r
286\r
287 if (self.synpred4()) :\r
288 alt3 = 1\r
289 elif (self.synpred5()) :\r
290 alt3 = 2\r
291 else:\r
292 if self.backtracking > 0:\r
293 self.failed = True\r
294 return \r
295\r
296 nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 6, self.input)\r
297\r
298 raise nvae\r
299\r
300 elif (LA3_0 == 39) :\r
301 LA3_7 = self.input.LA(2)\r
302\r
303 if (self.synpred4()) :\r
304 alt3 = 1\r
305 elif (self.synpred5()) :\r
306 alt3 = 2\r
307 else:\r
308 if self.backtracking > 0:\r
309 self.failed = True\r
310 return \r
311\r
312 nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 7, self.input)\r
313\r
314 raise nvae\r
315\r
316 elif (LA3_0 == 40) :\r
317 LA3_8 = self.input.LA(2)\r
318\r
319 if (self.synpred4()) :\r
320 alt3 = 1\r
321 elif (self.synpred5()) :\r
322 alt3 = 2\r
323 else:\r
324 if self.backtracking > 0:\r
325 self.failed = True\r
326 return \r
327\r
328 nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 8, self.input)\r
329\r
330 raise nvae\r
331\r
332 elif (LA3_0 == 41) :\r
333 LA3_9 = self.input.LA(2)\r
334\r
335 if (self.synpred4()) :\r
336 alt3 = 1\r
337 elif (self.synpred5()) :\r
338 alt3 = 2\r
339 else:\r
340 if self.backtracking > 0:\r
341 self.failed = True\r
342 return \r
343\r
344 nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 9, self.input)\r
345\r
346 raise nvae\r
347\r
348 elif (LA3_0 == 42) :\r
349 LA3_10 = self.input.LA(2)\r
350\r
351 if (self.synpred4()) :\r
352 alt3 = 1\r
353 elif (self.synpred5()) :\r
354 alt3 = 2\r
355 else:\r
356 if self.backtracking > 0:\r
357 self.failed = True\r
358 return \r
359\r
360 nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 10, self.input)\r
361\r
362 raise nvae\r
363\r
364 elif ((45 <= LA3_0 <= 46)) :\r
365 LA3_11 = self.input.LA(2)\r
366\r
367 if (self.synpred4()) :\r
368 alt3 = 1\r
369 elif (self.synpred5()) :\r
370 alt3 = 2\r
371 else:\r
372 if self.backtracking > 0:\r
373 self.failed = True\r
374 return \r
375\r
376 nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 11, self.input)\r
377\r
378 raise nvae\r
379\r
380 elif (LA3_0 == 48) :\r
381 LA3_12 = self.input.LA(2)\r
382\r
383 if (self.synpred4()) :\r
384 alt3 = 1\r
385 elif (self.synpred5()) :\r
386 alt3 = 2\r
387 else:\r
388 if self.backtracking > 0:\r
389 self.failed = True\r
390 return \r
391\r
392 nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 12, self.input)\r
393\r
394 raise nvae\r
395\r
396 elif (LA3_0 == IDENTIFIER) :\r
397 LA3_13 = self.input.LA(2)\r
398\r
399 if (self.synpred4()) :\r
400 alt3 = 1\r
401 elif (self.synpred5()) :\r
402 alt3 = 2\r
403 elif (True) :\r
404 alt3 = 3\r
405 else:\r
406 if self.backtracking > 0:\r
407 self.failed = True\r
408 return \r
409\r
410 nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 13, self.input)\r
411\r
412 raise nvae\r
413\r
414 elif (LA3_0 == 58) :\r
415 LA3_14 = self.input.LA(2)\r
416\r
417 if (self.synpred4()) :\r
418 alt3 = 1\r
419 elif (self.synpred5()) :\r
420 alt3 = 2\r
421 else:\r
422 if self.backtracking > 0:\r
423 self.failed = True\r
424 return \r
425\r
426 nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 14, self.input)\r
427\r
428 raise nvae\r
429\r
430 elif (LA3_0 == 66) and (self.synpred4()):\r
431 alt3 = 1\r
432 elif (LA3_0 == 59) :\r
433 LA3_16 = self.input.LA(2)\r
434\r
435 if (self.synpred4()) :\r
436 alt3 = 1\r
437 elif (self.synpred5()) :\r
438 alt3 = 2\r
439 else:\r
440 if self.backtracking > 0:\r
441 self.failed = True\r
442 return \r
443\r
444 nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 16, self.input)\r
445\r
446 raise nvae\r
447\r
448 elif (LA3_0 == 60) :\r
449 LA3_17 = self.input.LA(2)\r
450\r
451 if (self.synpred4()) :\r
452 alt3 = 1\r
453 elif (self.synpred5()) :\r
454 alt3 = 2\r
455 else:\r
456 if self.backtracking > 0:\r
457 self.failed = True\r
458 return \r
459\r
460 nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 17, self.input)\r
461\r
462 raise nvae\r
463\r
464 elif ((49 <= LA3_0 <= 57) or LA3_0 == 61) :\r
465 LA3_18 = self.input.LA(2)\r
466\r
467 if (self.synpred4()) :\r
468 alt3 = 1\r
469 elif (self.synpred5()) :\r
470 alt3 = 2\r
471 else:\r
472 if self.backtracking > 0:\r
473 self.failed = True\r
474 return \r
475\r
476 nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 18, self.input)\r
477\r
478 raise nvae\r
479\r
480 elif (LA3_0 == 62) and (self.synpred4()):\r
481 alt3 = 1\r
482 elif (LA3_0 == 26) :\r
483 alt3 = 2\r
484 else:\r
485 if self.backtracking > 0:\r
486 self.failed = True\r
487 return \r
488\r
489 nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 0, self.input)\r
490\r
491 raise nvae\r
492\r
493 if alt3 == 1:\r
494 # C.g:119:4: ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition\r
495 self.following.append(self.FOLLOW_function_definition_in_external_declaration113)\r
496 self.function_definition()\r
497 self.following.pop()\r
498 if self.failed:\r
499 return \r
500\r
501\r
502 elif alt3 == 2:\r
503 # C.g:120:4: declaration\r
504 self.following.append(self.FOLLOW_declaration_in_external_declaration118)\r
505 self.declaration()\r
506 self.following.pop()\r
507 if self.failed:\r
508 return \r
509\r
510\r
511 elif alt3 == 3:\r
512 # C.g:121:4: macro_statement ( ';' )?\r
513 self.following.append(self.FOLLOW_macro_statement_in_external_declaration123)\r
514 self.macro_statement()\r
515 self.following.pop()\r
516 if self.failed:\r
517 return \r
518 # C.g:121:20: ( ';' )?\r
519 alt2 = 2\r
520 LA2_0 = self.input.LA(1)\r
521\r
522 if (LA2_0 == 25) :\r
523 alt2 = 1\r
524 if alt2 == 1:\r
525 # C.g:121:21: ';'\r
526 self.match(self.input, 25, self.FOLLOW_25_in_external_declaration126)\r
527 if self.failed:\r
528 return \r
529\r
530\r
531\r
532\r
533\r
534\r
535 except RecognitionException, re:\r
536 self.reportError(re)\r
537 self.recover(self.input, re)\r
538 finally:\r
539 if self.backtracking > 0:\r
540 self.memoize(self.input, 2, external_declaration_StartIndex)\r
541\r
542 pass\r
543\r
544 return \r
545\r
546 # $ANTLR end external_declaration\r
547\r
548 class function_definition_return(object):\r
549 def __init__(self):\r
550 self.start = None\r
551 self.stop = None\r
552\r
553\r
554\r
555 # $ANTLR start function_definition\r
556 # C.g:126:1: function_definition : (d= declaration_specifiers )? declarator ( ( declaration )+ a= compound_statement | b= compound_statement ) ;\r
557 def function_definition(self, ):\r
558 self.function_definition_stack.append(function_definition_scope())\r
559 retval = self.function_definition_return()\r
560 retval.start = self.input.LT(1)\r
561 function_definition_StartIndex = self.input.index()\r
562 d = None\r
563\r
564 a = None\r
565\r
566 b = None\r
567\r
568 declarator1 = None\r
569\r
570\r
52302d4d
LG
571 \r
572 self.function_definition_stack[-1].ModifierText = ''\r
573 self.function_definition_stack[-1].DeclText = ''\r
574 self.function_definition_stack[-1].LBLine = 0\r
575 self.function_definition_stack[-1].LBOffset = 0\r
576 self.function_definition_stack[-1].DeclLine = 0\r
577 self.function_definition_stack[-1].DeclOffset = 0\r
f51461c8
LG
578\r
579 try:\r
580 try:\r
581 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 3):\r
582 return retval\r
583\r
584 # C.g:146:2: ( (d= declaration_specifiers )? declarator ( ( declaration )+ a= compound_statement | b= compound_statement ) )\r
585 # C.g:146:4: (d= declaration_specifiers )? declarator ( ( declaration )+ a= compound_statement | b= compound_statement )\r
586 # C.g:146:5: (d= declaration_specifiers )?\r
587 alt4 = 2\r
588 LA4 = self.input.LA(1)\r
589 if LA4 == 29 or LA4 == 30 or LA4 == 31 or LA4 == 32 or LA4 == 33 or LA4 == 34 or LA4 == 35 or LA4 == 36 or LA4 == 37 or LA4 == 38 or LA4 == 39 or LA4 == 40 or LA4 == 41 or LA4 == 42 or LA4 == 45 or LA4 == 46 or LA4 == 48 or LA4 == 49 or LA4 == 50 or LA4 == 51 or LA4 == 52 or LA4 == 53 or LA4 == 54 or LA4 == 55 or LA4 == 56 or LA4 == 57 or LA4 == 61:\r
590 alt4 = 1\r
591 elif LA4 == IDENTIFIER:\r
592 LA4 = self.input.LA(2)\r
593 if LA4 == 66:\r
594 alt4 = 1\r
595 elif LA4 == 58:\r
596 LA4_21 = self.input.LA(3)\r
597\r
598 if (self.synpred7()) :\r
599 alt4 = 1\r
600 elif LA4 == 59:\r
601 LA4_22 = self.input.LA(3)\r
602\r
603 if (self.synpred7()) :\r
604 alt4 = 1\r
605 elif LA4 == 60:\r
606 LA4_23 = self.input.LA(3)\r
607\r
608 if (self.synpred7()) :\r
609 alt4 = 1\r
610 elif LA4 == IDENTIFIER:\r
611 LA4_24 = self.input.LA(3)\r
612\r
613 if (self.synpred7()) :\r
614 alt4 = 1\r
615 elif LA4 == 62:\r
616 LA4_25 = self.input.LA(3)\r
617\r
618 if (self.synpred7()) :\r
619 alt4 = 1\r
620 elif LA4 == 29 or LA4 == 30 or LA4 == 31 or LA4 == 32 or LA4 == 33:\r
621 LA4_26 = self.input.LA(3)\r
622\r
623 if (self.synpred7()) :\r
624 alt4 = 1\r
625 elif LA4 == 34:\r
626 LA4_27 = self.input.LA(3)\r
627\r
628 if (self.synpred7()) :\r
629 alt4 = 1\r
630 elif LA4 == 35:\r
631 LA4_28 = self.input.LA(3)\r
632\r
633 if (self.synpred7()) :\r
634 alt4 = 1\r
635 elif LA4 == 36:\r
636 LA4_29 = self.input.LA(3)\r
637\r
638 if (self.synpred7()) :\r
639 alt4 = 1\r
640 elif LA4 == 37:\r
641 LA4_30 = self.input.LA(3)\r
642\r
643 if (self.synpred7()) :\r
644 alt4 = 1\r
645 elif LA4 == 38:\r
646 LA4_31 = self.input.LA(3)\r
647\r
648 if (self.synpred7()) :\r
649 alt4 = 1\r
650 elif LA4 == 39:\r
651 LA4_32 = self.input.LA(3)\r
652\r
653 if (self.synpred7()) :\r
654 alt4 = 1\r
655 elif LA4 == 40:\r
656 LA4_33 = self.input.LA(3)\r
657\r
658 if (self.synpred7()) :\r
659 alt4 = 1\r
660 elif LA4 == 41:\r
661 LA4_34 = self.input.LA(3)\r
662\r
663 if (self.synpred7()) :\r
664 alt4 = 1\r
665 elif LA4 == 42:\r
666 LA4_35 = self.input.LA(3)\r
667\r
668 if (self.synpred7()) :\r
669 alt4 = 1\r
670 elif LA4 == 45 or LA4 == 46:\r
671 LA4_36 = self.input.LA(3)\r
672\r
673 if (self.synpred7()) :\r
674 alt4 = 1\r
675 elif LA4 == 48:\r
676 LA4_37 = self.input.LA(3)\r
677\r
678 if (self.synpred7()) :\r
679 alt4 = 1\r
680 elif LA4 == 49 or LA4 == 50 or LA4 == 51 or LA4 == 52 or LA4 == 53 or LA4 == 54 or LA4 == 55 or LA4 == 56 or LA4 == 57 or LA4 == 61:\r
681 LA4_38 = self.input.LA(3)\r
682\r
683 if (self.synpred7()) :\r
684 alt4 = 1\r
685 elif LA4 == 58:\r
686 LA4_14 = self.input.LA(2)\r
687\r
688 if (self.synpred7()) :\r
689 alt4 = 1\r
690 elif LA4 == 59:\r
691 LA4_16 = self.input.LA(2)\r
692\r
693 if (self.synpred7()) :\r
694 alt4 = 1\r
695 elif LA4 == 60:\r
696 LA4_17 = self.input.LA(2)\r
697\r
698 if (self.synpred7()) :\r
699 alt4 = 1\r
700 if alt4 == 1:\r
701 # C.g:0:0: d= declaration_specifiers\r
702 self.following.append(self.FOLLOW_declaration_specifiers_in_function_definition157)\r
703 d = self.declaration_specifiers()\r
704 self.following.pop()\r
705 if self.failed:\r
706 return retval\r
707\r
708\r
709\r
710 self.following.append(self.FOLLOW_declarator_in_function_definition160)\r
711 declarator1 = self.declarator()\r
712 self.following.pop()\r
713 if self.failed:\r
714 return retval\r
715 # C.g:147:3: ( ( declaration )+ a= compound_statement | b= compound_statement )\r
716 alt6 = 2\r
717 LA6_0 = self.input.LA(1)\r
718\r
719 if (LA6_0 == IDENTIFIER or LA6_0 == 26 or (29 <= LA6_0 <= 42) or (45 <= LA6_0 <= 46) or (48 <= LA6_0 <= 61)) :\r
720 alt6 = 1\r
721 elif (LA6_0 == 43) :\r
722 alt6 = 2\r
723 else:\r
724 if self.backtracking > 0:\r
725 self.failed = True\r
726 return retval\r
727\r
728 nvae = NoViableAltException("147:3: ( ( declaration )+ a= compound_statement | b= compound_statement )", 6, 0, self.input)\r
729\r
730 raise nvae\r
731\r
732 if alt6 == 1:\r
733 # C.g:147:5: ( declaration )+ a= compound_statement\r
734 # C.g:147:5: ( declaration )+\r
735 cnt5 = 0\r
736 while True: #loop5\r
737 alt5 = 2\r
738 LA5_0 = self.input.LA(1)\r
739\r
740 if (LA5_0 == IDENTIFIER or LA5_0 == 26 or (29 <= LA5_0 <= 42) or (45 <= LA5_0 <= 46) or (48 <= LA5_0 <= 61)) :\r
741 alt5 = 1\r
742\r
743\r
744 if alt5 == 1:\r
745 # C.g:0:0: declaration\r
746 self.following.append(self.FOLLOW_declaration_in_function_definition166)\r
747 self.declaration()\r
748 self.following.pop()\r
749 if self.failed:\r
750 return retval\r
751\r
752\r
753 else:\r
754 if cnt5 >= 1:\r
755 break #loop5\r
756\r
757 if self.backtracking > 0:\r
758 self.failed = True\r
759 return retval\r
760\r
761 eee = EarlyExitException(5, self.input)\r
762 raise eee\r
763\r
764 cnt5 += 1\r
765\r
766\r
767 self.following.append(self.FOLLOW_compound_statement_in_function_definition171)\r
768 a = self.compound_statement()\r
769 self.following.pop()\r
770 if self.failed:\r
771 return retval\r
772\r
773\r
774 elif alt6 == 2:\r
775 # C.g:148:5: b= compound_statement\r
776 self.following.append(self.FOLLOW_compound_statement_in_function_definition180)\r
777 b = self.compound_statement()\r
778 self.following.pop()\r
779 if self.failed:\r
780 return retval\r
781\r
782\r
783\r
784 if self.backtracking == 0:\r
52302d4d 785 \r
4231a819 786 if d is not None:\r
52302d4d
LG
787 self.function_definition_stack[-1].ModifierText = self.input.toString(d.start,d.stop)\r
788 else:\r
789 self.function_definition_stack[-1].ModifierText = ''\r
790 self.function_definition_stack[-1].DeclText = self.input.toString(declarator1.start,declarator1.stop)\r
791 self.function_definition_stack[-1].DeclLine = declarator1.start.line\r
792 self.function_definition_stack[-1].DeclOffset = declarator1.start.charPositionInLine\r
4231a819 793 if a is not None:\r
52302d4d
LG
794 self.function_definition_stack[-1].LBLine = a.start.line\r
795 self.function_definition_stack[-1].LBOffset = a.start.charPositionInLine\r
796 else:\r
797 self.function_definition_stack[-1].LBLine = b.start.line\r
798 self.function_definition_stack[-1].LBOffset = b.start.charPositionInLine\r
f51461c8
LG
799 \r
800\r
801\r
802\r
803\r
804 retval.stop = self.input.LT(-1)\r
805\r
806 if self.backtracking == 0:\r
52302d4d
LG
807 \r
808 self.StoreFunctionDefinition(retval.start.line, retval.start.charPositionInLine, retval.stop.line, retval.stop.charPositionInLine, self.function_definition_stack[-1].ModifierText, self.function_definition_stack[-1].DeclText, self.function_definition_stack[-1].LBLine, self.function_definition_stack[-1].LBOffset, self.function_definition_stack[-1].DeclLine, self.function_definition_stack[-1].DeclOffset)\r
f51461c8
LG
809\r
810\r
811\r
812 except RecognitionException, re:\r
813 self.reportError(re)\r
814 self.recover(self.input, re)\r
815 finally:\r
816 if self.backtracking > 0:\r
817 self.memoize(self.input, 3, function_definition_StartIndex)\r
818\r
819 self.function_definition_stack.pop()\r
820 pass\r
821\r
822 return retval\r
823\r
824 # $ANTLR end function_definition\r
825\r
826\r
827 # $ANTLR start declaration\r
828 # C.g:166:1: declaration : (a= 'typedef' (b= declaration_specifiers )? c= init_declarator_list d= ';' | s= declaration_specifiers (t= init_declarator_list )? e= ';' );\r
829 def declaration(self, ):\r
830\r
831 declaration_StartIndex = self.input.index()\r
832 a = None\r
833 d = None\r
834 e = None\r
835 b = None\r
836\r
837 c = None\r
838\r
839 s = None\r
840\r
841 t = None\r
842\r
843\r
844 try:\r
845 try:\r
846 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 4):\r
847 return \r
848\r
849 # C.g:167:2: (a= 'typedef' (b= declaration_specifiers )? c= init_declarator_list d= ';' | s= declaration_specifiers (t= init_declarator_list )? e= ';' )\r
850 alt9 = 2\r
851 LA9_0 = self.input.LA(1)\r
852\r
853 if (LA9_0 == 26) :\r
854 alt9 = 1\r
855 elif (LA9_0 == IDENTIFIER or (29 <= LA9_0 <= 42) or (45 <= LA9_0 <= 46) or (48 <= LA9_0 <= 61)) :\r
856 alt9 = 2\r
857 else:\r
858 if self.backtracking > 0:\r
859 self.failed = True\r
860 return \r
861\r
862 nvae = NoViableAltException("166:1: declaration : (a= 'typedef' (b= declaration_specifiers )? c= init_declarator_list d= ';' | s= declaration_specifiers (t= init_declarator_list )? e= ';' );", 9, 0, self.input)\r
863\r
864 raise nvae\r
865\r
866 if alt9 == 1:\r
867 # C.g:167:4: a= 'typedef' (b= declaration_specifiers )? c= init_declarator_list d= ';'\r
868 a = self.input.LT(1)\r
869 self.match(self.input, 26, self.FOLLOW_26_in_declaration203)\r
870 if self.failed:\r
871 return \r
872 # C.g:167:17: (b= declaration_specifiers )?\r
873 alt7 = 2\r
874 LA7 = self.input.LA(1)\r
875 if LA7 == 29 or LA7 == 30 or LA7 == 31 or LA7 == 32 or LA7 == 33 or LA7 == 34 or LA7 == 35 or LA7 == 36 or LA7 == 37 or LA7 == 38 or LA7 == 39 or LA7 == 40 or LA7 == 41 or LA7 == 42 or LA7 == 45 or LA7 == 46 or LA7 == 48 or LA7 == 49 or LA7 == 50 or LA7 == 51 or LA7 == 52 or LA7 == 53 or LA7 == 54 or LA7 == 55 or LA7 == 56 or LA7 == 57 or LA7 == 61:\r
876 alt7 = 1\r
877 elif LA7 == IDENTIFIER:\r
878 LA7_13 = self.input.LA(2)\r
879\r
880 if (LA7_13 == 62) :\r
881 LA7_21 = self.input.LA(3)\r
882\r
883 if (self.synpred10()) :\r
884 alt7 = 1\r
885 elif (LA7_13 == IDENTIFIER or (29 <= LA7_13 <= 42) or (45 <= LA7_13 <= 46) or (48 <= LA7_13 <= 61) or LA7_13 == 66) :\r
886 alt7 = 1\r
887 elif LA7 == 58:\r
888 LA7_14 = self.input.LA(2)\r
889\r
890 if (self.synpred10()) :\r
891 alt7 = 1\r
892 elif LA7 == 59:\r
893 LA7_16 = self.input.LA(2)\r
894\r
895 if (self.synpred10()) :\r
896 alt7 = 1\r
897 elif LA7 == 60:\r
898 LA7_17 = self.input.LA(2)\r
899\r
900 if (self.synpred10()) :\r
901 alt7 = 1\r
902 if alt7 == 1:\r
903 # C.g:0:0: b= declaration_specifiers\r
904 self.following.append(self.FOLLOW_declaration_specifiers_in_declaration207)\r
905 b = self.declaration_specifiers()\r
906 self.following.pop()\r
907 if self.failed:\r
908 return \r
909\r
910\r
911\r
912 self.following.append(self.FOLLOW_init_declarator_list_in_declaration216)\r
913 c = self.init_declarator_list()\r
914 self.following.pop()\r
915 if self.failed:\r
916 return \r
917 d = self.input.LT(1)\r
918 self.match(self.input, 25, self.FOLLOW_25_in_declaration220)\r
919 if self.failed:\r
920 return \r
921 if self.backtracking == 0:\r
52302d4d 922 \r
4231a819 923 if b is not None:\r
52302d4d
LG
924 self.StoreTypedefDefinition(a.line, a.charPositionInLine, d.line, d.charPositionInLine, self.input.toString(b.start,b.stop), self.input.toString(c.start,c.stop))\r
925 else:\r
926 self.StoreTypedefDefinition(a.line, a.charPositionInLine, d.line, d.charPositionInLine, '', self.input.toString(c.start,c.stop))\r
f51461c8
LG
927 \r
928\r
929\r
930\r
931 elif alt9 == 2:\r
932 # C.g:175:4: s= declaration_specifiers (t= init_declarator_list )? e= ';'\r
933 self.following.append(self.FOLLOW_declaration_specifiers_in_declaration234)\r
934 s = self.declaration_specifiers()\r
935 self.following.pop()\r
936 if self.failed:\r
937 return \r
938 # C.g:175:30: (t= init_declarator_list )?\r
939 alt8 = 2\r
940 LA8_0 = self.input.LA(1)\r
941\r
942 if (LA8_0 == IDENTIFIER or (58 <= LA8_0 <= 60) or LA8_0 == 62 or LA8_0 == 66) :\r
943 alt8 = 1\r
944 if alt8 == 1:\r
945 # C.g:0:0: t= init_declarator_list\r
946 self.following.append(self.FOLLOW_init_declarator_list_in_declaration238)\r
947 t = self.init_declarator_list()\r
948 self.following.pop()\r
949 if self.failed:\r
950 return \r
951\r
952\r
953\r
954 e = self.input.LT(1)\r
955 self.match(self.input, 25, self.FOLLOW_25_in_declaration243)\r
956 if self.failed:\r
957 return \r
958 if self.backtracking == 0:\r
52302d4d 959 \r
4231a819 960 if t is not None:\r
52302d4d 961 self.StoreVariableDeclaration(s.start.line, s.start.charPositionInLine, t.start.line, t.start.charPositionInLine, self.input.toString(s.start,s.stop), self.input.toString(t.start,t.stop))\r
f51461c8
LG
962 \r
963\r
964\r
965\r
966\r
967 except RecognitionException, re:\r
968 self.reportError(re)\r
969 self.recover(self.input, re)\r
970 finally:\r
971 if self.backtracking > 0:\r
972 self.memoize(self.input, 4, declaration_StartIndex)\r
973\r
974 pass\r
975\r
976 return \r
977\r
978 # $ANTLR end declaration\r
979\r
980 class declaration_specifiers_return(object):\r
981 def __init__(self):\r
982 self.start = None\r
983 self.stop = None\r
984\r
985\r
986\r
987 # $ANTLR start declaration_specifiers\r
988 # C.g:182:1: declaration_specifiers : ( storage_class_specifier | type_specifier | type_qualifier )+ ;\r
989 def declaration_specifiers(self, ):\r
990\r
991 retval = self.declaration_specifiers_return()\r
992 retval.start = self.input.LT(1)\r
993 declaration_specifiers_StartIndex = self.input.index()\r
994 try:\r
995 try:\r
996 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 5):\r
997 return retval\r
998\r
999 # C.g:183:2: ( ( storage_class_specifier | type_specifier | type_qualifier )+ )\r
1000 # C.g:183:6: ( storage_class_specifier | type_specifier | type_qualifier )+\r
1001 # C.g:183:6: ( storage_class_specifier | type_specifier | type_qualifier )+\r
1002 cnt10 = 0\r
1003 while True: #loop10\r
1004 alt10 = 4\r
1005 LA10 = self.input.LA(1)\r
1006 if LA10 == 58:\r
1007 LA10_2 = self.input.LA(2)\r
1008\r
1009 if (self.synpred15()) :\r
1010 alt10 = 3\r
1011\r
1012\r
1013 elif LA10 == 59:\r
1014 LA10_3 = self.input.LA(2)\r
1015\r
1016 if (self.synpred15()) :\r
1017 alt10 = 3\r
1018\r
1019\r
1020 elif LA10 == 60:\r
1021 LA10_4 = self.input.LA(2)\r
1022\r
1023 if (self.synpred15()) :\r
1024 alt10 = 3\r
1025\r
1026\r
1027 elif LA10 == IDENTIFIER:\r
1028 LA10_5 = self.input.LA(2)\r
1029\r
1030 if (self.synpred14()) :\r
1031 alt10 = 2\r
1032\r
1033\r
1034 elif LA10 == 53:\r
1035 LA10_9 = self.input.LA(2)\r
1036\r
1037 if (self.synpred15()) :\r
1038 alt10 = 3\r
1039\r
1040\r
1041 elif LA10 == 29 or LA10 == 30 or LA10 == 31 or LA10 == 32 or LA10 == 33:\r
1042 alt10 = 1\r
1043 elif LA10 == 34 or LA10 == 35 or LA10 == 36 or LA10 == 37 or LA10 == 38 or LA10 == 39 or LA10 == 40 or LA10 == 41 or LA10 == 42 or LA10 == 45 or LA10 == 46 or LA10 == 48:\r
1044 alt10 = 2\r
1045 elif LA10 == 49 or LA10 == 50 or LA10 == 51 or LA10 == 52 or LA10 == 54 or LA10 == 55 or LA10 == 56 or LA10 == 57 or LA10 == 61:\r
1046 alt10 = 3\r
1047\r
1048 if alt10 == 1:\r
1049 # C.g:183:10: storage_class_specifier\r
1050 self.following.append(self.FOLLOW_storage_class_specifier_in_declaration_specifiers264)\r
1051 self.storage_class_specifier()\r
1052 self.following.pop()\r
1053 if self.failed:\r
1054 return retval\r
1055\r
1056\r
1057 elif alt10 == 2:\r
1058 # C.g:184:7: type_specifier\r
1059 self.following.append(self.FOLLOW_type_specifier_in_declaration_specifiers272)\r
1060 self.type_specifier()\r
1061 self.following.pop()\r
1062 if self.failed:\r
1063 return retval\r
1064\r
1065\r
1066 elif alt10 == 3:\r
1067 # C.g:185:13: type_qualifier\r
1068 self.following.append(self.FOLLOW_type_qualifier_in_declaration_specifiers286)\r
1069 self.type_qualifier()\r
1070 self.following.pop()\r
1071 if self.failed:\r
1072 return retval\r
1073\r
1074\r
1075 else:\r
1076 if cnt10 >= 1:\r
1077 break #loop10\r
1078\r
1079 if self.backtracking > 0:\r
1080 self.failed = True\r
1081 return retval\r
1082\r
1083 eee = EarlyExitException(10, self.input)\r
1084 raise eee\r
1085\r
1086 cnt10 += 1\r
1087\r
1088\r
1089\r
1090\r
1091\r
1092 retval.stop = self.input.LT(-1)\r
1093\r
1094\r
1095 except RecognitionException, re:\r
1096 self.reportError(re)\r
1097 self.recover(self.input, re)\r
1098 finally:\r
1099 if self.backtracking > 0:\r
1100 self.memoize(self.input, 5, declaration_specifiers_StartIndex)\r
1101\r
1102 pass\r
1103\r
1104 return retval\r
1105\r
1106 # $ANTLR end declaration_specifiers\r
1107\r
1108 class init_declarator_list_return(object):\r
1109 def __init__(self):\r
1110 self.start = None\r
1111 self.stop = None\r
1112\r
1113\r
1114\r
1115 # $ANTLR start init_declarator_list\r
1116 # C.g:189:1: init_declarator_list : init_declarator ( ',' init_declarator )* ;\r
1117 def init_declarator_list(self, ):\r
1118\r
1119 retval = self.init_declarator_list_return()\r
1120 retval.start = self.input.LT(1)\r
1121 init_declarator_list_StartIndex = self.input.index()\r
1122 try:\r
1123 try:\r
1124 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 6):\r
1125 return retval\r
1126\r
1127 # C.g:190:2: ( init_declarator ( ',' init_declarator )* )\r
1128 # C.g:190:4: init_declarator ( ',' init_declarator )*\r
1129 self.following.append(self.FOLLOW_init_declarator_in_init_declarator_list308)\r
1130 self.init_declarator()\r
1131 self.following.pop()\r
1132 if self.failed:\r
1133 return retval\r
1134 # C.g:190:20: ( ',' init_declarator )*\r
1135 while True: #loop11\r
1136 alt11 = 2\r
1137 LA11_0 = self.input.LA(1)\r
1138\r
1139 if (LA11_0 == 27) :\r
1140 alt11 = 1\r
1141\r
1142\r
1143 if alt11 == 1:\r
1144 # C.g:190:21: ',' init_declarator\r
1145 self.match(self.input, 27, self.FOLLOW_27_in_init_declarator_list311)\r
1146 if self.failed:\r
1147 return retval\r
1148 self.following.append(self.FOLLOW_init_declarator_in_init_declarator_list313)\r
1149 self.init_declarator()\r
1150 self.following.pop()\r
1151 if self.failed:\r
1152 return retval\r
1153\r
1154\r
1155 else:\r
1156 break #loop11\r
1157\r
1158\r
1159\r
1160\r
1161\r
1162 retval.stop = self.input.LT(-1)\r
1163\r
1164\r
1165 except RecognitionException, re:\r
1166 self.reportError(re)\r
1167 self.recover(self.input, re)\r
1168 finally:\r
1169 if self.backtracking > 0:\r
1170 self.memoize(self.input, 6, init_declarator_list_StartIndex)\r
1171\r
1172 pass\r
1173\r
1174 return retval\r
1175\r
1176 # $ANTLR end init_declarator_list\r
1177\r
1178\r
1179 # $ANTLR start init_declarator\r
1180 # C.g:193:1: init_declarator : declarator ( '=' initializer )? ;\r
1181 def init_declarator(self, ):\r
1182\r
1183 init_declarator_StartIndex = self.input.index()\r
1184 try:\r
1185 try:\r
1186 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 7):\r
1187 return \r
1188\r
1189 # C.g:194:2: ( declarator ( '=' initializer )? )\r
1190 # C.g:194:4: declarator ( '=' initializer )?\r
1191 self.following.append(self.FOLLOW_declarator_in_init_declarator326)\r
1192 self.declarator()\r
1193 self.following.pop()\r
1194 if self.failed:\r
1195 return \r
1196 # C.g:194:15: ( '=' initializer )?\r
1197 alt12 = 2\r
1198 LA12_0 = self.input.LA(1)\r
1199\r
1200 if (LA12_0 == 28) :\r
1201 alt12 = 1\r
1202 if alt12 == 1:\r
1203 # C.g:194:16: '=' initializer\r
1204 self.match(self.input, 28, self.FOLLOW_28_in_init_declarator329)\r
1205 if self.failed:\r
1206 return \r
1207 self.following.append(self.FOLLOW_initializer_in_init_declarator331)\r
1208 self.initializer()\r
1209 self.following.pop()\r
1210 if self.failed:\r
1211 return \r
1212\r
1213\r
1214\r
1215\r
1216\r
1217\r
1218\r
1219 except RecognitionException, re:\r
1220 self.reportError(re)\r
1221 self.recover(self.input, re)\r
1222 finally:\r
1223 if self.backtracking > 0:\r
1224 self.memoize(self.input, 7, init_declarator_StartIndex)\r
1225\r
1226 pass\r
1227\r
1228 return \r
1229\r
1230 # $ANTLR end init_declarator\r
1231\r
1232\r
1233 # $ANTLR start storage_class_specifier\r
1234 # C.g:197:1: storage_class_specifier : ( 'extern' | 'static' | 'auto' | 'register' | 'STATIC' );\r
1235 def storage_class_specifier(self, ):\r
1236\r
1237 storage_class_specifier_StartIndex = self.input.index()\r
1238 try:\r
1239 try:\r
1240 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 8):\r
1241 return \r
1242\r
1243 # C.g:198:2: ( 'extern' | 'static' | 'auto' | 'register' | 'STATIC' )\r
1244 # C.g:\r
1245 if (29 <= self.input.LA(1) <= 33):\r
1246 self.input.consume();\r
1247 self.errorRecovery = False\r
1248 self.failed = False\r
1249\r
1250 else:\r
1251 if self.backtracking > 0:\r
1252 self.failed = True\r
1253 return \r
1254\r
1255 mse = MismatchedSetException(None, self.input)\r
1256 self.recoverFromMismatchedSet(\r
1257 self.input, mse, self.FOLLOW_set_in_storage_class_specifier0\r
1258 )\r
1259 raise mse\r
1260\r
1261\r
1262\r
1263\r
1264\r
1265\r
1266 except RecognitionException, re:\r
1267 self.reportError(re)\r
1268 self.recover(self.input, re)\r
1269 finally:\r
1270 if self.backtracking > 0:\r
1271 self.memoize(self.input, 8, storage_class_specifier_StartIndex)\r
1272\r
1273 pass\r
1274\r
1275 return \r
1276\r
1277 # $ANTLR end storage_class_specifier\r
1278\r
1279\r
1280 # $ANTLR start type_specifier\r
1281 # C.g:205:1: type_specifier : ( 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | s= struct_or_union_specifier | e= enum_specifier | ( IDENTIFIER ( type_qualifier )* declarator )=> type_id );\r
1282 def type_specifier(self, ):\r
1283\r
1284 type_specifier_StartIndex = self.input.index()\r
1285 s = None\r
1286\r
1287 e = None\r
1288\r
1289\r
1290 try:\r
1291 try:\r
1292 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 9):\r
1293 return \r
1294\r
1295 # C.g:206:2: ( 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | s= struct_or_union_specifier | e= enum_specifier | ( IDENTIFIER ( type_qualifier )* declarator )=> type_id )\r
1296 alt13 = 12\r
1297 LA13_0 = self.input.LA(1)\r
1298\r
1299 if (LA13_0 == 34) :\r
1300 alt13 = 1\r
1301 elif (LA13_0 == 35) :\r
1302 alt13 = 2\r
1303 elif (LA13_0 == 36) :\r
1304 alt13 = 3\r
1305 elif (LA13_0 == 37) :\r
1306 alt13 = 4\r
1307 elif (LA13_0 == 38) :\r
1308 alt13 = 5\r
1309 elif (LA13_0 == 39) :\r
1310 alt13 = 6\r
1311 elif (LA13_0 == 40) :\r
1312 alt13 = 7\r
1313 elif (LA13_0 == 41) :\r
1314 alt13 = 8\r
1315 elif (LA13_0 == 42) :\r
1316 alt13 = 9\r
1317 elif ((45 <= LA13_0 <= 46)) :\r
1318 alt13 = 10\r
1319 elif (LA13_0 == 48) :\r
1320 alt13 = 11\r
1321 elif (LA13_0 == IDENTIFIER) and (self.synpred34()):\r
1322 alt13 = 12\r
1323 else:\r
1324 if self.backtracking > 0:\r
1325 self.failed = True\r
1326 return \r
1327\r
1328 nvae = NoViableAltException("205:1: type_specifier : ( 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | s= struct_or_union_specifier | e= enum_specifier | ( IDENTIFIER ( type_qualifier )* declarator )=> type_id );", 13, 0, self.input)\r
1329\r
1330 raise nvae\r
1331\r
1332 if alt13 == 1:\r
1333 # C.g:206:4: 'void'\r
1334 self.match(self.input, 34, self.FOLLOW_34_in_type_specifier376)\r
1335 if self.failed:\r
1336 return \r
1337\r
1338\r
1339 elif alt13 == 2:\r
1340 # C.g:207:4: 'char'\r
1341 self.match(self.input, 35, self.FOLLOW_35_in_type_specifier381)\r
1342 if self.failed:\r
1343 return \r
1344\r
1345\r
1346 elif alt13 == 3:\r
1347 # C.g:208:4: 'short'\r
1348 self.match(self.input, 36, self.FOLLOW_36_in_type_specifier386)\r
1349 if self.failed:\r
1350 return \r
1351\r
1352\r
1353 elif alt13 == 4:\r
1354 # C.g:209:4: 'int'\r
1355 self.match(self.input, 37, self.FOLLOW_37_in_type_specifier391)\r
1356 if self.failed:\r
1357 return \r
1358\r
1359\r
1360 elif alt13 == 5:\r
1361 # C.g:210:4: 'long'\r
1362 self.match(self.input, 38, self.FOLLOW_38_in_type_specifier396)\r
1363 if self.failed:\r
1364 return \r
1365\r
1366\r
1367 elif alt13 == 6:\r
1368 # C.g:211:4: 'float'\r
1369 self.match(self.input, 39, self.FOLLOW_39_in_type_specifier401)\r
1370 if self.failed:\r
1371 return \r
1372\r
1373\r
1374 elif alt13 == 7:\r
1375 # C.g:212:4: 'double'\r
1376 self.match(self.input, 40, self.FOLLOW_40_in_type_specifier406)\r
1377 if self.failed:\r
1378 return \r
1379\r
1380\r
1381 elif alt13 == 8:\r
1382 # C.g:213:4: 'signed'\r
1383 self.match(self.input, 41, self.FOLLOW_41_in_type_specifier411)\r
1384 if self.failed:\r
1385 return \r
1386\r
1387\r
1388 elif alt13 == 9:\r
1389 # C.g:214:4: 'unsigned'\r
1390 self.match(self.input, 42, self.FOLLOW_42_in_type_specifier416)\r
1391 if self.failed:\r
1392 return \r
1393\r
1394\r
1395 elif alt13 == 10:\r
1396 # C.g:215:4: s= struct_or_union_specifier\r
1397 self.following.append(self.FOLLOW_struct_or_union_specifier_in_type_specifier423)\r
1398 s = self.struct_or_union_specifier()\r
1399 self.following.pop()\r
1400 if self.failed:\r
1401 return \r
1402 if self.backtracking == 0:\r
1403 \r
4231a819 1404 if s.stop is not None:\r
f51461c8
LG
1405 self.StoreStructUnionDefinition(s.start.line, s.start.charPositionInLine, s.stop.line, s.stop.charPositionInLine, self.input.toString(s.start,s.stop))\r
1406 \r
1407\r
1408\r
1409\r
1410 elif alt13 == 11:\r
1411 # C.g:220:4: e= enum_specifier\r
1412 self.following.append(self.FOLLOW_enum_specifier_in_type_specifier433)\r
1413 e = self.enum_specifier()\r
1414 self.following.pop()\r
1415 if self.failed:\r
1416 return \r
1417 if self.backtracking == 0:\r
1418 \r
4231a819 1419 if e.stop is not None:\r
f51461c8
LG
1420 self.StoreEnumerationDefinition(e.start.line, e.start.charPositionInLine, e.stop.line, e.stop.charPositionInLine, self.input.toString(e.start,e.stop))\r
1421 \r
1422\r
1423\r
1424\r
1425 elif alt13 == 12:\r
1426 # C.g:225:4: ( IDENTIFIER ( type_qualifier )* declarator )=> type_id\r
1427 self.following.append(self.FOLLOW_type_id_in_type_specifier451)\r
1428 self.type_id()\r
1429 self.following.pop()\r
1430 if self.failed:\r
1431 return \r
1432\r
1433\r
1434\r
1435 except RecognitionException, re:\r
1436 self.reportError(re)\r
1437 self.recover(self.input, re)\r
1438 finally:\r
1439 if self.backtracking > 0:\r
1440 self.memoize(self.input, 9, type_specifier_StartIndex)\r
1441\r
1442 pass\r
1443\r
1444 return \r
1445\r
1446 # $ANTLR end type_specifier\r
1447\r
1448\r
1449 # $ANTLR start type_id\r
1450 # C.g:228:1: type_id : IDENTIFIER ;\r
1451 def type_id(self, ):\r
1452\r
1453 type_id_StartIndex = self.input.index()\r
1454 try:\r
1455 try:\r
1456 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 10):\r
1457 return \r
1458\r
1459 # C.g:229:5: ( IDENTIFIER )\r
1460 # C.g:229:9: IDENTIFIER\r
1461 self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_type_id467)\r
1462 if self.failed:\r
1463 return \r
1464\r
1465\r
1466\r
1467\r
1468 except RecognitionException, re:\r
1469 self.reportError(re)\r
1470 self.recover(self.input, re)\r
1471 finally:\r
1472 if self.backtracking > 0:\r
1473 self.memoize(self.input, 10, type_id_StartIndex)\r
1474\r
1475 pass\r
1476\r
1477 return \r
1478\r
1479 # $ANTLR end type_id\r
1480\r
1481 class struct_or_union_specifier_return(object):\r
1482 def __init__(self):\r
1483 self.start = None\r
1484 self.stop = None\r
1485\r
1486\r
1487\r
1488 # $ANTLR start struct_or_union_specifier\r
1489 # C.g:233:1: struct_or_union_specifier options {k=3; } : ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER );\r
1490 def struct_or_union_specifier(self, ):\r
1491\r
1492 retval = self.struct_or_union_specifier_return()\r
1493 retval.start = self.input.LT(1)\r
1494 struct_or_union_specifier_StartIndex = self.input.index()\r
1495 try:\r
1496 try:\r
1497 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 11):\r
1498 return retval\r
1499\r
1500 # C.g:235:2: ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER )\r
1501 alt15 = 2\r
1502 LA15_0 = self.input.LA(1)\r
1503\r
1504 if ((45 <= LA15_0 <= 46)) :\r
1505 LA15_1 = self.input.LA(2)\r
1506\r
1507 if (LA15_1 == IDENTIFIER) :\r
1508 LA15_2 = self.input.LA(3)\r
1509\r
1510 if (LA15_2 == 43) :\r
1511 alt15 = 1\r
1512 elif (LA15_2 == EOF or LA15_2 == IDENTIFIER or LA15_2 == 25 or LA15_2 == 27 or (29 <= LA15_2 <= 42) or (45 <= LA15_2 <= 64) or LA15_2 == 66) :\r
1513 alt15 = 2\r
1514 else:\r
1515 if self.backtracking > 0:\r
1516 self.failed = True\r
1517 return retval\r
1518\r
1519 nvae = NoViableAltException("233:1: struct_or_union_specifier options {k=3; } : ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER );", 15, 2, self.input)\r
1520\r
1521 raise nvae\r
1522\r
1523 elif (LA15_1 == 43) :\r
1524 alt15 = 1\r
1525 else:\r
1526 if self.backtracking > 0:\r
1527 self.failed = True\r
1528 return retval\r
1529\r
1530 nvae = NoViableAltException("233:1: struct_or_union_specifier options {k=3; } : ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER );", 15, 1, self.input)\r
1531\r
1532 raise nvae\r
1533\r
1534 else:\r
1535 if self.backtracking > 0:\r
1536 self.failed = True\r
1537 return retval\r
1538\r
1539 nvae = NoViableAltException("233:1: struct_or_union_specifier options {k=3; } : ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER );", 15, 0, self.input)\r
1540\r
1541 raise nvae\r
1542\r
1543 if alt15 == 1:\r
1544 # C.g:235:4: struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}'\r
1545 self.following.append(self.FOLLOW_struct_or_union_in_struct_or_union_specifier494)\r
1546 self.struct_or_union()\r
1547 self.following.pop()\r
1548 if self.failed:\r
1549 return retval\r
1550 # C.g:235:20: ( IDENTIFIER )?\r
1551 alt14 = 2\r
1552 LA14_0 = self.input.LA(1)\r
1553\r
1554 if (LA14_0 == IDENTIFIER) :\r
1555 alt14 = 1\r
1556 if alt14 == 1:\r
1557 # C.g:0:0: IDENTIFIER\r
1558 self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_struct_or_union_specifier496)\r
1559 if self.failed:\r
1560 return retval\r
1561\r
1562\r
1563\r
1564 self.match(self.input, 43, self.FOLLOW_43_in_struct_or_union_specifier499)\r
1565 if self.failed:\r
1566 return retval\r
1567 self.following.append(self.FOLLOW_struct_declaration_list_in_struct_or_union_specifier501)\r
1568 self.struct_declaration_list()\r
1569 self.following.pop()\r
1570 if self.failed:\r
1571 return retval\r
1572 self.match(self.input, 44, self.FOLLOW_44_in_struct_or_union_specifier503)\r
1573 if self.failed:\r
1574 return retval\r
1575\r
1576\r
1577 elif alt15 == 2:\r
1578 # C.g:236:4: struct_or_union IDENTIFIER\r
1579 self.following.append(self.FOLLOW_struct_or_union_in_struct_or_union_specifier508)\r
1580 self.struct_or_union()\r
1581 self.following.pop()\r
1582 if self.failed:\r
1583 return retval\r
1584 self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_struct_or_union_specifier510)\r
1585 if self.failed:\r
1586 return retval\r
1587\r
1588\r
1589 retval.stop = self.input.LT(-1)\r
1590\r
1591\r
1592 except RecognitionException, re:\r
1593 self.reportError(re)\r
1594 self.recover(self.input, re)\r
1595 finally:\r
1596 if self.backtracking > 0:\r
1597 self.memoize(self.input, 11, struct_or_union_specifier_StartIndex)\r
1598\r
1599 pass\r
1600\r
1601 return retval\r
1602\r
1603 # $ANTLR end struct_or_union_specifier\r
1604\r
1605\r
1606 # $ANTLR start struct_or_union\r
1607 # C.g:239:1: struct_or_union : ( 'struct' | 'union' );\r
1608 def struct_or_union(self, ):\r
1609\r
1610 struct_or_union_StartIndex = self.input.index()\r
1611 try:\r
1612 try:\r
1613 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 12):\r
1614 return \r
1615\r
1616 # C.g:240:2: ( 'struct' | 'union' )\r
1617 # C.g:\r
1618 if (45 <= self.input.LA(1) <= 46):\r
1619 self.input.consume();\r
1620 self.errorRecovery = False\r
1621 self.failed = False\r
1622\r
1623 else:\r
1624 if self.backtracking > 0:\r
1625 self.failed = True\r
1626 return \r
1627\r
1628 mse = MismatchedSetException(None, self.input)\r
1629 self.recoverFromMismatchedSet(\r
1630 self.input, mse, self.FOLLOW_set_in_struct_or_union0\r
1631 )\r
1632 raise mse\r
1633\r
1634\r
1635\r
1636\r
1637\r
1638\r
1639 except RecognitionException, re:\r
1640 self.reportError(re)\r
1641 self.recover(self.input, re)\r
1642 finally:\r
1643 if self.backtracking > 0:\r
1644 self.memoize(self.input, 12, struct_or_union_StartIndex)\r
1645\r
1646 pass\r
1647\r
1648 return \r
1649\r
1650 # $ANTLR end struct_or_union\r
1651\r
1652\r
1653 # $ANTLR start struct_declaration_list\r
1654 # C.g:244:1: struct_declaration_list : ( struct_declaration )+ ;\r
1655 def struct_declaration_list(self, ):\r
1656\r
1657 struct_declaration_list_StartIndex = self.input.index()\r
1658 try:\r
1659 try:\r
1660 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 13):\r
1661 return \r
1662\r
1663 # C.g:245:2: ( ( struct_declaration )+ )\r
1664 # C.g:245:4: ( struct_declaration )+\r
1665 # C.g:245:4: ( struct_declaration )+\r
1666 cnt16 = 0\r
1667 while True: #loop16\r
1668 alt16 = 2\r
1669 LA16_0 = self.input.LA(1)\r
1670\r
1671 if (LA16_0 == IDENTIFIER or (34 <= LA16_0 <= 42) or (45 <= LA16_0 <= 46) or (48 <= LA16_0 <= 61)) :\r
1672 alt16 = 1\r
1673\r
1674\r
1675 if alt16 == 1:\r
1676 # C.g:0:0: struct_declaration\r
1677 self.following.append(self.FOLLOW_struct_declaration_in_struct_declaration_list537)\r
1678 self.struct_declaration()\r
1679 self.following.pop()\r
1680 if self.failed:\r
1681 return \r
1682\r
1683\r
1684 else:\r
1685 if cnt16 >= 1:\r
1686 break #loop16\r
1687\r
1688 if self.backtracking > 0:\r
1689 self.failed = True\r
1690 return \r
1691\r
1692 eee = EarlyExitException(16, self.input)\r
1693 raise eee\r
1694\r
1695 cnt16 += 1\r
1696\r
1697\r
1698\r
1699\r
1700\r
1701\r
1702 except RecognitionException, re:\r
1703 self.reportError(re)\r
1704 self.recover(self.input, re)\r
1705 finally:\r
1706 if self.backtracking > 0:\r
1707 self.memoize(self.input, 13, struct_declaration_list_StartIndex)\r
1708\r
1709 pass\r
1710\r
1711 return \r
1712\r
1713 # $ANTLR end struct_declaration_list\r
1714\r
1715\r
1716 # $ANTLR start struct_declaration\r
1717 # C.g:248:1: struct_declaration : specifier_qualifier_list struct_declarator_list ';' ;\r
1718 def struct_declaration(self, ):\r
1719\r
1720 struct_declaration_StartIndex = self.input.index()\r
1721 try:\r
1722 try:\r
1723 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 14):\r
1724 return \r
1725\r
1726 # C.g:249:2: ( specifier_qualifier_list struct_declarator_list ';' )\r
1727 # C.g:249:4: specifier_qualifier_list struct_declarator_list ';'\r
1728 self.following.append(self.FOLLOW_specifier_qualifier_list_in_struct_declaration549)\r
1729 self.specifier_qualifier_list()\r
1730 self.following.pop()\r
1731 if self.failed:\r
1732 return \r
1733 self.following.append(self.FOLLOW_struct_declarator_list_in_struct_declaration551)\r
1734 self.struct_declarator_list()\r
1735 self.following.pop()\r
1736 if self.failed:\r
1737 return \r
1738 self.match(self.input, 25, self.FOLLOW_25_in_struct_declaration553)\r
1739 if self.failed:\r
1740 return \r
1741\r
1742\r
1743\r
1744\r
1745 except RecognitionException, re:\r
1746 self.reportError(re)\r
1747 self.recover(self.input, re)\r
1748 finally:\r
1749 if self.backtracking > 0:\r
1750 self.memoize(self.input, 14, struct_declaration_StartIndex)\r
1751\r
1752 pass\r
1753\r
1754 return \r
1755\r
1756 # $ANTLR end struct_declaration\r
1757\r
1758\r
1759 # $ANTLR start specifier_qualifier_list\r
1760 # C.g:252:1: specifier_qualifier_list : ( type_qualifier | type_specifier )+ ;\r
1761 def specifier_qualifier_list(self, ):\r
1762\r
1763 specifier_qualifier_list_StartIndex = self.input.index()\r
1764 try:\r
1765 try:\r
1766 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 15):\r
1767 return \r
1768\r
1769 # C.g:253:2: ( ( type_qualifier | type_specifier )+ )\r
1770 # C.g:253:4: ( type_qualifier | type_specifier )+\r
1771 # C.g:253:4: ( type_qualifier | type_specifier )+\r
1772 cnt17 = 0\r
1773 while True: #loop17\r
1774 alt17 = 3\r
1775 LA17 = self.input.LA(1)\r
1776 if LA17 == 58:\r
1777 LA17_2 = self.input.LA(2)\r
1778\r
1779 if (self.synpred39()) :\r
1780 alt17 = 1\r
1781\r
1782\r
1783 elif LA17 == 59:\r
1784 LA17_3 = self.input.LA(2)\r
1785\r
1786 if (self.synpred39()) :\r
1787 alt17 = 1\r
1788\r
1789\r
1790 elif LA17 == 60:\r
1791 LA17_4 = self.input.LA(2)\r
1792\r
1793 if (self.synpred39()) :\r
1794 alt17 = 1\r
1795\r
1796\r
1797 elif LA17 == IDENTIFIER:\r
1798 LA17 = self.input.LA(2)\r
1799 if LA17 == EOF or LA17 == IDENTIFIER or LA17 == 34 or LA17 == 35 or LA17 == 36 or LA17 == 37 or LA17 == 38 or LA17 == 39 or LA17 == 40 or LA17 == 41 or LA17 == 42 or LA17 == 45 or LA17 == 46 or LA17 == 48 or LA17 == 49 or LA17 == 50 or LA17 == 51 or LA17 == 52 or LA17 == 53 or LA17 == 54 or LA17 == 55 or LA17 == 56 or LA17 == 57 or LA17 == 58 or LA17 == 59 or LA17 == 60 or LA17 == 61 or LA17 == 63 or LA17 == 66:\r
1800 alt17 = 2\r
1801 elif LA17 == 62:\r
1802 LA17_94 = self.input.LA(3)\r
1803\r
1804 if (self.synpred40()) :\r
1805 alt17 = 2\r
1806\r
1807\r
1808 elif LA17 == 47:\r
1809 LA17_95 = self.input.LA(3)\r
1810\r
1811 if (self.synpred40()) :\r
1812 alt17 = 2\r
1813\r
1814\r
1815 elif LA17 == 64:\r
1816 LA17_96 = self.input.LA(3)\r
1817\r
1818 if (self.synpred40()) :\r
1819 alt17 = 2\r
1820\r
1821\r
1822\r
1823 elif LA17 == 49 or LA17 == 50 or LA17 == 51 or LA17 == 52 or LA17 == 53 or LA17 == 54 or LA17 == 55 or LA17 == 56 or LA17 == 57 or LA17 == 61:\r
1824 alt17 = 1\r
1825 elif LA17 == 34 or LA17 == 35 or LA17 == 36 or LA17 == 37 or LA17 == 38 or LA17 == 39 or LA17 == 40 or LA17 == 41 or LA17 == 42 or LA17 == 45 or LA17 == 46 or LA17 == 48:\r
1826 alt17 = 2\r
1827\r
1828 if alt17 == 1:\r
1829 # C.g:253:6: type_qualifier\r
1830 self.following.append(self.FOLLOW_type_qualifier_in_specifier_qualifier_list566)\r
1831 self.type_qualifier()\r
1832 self.following.pop()\r
1833 if self.failed:\r
1834 return \r
1835\r
1836\r
1837 elif alt17 == 2:\r
1838 # C.g:253:23: type_specifier\r
1839 self.following.append(self.FOLLOW_type_specifier_in_specifier_qualifier_list570)\r
1840 self.type_specifier()\r
1841 self.following.pop()\r
1842 if self.failed:\r
1843 return \r
1844\r
1845\r
1846 else:\r
1847 if cnt17 >= 1:\r
1848 break #loop17\r
1849\r
1850 if self.backtracking > 0:\r
1851 self.failed = True\r
1852 return \r
1853\r
1854 eee = EarlyExitException(17, self.input)\r
1855 raise eee\r
1856\r
1857 cnt17 += 1\r
1858\r
1859\r
1860\r
1861\r
1862\r
1863\r
1864 except RecognitionException, re:\r
1865 self.reportError(re)\r
1866 self.recover(self.input, re)\r
1867 finally:\r
1868 if self.backtracking > 0:\r
1869 self.memoize(self.input, 15, specifier_qualifier_list_StartIndex)\r
1870\r
1871 pass\r
1872\r
1873 return \r
1874\r
1875 # $ANTLR end specifier_qualifier_list\r
1876\r
1877\r
1878 # $ANTLR start struct_declarator_list\r
1879 # C.g:256:1: struct_declarator_list : struct_declarator ( ',' struct_declarator )* ;\r
1880 def struct_declarator_list(self, ):\r
1881\r
1882 struct_declarator_list_StartIndex = self.input.index()\r
1883 try:\r
1884 try:\r
1885 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 16):\r
1886 return \r
1887\r
1888 # C.g:257:2: ( struct_declarator ( ',' struct_declarator )* )\r
1889 # C.g:257:4: struct_declarator ( ',' struct_declarator )*\r
1890 self.following.append(self.FOLLOW_struct_declarator_in_struct_declarator_list584)\r
1891 self.struct_declarator()\r
1892 self.following.pop()\r
1893 if self.failed:\r
1894 return \r
1895 # C.g:257:22: ( ',' struct_declarator )*\r
1896 while True: #loop18\r
1897 alt18 = 2\r
1898 LA18_0 = self.input.LA(1)\r
1899\r
1900 if (LA18_0 == 27) :\r
1901 alt18 = 1\r
1902\r
1903\r
1904 if alt18 == 1:\r
1905 # C.g:257:23: ',' struct_declarator\r
1906 self.match(self.input, 27, self.FOLLOW_27_in_struct_declarator_list587)\r
1907 if self.failed:\r
1908 return \r
1909 self.following.append(self.FOLLOW_struct_declarator_in_struct_declarator_list589)\r
1910 self.struct_declarator()\r
1911 self.following.pop()\r
1912 if self.failed:\r
1913 return \r
1914\r
1915\r
1916 else:\r
1917 break #loop18\r
1918\r
1919\r
1920\r
1921\r
1922\r
1923\r
1924 except RecognitionException, re:\r
1925 self.reportError(re)\r
1926 self.recover(self.input, re)\r
1927 finally:\r
1928 if self.backtracking > 0:\r
1929 self.memoize(self.input, 16, struct_declarator_list_StartIndex)\r
1930\r
1931 pass\r
1932\r
1933 return \r
1934\r
1935 # $ANTLR end struct_declarator_list\r
1936\r
1937\r
1938 # $ANTLR start struct_declarator\r
1939 # C.g:260:1: struct_declarator : ( declarator ( ':' constant_expression )? | ':' constant_expression );\r
1940 def struct_declarator(self, ):\r
1941\r
1942 struct_declarator_StartIndex = self.input.index()\r
1943 try:\r
1944 try:\r
1945 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 17):\r
1946 return \r
1947\r
1948 # C.g:261:2: ( declarator ( ':' constant_expression )? | ':' constant_expression )\r
1949 alt20 = 2\r
1950 LA20_0 = self.input.LA(1)\r
1951\r
1952 if (LA20_0 == IDENTIFIER or (58 <= LA20_0 <= 60) or LA20_0 == 62 or LA20_0 == 66) :\r
1953 alt20 = 1\r
1954 elif (LA20_0 == 47) :\r
1955 alt20 = 2\r
1956 else:\r
1957 if self.backtracking > 0:\r
1958 self.failed = True\r
1959 return \r
1960\r
1961 nvae = NoViableAltException("260:1: struct_declarator : ( declarator ( ':' constant_expression )? | ':' constant_expression );", 20, 0, self.input)\r
1962\r
1963 raise nvae\r
1964\r
1965 if alt20 == 1:\r
1966 # C.g:261:4: declarator ( ':' constant_expression )?\r
1967 self.following.append(self.FOLLOW_declarator_in_struct_declarator602)\r
1968 self.declarator()\r
1969 self.following.pop()\r
1970 if self.failed:\r
1971 return \r
1972 # C.g:261:15: ( ':' constant_expression )?\r
1973 alt19 = 2\r
1974 LA19_0 = self.input.LA(1)\r
1975\r
1976 if (LA19_0 == 47) :\r
1977 alt19 = 1\r
1978 if alt19 == 1:\r
1979 # C.g:261:16: ':' constant_expression\r
1980 self.match(self.input, 47, self.FOLLOW_47_in_struct_declarator605)\r
1981 if self.failed:\r
1982 return \r
1983 self.following.append(self.FOLLOW_constant_expression_in_struct_declarator607)\r
1984 self.constant_expression()\r
1985 self.following.pop()\r
1986 if self.failed:\r
1987 return \r
1988\r
1989\r
1990\r
1991\r
1992\r
1993 elif alt20 == 2:\r
1994 # C.g:262:4: ':' constant_expression\r
1995 self.match(self.input, 47, self.FOLLOW_47_in_struct_declarator614)\r
1996 if self.failed:\r
1997 return \r
1998 self.following.append(self.FOLLOW_constant_expression_in_struct_declarator616)\r
1999 self.constant_expression()\r
2000 self.following.pop()\r
2001 if self.failed:\r
2002 return \r
2003\r
2004\r
2005\r
2006 except RecognitionException, re:\r
2007 self.reportError(re)\r
2008 self.recover(self.input, re)\r
2009 finally:\r
2010 if self.backtracking > 0:\r
2011 self.memoize(self.input, 17, struct_declarator_StartIndex)\r
2012\r
2013 pass\r
2014\r
2015 return \r
2016\r
2017 # $ANTLR end struct_declarator\r
2018\r
2019 class enum_specifier_return(object):\r
2020 def __init__(self):\r
2021 self.start = None\r
2022 self.stop = None\r
2023\r
2024\r
2025\r
2026 # $ANTLR start enum_specifier\r
2027 # C.g:265:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER );\r
2028 def enum_specifier(self, ):\r
2029\r
2030 retval = self.enum_specifier_return()\r
2031 retval.start = self.input.LT(1)\r
2032 enum_specifier_StartIndex = self.input.index()\r
2033 try:\r
2034 try:\r
2035 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 18):\r
2036 return retval\r
2037\r
2038 # C.g:267:2: ( 'enum' '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER )\r
2039 alt23 = 3\r
2040 LA23_0 = self.input.LA(1)\r
2041\r
2042 if (LA23_0 == 48) :\r
2043 LA23_1 = self.input.LA(2)\r
2044\r
2045 if (LA23_1 == IDENTIFIER) :\r
2046 LA23_2 = self.input.LA(3)\r
2047\r
2048 if (LA23_2 == 43) :\r
2049 alt23 = 2\r
2050 elif (LA23_2 == EOF or LA23_2 == IDENTIFIER or LA23_2 == 25 or LA23_2 == 27 or (29 <= LA23_2 <= 42) or (45 <= LA23_2 <= 64) or LA23_2 == 66) :\r
2051 alt23 = 3\r
2052 else:\r
2053 if self.backtracking > 0:\r
2054 self.failed = True\r
2055 return retval\r
2056\r
2057 nvae = NoViableAltException("265:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER );", 23, 2, self.input)\r
2058\r
2059 raise nvae\r
2060\r
2061 elif (LA23_1 == 43) :\r
2062 alt23 = 1\r
2063 else:\r
2064 if self.backtracking > 0:\r
2065 self.failed = True\r
2066 return retval\r
2067\r
2068 nvae = NoViableAltException("265:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER );", 23, 1, self.input)\r
2069\r
2070 raise nvae\r
2071\r
2072 else:\r
2073 if self.backtracking > 0:\r
2074 self.failed = True\r
2075 return retval\r
2076\r
2077 nvae = NoViableAltException("265:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER );", 23, 0, self.input)\r
2078\r
2079 raise nvae\r
2080\r
2081 if alt23 == 1:\r
2082 # C.g:267:4: 'enum' '{' enumerator_list ( ',' )? '}'\r
2083 self.match(self.input, 48, self.FOLLOW_48_in_enum_specifier634)\r
2084 if self.failed:\r
2085 return retval\r
2086 self.match(self.input, 43, self.FOLLOW_43_in_enum_specifier636)\r
2087 if self.failed:\r
2088 return retval\r
2089 self.following.append(self.FOLLOW_enumerator_list_in_enum_specifier638)\r
2090 self.enumerator_list()\r
2091 self.following.pop()\r
2092 if self.failed:\r
2093 return retval\r
2094 # C.g:267:31: ( ',' )?\r
2095 alt21 = 2\r
2096 LA21_0 = self.input.LA(1)\r
2097\r
2098 if (LA21_0 == 27) :\r
2099 alt21 = 1\r
2100 if alt21 == 1:\r
2101 # C.g:0:0: ','\r
2102 self.match(self.input, 27, self.FOLLOW_27_in_enum_specifier640)\r
2103 if self.failed:\r
2104 return retval\r
2105\r
2106\r
2107\r
2108 self.match(self.input, 44, self.FOLLOW_44_in_enum_specifier643)\r
2109 if self.failed:\r
2110 return retval\r
2111\r
2112\r
2113 elif alt23 == 2:\r
2114 # C.g:268:4: 'enum' IDENTIFIER '{' enumerator_list ( ',' )? '}'\r
2115 self.match(self.input, 48, self.FOLLOW_48_in_enum_specifier648)\r
2116 if self.failed:\r
2117 return retval\r
2118 self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_enum_specifier650)\r
2119 if self.failed:\r
2120 return retval\r
2121 self.match(self.input, 43, self.FOLLOW_43_in_enum_specifier652)\r
2122 if self.failed:\r
2123 return retval\r
2124 self.following.append(self.FOLLOW_enumerator_list_in_enum_specifier654)\r
2125 self.enumerator_list()\r
2126 self.following.pop()\r
2127 if self.failed:\r
2128 return retval\r
2129 # C.g:268:42: ( ',' )?\r
2130 alt22 = 2\r
2131 LA22_0 = self.input.LA(1)\r
2132\r
2133 if (LA22_0 == 27) :\r
2134 alt22 = 1\r
2135 if alt22 == 1:\r
2136 # C.g:0:0: ','\r
2137 self.match(self.input, 27, self.FOLLOW_27_in_enum_specifier656)\r
2138 if self.failed:\r
2139 return retval\r
2140\r
2141\r
2142\r
2143 self.match(self.input, 44, self.FOLLOW_44_in_enum_specifier659)\r
2144 if self.failed:\r
2145 return retval\r
2146\r
2147\r
2148 elif alt23 == 3:\r
2149 # C.g:269:4: 'enum' IDENTIFIER\r
2150 self.match(self.input, 48, self.FOLLOW_48_in_enum_specifier664)\r
2151 if self.failed:\r
2152 return retval\r
2153 self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_enum_specifier666)\r
2154 if self.failed:\r
2155 return retval\r
2156\r
2157\r
2158 retval.stop = self.input.LT(-1)\r
2159\r
2160\r
2161 except RecognitionException, re:\r
2162 self.reportError(re)\r
2163 self.recover(self.input, re)\r
2164 finally:\r
2165 if self.backtracking > 0:\r
2166 self.memoize(self.input, 18, enum_specifier_StartIndex)\r
2167\r
2168 pass\r
2169\r
2170 return retval\r
2171\r
2172 # $ANTLR end enum_specifier\r
2173\r
2174\r
2175 # $ANTLR start enumerator_list\r
2176 # C.g:272:1: enumerator_list : enumerator ( ',' enumerator )* ;\r
2177 def enumerator_list(self, ):\r
2178\r
2179 enumerator_list_StartIndex = self.input.index()\r
2180 try:\r
2181 try:\r
2182 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 19):\r
2183 return \r
2184\r
2185 # C.g:273:2: ( enumerator ( ',' enumerator )* )\r
2186 # C.g:273:4: enumerator ( ',' enumerator )*\r
2187 self.following.append(self.FOLLOW_enumerator_in_enumerator_list677)\r
2188 self.enumerator()\r
2189 self.following.pop()\r
2190 if self.failed:\r
2191 return \r
2192 # C.g:273:15: ( ',' enumerator )*\r
2193 while True: #loop24\r
2194 alt24 = 2\r
2195 LA24_0 = self.input.LA(1)\r
2196\r
2197 if (LA24_0 == 27) :\r
2198 LA24_1 = self.input.LA(2)\r
2199\r
2200 if (LA24_1 == IDENTIFIER) :\r
2201 alt24 = 1\r
2202\r
2203\r
2204\r
2205\r
2206 if alt24 == 1:\r
2207 # C.g:273:16: ',' enumerator\r
2208 self.match(self.input, 27, self.FOLLOW_27_in_enumerator_list680)\r
2209 if self.failed:\r
2210 return \r
2211 self.following.append(self.FOLLOW_enumerator_in_enumerator_list682)\r
2212 self.enumerator()\r
2213 self.following.pop()\r
2214 if self.failed:\r
2215 return \r
2216\r
2217\r
2218 else:\r
2219 break #loop24\r
2220\r
2221\r
2222\r
2223\r
2224\r
2225\r
2226 except RecognitionException, re:\r
2227 self.reportError(re)\r
2228 self.recover(self.input, re)\r
2229 finally:\r
2230 if self.backtracking > 0:\r
2231 self.memoize(self.input, 19, enumerator_list_StartIndex)\r
2232\r
2233 pass\r
2234\r
2235 return \r
2236\r
2237 # $ANTLR end enumerator_list\r
2238\r
2239\r
2240 # $ANTLR start enumerator\r
2241 # C.g:276:1: enumerator : IDENTIFIER ( '=' constant_expression )? ;\r
2242 def enumerator(self, ):\r
2243\r
2244 enumerator_StartIndex = self.input.index()\r
2245 try:\r
2246 try:\r
2247 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 20):\r
2248 return \r
2249\r
2250 # C.g:277:2: ( IDENTIFIER ( '=' constant_expression )? )\r
2251 # C.g:277:4: IDENTIFIER ( '=' constant_expression )?\r
2252 self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_enumerator695)\r
2253 if self.failed:\r
2254 return \r
2255 # C.g:277:15: ( '=' constant_expression )?\r
2256 alt25 = 2\r
2257 LA25_0 = self.input.LA(1)\r
2258\r
2259 if (LA25_0 == 28) :\r
2260 alt25 = 1\r
2261 if alt25 == 1:\r
2262 # C.g:277:16: '=' constant_expression\r
2263 self.match(self.input, 28, self.FOLLOW_28_in_enumerator698)\r
2264 if self.failed:\r
2265 return \r
2266 self.following.append(self.FOLLOW_constant_expression_in_enumerator700)\r
2267 self.constant_expression()\r
2268 self.following.pop()\r
2269 if self.failed:\r
2270 return \r
2271\r
2272\r
2273\r
2274\r
2275\r
2276\r
2277\r
2278 except RecognitionException, re:\r
2279 self.reportError(re)\r
2280 self.recover(self.input, re)\r
2281 finally:\r
2282 if self.backtracking > 0:\r
2283 self.memoize(self.input, 20, enumerator_StartIndex)\r
2284\r
2285 pass\r
2286\r
2287 return \r
2288\r
2289 # $ANTLR end enumerator\r
2290\r
2291\r
2292 # $ANTLR start type_qualifier\r
2293 # C.g:280:1: type_qualifier : ( 'const' | 'volatile' | 'IN' | 'OUT' | 'OPTIONAL' | 'CONST' | 'UNALIGNED' | 'VOLATILE' | 'GLOBAL_REMOVE_IF_UNREFERENCED' | 'EFIAPI' | 'EFI_BOOTSERVICE' | 'EFI_RUNTIMESERVICE' | 'PACKED' );\r
2294 def type_qualifier(self, ):\r
2295\r
2296 type_qualifier_StartIndex = self.input.index()\r
2297 try:\r
2298 try:\r
2299 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 21):\r
2300 return \r
2301\r
2302 # C.g:281:2: ( 'const' | 'volatile' | 'IN' | 'OUT' | 'OPTIONAL' | 'CONST' | 'UNALIGNED' | 'VOLATILE' | 'GLOBAL_REMOVE_IF_UNREFERENCED' | 'EFIAPI' | 'EFI_BOOTSERVICE' | 'EFI_RUNTIMESERVICE' | 'PACKED' )\r
2303 # C.g:\r
2304 if (49 <= self.input.LA(1) <= 61):\r
2305 self.input.consume();\r
2306 self.errorRecovery = False\r
2307 self.failed = False\r
2308\r
2309 else:\r
2310 if self.backtracking > 0:\r
2311 self.failed = True\r
2312 return \r
2313\r
2314 mse = MismatchedSetException(None, self.input)\r
2315 self.recoverFromMismatchedSet(\r
2316 self.input, mse, self.FOLLOW_set_in_type_qualifier0\r
2317 )\r
2318 raise mse\r
2319\r
2320\r
2321\r
2322\r
2323\r
2324\r
2325 except RecognitionException, re:\r
2326 self.reportError(re)\r
2327 self.recover(self.input, re)\r
2328 finally:\r
2329 if self.backtracking > 0:\r
2330 self.memoize(self.input, 21, type_qualifier_StartIndex)\r
2331\r
2332 pass\r
2333\r
2334 return \r
2335\r
2336 # $ANTLR end type_qualifier\r
2337\r
2338 class declarator_return(object):\r
2339 def __init__(self):\r
2340 self.start = None\r
2341 self.stop = None\r
2342\r
2343\r
2344\r
2345 # $ANTLR start declarator\r
2346 # C.g:296:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | pointer );\r
2347 def declarator(self, ):\r
2348\r
2349 retval = self.declarator_return()\r
2350 retval.start = self.input.LT(1)\r
2351 declarator_StartIndex = self.input.index()\r
2352 try:\r
2353 try:\r
2354 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 22):\r
2355 return retval\r
2356\r
2357 # C.g:297:2: ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | pointer )\r
2358 alt30 = 2\r
2359 LA30_0 = self.input.LA(1)\r
2360\r
2361 if (LA30_0 == 66) :\r
2362 LA30_1 = self.input.LA(2)\r
2363\r
2364 if (self.synpred66()) :\r
2365 alt30 = 1\r
2366 elif (True) :\r
2367 alt30 = 2\r
2368 else:\r
2369 if self.backtracking > 0:\r
2370 self.failed = True\r
2371 return retval\r
2372\r
2373 nvae = NoViableAltException("296:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | pointer );", 30, 1, self.input)\r
2374\r
2375 raise nvae\r
2376\r
2377 elif (LA30_0 == IDENTIFIER or (58 <= LA30_0 <= 60) or LA30_0 == 62) :\r
2378 alt30 = 1\r
2379 else:\r
2380 if self.backtracking > 0:\r
2381 self.failed = True\r
2382 return retval\r
2383\r
2384 nvae = NoViableAltException("296:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | pointer );", 30, 0, self.input)\r
2385\r
2386 raise nvae\r
2387\r
2388 if alt30 == 1:\r
2389 # C.g:297:4: ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator\r
2390 # C.g:297:4: ( pointer )?\r
2391 alt26 = 2\r
2392 LA26_0 = self.input.LA(1)\r
2393\r
2394 if (LA26_0 == 66) :\r
2395 alt26 = 1\r
2396 if alt26 == 1:\r
2397 # C.g:0:0: pointer\r
2398 self.following.append(self.FOLLOW_pointer_in_declarator784)\r
2399 self.pointer()\r
2400 self.following.pop()\r
2401 if self.failed:\r
2402 return retval\r
2403\r
2404\r
2405\r
2406 # C.g:297:13: ( 'EFIAPI' )?\r
2407 alt27 = 2\r
2408 LA27_0 = self.input.LA(1)\r
2409\r
2410 if (LA27_0 == 58) :\r
2411 alt27 = 1\r
2412 if alt27 == 1:\r
2413 # C.g:297:14: 'EFIAPI'\r
2414 self.match(self.input, 58, self.FOLLOW_58_in_declarator788)\r
2415 if self.failed:\r
2416 return retval\r
2417\r
2418\r
2419\r
2420 # C.g:297:25: ( 'EFI_BOOTSERVICE' )?\r
2421 alt28 = 2\r
2422 LA28_0 = self.input.LA(1)\r
2423\r
2424 if (LA28_0 == 59) :\r
2425 alt28 = 1\r
2426 if alt28 == 1:\r
2427 # C.g:297:26: 'EFI_BOOTSERVICE'\r
2428 self.match(self.input, 59, self.FOLLOW_59_in_declarator793)\r
2429 if self.failed:\r
2430 return retval\r
2431\r
2432\r
2433\r
2434 # C.g:297:46: ( 'EFI_RUNTIMESERVICE' )?\r
2435 alt29 = 2\r
2436 LA29_0 = self.input.LA(1)\r
2437\r
2438 if (LA29_0 == 60) :\r
2439 alt29 = 1\r
2440 if alt29 == 1:\r
2441 # C.g:297:47: 'EFI_RUNTIMESERVICE'\r
2442 self.match(self.input, 60, self.FOLLOW_60_in_declarator798)\r
2443 if self.failed:\r
2444 return retval\r
2445\r
2446\r
2447\r
2448 self.following.append(self.FOLLOW_direct_declarator_in_declarator802)\r
2449 self.direct_declarator()\r
2450 self.following.pop()\r
2451 if self.failed:\r
2452 return retval\r
2453\r
2454\r
2455 elif alt30 == 2:\r
2456 # C.g:299:4: pointer\r
2457 self.following.append(self.FOLLOW_pointer_in_declarator808)\r
2458 self.pointer()\r
2459 self.following.pop()\r
2460 if self.failed:\r
2461 return retval\r
2462\r
2463\r
2464 retval.stop = self.input.LT(-1)\r
2465\r
2466\r
2467 except RecognitionException, re:\r
2468 self.reportError(re)\r
2469 self.recover(self.input, re)\r
2470 finally:\r
2471 if self.backtracking > 0:\r
2472 self.memoize(self.input, 22, declarator_StartIndex)\r
2473\r
2474 pass\r
2475\r
2476 return retval\r
2477\r
2478 # $ANTLR end declarator\r
2479\r
2480\r
2481 # $ANTLR start direct_declarator\r
2482 # C.g:302:1: direct_declarator : ( IDENTIFIER ( declarator_suffix )* | '(' ( 'EFIAPI' )? declarator ')' ( declarator_suffix )+ );\r
2483 def direct_declarator(self, ):\r
2484\r
2485 direct_declarator_StartIndex = self.input.index()\r
2486 try:\r
2487 try:\r
2488 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 23):\r
2489 return \r
2490\r
2491 # C.g:303:2: ( IDENTIFIER ( declarator_suffix )* | '(' ( 'EFIAPI' )? declarator ')' ( declarator_suffix )+ )\r
2492 alt34 = 2\r
2493 LA34_0 = self.input.LA(1)\r
2494\r
2495 if (LA34_0 == IDENTIFIER) :\r
2496 alt34 = 1\r
2497 elif (LA34_0 == 62) :\r
2498 alt34 = 2\r
2499 else:\r
2500 if self.backtracking > 0:\r
2501 self.failed = True\r
2502 return \r
2503\r
2504 nvae = NoViableAltException("302:1: direct_declarator : ( IDENTIFIER ( declarator_suffix )* | '(' ( 'EFIAPI' )? declarator ')' ( declarator_suffix )+ );", 34, 0, self.input)\r
2505\r
2506 raise nvae\r
2507\r
2508 if alt34 == 1:\r
2509 # C.g:303:4: IDENTIFIER ( declarator_suffix )*\r
2510 self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_direct_declarator819)\r
2511 if self.failed:\r
2512 return \r
2513 # C.g:303:15: ( declarator_suffix )*\r
2514 while True: #loop31\r
2515 alt31 = 2\r
2516 LA31_0 = self.input.LA(1)\r
2517\r
2518 if (LA31_0 == 62) :\r
2519 LA31 = self.input.LA(2)\r
2520 if LA31 == 63:\r
2521 LA31_30 = self.input.LA(3)\r
2522\r
2523 if (self.synpred67()) :\r
2524 alt31 = 1\r
2525\r
2526\r
2527 elif LA31 == 58:\r
2528 LA31_31 = self.input.LA(3)\r
2529\r
2530 if (self.synpred67()) :\r
2531 alt31 = 1\r
2532\r
2533\r
2534 elif LA31 == 66:\r
2535 LA31_32 = self.input.LA(3)\r
2536\r
2537 if (self.synpred67()) :\r
2538 alt31 = 1\r
2539\r
2540\r
2541 elif LA31 == 59:\r
2542 LA31_33 = self.input.LA(3)\r
2543\r
2544 if (self.synpred67()) :\r
2545 alt31 = 1\r
2546\r
2547\r
2548 elif LA31 == 60:\r
2549 LA31_34 = self.input.LA(3)\r
2550\r
2551 if (self.synpred67()) :\r
2552 alt31 = 1\r
2553\r
2554\r
2555 elif LA31 == IDENTIFIER:\r
2556 LA31_35 = self.input.LA(3)\r
2557\r
2558 if (self.synpred67()) :\r
2559 alt31 = 1\r
2560\r
2561\r
2562 elif LA31 == 29 or LA31 == 30 or LA31 == 31 or LA31 == 32 or LA31 == 33:\r
2563 LA31_37 = self.input.LA(3)\r
2564\r
2565 if (self.synpred67()) :\r
2566 alt31 = 1\r
2567\r
2568\r
2569 elif LA31 == 34:\r
2570 LA31_38 = self.input.LA(3)\r
2571\r
2572 if (self.synpred67()) :\r
2573 alt31 = 1\r
2574\r
2575\r
2576 elif LA31 == 35:\r
2577 LA31_39 = self.input.LA(3)\r
2578\r
2579 if (self.synpred67()) :\r
2580 alt31 = 1\r
2581\r
2582\r
2583 elif LA31 == 36:\r
2584 LA31_40 = self.input.LA(3)\r
2585\r
2586 if (self.synpred67()) :\r
2587 alt31 = 1\r
2588\r
2589\r
2590 elif LA31 == 37:\r
2591 LA31_41 = self.input.LA(3)\r
2592\r
2593 if (self.synpred67()) :\r
2594 alt31 = 1\r
2595\r
2596\r
2597 elif LA31 == 38:\r
2598 LA31_42 = self.input.LA(3)\r
2599\r
2600 if (self.synpred67()) :\r
2601 alt31 = 1\r
2602\r
2603\r
2604 elif LA31 == 39:\r
2605 LA31_43 = self.input.LA(3)\r
2606\r
2607 if (self.synpred67()) :\r
2608 alt31 = 1\r
2609\r
2610\r
2611 elif LA31 == 40:\r
2612 LA31_44 = self.input.LA(3)\r
2613\r
2614 if (self.synpred67()) :\r
2615 alt31 = 1\r
2616\r
2617\r
2618 elif LA31 == 41:\r
2619 LA31_45 = self.input.LA(3)\r
2620\r
2621 if (self.synpred67()) :\r
2622 alt31 = 1\r
2623\r
2624\r
2625 elif LA31 == 42:\r
2626 LA31_46 = self.input.LA(3)\r
2627\r
2628 if (self.synpred67()) :\r
2629 alt31 = 1\r
2630\r
2631\r
2632 elif LA31 == 45 or LA31 == 46:\r
2633 LA31_47 = self.input.LA(3)\r
2634\r
2635 if (self.synpred67()) :\r
2636 alt31 = 1\r
2637\r
2638\r
2639 elif LA31 == 48:\r
2640 LA31_48 = self.input.LA(3)\r
2641\r
2642 if (self.synpred67()) :\r
2643 alt31 = 1\r
2644\r
2645\r
2646 elif LA31 == 49 or LA31 == 50 or LA31 == 51 or LA31 == 52 or LA31 == 53 or LA31 == 54 or LA31 == 55 or LA31 == 56 or LA31 == 57 or LA31 == 61:\r
2647 LA31_49 = self.input.LA(3)\r
2648\r
2649 if (self.synpred67()) :\r
2650 alt31 = 1\r
2651\r
2652\r
2653\r
2654 elif (LA31_0 == 64) :\r
2655 LA31 = self.input.LA(2)\r
2656 if LA31 == 65:\r
2657 LA31_51 = self.input.LA(3)\r
2658\r
2659 if (self.synpred67()) :\r
2660 alt31 = 1\r
2661\r
2662\r
2663 elif LA31 == 62:\r
2664 LA31_52 = self.input.LA(3)\r
2665\r
2666 if (self.synpred67()) :\r
2667 alt31 = 1\r
2668\r
2669\r
2670 elif LA31 == IDENTIFIER:\r
2671 LA31_53 = self.input.LA(3)\r
2672\r
2673 if (self.synpred67()) :\r
2674 alt31 = 1\r
2675\r
2676\r
2677 elif LA31 == HEX_LITERAL:\r
2678 LA31_54 = self.input.LA(3)\r
2679\r
2680 if (self.synpred67()) :\r
2681 alt31 = 1\r
2682\r
2683\r
2684 elif LA31 == OCTAL_LITERAL:\r
2685 LA31_55 = self.input.LA(3)\r
2686\r
2687 if (self.synpred67()) :\r
2688 alt31 = 1\r
2689\r
2690\r
2691 elif LA31 == DECIMAL_LITERAL:\r
2692 LA31_56 = self.input.LA(3)\r
2693\r
2694 if (self.synpred67()) :\r
2695 alt31 = 1\r
2696\r
2697\r
2698 elif LA31 == CHARACTER_LITERAL:\r
2699 LA31_57 = self.input.LA(3)\r
2700\r
2701 if (self.synpred67()) :\r
2702 alt31 = 1\r
2703\r
2704\r
2705 elif LA31 == STRING_LITERAL:\r
2706 LA31_58 = self.input.LA(3)\r
2707\r
2708 if (self.synpred67()) :\r
2709 alt31 = 1\r
2710\r
2711\r
2712 elif LA31 == FLOATING_POINT_LITERAL:\r
2713 LA31_59 = self.input.LA(3)\r
2714\r
2715 if (self.synpred67()) :\r
2716 alt31 = 1\r
2717\r
2718\r
2719 elif LA31 == 72:\r
2720 LA31_60 = self.input.LA(3)\r
2721\r
2722 if (self.synpred67()) :\r
2723 alt31 = 1\r
2724\r
2725\r
2726 elif LA31 == 73:\r
2727 LA31_61 = self.input.LA(3)\r
2728\r
2729 if (self.synpred67()) :\r
2730 alt31 = 1\r
2731\r
2732\r
2733 elif LA31 == 66 or LA31 == 68 or LA31 == 69 or LA31 == 77 or LA31 == 78 or LA31 == 79:\r
2734 LA31_62 = self.input.LA(3)\r
2735\r
2736 if (self.synpred67()) :\r
2737 alt31 = 1\r
2738\r
2739\r
2740 elif LA31 == 74:\r
2741 LA31_63 = self.input.LA(3)\r
2742\r
2743 if (self.synpred67()) :\r
2744 alt31 = 1\r
2745\r
2746\r
2747\r
2748\r
2749\r
2750 if alt31 == 1:\r
2751 # C.g:0:0: declarator_suffix\r
2752 self.following.append(self.FOLLOW_declarator_suffix_in_direct_declarator821)\r
2753 self.declarator_suffix()\r
2754 self.following.pop()\r
2755 if self.failed:\r
2756 return \r
2757\r
2758\r
2759 else:\r
2760 break #loop31\r
2761\r
2762\r
2763\r
2764\r
2765 elif alt34 == 2:\r
2766 # C.g:304:4: '(' ( 'EFIAPI' )? declarator ')' ( declarator_suffix )+\r
2767 self.match(self.input, 62, self.FOLLOW_62_in_direct_declarator827)\r
2768 if self.failed:\r
2769 return \r
2770 # C.g:304:8: ( 'EFIAPI' )?\r
2771 alt32 = 2\r
2772 LA32_0 = self.input.LA(1)\r
2773\r
2774 if (LA32_0 == 58) :\r
2775 LA32_1 = self.input.LA(2)\r
2776\r
2777 if (self.synpred69()) :\r
2778 alt32 = 1\r
2779 if alt32 == 1:\r
2780 # C.g:304:9: 'EFIAPI'\r
2781 self.match(self.input, 58, self.FOLLOW_58_in_direct_declarator830)\r
2782 if self.failed:\r
2783 return \r
2784\r
2785\r
2786\r
2787 self.following.append(self.FOLLOW_declarator_in_direct_declarator834)\r
2788 self.declarator()\r
2789 self.following.pop()\r
2790 if self.failed:\r
2791 return \r
2792 self.match(self.input, 63, self.FOLLOW_63_in_direct_declarator836)\r
2793 if self.failed:\r
2794 return \r
2795 # C.g:304:35: ( declarator_suffix )+\r
2796 cnt33 = 0\r
2797 while True: #loop33\r
2798 alt33 = 2\r
2799 LA33_0 = self.input.LA(1)\r
2800\r
2801 if (LA33_0 == 62) :\r
2802 LA33 = self.input.LA(2)\r
2803 if LA33 == 63:\r
2804 LA33_30 = self.input.LA(3)\r
2805\r
2806 if (self.synpred70()) :\r
2807 alt33 = 1\r
2808\r
2809\r
2810 elif LA33 == 58:\r
2811 LA33_31 = self.input.LA(3)\r
2812\r
2813 if (self.synpred70()) :\r
2814 alt33 = 1\r
2815\r
2816\r
2817 elif LA33 == 66:\r
2818 LA33_32 = self.input.LA(3)\r
2819\r
2820 if (self.synpred70()) :\r
2821 alt33 = 1\r
2822\r
2823\r
2824 elif LA33 == 59:\r
2825 LA33_33 = self.input.LA(3)\r
2826\r
2827 if (self.synpred70()) :\r
2828 alt33 = 1\r
2829\r
2830\r
2831 elif LA33 == 60:\r
2832 LA33_34 = self.input.LA(3)\r
2833\r
2834 if (self.synpred70()) :\r
2835 alt33 = 1\r
2836\r
2837\r
2838 elif LA33 == IDENTIFIER:\r
2839 LA33_35 = self.input.LA(3)\r
2840\r
2841 if (self.synpred70()) :\r
2842 alt33 = 1\r
2843\r
2844\r
2845 elif LA33 == 29 or LA33 == 30 or LA33 == 31 or LA33 == 32 or LA33 == 33:\r
2846 LA33_37 = self.input.LA(3)\r
2847\r
2848 if (self.synpred70()) :\r
2849 alt33 = 1\r
2850\r
2851\r
2852 elif LA33 == 34:\r
2853 LA33_38 = self.input.LA(3)\r
2854\r
2855 if (self.synpred70()) :\r
2856 alt33 = 1\r
2857\r
2858\r
2859 elif LA33 == 35:\r
2860 LA33_39 = self.input.LA(3)\r
2861\r
2862 if (self.synpred70()) :\r
2863 alt33 = 1\r
2864\r
2865\r
2866 elif LA33 == 36:\r
2867 LA33_40 = self.input.LA(3)\r
2868\r
2869 if (self.synpred70()) :\r
2870 alt33 = 1\r
2871\r
2872\r
2873 elif LA33 == 37:\r
2874 LA33_41 = self.input.LA(3)\r
2875\r
2876 if (self.synpred70()) :\r
2877 alt33 = 1\r
2878\r
2879\r
2880 elif LA33 == 38:\r
2881 LA33_42 = self.input.LA(3)\r
2882\r
2883 if (self.synpred70()) :\r
2884 alt33 = 1\r
2885\r
2886\r
2887 elif LA33 == 39:\r
2888 LA33_43 = self.input.LA(3)\r
2889\r
2890 if (self.synpred70()) :\r
2891 alt33 = 1\r
2892\r
2893\r
2894 elif LA33 == 40:\r
2895 LA33_44 = self.input.LA(3)\r
2896\r
2897 if (self.synpred70()) :\r
2898 alt33 = 1\r
2899\r
2900\r
2901 elif LA33 == 41:\r
2902 LA33_45 = self.input.LA(3)\r
2903\r
2904 if (self.synpred70()) :\r
2905 alt33 = 1\r
2906\r
2907\r
2908 elif LA33 == 42:\r
2909 LA33_46 = self.input.LA(3)\r
2910\r
2911 if (self.synpred70()) :\r
2912 alt33 = 1\r
2913\r
2914\r
2915 elif LA33 == 45 or LA33 == 46:\r
2916 LA33_47 = self.input.LA(3)\r
2917\r
2918 if (self.synpred70()) :\r
2919 alt33 = 1\r
2920\r
2921\r
2922 elif LA33 == 48:\r
2923 LA33_48 = self.input.LA(3)\r
2924\r
2925 if (self.synpred70()) :\r
2926 alt33 = 1\r
2927\r
2928\r
2929 elif LA33 == 49 or LA33 == 50 or LA33 == 51 or LA33 == 52 or LA33 == 53 or LA33 == 54 or LA33 == 55 or LA33 == 56 or LA33 == 57 or LA33 == 61:\r
2930 LA33_49 = self.input.LA(3)\r
2931\r
2932 if (self.synpred70()) :\r
2933 alt33 = 1\r
2934\r
2935\r
2936\r
2937 elif (LA33_0 == 64) :\r
2938 LA33 = self.input.LA(2)\r
2939 if LA33 == 65:\r
2940 LA33_51 = self.input.LA(3)\r
2941\r
2942 if (self.synpred70()) :\r
2943 alt33 = 1\r
2944\r
2945\r
2946 elif LA33 == 62:\r
2947 LA33_52 = self.input.LA(3)\r
2948\r
2949 if (self.synpred70()) :\r
2950 alt33 = 1\r
2951\r
2952\r
2953 elif LA33 == IDENTIFIER:\r
2954 LA33_53 = self.input.LA(3)\r
2955\r
2956 if (self.synpred70()) :\r
2957 alt33 = 1\r
2958\r
2959\r
2960 elif LA33 == HEX_LITERAL:\r
2961 LA33_54 = self.input.LA(3)\r
2962\r
2963 if (self.synpred70()) :\r
2964 alt33 = 1\r
2965\r
2966\r
2967 elif LA33 == OCTAL_LITERAL:\r
2968 LA33_55 = self.input.LA(3)\r
2969\r
2970 if (self.synpred70()) :\r
2971 alt33 = 1\r
2972\r
2973\r
2974 elif LA33 == DECIMAL_LITERAL:\r
2975 LA33_56 = self.input.LA(3)\r
2976\r
2977 if (self.synpred70()) :\r
2978 alt33 = 1\r
2979\r
2980\r
2981 elif LA33 == CHARACTER_LITERAL:\r
2982 LA33_57 = self.input.LA(3)\r
2983\r
2984 if (self.synpred70()) :\r
2985 alt33 = 1\r
2986\r
2987\r
2988 elif LA33 == STRING_LITERAL:\r
2989 LA33_58 = self.input.LA(3)\r
2990\r
2991 if (self.synpred70()) :\r
2992 alt33 = 1\r
2993\r
2994\r
2995 elif LA33 == FLOATING_POINT_LITERAL:\r
2996 LA33_59 = self.input.LA(3)\r
2997\r
2998 if (self.synpred70()) :\r
2999 alt33 = 1\r
3000\r
3001\r
3002 elif LA33 == 72:\r
3003 LA33_60 = self.input.LA(3)\r
3004\r
3005 if (self.synpred70()) :\r
3006 alt33 = 1\r
3007\r
3008\r
3009 elif LA33 == 73:\r
3010 LA33_61 = self.input.LA(3)\r
3011\r
3012 if (self.synpred70()) :\r
3013 alt33 = 1\r
3014\r
3015\r
3016 elif LA33 == 66 or LA33 == 68 or LA33 == 69 or LA33 == 77 or LA33 == 78 or LA33 == 79:\r
3017 LA33_62 = self.input.LA(3)\r
3018\r
3019 if (self.synpred70()) :\r
3020 alt33 = 1\r
3021\r
3022\r
3023 elif LA33 == 74:\r
3024 LA33_63 = self.input.LA(3)\r
3025\r
3026 if (self.synpred70()) :\r
3027 alt33 = 1\r
3028\r
3029\r
3030\r
3031\r
3032\r
3033 if alt33 == 1:\r
3034 # C.g:0:0: declarator_suffix\r
3035 self.following.append(self.FOLLOW_declarator_suffix_in_direct_declarator838)\r
3036 self.declarator_suffix()\r
3037 self.following.pop()\r
3038 if self.failed:\r
3039 return \r
3040\r
3041\r
3042 else:\r
3043 if cnt33 >= 1:\r
3044 break #loop33\r
3045\r
3046 if self.backtracking > 0:\r
3047 self.failed = True\r
3048 return \r
3049\r
3050 eee = EarlyExitException(33, self.input)\r
3051 raise eee\r
3052\r
3053 cnt33 += 1\r
3054\r
3055\r
3056\r
3057\r
3058\r
3059 except RecognitionException, re:\r
3060 self.reportError(re)\r
3061 self.recover(self.input, re)\r
3062 finally:\r
3063 if self.backtracking > 0:\r
3064 self.memoize(self.input, 23, direct_declarator_StartIndex)\r
3065\r
3066 pass\r
3067\r
3068 return \r
3069\r
3070 # $ANTLR end direct_declarator\r
3071\r
3072\r
3073 # $ANTLR start declarator_suffix\r
3074 # C.g:307:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );\r
3075 def declarator_suffix(self, ):\r
3076\r
3077 declarator_suffix_StartIndex = self.input.index()\r
3078 try:\r
3079 try:\r
3080 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 24):\r
3081 return \r
3082\r
3083 # C.g:308:2: ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' )\r
3084 alt35 = 5\r
3085 LA35_0 = self.input.LA(1)\r
3086\r
3087 if (LA35_0 == 64) :\r
3088 LA35_1 = self.input.LA(2)\r
3089\r
3090 if (LA35_1 == 65) :\r
3091 alt35 = 2\r
3092 elif ((IDENTIFIER <= LA35_1 <= FLOATING_POINT_LITERAL) or LA35_1 == 62 or LA35_1 == 66 or (68 <= LA35_1 <= 69) or (72 <= LA35_1 <= 74) or (77 <= LA35_1 <= 79)) :\r
3093 alt35 = 1\r
3094 else:\r
3095 if self.backtracking > 0:\r
3096 self.failed = True\r
3097 return \r
3098\r
3099 nvae = NoViableAltException("307:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 35, 1, self.input)\r
3100\r
3101 raise nvae\r
3102\r
3103 elif (LA35_0 == 62) :\r
3104 LA35 = self.input.LA(2)\r
3105 if LA35 == 63:\r
3106 alt35 = 5\r
3107 elif LA35 == 29 or LA35 == 30 or LA35 == 31 or LA35 == 32 or LA35 == 33 or LA35 == 34 or LA35 == 35 or LA35 == 36 or LA35 == 37 or LA35 == 38 or LA35 == 39 or LA35 == 40 or LA35 == 41 or LA35 == 42 or LA35 == 45 or LA35 == 46 or LA35 == 48 or LA35 == 49 or LA35 == 50 or LA35 == 51 or LA35 == 52 or LA35 == 53 or LA35 == 54 or LA35 == 55 or LA35 == 56 or LA35 == 57 or LA35 == 58 or LA35 == 59 or LA35 == 60 or LA35 == 61 or LA35 == 66:\r
3108 alt35 = 3\r
3109 elif LA35 == IDENTIFIER:\r
3110 LA35_29 = self.input.LA(3)\r
3111\r
3112 if (self.synpred73()) :\r
3113 alt35 = 3\r
3114 elif (self.synpred74()) :\r
3115 alt35 = 4\r
3116 else:\r
3117 if self.backtracking > 0:\r
3118 self.failed = True\r
3119 return \r
3120\r
3121 nvae = NoViableAltException("307:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 35, 29, self.input)\r
3122\r
3123 raise nvae\r
3124\r
3125 else:\r
3126 if self.backtracking > 0:\r
3127 self.failed = True\r
3128 return \r
3129\r
3130 nvae = NoViableAltException("307:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 35, 2, self.input)\r
3131\r
3132 raise nvae\r
3133\r
3134 else:\r
3135 if self.backtracking > 0:\r
3136 self.failed = True\r
3137 return \r
3138\r
3139 nvae = NoViableAltException("307:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 35, 0, self.input)\r
3140\r
3141 raise nvae\r
3142\r
3143 if alt35 == 1:\r
3144 # C.g:308:6: '[' constant_expression ']'\r
3145 self.match(self.input, 64, self.FOLLOW_64_in_declarator_suffix852)\r
3146 if self.failed:\r
3147 return \r
3148 self.following.append(self.FOLLOW_constant_expression_in_declarator_suffix854)\r
3149 self.constant_expression()\r
3150 self.following.pop()\r
3151 if self.failed:\r
3152 return \r
3153 self.match(self.input, 65, self.FOLLOW_65_in_declarator_suffix856)\r
3154 if self.failed:\r
3155 return \r
3156\r
3157\r
3158 elif alt35 == 2:\r
3159 # C.g:309:9: '[' ']'\r
3160 self.match(self.input, 64, self.FOLLOW_64_in_declarator_suffix866)\r
3161 if self.failed:\r
3162 return \r
3163 self.match(self.input, 65, self.FOLLOW_65_in_declarator_suffix868)\r
3164 if self.failed:\r
3165 return \r
3166\r
3167\r
3168 elif alt35 == 3:\r
3169 # C.g:310:9: '(' parameter_type_list ')'\r
3170 self.match(self.input, 62, self.FOLLOW_62_in_declarator_suffix878)\r
3171 if self.failed:\r
3172 return \r
3173 self.following.append(self.FOLLOW_parameter_type_list_in_declarator_suffix880)\r
3174 self.parameter_type_list()\r
3175 self.following.pop()\r
3176 if self.failed:\r
3177 return \r
3178 self.match(self.input, 63, self.FOLLOW_63_in_declarator_suffix882)\r
3179 if self.failed:\r
3180 return \r
3181\r
3182\r
3183 elif alt35 == 4:\r
3184 # C.g:311:9: '(' identifier_list ')'\r
3185 self.match(self.input, 62, self.FOLLOW_62_in_declarator_suffix892)\r
3186 if self.failed:\r
3187 return \r
3188 self.following.append(self.FOLLOW_identifier_list_in_declarator_suffix894)\r
3189 self.identifier_list()\r
3190 self.following.pop()\r
3191 if self.failed:\r
3192 return \r
3193 self.match(self.input, 63, self.FOLLOW_63_in_declarator_suffix896)\r
3194 if self.failed:\r
3195 return \r
3196\r
3197\r
3198 elif alt35 == 5:\r
3199 # C.g:312:9: '(' ')'\r
3200 self.match(self.input, 62, self.FOLLOW_62_in_declarator_suffix906)\r
3201 if self.failed:\r
3202 return \r
3203 self.match(self.input, 63, self.FOLLOW_63_in_declarator_suffix908)\r
3204 if self.failed:\r
3205 return \r
3206\r
3207\r
3208\r
3209 except RecognitionException, re:\r
3210 self.reportError(re)\r
3211 self.recover(self.input, re)\r
3212 finally:\r
3213 if self.backtracking > 0:\r
3214 self.memoize(self.input, 24, declarator_suffix_StartIndex)\r
3215\r
3216 pass\r
3217\r
3218 return \r
3219\r
3220 # $ANTLR end declarator_suffix\r
3221\r
3222\r
3223 # $ANTLR start pointer\r
3224 # C.g:315:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );\r
3225 def pointer(self, ):\r
3226\r
3227 pointer_StartIndex = self.input.index()\r
3228 try:\r
3229 try:\r
3230 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 25):\r
3231 return \r
3232\r
3233 # C.g:316:2: ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' )\r
3234 alt38 = 3\r
3235 LA38_0 = self.input.LA(1)\r
3236\r
3237 if (LA38_0 == 66) :\r
3238 LA38 = self.input.LA(2)\r
3239 if LA38 == 66:\r
3240 LA38_2 = self.input.LA(3)\r
3241\r
3242 if (self.synpred78()) :\r
3243 alt38 = 2\r
3244 elif (True) :\r
3245 alt38 = 3\r
3246 else:\r
3247 if self.backtracking > 0:\r
3248 self.failed = True\r
3249 return \r
3250\r
3251 nvae = NoViableAltException("315:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 38, 2, self.input)\r
3252\r
3253 raise nvae\r
3254\r
3255 elif LA38 == 58:\r
3256 LA38_3 = self.input.LA(3)\r
3257\r
3258 if (self.synpred77()) :\r
3259 alt38 = 1\r
3260 elif (True) :\r
3261 alt38 = 3\r
3262 else:\r
3263 if self.backtracking > 0:\r
3264 self.failed = True\r
3265 return \r
3266\r
3267 nvae = NoViableAltException("315:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 38, 3, self.input)\r
3268\r
3269 raise nvae\r
3270\r
3271 elif LA38 == 59:\r
3272 LA38_4 = self.input.LA(3)\r
3273\r
3274 if (self.synpred77()) :\r
3275 alt38 = 1\r
3276 elif (True) :\r
3277 alt38 = 3\r
3278 else:\r
3279 if self.backtracking > 0:\r
3280 self.failed = True\r
3281 return \r
3282\r
3283 nvae = NoViableAltException("315:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 38, 4, self.input)\r
3284\r
3285 raise nvae\r
3286\r
3287 elif LA38 == 60:\r
3288 LA38_5 = self.input.LA(3)\r
3289\r
3290 if (self.synpred77()) :\r
3291 alt38 = 1\r
3292 elif (True) :\r
3293 alt38 = 3\r
3294 else:\r
3295 if self.backtracking > 0:\r
3296 self.failed = True\r
3297 return \r
3298\r
3299 nvae = NoViableAltException("315:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 38, 5, self.input)\r
3300\r
3301 raise nvae\r
3302\r
3303 elif LA38 == EOF or LA38 == IDENTIFIER or LA38 == 25 or LA38 == 26 or LA38 == 27 or LA38 == 28 or LA38 == 29 or LA38 == 30 or LA38 == 31 or LA38 == 32 or LA38 == 33 or LA38 == 34 or LA38 == 35 or LA38 == 36 or LA38 == 37 or LA38 == 38 or LA38 == 39 or LA38 == 40 or LA38 == 41 or LA38 == 42 or LA38 == 43 or LA38 == 45 or LA38 == 46 or LA38 == 47 or LA38 == 48 or LA38 == 62 or LA38 == 63 or LA38 == 64:\r
3304 alt38 = 3\r
3305 elif LA38 == 53:\r
3306 LA38_21 = self.input.LA(3)\r
3307\r
3308 if (self.synpred77()) :\r
3309 alt38 = 1\r
3310 elif (True) :\r
3311 alt38 = 3\r
3312 else:\r
3313 if self.backtracking > 0:\r
3314 self.failed = True\r
3315 return \r
3316\r
3317 nvae = NoViableAltException("315:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 38, 21, self.input)\r
3318\r
3319 raise nvae\r
3320\r
3321 elif LA38 == 49 or LA38 == 50 or LA38 == 51 or LA38 == 52 or LA38 == 54 or LA38 == 55 or LA38 == 56 or LA38 == 57 or LA38 == 61:\r
3322 LA38_29 = self.input.LA(3)\r
3323\r
3324 if (self.synpred77()) :\r
3325 alt38 = 1\r
3326 elif (True) :\r
3327 alt38 = 3\r
3328 else:\r
3329 if self.backtracking > 0:\r
3330 self.failed = True\r
3331 return \r
3332\r
3333 nvae = NoViableAltException("315:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 38, 29, self.input)\r
3334\r
3335 raise nvae\r
3336\r
3337 else:\r
3338 if self.backtracking > 0:\r
3339 self.failed = True\r
3340 return \r
3341\r
3342 nvae = NoViableAltException("315:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 38, 1, self.input)\r
3343\r
3344 raise nvae\r
3345\r
3346 else:\r
3347 if self.backtracking > 0:\r
3348 self.failed = True\r
3349 return \r
3350\r
3351 nvae = NoViableAltException("315:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 38, 0, self.input)\r
3352\r
3353 raise nvae\r
3354\r
3355 if alt38 == 1:\r
3356 # C.g:316:4: '*' ( type_qualifier )+ ( pointer )?\r
3357 self.match(self.input, 66, self.FOLLOW_66_in_pointer919)\r
3358 if self.failed:\r
3359 return \r
3360 # C.g:316:8: ( type_qualifier )+\r
3361 cnt36 = 0\r
3362 while True: #loop36\r
3363 alt36 = 2\r
3364 LA36 = self.input.LA(1)\r
3365 if LA36 == 58:\r
3366 LA36_2 = self.input.LA(2)\r
3367\r
3368 if (self.synpred75()) :\r
3369 alt36 = 1\r
3370\r
3371\r
3372 elif LA36 == 59:\r
3373 LA36_3 = self.input.LA(2)\r
3374\r
3375 if (self.synpred75()) :\r
3376 alt36 = 1\r
3377\r
3378\r
3379 elif LA36 == 60:\r
3380 LA36_4 = self.input.LA(2)\r
3381\r
3382 if (self.synpred75()) :\r
3383 alt36 = 1\r
3384\r
3385\r
3386 elif LA36 == 53:\r
3387 LA36_20 = self.input.LA(2)\r
3388\r
3389 if (self.synpred75()) :\r
3390 alt36 = 1\r
3391\r
3392\r
3393 elif LA36 == 49 or LA36 == 50 or LA36 == 51 or LA36 == 52 or LA36 == 54 or LA36 == 55 or LA36 == 56 or LA36 == 57 or LA36 == 61:\r
3394 LA36_28 = self.input.LA(2)\r
3395\r
3396 if (self.synpred75()) :\r
3397 alt36 = 1\r
3398\r
3399\r
3400\r
3401 if alt36 == 1:\r
3402 # C.g:0:0: type_qualifier\r
3403 self.following.append(self.FOLLOW_type_qualifier_in_pointer921)\r
3404 self.type_qualifier()\r
3405 self.following.pop()\r
3406 if self.failed:\r
3407 return \r
3408\r
3409\r
3410 else:\r
3411 if cnt36 >= 1:\r
3412 break #loop36\r
3413\r
3414 if self.backtracking > 0:\r
3415 self.failed = True\r
3416 return \r
3417\r
3418 eee = EarlyExitException(36, self.input)\r
3419 raise eee\r
3420\r
3421 cnt36 += 1\r
3422\r
3423\r
3424 # C.g:316:24: ( pointer )?\r
3425 alt37 = 2\r
3426 LA37_0 = self.input.LA(1)\r
3427\r
3428 if (LA37_0 == 66) :\r
3429 LA37_1 = self.input.LA(2)\r
3430\r
3431 if (self.synpred76()) :\r
3432 alt37 = 1\r
3433 if alt37 == 1:\r
3434 # C.g:0:0: pointer\r
3435 self.following.append(self.FOLLOW_pointer_in_pointer924)\r
3436 self.pointer()\r
3437 self.following.pop()\r
3438 if self.failed:\r
3439 return \r
3440\r
3441\r
3442\r
3443\r
3444\r
3445 elif alt38 == 2:\r
3446 # C.g:317:4: '*' pointer\r
3447 self.match(self.input, 66, self.FOLLOW_66_in_pointer930)\r
3448 if self.failed:\r
3449 return \r
3450 self.following.append(self.FOLLOW_pointer_in_pointer932)\r
3451 self.pointer()\r
3452 self.following.pop()\r
3453 if self.failed:\r
3454 return \r
3455\r
3456\r
3457 elif alt38 == 3:\r
3458 # C.g:318:4: '*'\r
3459 self.match(self.input, 66, self.FOLLOW_66_in_pointer937)\r
3460 if self.failed:\r
3461 return \r
3462\r
3463\r
3464\r
3465 except RecognitionException, re:\r
3466 self.reportError(re)\r
3467 self.recover(self.input, re)\r
3468 finally:\r
3469 if self.backtracking > 0:\r
3470 self.memoize(self.input, 25, pointer_StartIndex)\r