1
0
Fork 0
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:
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_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

View file

@ -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

View file

@ -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

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.cpp.PDOMCPPLinkageFactory;
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;
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;

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;
}
//
// 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;
}

View file

@ -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",

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;
}
//
// 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;
}

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;
}
//
// 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;
}

View file

@ -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",

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;
}
//
// 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;
}