Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Kucera2008-04-09 18:05:08 +0000
committerMike Kucera2008-04-09 18:05:08 +0000
commit5cb97217f48302d70b2320d9b4327264e973334c (patch)
tree27d2c72fb4049d5af0be1bf2048abe3c1ab0a370
parent4e172a4c9909760f3483d719ad99426f7dd055fb (diff)
downloadorg.eclipse.cdt-5cb97217f48302d70b2320d9b4327264e973334c.tar.gz
org.eclipse.cdt-5cb97217f48302d70b2320d9b4327264e973334c.tar.xz
org.eclipse.cdt-5cb97217f48302d70b2320d9b4327264e973334c.zip
deleting old stuff
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/grammar/c99tu/C99Parser.g1265
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99ParserAction.java20
2 files changed, 0 insertions, 1285 deletions
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/c99tu/C99Parser.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/c99tu/C99Parser.g
deleted file mode 100644
index e313c24b6e6..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/c99tu/C99Parser.g
+++ /dev/null
@@ -1,1265 +0,0 @@
------------------------------------------------------------------------------------
--- Copyright (c) 2006, 2008 IBM Corporation and others.
--- All rights reserved. This program and the accompanying materials
--- are made available under the terms of the Eclipse Public License v1.0
--- which accompanies this distribution, and is available at
--- http://www.eclipse.org/legal/epl-v10.html
---
--- Contributors:
--- IBM Corporation - initial API and implementation
------------------------------------------------------------------------------------
-
-%options la=2
-%options package=org.eclipse.cdt.internal.core.dom.lrparser.c99
-%options template=TrialUndoParserTemplate.g
-
---$Include
---../common.g
---$End
-
-$Notice
--- Copied into all files generated by LPG
-/./*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *********************************************************************************/
-
- // This file was generated by LPG
-./
-$End
-
-$Terminals
-
- -- Keywords
-
- auto break case char const continue default do
- double else enum extern float for goto if
- inline int long register restrict return short signed
- sizeof static struct switch typedef union unsigned void
- volatile while _Bool _Complex _Imaginary
-
- -- Literals
-
- integer floating charconst stringlit
-
- -- identifiers
- -- Special token that represents identifiers that have been declared as typedefs (lexer feedback hack)
-
- identifier
- TypedefName
-
- -- Special tokens used in content assist
-
- Completion
- EndOfCompletion
-
- -- Unrecognized token
-
- Invalid
-
- -- Punctuation (with aliases to make grammar more readable)
-
- LeftBracket ::= '['
- LeftParen ::= '('
- LeftBrace ::= '{'
- Dot ::= '.'
- Arrow ::= '->'
- PlusPlus ::= '++'
- MinusMinus ::= '--'
- And ::= '&'
- Star ::= '*'
- Plus ::= '+'
- Minus ::= '-'
- Tilde ::= '~'
- Bang ::= '!'
- Slash ::= '/'
- Percent ::= '%'
- RightShift ::= '>>'
- LeftShift ::= '<<'
- LT ::= '<'
- GT ::= '>'
- LE ::= '<='
- GE ::= '>='
- EQ ::= '=='
- NE ::= '!='
- Caret ::= '^'
- Or ::= '|'
- AndAnd ::= '&&'
- OrOr ::= '||'
- Question ::= '?'
- Colon ::= ':'
- DotDotDot ::= '...'
- Assign ::= '='
- StarAssign ::= '*='
- SlashAssign ::= '/='
- PercentAssign ::= '%='
- PlusAssign ::= '+='
- MinusAssign ::= '-='
- RightShiftAssign ::= '>>='
- LeftShiftAssign ::= '<<='
- AndAssign ::= '&='
- CaretAssign ::= '^='
- OrAssign ::= '|='
- Comma ::= ','
-
- RightBracket -- these four have special rules for content assist
- RightParen
- RightBrace
- SemiColon
-
-
-$End
-
-
-$Globals
-/.
- import java.util.*;
-
- import org.eclipse.cdt.core.dom.ast.*;
- import org.eclipse.cdt.core.dom.lrparser.IParser;
- import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider;
- import org.eclipse.cdt.core.dom.lrparser.action.c99.C99ASTNodeFactory;
- import org.eclipse.cdt.core.dom.lrparser.action.c99.C99BuildASTParserAction;
- import org.eclipse.cdt.core.dom.lrparser.action.c99.C99TypedefTrackerParserAction;
- import org.eclipse.cdt.core.dom.lrparser.util.DebugUtil;
-./
-$End
-
--- TODO move this code into a common template
-
-$Define
- $build_action_class /. C99BuildASTParserAction ./
- $resolve_action_class /. C99TypedefTrackerParserAction ./
- $node_factory_create_expression /. C99ASTNodeFactory.DEFAULT_INSTANCE ./
- $sym_class /. C99Parsersym ./
- $lexer_class /. C99Lexer ./
- $action_class /. C99ParserAction ./
-$End
-
-
-
-
-$Define
- -- These macros allow the template and header code to be customized by an extending parser.
- $ast_class /.Object./
- $data_class /. Object ./ -- allow anything to be passed between actions
-
- --$additional_interfaces /. , IParserActionTokenProvider, IParser ./
- $additional_interfaces /. ./
-
- --$build_action_class /. ./
- --$resolve_action_class /. ./
- --$node_factory_create_expression /. ./
-
-
- --$lexer_class /. ./
- --$action_class /. ./
-
-
- $UndoResolver /.$Undo action.resolver.undo(); $EndUndo./
-
- $Resolve /. $BeginTrial $resolve.
- ./
- $EndResolve /. $EndTrial
- $UndoResolver
- ./ -- undo actions are automatically generated for binding resolution actions
-
- $Builder /. $BeginFinal $builder.
- ./
- $EndBuilder /. /*$builder.getASTStack().print();*/ $EndFinal ./
-
- $Build /. $Action $Builder ./
- $EndBuild /. $EndBuilder $EndAction ./
-
- $resolve /. action.resolver./
- $builder /. action.builder./
-
-
--- comment out when using trial/undo
- --$Action /. $BeginAction ./
- --$BeginFinal /. ./
- --$EndFinal /. ./
- --$BeginTrial /. ./
- --$EndTrial /. ./
- --$Undo /. ./
- --$EndUndo /. ./
-$End
-
-
-$Headers
-/.
- private $action_class action;
-
- //public $action_type() { // constructor
- //}
-
- private void initActions(IASTTranslationUnit tu) {
- // binding resolution actions need access to IASTName nodes, temporary
- action = new $action_class();
- action.resolver = new $resolve_action_class(this);
- action.builder = new $build_action_class($node_factory_create_expression, this, tu);
- action.builder.setTokenMap($sym_class.orderedTerminalSymbols);
- setParserAction(action);
- }
-
-
- public void addToken(IToken token) {
- token.setKind(mapKind(token.getKind()));
- super.addToken(token);
- }
-
- public void setTokens(List<IToken> tokens) {
- resetTokenStream();
- for(IToken token : tokens) {
- addToken(token);
- }
- }
-
- public IASTCompletionNode parse(IASTTranslationUnit tu) {
- // this has to be done, or... kaboom!
- setStreamLength(getSize());
- initActions(tu);
-
- final int errorRepairCount = -1; // -1 means full error handling
- parser(null, errorRepairCount); // do the actual parse
- super.resetTokenStream(); // allow tokens to be garbage collected
-
- // the completion node may be null
- IASTCompletionNode compNode = action.builder.getASTCompletionNode();
-
- action = null;
- parserAction = null;
- return compNode;
- }
-
-
- public int getKind(int i) {
- int kind = super.getKind(i);
- // lexer feedback hack!
- if(kind == $sym_class.TK_identifier && action.resolver.isTypedef(getTokenText(i))) {
- kind = $sym_class.TK_TypedefName;
- }
- return kind;
- }
-
-./
-$End
-
-$Start
- translation_unit
-$End
-
-
-
-$Rules
-
--------------------------------------------------------------------------------------------
--- AST and Symbol Table Scoping
--------------------------------------------------------------------------------------------
-
-
-<openscope-ast>
- ::= $empty
- /.$Action $Builder openASTScope(); $EndBuilder $EndAction./
-
-<openscope-symbol>
- ::= $empty
- /.$Action $Resolve openSymbolScope(); $EndResolve $EndAction./
-
-<openscope-declaration>
- ::= $empty
- /.$Action $Resolve openDeclarationScope(); $EndResolve $EndAction./
-
--------------------------------------------------------------------------------------------
--- Content assist
--------------------------------------------------------------------------------------------
-
--- The EndOfCompletion token is a special token that matches some punctuation.
--- These tokens allow the parse to complete successfully after a Completion token
--- is encountered.
-
-
-']' ::=? 'RightBracket'
- | 'EndOfCompletion'
-
-')' ::=? 'RightParen'
- | 'EndOfCompletion'
-
-'}' ::=? 'RightBrace'
- | 'EndOfCompletion'
-
-';' ::=? 'SemiColon'
- | 'EndOfCompletion'
-
-
-
--------------------------------------------------------------------------------------------
--- Expressions
--------------------------------------------------------------------------------------------
-
-
-literal
- ::= 'integer'
- /. $Build consumeExpressionLiteral(IASTLiteralExpression.lk_integer_constant); $EndBuild ./
- | 'floating'
- /. $Build consumeExpressionLiteral(IASTLiteralExpression.lk_float_constant); $EndBuild ./
- | 'charconst'
- /. $Build consumeExpressionLiteral(IASTLiteralExpression.lk_char_constant); $EndBuild ./
- | 'stringlit'
- /. $Build consumeExpressionLiteral(IASTLiteralExpression.lk_string_literal); $EndBuild ./
-
-
-primary_expression
- ::= literal
- | primary_expression_id
- /. $Build consumeExpressionID(); $EndBuild ./
- | '(' expression ')'
- /. $Build consumeExpressionBracketed(); $EndBuild ./
-
-
-primary_expression_id -- Typedefname not allowed as a variable name.
- ::= 'identifier'
- | 'Completion'
-
-
-postfix_expression
- ::= primary_expression
- | postfix_expression '[' expression ']'
- /. $Build consumeExpressionArraySubscript(); $EndBuild ./
- | postfix_expression '(' expression_list_opt ')'
- /. $Build consumeExpressionFunctionCall(); $EndBuild ./
- | postfix_expression '.' member_name
- /. $Build consumeExpressionFieldReference(false); $EndBuild ./
- | postfix_expression '->' member_name
- /. $Build consumeExpressionFieldReference(true); $EndBuild ./
- | postfix_expression '++'
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr); $EndBuild ./
- | postfix_expression '--'
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr); $EndBuild ./
- | '(' type_name ')' '{' <openscope-ast> initializer_list comma_opt '}'
- /. $Build consumeExpressionTypeIdInitializer(); $EndBuild ./
-
-
-comma_opt
- ::= ',' | $empty
-
-
-member_name
- ::= 'identifier'
- | 'TypedefName'
- | 'Completion'
-
-
-unary_expression
- ::= postfix_expression
- | '++' unary_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr); $EndBuild ./
- | '--' unary_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr); $EndBuild ./
- | '&' cast_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper); $EndBuild ./
- | '*' cast_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_star); $EndBuild ./
- | '+' cast_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus); $EndBuild ./
- | '-' cast_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus); $EndBuild ./
- | '~' cast_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde); $EndBuild ./
- | '!' cast_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_not); $EndBuild ./
- | 'sizeof' unary_expression
- /. $Build consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof); $EndBuild ./
- | 'sizeof' '(' type_name ')'
- /. $Build consumeExpressionTypeId(IASTTypeIdExpression.op_sizeof); $EndBuild ./
-
-
-cast_expression
- ::= unary_expression
- | '(' type_name ')' cast_expression
- /. $Build consumeExpressionCast(IASTCastExpression.op_cast); $EndBuild ./
-
-
-multiplicative_expression
- ::= cast_expression
- | multiplicative_expression '*' cast_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiply); $EndBuild ./
- | multiplicative_expression '/' cast_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_divide); $EndBuild ./
- | multiplicative_expression '%' cast_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_modulo); $EndBuild ./
-
-
-additive_expression
- ::= multiplicative_expression
- | additive_expression '+' multiplicative_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_plus); $EndBuild ./
- | additive_expression '-' multiplicative_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_minus); $EndBuild ./
-
-
-shift_expression
- ::= additive_expression
- | shift_expression '<<' additive_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeft); $EndBuild ./
- | shift_expression '>>' additive_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRight); $EndBuild ./
-
-
-relational_expression
- ::= shift_expression
- | relational_expression '<' shift_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessThan); $EndBuild ./
- | relational_expression '>' shift_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterThan); $EndBuild ./
- | relational_expression '<=' shift_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessEqual); $EndBuild ./
- | relational_expression '>=' shift_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterEqual); $EndBuild ./
-
-
-equality_expression
- ::= relational_expression
- | equality_expression '==' relational_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_equals); $EndBuild ./
- | equality_expression '!=' relational_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_notequals); $EndBuild ./
-
-
-AND_expression
- ::= equality_expression
- | AND_expression '&' equality_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAnd); $EndBuild ./
-
-
-exclusive_OR_expression
- ::= AND_expression
- | exclusive_OR_expression '^' AND_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXor); $EndBuild ./
-
-
-inclusive_OR_expression
- ::= exclusive_OR_expression
- | inclusive_OR_expression '|' exclusive_OR_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOr); $EndBuild ./
-
-
-logical_AND_expression
- ::= inclusive_OR_expression
- | logical_AND_expression '&&' inclusive_OR_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalAnd); $EndBuild ./
-
-
-logical_OR_expression
- ::= logical_AND_expression
- | logical_OR_expression '||' logical_AND_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalOr); $EndBuild ./
-
-
-conditional_expression
- ::= logical_OR_expression
- | logical_OR_expression '?' expression ':' conditional_expression
- /. $Build consumeExpressionConditional(); $EndBuild ./
-
-
-assignment_expression
- ::= conditional_expression
- | unary_expression '=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign); $EndBuild ./
- | unary_expression '*=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiplyAssign); $EndBuild ./
- | unary_expression '/=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_divideAssign); $EndBuild ./
- | unary_expression '%=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_moduloAssign); $EndBuild ./
- | unary_expression '+=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_plusAssign); $EndBuild ./
- | unary_expression '-=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_minusAssign); $EndBuild ./
- | unary_expression '<<=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeftAssign); $EndBuild ./
- | unary_expression '>>=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRightAssign); $EndBuild ./
- | unary_expression '&=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAndAssign); $EndBuild ./
- | unary_expression '^=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXorAssign); $EndBuild ./
- | unary_expression '|=' assignment_expression
- /. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOrAssign); $EndBuild ./
-
-
--- special rule to avoid conflict between problem statements and problem expressions
-expression_in_statement
- ::= expression_list
-
-
-expression
- ::= expression_list
-
-
-expression_list
- ::= <openscope-ast> expression_list_actual
- /. $Build consumeExpressionList(); $EndBuild ./
-
-
-expression_list_opt
- ::= expression_list
- | $empty
- /. $Build consumeEmpty(); $EndBuild ./
-
-
-expression_list_actual
- ::= assignment_expression
- | expression_list_actual ',' assignment_expression
-
-
-constant_expression
- ::= conditional_expression
-
-
--------------------------------------------------------------------------------------------
--- Statements
--------------------------------------------------------------------------------------------
-
-
-
-statement
- ::= labeled_statement
- | compound_statement
- | expression_statement
- | selection_statement
- | iteration_statement
- | jump_statement
- | ERROR_TOKEN
- /. $Build consumeStatementProblem(); $EndBuild ./
-
-
-labeled_statement
- ::= identifier_or_typedefname ':' statement
- /. $Build consumeStatementLabeled(); $EndBuild ./
- | 'case' constant_expression ':'
- /. $Build consumeStatementCase(); $EndBuild ./
- | 'default' ':'
- /. $Build consumeStatementDefault(); $EndBuild ./
-
-
-compound_statement
- ::= <openscope-symbol> '{' '}'
- /.
- $Action
- $Resolve closeSymbolScope(); $EndResolve
- $Builder consumeStatementCompoundStatement(false); $EndBuilder
- $EndAction
- ./
- | <openscope-symbol> '{' <openscope-ast> block_item_list '}'
- /.
- $Action
- $Resolve closeSymbolScope(); $EndResolve
- $Builder consumeStatementCompoundStatement(true); $EndBuilder
- $EndAction
- ./
-
-
-block_item_list
- ::= block_item
- | block_item_list block_item
-
-
-block_item
- ::= statement
- | declaration
- /. $Build consumeStatementDeclaration(); $EndBuild ./
-
-
-expression_statement
- ::= ';'
- /. $Build consumeStatementNull(); $EndBuild ./
- | expression_in_statement ';'
- /. $Build consumeStatementExpression(); $EndBuild ./
-
-
-selection_statement
- ::= 'if' '(' expression ')' statement
- /. $Build consumeStatementIf(false); $EndBuild ./
- | 'if' '(' expression ')' statement 'else' statement
- /. $Build consumeStatementIf(true); $EndBuild ./
- | 'switch' '(' expression ')' statement
- /. $Build consumeStatementSwitch(); $EndBuild ./
-
-
-expression_opt
- ::= expression
- | $empty
- /. $Build consumeEmpty(); $EndBuild ./
-
-
-iteration_statement
- ::= 'do' statement 'while' '(' expression ')' ';'
- /. $Build consumeStatementDoLoop(); $EndBuild ./
- | 'while' '(' expression ')' statement
- /. $Build consumeStatementWhileLoop(); $EndBuild ./
- | <openscope-symbol> 'for' '(' expression_opt ';' expression_opt ';' expression_opt ')' statement
- /.
- $Action
- $Resolve closeSymbolScope(); $EndResolve
- $Builder consumeStatementForLoop(); $EndBuilder
- $EndAction
- ./
- | <openscope-symbol> 'for' '(' declaration expression_opt ';' expression_opt ')' statement
- /.
- $Action
- $Resolve closeSymbolScope(); $EndResolve
- $Builder consumeStatementForLoop(); $EndBuilder
- $EndAction
- ./
-
-
-jump_statement
- ::= 'goto' identifier_or_typedefname ';'
- /. $Build consumeStatementGoto(); $EndBuild ./
- | 'continue' ';'
- /. $Build consumeStatementContinue(); $EndBuild ./
- | 'break' ';'
- /. $Build consumeStatementBreak(); $EndBuild ./
- | 'return' ';'
- /. $Build consumeStatementReturn(false); $EndBuild ./
- | 'return' expression ';'
- /. $Build consumeStatementReturn(true); $EndBuild ./
-
-
-
--------------------------------------------------------------------------------------------
--- Declarations
--------------------------------------------------------------------------------------------
-
-
-
-declaration
- ::= declaration_specifiers ';'
- /.
- $Action
- $Resolve closeDeclarationScope(); $EndResolve
- $Builder consumeDeclarationSimple(false); $EndBuilder
- $EndAction
- ./
- | declaration_specifiers <openscope-ast> init_declarator_list ';'
- /.
- $Action
- $Resolve closeDeclarationScope(); $EndResolve
- $Builder consumeDeclarationSimple(true); $EndBuilder
- $EndAction
- ./
-
-
-declaration_specifiers
- ::= <openscope-declaration> <openscope-ast> simple_declaration_specifiers
- /. $Build consumeDeclarationSpecifiersSimple(); $EndBuild ./
- | <openscope-declaration> <openscope-ast> struct_or_union_declaration_specifiers
- /. $Build consumeDeclarationSpecifiersStructUnionEnum(); $EndBuild ./
- | <openscope-declaration> <openscope-ast> elaborated_declaration_specifiers
- /. $Build consumeDeclarationSpecifiersStructUnionEnum(); $EndBuild ./
- | <openscope-declaration> <openscope-ast> enum_declaration_specifiers
- /. $Build consumeDeclarationSpecifiersStructUnionEnum(); $EndBuild ./
- | <openscope-declaration> <openscope-ast> typdef_name_declaration_specifiers
- /. $Build consumeDeclarationSpecifiersTypedefName(); $EndBuild ./
-
-
-no_type_declaration_specifier
- ::= storage_class_specifier
- | type_qualifier
- | function_specifier
-
-
-no_type_declaration_specifiers
- ::= no_type_declaration_specifier
- | no_type_declaration_specifiers no_type_declaration_specifier
-
-
-simple_declaration_specifiers
- ::= simple_type_specifier
- | no_type_declaration_specifiers simple_type_specifier
- | simple_declaration_specifiers simple_type_specifier
- | simple_declaration_specifiers no_type_declaration_specifier
-
-
-struct_or_union_declaration_specifiers
- ::= struct_or_union_specifier
- | no_type_declaration_specifiers struct_or_union_specifier
- | struct_or_union_declaration_specifiers no_type_declaration_specifier
-
-
-elaborated_declaration_specifiers
- ::= elaborated_specifier
- | no_type_declaration_specifiers elaborated_specifier
- | elaborated_declaration_specifiers no_type_declaration_specifier
-
-
-enum_declaration_specifiers
- ::= enum_specifier
- | no_type_declaration_specifiers enum_specifier
- | enum_declaration_specifiers no_type_declaration_specifier
-
-
-typdef_name_declaration_specifiers
- ::= typedef_name_in_declspec
- | no_type_declaration_specifiers typedef_name_in_declspec
- | typdef_name_declaration_specifiers no_type_declaration_specifier
-
-
-init_declarator_list
- ::= init_declarator
- | init_declarator_list ',' init_declarator
-
-
-init_declarator
- ::= complete_declarator
- | complete_declarator '=' initializer
- /. $Build consumeDeclaratorWithInitializer(true); $EndBuild ./
-
-
-complete_declarator
- ::= declarator
- /.
- $Action
- $Resolve consumeDeclaratorComplete(); $EndResolve
- $EndAction
- ./
-
-
-storage_class_specifier
- ::= storage_class_specifier_token
- /.
- $Action
- $Resolve consumeDeclSpecToken(); $EndResolve
- $Builder consumeDeclSpecToken(); $EndBuilder
- $EndAction
- ./
-
-
-storage_class_specifier_token
- ::= 'typedef'
- | 'extern'
- | 'static'
- | 'auto'
- | 'register'
-
-
-simple_type_specifier
- ::= simple_type_specifier_token
- /.
- $Action
- $Resolve consumeDeclSpecToken(); $EndResolve
- $Builder consumeDeclSpecToken(); $EndBuilder
- $EndAction
- ./
-
-simple_type_specifier_token
- ::= 'void'
- | 'char'
- | 'short'
- | 'int'
- | 'long'
- | 'float'
- | 'double'
- | 'signed'
- | 'unsigned'
- | '_Bool'
- | '_Complex'
- | '_Imaginary'
-
-
-typedef_name_in_declspec
- ::= 'TypedefName'
- /.
- $Action
- $Resolve consumeDeclSpecToken(); $EndResolve
- $Builder consumeDeclSpecToken(); $EndBuilder
- $EndAction
- ./
- | 'Completion'
- /.
- $Action
- $Resolve consumeDeclSpecToken(); $EndResolve
- $Builder consumeDeclSpecToken(); $EndBuilder
- $EndAction
- ./
-
-
-identifier_or_typedefname
- ::= 'identifier'
- | 'TypedefName'
- | 'Completion'
-
-
-struct_or_union_specifier
- ::= 'struct' '{' <openscope-ast> struct_declaration_list_opt '}'
- /. $Build consumeTypeSpecifierComposite(false, IASTCompositeTypeSpecifier.k_struct); $EndBuild ./
- | 'union' '{' <openscope-ast> struct_declaration_list_opt '}'
- /. $Build consumeTypeSpecifierComposite(false, IASTCompositeTypeSpecifier.k_union); $EndBuild ./
- | 'struct' identifier_or_typedefname '{' <openscope-ast> struct_declaration_list_opt '}'
- /. $Build consumeTypeSpecifierComposite(true, IASTCompositeTypeSpecifier.k_struct); $EndBuild ./
- | 'union' identifier_or_typedefname '{' <openscope-ast> struct_declaration_list_opt '}'
- /. $Build consumeTypeSpecifierComposite(true, IASTCompositeTypeSpecifier.k_union); $EndBuild ./
-
-
-elaborated_specifier
- ::= 'struct' identifier_or_typedefname
- /. $Build consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct); $EndBuild ./
- | 'union' identifier_or_typedefname
- /. $Build consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union); $EndBuild ./
- | 'enum' identifier_or_typedefname
- /. $Build consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum); $EndBuild ./
-
-
-struct_declaration_list_opt
- ::= struct_declaration_list
- | $empty
-
-struct_declaration_list
- ::= struct_declaration
- | struct_declaration_list struct_declaration
-
-
-struct_declaration
- ::= specifier_qualifier_list <openscope-ast> struct_declarator_list ';' -- regular declarators plus bit fields
- /.
- $Action
- $Resolve closeDeclarationScope(); $EndResolve
- $Builder consumeStructDeclaration(true); $EndBuilder
- $EndAction
- ./
- | specifier_qualifier_list ';'
- /.
- $Action
- $Resolve closeDeclarationScope(); $EndResolve
- $Builder consumeStructDeclaration(false); $EndBuilder
- $EndAction
- ./
-
-
--- just reuse declaration_specifiers, makes grammar a bit more lenient but thats OK
-specifier_qualifier_list
- ::= declaration_specifiers
-
-
-struct_declarator_list
- ::= complete_struct_declarator
- | struct_declarator_list ',' complete_struct_declarator
-
-
-complete_struct_declarator
- ::= struct_declarator
- /.
- $Action
- $Resolve consumeDeclaratorCompleteField(); $EndResolve
- $EndAction
- ./
-
-
-struct_declarator
- ::= declarator
- | ':' constant_expression
- /. $Build consumeBitField(false); $EndBuild ./
- | declarator ':' constant_expression
- /. $Build consumeBitField(true); $EndBuild ./
-
-
-enum_specifier
- ::= 'enum' '{' <openscope-ast> enumerator_list_opt comma_opt '}'
- /. $Build consumeTypeSpecifierEnumeration(false); $EndBuild ./
- | 'enum' identifier_or_typedefname '{' <openscope-ast> enumerator_list_opt comma_opt '}'
- /. $Build consumeTypeSpecifierEnumeration(true); $EndBuild ./
-
-
-enumerator_list_opt
- ::= enumerator_list
- | $empty
-
-
-enumerator_list
- ::= enumerator
- | enumerator_list ',' enumerator
-
-
-enumerator
- ::= identifier_or_typedefname
- /. $Build consumeEnumerator(false); $EndBuild ./
- | identifier_or_typedefname '=' constant_expression
- /. $Build consumeEnumerator(true); $EndBuild ./
-
-
-type_qualifier
- ::= type_qualifier_token
- /.
- $Action
- $Resolve consumeDeclSpecToken(); $EndResolve
- $Builder consumeDeclSpecToken(); $EndBuilder
- $EndAction
- ./
-
-
-type_qualifier_token
- ::= 'const'
- | 'restrict'
- | 'volatile'
-
-
-function_specifier
- ::= 'inline'
- /.$Action
- $Resolve consumeDeclSpecToken(); $EndResolve
- $Builder consumeDeclSpecToken(); $EndBuilder
- $EndAction
- ./
-
-
-declarator
- ::= direct_declarator
- | <openscope-ast> pointer_seq direct_declarator
- /. $Build consumeDeclaratorWithPointer(true); $EndBuild ./
-
-
-direct_declarator
- ::= array_direct_declarator
- | function_prototype_direct_declarator
- | basic_direct_declarator
- | knr_direct_declarator
-
-
-basic_direct_declarator
- ::= declarator_id_name
- /.
- $Action
- $Resolve consumeDirectDeclaratorIdentifier(); $EndResolve
- $Builder consumeDirectDeclaratorIdentifier(); $EndBuilder
- $EndAction
- ./
- | '(' declarator ')'
- /. $Build consumeDirectDeclaratorBracketed(); $EndBuild ./
-
-
-declarator_id_name
- ::= 'identifier'
- /. $Build consumeIdentifierName(); $EndBuild ./
-
-
-array_direct_declarator
- ::= basic_direct_declarator array_modifier
- /. $Build consumeDirectDeclaratorArrayDeclarator(true); $EndBuild ./
- | array_direct_declarator array_modifier
- /. $Build consumeDirectDeclaratorArrayDeclarator(true); $EndBuild ./
-
-
-function_prototype_direct_declarator
- ::= function_direct_declarator
- /.$Action $Resolve closeSymbolScope(); $EndResolve $EndAction./
-
-
-function_direct_declarator
- ::= basic_direct_declarator '(' <openscope-symbol> <openscope-ast> parameter_type_list ')'
- /. $Build consumeDirectDeclaratorFunctionDeclarator(true, true); $EndBuild ./
- | basic_direct_declarator '(' <openscope-symbol> ')'
- /. $Build consumeDirectDeclaratorFunctionDeclarator(true, false); $EndBuild ./
-
-
-function_declarator
- ::= function_direct_declarator
- | <openscope-ast> pointer_seq function_direct_declarator
- /. $Build consumeDeclaratorWithPointer(true); $EndBuild ./
-
-
--- This is a hack because the parser cannot tell the difference between
--- plain identifiers and types. Because of this an identifier_list would
--- always be parsed as a parameter_type_list instead. In a KnR funciton
--- definition we can use the extra list of declarators to disambiguate.
--- This rule should be merged back into direct_declarator if type info is
--- added to the parser.
-
-knr_direct_declarator
- ::= basic_direct_declarator '(' <openscope-symbol> <openscope-ast> identifier_list ')'
- /. $Build consumeDirectDeclaratorFunctionDeclaratorKnR(); $EndBuild ./
-
-
-knr_function_declarator
- ::= knr_direct_declarator
- | <openscope-ast> pointer_seq knr_direct_declarator
- /. $Build consumeDeclaratorWithPointer(true); $EndBuild ./
-
-
-identifier_list
- ::= 'identifier'
- /. $Build consumeIdentifierKnR(); $EndBuild ./
- | identifier_list ',' 'identifier'
- /. $Build consumeIdentifierKnR(); $EndBuild ./
-
-
-array_modifier
- ::= '[' ']'
- /. $Build consumeDirectDeclaratorArrayModifier(false); $EndBuild ./
- | '[' <openscope-ast> array_modifier_type_qualifiers ']'
- /. $Build consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false); $EndBuild ./
- | '[' assignment_expression ']'
- /. $Build consumeDirectDeclaratorArrayModifier(true); $EndBuild ./
- | '[' <openscope-ast> array_modifier_type_qualifiers assignment_expression ']'
- /. $Build consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true); $EndBuild ./
- | '[' 'static' assignment_expression ']'
- /. $Build consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true); $EndBuild ./
- | '[' 'static' <openscope-ast> array_modifier_type_qualifiers assignment_expression ']'
- /. $Build consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); $EndBuild ./
- | '[' <openscope-ast> array_modifier_type_qualifiers 'static' assignment_expression ']'
- /. $Build consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); $EndBuild ./
- | '[' '*' ']'
- /. $Build consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false); $EndBuild ./
- | '[' <openscope-ast> array_modifier_type_qualifiers '*' ']'
- /. $Build consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false); $EndBuild ./
-
-
-array_modifier_type_qualifiers
- ::= type_qualifier_list
-
-
-pointer_seq
- ::= '*'
- /. $Build consumePointer(); $EndBuild ./
- | pointer_seq '*'
- /. $Build consumePointer(); $EndBuild ./
- | '*' <openscope-ast> type_qualifier_list
- /. $Build consumePointerTypeQualifierList(); $EndBuild ./
- | pointer_seq '*' <openscope-ast> type_qualifier_list
- /. $Build consumePointerTypeQualifierList(); $EndBuild ./
-
-
-type_qualifier_list
- ::= type_qualifier
- | type_qualifier_list type_qualifier
-
-
-parameter_type_list
- ::= parameter_list
- /. $Build consumeEmpty(); $EndBuild ./
- | parameter_list ',' '...'
- /. $Build consumePlaceHolder(); $EndBuild ./
- | '...' -- not spec
- /. $Build consumePlaceHolder(); $EndBuild ./
-
-
-parameter_list
- ::= parameter_declaration
- | parameter_list ',' parameter_declaration
-
-
-parameter_declaration
- ::= declaration_specifiers complete_parameter_declarator
- /. $Build consumeParameterDeclaration(); $EndBuild ./
- | declaration_specifiers
- /.
- $Action
- $Resolve consumeParameterDeclarationWithoutDeclarator(); $EndResolve
- $Builder consumeParameterDeclarationWithoutDeclarator(); $EndBuilder
- $EndAction
- ./
-
-
-complete_parameter_declarator
- ::= declarator
- /.
- $Action
- $Resolve consumeDeclaratorCompleteParameter(); $EndResolve
- $EndAction
- ./
- | abstract_declarator
- /.
- $Action
- $Resolve consumeDeclaratorCompleteParameter(); $EndResolve
- $EndAction
- ./
-
-
--- only used in expressions, eg) sizeof, casts etc...
-type_name
- ::= specifier_qualifier_list
- /.
- $Action
- $Resolve consumeTypeId(); $EndResolve
- $Builder consumeTypeId(false); $EndBuilder
- $EndAction
- ./
- | specifier_qualifier_list abstract_declarator
- /.
- $Action
- $Resolve consumeTypeId(); $EndResolve
- $Builder consumeTypeId(true); $EndBuilder
- $EndAction
- ./
-
-
-abstract_declarator -- a declarator that does not include an identifier
- ::= direct_abstract_declarator
- | <openscope-ast> pointer_seq
- /. $Build consumeDeclaratorWithPointer(false); $EndBuild ./
- | <openscope-ast> pointer_seq direct_abstract_declarator
- /. $Build consumeDeclaratorWithPointer(false); $EndBuild ./
-
-
-direct_abstract_declarator
- ::= basic_direct_abstract_declarator
- | array_direct_abstract_declarator
- | function_direct_abstract_declarator
-
-
-basic_direct_abstract_declarator
- ::= '(' abstract_declarator ')'
- /. $Build consumeDirectDeclaratorBracketed(); $EndBuild ./
-
-
-array_direct_abstract_declarator
- ::= array_modifier
- /. $Build consumeDirectDeclaratorArrayDeclarator(false); $EndBuild ./
- | array_direct_abstract_declarator array_modifier
- /. $Build consumeDirectDeclaratorArrayDeclarator(true); $EndBuild ./
- | basic_direct_abstract_declarator array_modifier
- /. $Build consumeDirectDeclaratorArrayDeclarator(true); $EndBuild ./
-
-
-function_direct_abstract_declarator
- ::= '(' ')'
- /. $Build consumeDirectDeclaratorFunctionDeclarator(false, false); $EndBuild ./
- | basic_direct_abstract_declarator '(' ')'
- /. $Build consumeDirectDeclaratorFunctionDeclarator(true, false); $EndBuild ./
- | '(' <openscope-ast> parameter_type_list ')'
- /. $Build consumeDirectDeclaratorFunctionDeclarator(false, true); $EndBuild ./
- | basic_direct_abstract_declarator '(' <openscope-ast> parameter_type_list ')'
- /. $Build consumeDirectDeclaratorFunctionDeclarator(true, true); $EndBuild ./
-
-
-initializer
- ::= assignment_expression
- /. $Build consumeInitializer(); $EndBuild ./
- | '{' <openscope-ast> initializer_list comma_opt '}'
- /. $Build consumeInitializerList(); $EndBuild ./
-
-initializer_list
- ::= initializer
- | designated_initializer
- | initializer_list ',' initializer
- | initializer_list ',' designated_initializer
-
-
-designated_initializer
- ::= <openscope-ast> designation '=' initializer
- /. $Build consumeInitializerDesignated(); $EndBuild ./
-
-
-designation
- ::= designator_list
-
-
-designator_list
- ::= designator_base
- | designator_list designator
-
-
-designator_base
- ::= '[' constant_expression ']'
- /. $Build consumeDesignatorArray(); $EndBuild ./
- | '.' identifier_or_typedefname
- /. $Build consumeDesignatorField(); $EndBuild ./
-
-designator
- ::= '[' constant_expression ']'
- /. $Build consumeDesignatorArray(); $EndBuild ./
- | '.' identifier_or_typedefname
- /. $Build consumeDesignatorField(); $EndBuild ./
-
-
--------------------------------------------------------------------------------------------
--- External Definitions
--------------------------------------------------------------------------------------------
-
-translation_unit
- ::= external_declaration_list
- /. $Build consumeTranslationUnit(); $EndBuild ./
- | $empty
- /. $Build consumeTranslationUnit(); $EndBuild ./
-
-
-external_declaration_list
- ::= external_declaration
- | external_declaration_list external_declaration
-
-
-external_declaration
- ::= function_definition
- | declaration
- | ';'
- /. $Build consumeDeclarationEmpty(); $EndBuild ./
- | ERROR_TOKEN
- /. $Build consumeDeclarationProblem(); $EndBuild ./
-
-
--- Used by KnR
-declaration_list
- ::= declaration
- | declaration_list declaration
-
-
--- The extra <openscope-ast> nonterminal before declarator in this rule is only there
--- to avoid a shift/reduce error with the rule for declaration.
--- The symbol table scoped is opened in the rule for function_direct_declarator
-function_definition
- ::= declaration_specifiers <openscope-ast> function_declarator function_body
- /.
- $Action
- $Resolve consumeFunctionDefinition(); $EndResolve
- $Builder consumeFunctionDefinition(true); $EndBuilder
- $EndAction
- ./
-
- -- this rule is here as a special case (its not C99 spec) just to support implicit int in function definitions
- | <openscope-declaration> <openscope-ast> function_declarator function_body
- /.
- $Action
- $Resolve consumeFunctionDefinition(); $EndResolve
- $Builder consumeFunctionDefinition(false); $EndBuilder
- $EndAction
- ./
-
- | declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement
- /.
- $Action
- $Resolve consumeFunctionDefinition(); $EndResolve
- $Builder consumeFunctionDefinitionKnR(); $EndBuilder
- $EndAction
- ./
-
-
--- same syntax as compound_statement but a symbol table scope isn't opened
-function_body
- ::= '{' '}'
- /. $Build consumeStatementCompoundStatement(false); $EndBuild ./
- | '{' <openscope-ast> block_item_list '}'
- /. $Build consumeStatementCompoundStatement(true); $EndBuild ./
-
-$End
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99ParserAction.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99ParserAction.java
deleted file mode 100644
index 3bf563dd250..00000000000
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99ParserAction.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.dom.lrparser.c99;
-
-import org.eclipse.cdt.core.dom.lrparser.action.c99.C99BuildASTParserAction;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.action.deprecated.C99TypedefTrackerParserAction;
-
-class C99ParserAction {
-
- public C99BuildASTParserAction builder;
- public C99TypedefTrackerParserAction resolver;
-}

Back to the top