in BaseTools/Source/Python/Ecc/CParser3/CParser.py [0:0]
def direct_declarator(self, ):
direct_declarator_StartIndex = self.input.index()
try:
try:
if self.backtracking > 0 and self.alreadyParsedRule(self.input, 23):
return
# C.g:303:2: ( IDENTIFIER ( declarator_suffix )* | '(' ( 'EFIAPI' )? declarator ')' ( declarator_suffix )+ )
alt34 = 2
LA34_0 = self.input.LA(1)
if (LA34_0 == IDENTIFIER) :
alt34 = 1
elif (LA34_0 == 62) :
alt34 = 2
else:
if self.backtracking > 0:
self.failed = True
return
nvae = NoViableAltException("302:1: direct_declarator : ( IDENTIFIER ( declarator_suffix )* | '(' ( 'EFIAPI' )? declarator ')' ( declarator_suffix )+ );", 34, 0, self.input)
raise nvae
if alt34 == 1:
# C.g:303:4: IDENTIFIER ( declarator_suffix )*
self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_direct_declarator819)
if self.failed:
return
# C.g:303:15: ( declarator_suffix )*
while True: #loop31
alt31 = 2
LA31_0 = self.input.LA(1)
if (LA31_0 == 62) :
LA31 = self.input.LA(2)
if LA31 == 63:
LA31_30 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif LA31 == 58:
LA31_31 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif LA31 == 66:
LA31_32 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif LA31 == 59:
LA31_33 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif LA31 == 60:
LA31_34 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif LA31 == IDENTIFIER:
LA31_35 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif LA31 == 29 or LA31 == 30 or LA31 == 31 or LA31 == 32 or LA31 == 33:
LA31_37 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif LA31 == 34:
LA31_38 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif LA31 == 35:
LA31_39 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif LA31 == 36:
LA31_40 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif LA31 == 37:
LA31_41 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif LA31 == 38:
LA31_42 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif LA31 == 39:
LA31_43 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif LA31 == 40:
LA31_44 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif LA31 == 41:
LA31_45 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif LA31 == 42:
LA31_46 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif LA31 == 45 or LA31 == 46:
LA31_47 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif LA31 == 48:
LA31_48 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
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:
LA31_49 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif (LA31_0 == 64) :
LA31 = self.input.LA(2)
if LA31 == 65:
LA31_51 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif LA31 == 62:
LA31_52 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif LA31 == IDENTIFIER:
LA31_53 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif LA31 == HEX_LITERAL:
LA31_54 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif LA31 == OCTAL_LITERAL:
LA31_55 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif LA31 == DECIMAL_LITERAL:
LA31_56 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif LA31 == CHARACTER_LITERAL:
LA31_57 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif LA31 == STRING_LITERAL:
LA31_58 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif LA31 == FLOATING_POINT_LITERAL:
LA31_59 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif LA31 == 72:
LA31_60 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif LA31 == 73:
LA31_61 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif LA31 == 66 or LA31 == 68 or LA31 == 69 or LA31 == 77 or LA31 == 78 or LA31 == 79:
LA31_62 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
elif LA31 == 74:
LA31_63 = self.input.LA(3)
if (self.synpred67()) :
alt31 = 1
if alt31 == 1:
# C.g:0:0: declarator_suffix
self.following.append(self.FOLLOW_declarator_suffix_in_direct_declarator821)
self.declarator_suffix()
self.following.pop()
if self.failed:
return
else:
break #loop31
elif alt34 == 2:
# C.g:304:4: '(' ( 'EFIAPI' )? declarator ')' ( declarator_suffix )+
self.match(self.input, 62, self.FOLLOW_62_in_direct_declarator827)
if self.failed:
return
# C.g:304:8: ( 'EFIAPI' )?
alt32 = 2
LA32_0 = self.input.LA(1)
if (LA32_0 == 58) :
LA32_1 = self.input.LA(2)
if (self.synpred69()) :
alt32 = 1
if alt32 == 1:
# C.g:304:9: 'EFIAPI'
self.match(self.input, 58, self.FOLLOW_58_in_direct_declarator830)
if self.failed:
return
self.following.append(self.FOLLOW_declarator_in_direct_declarator834)
self.declarator()
self.following.pop()
if self.failed:
return
self.match(self.input, 63, self.FOLLOW_63_in_direct_declarator836)
if self.failed:
return
# C.g:304:35: ( declarator_suffix )+
cnt33 = 0
while True: #loop33
alt33 = 2
LA33_0 = self.input.LA(1)
if (LA33_0 == 62) :
LA33 = self.input.LA(2)
if LA33 == 63:
LA33_30 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif LA33 == 58:
LA33_31 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif LA33 == 66:
LA33_32 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif LA33 == 59:
LA33_33 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif LA33 == 60:
LA33_34 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif LA33 == IDENTIFIER:
LA33_35 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif LA33 == 29 or LA33 == 30 or LA33 == 31 or LA33 == 32 or LA33 == 33:
LA33_37 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif LA33 == 34:
LA33_38 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif LA33 == 35:
LA33_39 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif LA33 == 36:
LA33_40 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif LA33 == 37:
LA33_41 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif LA33 == 38:
LA33_42 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif LA33 == 39:
LA33_43 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif LA33 == 40:
LA33_44 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif LA33 == 41:
LA33_45 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif LA33 == 42:
LA33_46 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif LA33 == 45 or LA33 == 46:
LA33_47 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif LA33 == 48:
LA33_48 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
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:
LA33_49 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif (LA33_0 == 64) :
LA33 = self.input.LA(2)
if LA33 == 65:
LA33_51 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif LA33 == 62:
LA33_52 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif LA33 == IDENTIFIER:
LA33_53 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif LA33 == HEX_LITERAL:
LA33_54 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif LA33 == OCTAL_LITERAL:
LA33_55 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif LA33 == DECIMAL_LITERAL:
LA33_56 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif LA33 == CHARACTER_LITERAL:
LA33_57 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif LA33 == STRING_LITERAL:
LA33_58 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif LA33 == FLOATING_POINT_LITERAL:
LA33_59 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif LA33 == 72:
LA33_60 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif LA33 == 73:
LA33_61 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif LA33 == 66 or LA33 == 68 or LA33 == 69 or LA33 == 77 or LA33 == 78 or LA33 == 79:
LA33_62 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
elif LA33 == 74:
LA33_63 = self.input.LA(3)
if (self.synpred70()) :
alt33 = 1
if alt33 == 1:
# C.g:0:0: declarator_suffix
self.following.append(self.FOLLOW_declarator_suffix_in_direct_declarator838)
self.declarator_suffix()
self.following.pop()
if self.failed:
return
else:
if cnt33 >= 1:
break #loop33
if self.backtracking > 0:
self.failed = True
return
eee = EarlyExitException(33, self.input)
raise eee
cnt33 += 1
except RecognitionException as re:
self.reportError(re)
self.recover(self.input, re)
finally:
if self.backtracking > 0:
self.memoize(self.input, 23, direct_declarator_StartIndex)
pass
return