mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
fixed problem with typeof and attributes after pointers
This commit is contained in:
parent
18122f05d4
commit
b1f0b681d3
15 changed files with 6497 additions and 6385 deletions
|
@ -796,13 +796,13 @@ array_modifier_type_qualifiers
|
|||
|
||||
|
||||
pointer_seq
|
||||
::= pointer_hook '*'
|
||||
::= pointer_hook '*' pointer_hook
|
||||
/. $Build consumePointer(); $EndBuild ./
|
||||
| pointer_seq pointer_hook '*'
|
||||
| pointer_seq pointer_hook '*' pointer_hook
|
||||
/. $Build consumePointer(); $EndBuild ./
|
||||
| pointer_hook '*' <openscope-ast> type_qualifier_list
|
||||
| pointer_hook '*' pointer_hook <openscope-ast> type_qualifier_list
|
||||
/. $Build consumePointerTypeQualifierList(); $EndBuild ./
|
||||
| pointer_seq pointer_hook '*' <openscope-ast> type_qualifier_list
|
||||
| pointer_seq pointer_hook '*' pointer_hook <openscope-ast> type_qualifier_list
|
||||
/. $Build consumePointerTypeQualifierList(); $EndBuild ./
|
||||
|
||||
pointer_hook
|
||||
|
|
|
@ -1126,11 +1126,11 @@ array_modifier
|
|||
|
||||
|
||||
ptr_operator
|
||||
::= pointer_hook '*' <openscope-ast> cv_qualifier_seq_opt
|
||||
::= pointer_hook '*' pointer_hook <openscope-ast> cv_qualifier_seq_opt
|
||||
/. $Build consumePointer(); $EndBuild ./
|
||||
| pointer_hook '&'
|
||||
| pointer_hook '&' pointer_hook
|
||||
/. $Build consumeReferenceOperator(); $EndBuild ./
|
||||
| dcolon_opt nested_name_specifier pointer_hook '*' <openscope-ast> cv_qualifier_seq_opt
|
||||
| dcolon_opt nested_name_specifier pointer_hook '*' pointer_hook <openscope-ast> cv_qualifier_seq_opt
|
||||
/. $Build consumePointerToMember(); $EndBuild ./
|
||||
|
||||
pointer_hook
|
||||
|
|
|
@ -179,7 +179,9 @@ case_range_expression
|
|||
|
||||
typeof_type_specifier
|
||||
::= 'typeof' unary_expression
|
||||
|
||||
/. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof); $EndBuild ./
|
||||
| 'typeof' '(' type_id ')'
|
||||
/. $Build consumeExpressionTypeId(IASTTypeIdExpression.op_typeof); $EndBuild ./
|
||||
|
||||
typeof_declaration_specifiers
|
||||
::= typeof_type_specifier
|
||||
|
|
|
@ -46,7 +46,6 @@ import org.eclipse.cdt.internal.core.pdom.dom.IPDOMLinkageFactory;
|
|||
import org.eclipse.cdt.internal.core.pdom.dom.c.PDOMCLinkageFactory;
|
||||
import org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPLinkageFactory;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.Status;
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
@ -10,9 +10,7 @@
|
|||
*******************************************************************************/
|
||||
package org.eclipse.cdt.core.dom.lrparser.action;
|
||||
|
||||
import static org.eclipse.cdt.core.dom.lrparser.action.ParserUtil.endOffset;
|
||||
import static org.eclipse.cdt.core.dom.lrparser.action.ParserUtil.length;
|
||||
import static org.eclipse.cdt.core.dom.lrparser.action.ParserUtil.offset;
|
||||
import static org.eclipse.cdt.core.dom.lrparser.action.ParserUtil.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
|
@ -1028,25 +1028,25 @@ private GCCBuildASTParserAction gnuAction;
|
|||
}
|
||||
|
||||
//
|
||||
// Rule 249: pointer_seq ::= pointer_hook *
|
||||
// Rule 249: pointer_seq ::= pointer_hook * pointer_hook
|
||||
//
|
||||
case 249: { action. consumePointer(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 250: pointer_seq ::= pointer_seq pointer_hook *
|
||||
// Rule 250: pointer_seq ::= pointer_seq pointer_hook * pointer_hook
|
||||
//
|
||||
case 250: { action. consumePointer(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 251: pointer_seq ::= pointer_hook * <openscope-ast> type_qualifier_list
|
||||
// Rule 251: pointer_seq ::= pointer_hook * pointer_hook <openscope-ast> type_qualifier_list
|
||||
//
|
||||
case 251: { action. consumePointerTypeQualifierList(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 252: pointer_seq ::= pointer_seq pointer_hook * <openscope-ast> type_qualifier_list
|
||||
// Rule 252: pointer_seq ::= pointer_seq pointer_hook * pointer_hook <openscope-ast> type_qualifier_list
|
||||
//
|
||||
case 252: { action. consumePointerTypeQualifierList(); break;
|
||||
}
|
||||
|
@ -1338,29 +1338,41 @@ private GCCBuildASTParserAction gnuAction;
|
|||
//
|
||||
case 359: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 360: typeof_type_specifier ::= typeof unary_expression
|
||||
//
|
||||
case 360: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 361: typeof_type_specifier ::= typeof ( type_id )
|
||||
//
|
||||
case 361: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_typeof); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 364: declaration_specifiers ::= <openscope-ast> typeof_declaration_specifiers
|
||||
// Rule 365: declaration_specifiers ::= <openscope-ast> typeof_declaration_specifiers
|
||||
//
|
||||
case 364: { gnuAction.consumeDeclarationSpecifiersTypeof(); break;
|
||||
case 365: { gnuAction.consumeDeclarationSpecifiersTypeof(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 380: field_name_designator ::= identifier_token :
|
||||
// Rule 381: field_name_designator ::= identifier_token :
|
||||
//
|
||||
case 380: { gnuAction.consumeDesignatorField(); break;
|
||||
case 381: { gnuAction.consumeDesignatorField(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 381: array_range_designator ::= [ constant_expression ... constant_expression ]
|
||||
// Rule 382: array_range_designator ::= [ constant_expression ... constant_expression ]
|
||||
//
|
||||
case 381: { gnuAction.consumeDesignatorArray(); break;
|
||||
case 382: { gnuAction.consumeDesignatorArray(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 382: designated_initializer ::= <openscope-ast> field_name_designator initializer
|
||||
// Rule 383: designated_initializer ::= <openscope-ast> field_name_designator initializer
|
||||
//
|
||||
case 382: { action. consumeInitializerDesignated(); break;
|
||||
case 383: { action. consumeInitializerDesignated(); break;
|
||||
}
|
||||
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -48,7 +48,7 @@ public interface GCCParsersym {
|
|||
TK_unsigned = 56,
|
||||
TK_void = 57,
|
||||
TK_volatile = 25,
|
||||
TK_while = 35,
|
||||
TK_while = 37,
|
||||
TK__Bool = 58,
|
||||
TK__Complex = 59,
|
||||
TK__Imaginary = 60,
|
||||
|
@ -60,7 +60,7 @@ public interface GCCParsersym {
|
|||
TK_Completion = 5,
|
||||
TK_EndOfCompletion = 3,
|
||||
TK_Invalid = 100,
|
||||
TK_LeftBracket = 36,
|
||||
TK_LeftBracket = 35,
|
||||
TK_LeftParen = 1,
|
||||
TK_LeftBrace = 10,
|
||||
TK_Dot = 70,
|
||||
|
@ -103,7 +103,7 @@ public interface GCCParsersym {
|
|||
TK_OrAssign = 97,
|
||||
TK_Comma = 48,
|
||||
TK_RightBracket = 77,
|
||||
TK_RightParen = 37,
|
||||
TK_RightParen = 36,
|
||||
TK_RightBrace = 65,
|
||||
TK_SemiColon = 26,
|
||||
TK_typeof = 9,
|
||||
|
@ -152,9 +152,9 @@ public interface GCCParsersym {
|
|||
"register",
|
||||
"typedef",
|
||||
"ERROR_TOKEN",
|
||||
"while",
|
||||
"LeftBracket",
|
||||
"RightParen",
|
||||
"while",
|
||||
"break",
|
||||
"case",
|
||||
"continue",
|
||||
|
|
|
@ -1022,25 +1022,25 @@ private GCCBuildASTParserAction gnuAction;
|
|||
}
|
||||
|
||||
//
|
||||
// Rule 248: pointer_seq ::= pointer_hook *
|
||||
// Rule 248: pointer_seq ::= pointer_hook * pointer_hook
|
||||
//
|
||||
case 248: { action. consumePointer(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 249: pointer_seq ::= pointer_seq pointer_hook *
|
||||
// Rule 249: pointer_seq ::= pointer_seq pointer_hook * pointer_hook
|
||||
//
|
||||
case 249: { action. consumePointer(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 250: pointer_seq ::= pointer_hook * <openscope-ast> type_qualifier_list
|
||||
// Rule 250: pointer_seq ::= pointer_hook * pointer_hook <openscope-ast> type_qualifier_list
|
||||
//
|
||||
case 250: { action. consumePointerTypeQualifierList(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 251: pointer_seq ::= pointer_seq pointer_hook * <openscope-ast> type_qualifier_list
|
||||
// Rule 251: pointer_seq ::= pointer_seq pointer_hook * pointer_hook <openscope-ast> type_qualifier_list
|
||||
//
|
||||
case 251: { action. consumePointerTypeQualifierList(); break;
|
||||
}
|
||||
|
@ -1320,35 +1320,47 @@ private GCCBuildASTParserAction gnuAction;
|
|||
//
|
||||
case 356: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 361: declaration_specifiers ::= <openscope-ast> typeof_declaration_specifiers
|
||||
//
|
||||
case 361: { gnuAction.consumeDeclarationSpecifiersTypeof(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 377: field_name_designator ::= identifier_token :
|
||||
//
|
||||
case 377: { gnuAction.consumeDesignatorField(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 378: array_range_designator ::= [ constant_expression ... constant_expression ]
|
||||
//
|
||||
case 378: { gnuAction.consumeDesignatorArray(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 379: designated_initializer ::= <openscope-ast> field_name_designator initializer
|
||||
// Rule 357: typeof_type_specifier ::= typeof unary_expression
|
||||
//
|
||||
case 379: { action. consumeInitializerDesignated(); break;
|
||||
case 357: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 381: no_sizeof_type_name_start ::= ERROR_TOKEN
|
||||
// Rule 358: typeof_type_specifier ::= typeof ( type_id )
|
||||
//
|
||||
case 381: { action. consumeEmpty(); break;
|
||||
case 358: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_typeof); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 362: declaration_specifiers ::= <openscope-ast> typeof_declaration_specifiers
|
||||
//
|
||||
case 362: { gnuAction.consumeDeclarationSpecifiersTypeof(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 378: field_name_designator ::= identifier_token :
|
||||
//
|
||||
case 378: { gnuAction.consumeDesignatorField(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 379: array_range_designator ::= [ constant_expression ... constant_expression ]
|
||||
//
|
||||
case 379: { gnuAction.consumeDesignatorArray(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 380: designated_initializer ::= <openscope-ast> field_name_designator initializer
|
||||
//
|
||||
case 380: { action. consumeInitializerDesignated(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 382: no_sizeof_type_name_start ::= ERROR_TOKEN
|
||||
//
|
||||
case 382: { action. consumeEmpty(); break;
|
||||
}
|
||||
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1419,19 +1419,19 @@ private GPPBuildASTParserAction gnuAction;
|
|||
}
|
||||
|
||||
//
|
||||
// Rule 326: ptr_operator ::= pointer_hook * <openscope-ast> cv_qualifier_seq_opt
|
||||
// Rule 326: ptr_operator ::= pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
|
||||
//
|
||||
case 326: { action. consumePointer(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 327: ptr_operator ::= pointer_hook &
|
||||
// Rule 327: ptr_operator ::= pointer_hook & pointer_hook
|
||||
//
|
||||
case 327: { action. consumeReferenceOperator(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 328: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * <openscope-ast> cv_qualifier_seq_opt
|
||||
// Rule 328: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
|
||||
//
|
||||
case 328: { action. consumePointerToMember(); break;
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -100,7 +100,7 @@ public interface GPPParsersym {
|
|||
TK_Star = 10,
|
||||
TK_Plus = 40,
|
||||
TK_Minus = 41,
|
||||
TK_Tilde = 6,
|
||||
TK_Tilde = 8,
|
||||
TK_Bang = 46,
|
||||
TK_Slash = 98,
|
||||
TK_Percent = 99,
|
||||
|
@ -139,8 +139,8 @@ public interface GPPParsersym {
|
|||
TK_LeftBrace = 72,
|
||||
TK_typeof = 27,
|
||||
TK___alignof__ = 59,
|
||||
TK___attribute__ = 7,
|
||||
TK___declspec = 8,
|
||||
TK___attribute__ = 6,
|
||||
TK___declspec = 7,
|
||||
TK_MAX = 108,
|
||||
TK_MIN = 109,
|
||||
TK_ERROR_TOKEN = 69,
|
||||
|
@ -153,9 +153,9 @@ public interface GPPParsersym {
|
|||
"LeftParen",
|
||||
"ColonColon",
|
||||
"asm",
|
||||
"Tilde",
|
||||
"__attribute__",
|
||||
"__declspec",
|
||||
"Tilde",
|
||||
"operator",
|
||||
"Star",
|
||||
"EndOfCompletion",
|
||||
|
|
|
@ -1407,19 +1407,19 @@ private GPPBuildASTParserAction gnuAction;
|
|||
}
|
||||
|
||||
//
|
||||
// Rule 324: ptr_operator ::= pointer_hook * <openscope-ast> cv_qualifier_seq_opt
|
||||
// Rule 324: ptr_operator ::= pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
|
||||
//
|
||||
case 324: { action. consumePointer(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 325: ptr_operator ::= pointer_hook &
|
||||
// Rule 325: ptr_operator ::= pointer_hook & pointer_hook
|
||||
//
|
||||
case 325: { action. consumeReferenceOperator(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 326: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * <openscope-ast> cv_qualifier_seq_opt
|
||||
// Rule 326: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
|
||||
//
|
||||
case 326: { action. consumePointerToMember(); break;
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue