1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-05 08:46:02 +02:00

fixed problem with typeof and attributes after pointers

This commit is contained in:
Mike Kucera 2009-02-04 18:32:16 +00:00
parent 18122f05d4
commit b1f0b681d3
15 changed files with 6497 additions and 6385 deletions

View file

@ -796,13 +796,13 @@ array_modifier_type_qualifiers
pointer_seq pointer_seq
::= pointer_hook '*' ::= pointer_hook '*' pointer_hook
/. $Build consumePointer(); $EndBuild ./ /. $Build consumePointer(); $EndBuild ./
| pointer_seq pointer_hook '*' | pointer_seq pointer_hook '*' pointer_hook
/. $Build consumePointer(); $EndBuild ./ /. $Build consumePointer(); $EndBuild ./
| pointer_hook '*' <openscope-ast> type_qualifier_list | pointer_hook '*' pointer_hook <openscope-ast> type_qualifier_list
/. $Build consumePointerTypeQualifierList(); $EndBuild ./ /. $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 ./ /. $Build consumePointerTypeQualifierList(); $EndBuild ./
pointer_hook pointer_hook

View file

@ -1126,11 +1126,11 @@ array_modifier
ptr_operator ptr_operator
::= pointer_hook '*' <openscope-ast> cv_qualifier_seq_opt ::= pointer_hook '*' pointer_hook <openscope-ast> cv_qualifier_seq_opt
/. $Build consumePointer(); $EndBuild ./ /. $Build consumePointer(); $EndBuild ./
| pointer_hook '&' | pointer_hook '&' pointer_hook
/. $Build consumeReferenceOperator(); $EndBuild ./ /. $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 ./ /. $Build consumePointerToMember(); $EndBuild ./
pointer_hook pointer_hook

View file

@ -179,7 +179,9 @@ case_range_expression
typeof_type_specifier typeof_type_specifier
::= 'typeof' unary_expression ::= 'typeof' unary_expression
/. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof); $EndBuild ./
| 'typeof' '(' type_id ')'
/. $Build consumeExpressionTypeId(IASTTypeIdExpression.op_typeof); $EndBuild ./
typeof_declaration_specifiers typeof_declaration_specifiers
::= typeof_type_specifier ::= typeof_type_specifier

View file

@ -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.c.PDOMCLinkageFactory;
import org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPLinkageFactory; import org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPLinkageFactory;
import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.Status;
/** /**

View file

@ -10,9 +10,7 @@
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.core.dom.lrparser.action; 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.*;
import static org.eclipse.cdt.core.dom.lrparser.action.ParserUtil.length;
import static org.eclipse.cdt.core.dom.lrparser.action.ParserUtil.offset;
import java.util.List; import java.util.List;

View file

@ -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; 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; 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; 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; case 252: { action. consumePointerTypeQualifierList(); break;
} }
@ -1340,27 +1340,39 @@ private GCCBuildASTParserAction gnuAction;
} }
// //
// Rule 364: declaration_specifiers ::= <openscope-ast> typeof_declaration_specifiers // Rule 360: typeof_type_specifier ::= typeof unary_expression
// //
case 364: { gnuAction.consumeDeclarationSpecifiersTypeof(); break; case 360: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof); break;
} }
// //
// Rule 380: field_name_designator ::= identifier_token : // Rule 361: typeof_type_specifier ::= typeof ( type_id )
// //
case 380: { gnuAction.consumeDesignatorField(); break; case 361: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_typeof); break;
} }
// //
// Rule 381: array_range_designator ::= [ constant_expression ... constant_expression ] // Rule 365: declaration_specifiers ::= <openscope-ast> typeof_declaration_specifiers
// //
case 381: { gnuAction.consumeDesignatorArray(); break; case 365: { gnuAction.consumeDeclarationSpecifiersTypeof(); break;
} }
// //
// Rule 382: designated_initializer ::= <openscope-ast> field_name_designator initializer // Rule 381: field_name_designator ::= identifier_token :
// //
case 382: { action. consumeInitializerDesignated(); break; case 381: { gnuAction.consumeDesignatorField(); break;
}
//
// Rule 382: array_range_designator ::= [ constant_expression ... constant_expression ]
//
case 382: { gnuAction.consumeDesignatorArray(); break;
}
//
// Rule 383: designated_initializer ::= <openscope-ast> field_name_designator initializer
//
case 383: { action. consumeInitializerDesignated(); break;
} }

View file

@ -48,7 +48,7 @@ public interface GCCParsersym {
TK_unsigned = 56, TK_unsigned = 56,
TK_void = 57, TK_void = 57,
TK_volatile = 25, TK_volatile = 25,
TK_while = 35, TK_while = 37,
TK__Bool = 58, TK__Bool = 58,
TK__Complex = 59, TK__Complex = 59,
TK__Imaginary = 60, TK__Imaginary = 60,
@ -60,7 +60,7 @@ public interface GCCParsersym {
TK_Completion = 5, TK_Completion = 5,
TK_EndOfCompletion = 3, TK_EndOfCompletion = 3,
TK_Invalid = 100, TK_Invalid = 100,
TK_LeftBracket = 36, TK_LeftBracket = 35,
TK_LeftParen = 1, TK_LeftParen = 1,
TK_LeftBrace = 10, TK_LeftBrace = 10,
TK_Dot = 70, TK_Dot = 70,
@ -103,7 +103,7 @@ public interface GCCParsersym {
TK_OrAssign = 97, TK_OrAssign = 97,
TK_Comma = 48, TK_Comma = 48,
TK_RightBracket = 77, TK_RightBracket = 77,
TK_RightParen = 37, TK_RightParen = 36,
TK_RightBrace = 65, TK_RightBrace = 65,
TK_SemiColon = 26, TK_SemiColon = 26,
TK_typeof = 9, TK_typeof = 9,
@ -152,9 +152,9 @@ public interface GCCParsersym {
"register", "register",
"typedef", "typedef",
"ERROR_TOKEN", "ERROR_TOKEN",
"while",
"LeftBracket", "LeftBracket",
"RightParen", "RightParen",
"while",
"break", "break",
"case", "case",
"continue", "continue",

View file

@ -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; 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; 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; 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; case 251: { action. consumePointerTypeQualifierList(); break;
} }
@ -1322,33 +1322,45 @@ private GCCBuildASTParserAction gnuAction;
} }
// //
// Rule 361: declaration_specifiers ::= <openscope-ast> typeof_declaration_specifiers // Rule 357: typeof_type_specifier ::= typeof unary_expression
// //
case 361: { gnuAction.consumeDeclarationSpecifiersTypeof(); break; case 357: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof); break;
} }
// //
// Rule 377: field_name_designator ::= identifier_token : // Rule 358: typeof_type_specifier ::= typeof ( type_id )
// //
case 377: { gnuAction.consumeDesignatorField(); break; case 358: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_typeof); break;
} }
// //
// Rule 378: array_range_designator ::= [ constant_expression ... constant_expression ] // Rule 362: declaration_specifiers ::= <openscope-ast> typeof_declaration_specifiers
// //
case 378: { gnuAction.consumeDesignatorArray(); break; case 362: { gnuAction.consumeDeclarationSpecifiersTypeof(); break;
} }
// //
// Rule 379: designated_initializer ::= <openscope-ast> field_name_designator initializer // Rule 378: field_name_designator ::= identifier_token :
// //
case 379: { action. consumeInitializerDesignated(); break; case 378: { gnuAction.consumeDesignatorField(); break;
} }
// //
// Rule 381: no_sizeof_type_name_start ::= ERROR_TOKEN // Rule 379: array_range_designator ::= [ constant_expression ... constant_expression ]
// //
case 381: { action. consumeEmpty(); break; 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;
} }

View file

@ -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; case 326: { action. consumePointer(); break;
} }
// //
// Rule 327: ptr_operator ::= pointer_hook & // Rule 327: ptr_operator ::= pointer_hook & pointer_hook
// //
case 327: { action. consumeReferenceOperator(); break; 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; case 328: { action. consumePointerToMember(); break;
} }

View file

@ -100,7 +100,7 @@ public interface GPPParsersym {
TK_Star = 10, TK_Star = 10,
TK_Plus = 40, TK_Plus = 40,
TK_Minus = 41, TK_Minus = 41,
TK_Tilde = 6, TK_Tilde = 8,
TK_Bang = 46, TK_Bang = 46,
TK_Slash = 98, TK_Slash = 98,
TK_Percent = 99, TK_Percent = 99,
@ -139,8 +139,8 @@ public interface GPPParsersym {
TK_LeftBrace = 72, TK_LeftBrace = 72,
TK_typeof = 27, TK_typeof = 27,
TK___alignof__ = 59, TK___alignof__ = 59,
TK___attribute__ = 7, TK___attribute__ = 6,
TK___declspec = 8, TK___declspec = 7,
TK_MAX = 108, TK_MAX = 108,
TK_MIN = 109, TK_MIN = 109,
TK_ERROR_TOKEN = 69, TK_ERROR_TOKEN = 69,
@ -153,9 +153,9 @@ public interface GPPParsersym {
"LeftParen", "LeftParen",
"ColonColon", "ColonColon",
"asm", "asm",
"Tilde",
"__attribute__", "__attribute__",
"__declspec", "__declspec",
"Tilde",
"operator", "operator",
"Star", "Star",
"EndOfCompletion", "EndOfCompletion",

View file

@ -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; case 324: { action. consumePointer(); break;
} }
// //
// Rule 325: ptr_operator ::= pointer_hook & // Rule 325: ptr_operator ::= pointer_hook & pointer_hook
// //
case 325: { action. consumeReferenceOperator(); break; 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; case 326: { action. consumePointerToMember(); break;
} }