Lines 1975-1981
Link Here
|
1975 |
super(scanner, log, mode, config.supportStatementsInExpressions(), |
1975 |
super(scanner, log, mode, config.supportStatementsInExpressions(), |
1976 |
config.supportTypeofUnaryExpressions(), config |
1976 |
config.supportTypeofUnaryExpressions(), config |
1977 |
.supportAlignOfUnaryExpression(), config.supportKnRC(), |
1977 |
.supportAlignOfUnaryExpression(), config.supportKnRC(), |
1978 |
config.supportGCCOtherBuiltinSymbols(), config.supportAttributeSpecifiers()); |
1978 |
config.supportGCCOtherBuiltinSymbols(), config.supportAttributeSpecifiers(), |
|
|
1979 |
config.supportDeclspecSpecifiers()); |
1979 |
allowCPPRestrict = config.allowRestrictPointerOperators(); |
1980 |
allowCPPRestrict = config.allowRestrictPointerOperators(); |
1980 |
supportExtendedTemplateSyntax = config.supportExtendedTemplateSyntax(); |
1981 |
supportExtendedTemplateSyntax = config.supportExtendedTemplateSyntax(); |
1981 |
supportMinAndMaxOperators = config.supportMinAndMaxOperators(); |
1982 |
supportMinAndMaxOperators = config.supportMinAndMaxOperators(); |
Lines 3473-3478
Link Here
|
3473 |
else |
3474 |
else |
3474 |
throwBacktrack(LA(1).getOffset(), LA(1).getLength()); |
3475 |
throwBacktrack(LA(1).getOffset(), LA(1).getLength()); |
3475 |
break; |
3476 |
break; |
|
|
3477 |
case IGCCToken.t__declspec: // if __declspec appears before identifier |
3478 |
if (duple == null && supportDeclspecSpecifiers) |
3479 |
__declspec(); |
3480 |
else |
3481 |
throwBacktrack(LA(1).getOffset(), LA(1).getLength()); |
3482 |
break; |
3483 |
|
3476 |
default: |
3484 |
default: |
3477 |
if (supportTypeOfUnaries && LT(1) == IGCCToken.t_typeof) { |
3485 |
if (supportTypeOfUnaries && LT(1) == IGCCToken.t_typeof) { |
3478 |
typeofExpression = unaryTypeofExpression(); |
3486 |
typeofExpression = unaryTypeofExpression(); |
Lines 3854-3859
Link Here
|
3854 |
// if __attribute__ is after the pointer ops and before the declarator ex: void * __attribute__((__cdecl__)) foo(); |
3862 |
// if __attribute__ is after the pointer ops and before the declarator ex: void * __attribute__((__cdecl__)) foo(); |
3855 |
if (LT(1) == IGCCToken.t__attribute__ && supportAttributeSpecifiers) // if __attribute__ is after the parameters |
3863 |
if (LT(1) == IGCCToken.t__attribute__ && supportAttributeSpecifiers) // if __attribute__ is after the parameters |
3856 |
__attribute__(); |
3864 |
__attribute__(); |
|
|
3865 |
if (LT(1) == IGCCToken.t__declspec && supportDeclspecSpecifiers) // if __declspec occurs after struct/union/class and before the identifier |
3866 |
__declspec(); |
3857 |
|
3867 |
|
3858 |
if (!pointerOps.isEmpty()) |
3868 |
if (!pointerOps.isEmpty()) |
3859 |
finalOffset = calculateEndOffset((IASTNode) pointerOps |
3869 |
finalOffset = calculateEndOffset((IASTNode) pointerOps |
Lines 4281-4287
Link Here
|
4281 |
|
4291 |
|
4282 |
if (LT(1) == IGCCToken.t__attribute__ && supportAttributeSpecifiers) // if __attribute__ occurs after struct/union/class and before the identifier |
4292 |
if (LT(1) == IGCCToken.t__attribute__ && supportAttributeSpecifiers) // if __attribute__ occurs after struct/union/class and before the identifier |
4283 |
__attribute__(); |
4293 |
__attribute__(); |
4284 |
|
4294 |
if (LT(1) == IGCCToken.t__declspec && supportDeclspecSpecifiers) // if __declspec occurs after struct/union/class and before the identifier |
|
|
4295 |
__declspec(); |
4296 |
|
4285 |
// class name |
4297 |
// class name |
4286 |
if (LT(1) == IToken.tIDENTIFIER) |
4298 |
if (LT(1) == IToken.tIDENTIFIER) |
4287 |
name = createName(name()); |
4299 |
name = createName(name()); |
Lines 4290-4295
Link Here
|
4290 |
|
4302 |
|
4291 |
if (LT(1) == IGCCToken.t__attribute__ && supportAttributeSpecifiers) // if __attribute__ occurs after struct/union/class identifier and before the { or ; |
4303 |
if (LT(1) == IGCCToken.t__attribute__ && supportAttributeSpecifiers) // if __attribute__ occurs after struct/union/class identifier and before the { or ; |
4292 |
__attribute__(); |
4304 |
__attribute__(); |
|
|
4305 |
if (LT(1) == IGCCToken.t__declspec && supportDeclspecSpecifiers) // if __declspec occurs after struct/union/class and before the identifier |
4306 |
__declspec(); |
4293 |
|
4307 |
|
4294 |
if (LT(1) != IToken.tCOLON && LT(1) != IToken.tLBRACE) { |
4308 |
if (LT(1) != IToken.tCOLON && LT(1) != IToken.tLBRACE) { |
4295 |
IToken errorPoint = LA(1); |
4309 |
IToken errorPoint = LA(1); |