mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-06-07 17:56:01 +02:00
added AST building actions for C++ parameter declarations, cleaned up C99 grammar file a bit
This commit is contained in:
parent
fb314ecfd8
commit
82c457efbc
14 changed files with 3706 additions and 3615 deletions
|
@ -170,6 +170,6 @@ public class C99DigraphTrigraphTests extends TestCase {
|
|||
assertEquals("ab", declarator2.getName().toString());
|
||||
IASTLiteralExpression expr2 = (IASTLiteralExpression)((IASTInitializerExpression)declarator2.getInitializer()).getExpression();
|
||||
assertEquals(IASTLiteralExpression.lk_string_literal, expr2.getKind());
|
||||
assertEquals("its still good", expr2.toString());
|
||||
assertEquals("\"its still good\"", expr2.toString());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -48,6 +48,7 @@ import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
|
|||
import org.eclipse.cdt.core.dom.ast.IASTName;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTNode;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTNullStatement;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTPointerOperator;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTProblem;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTProblemHolder;
|
||||
|
@ -61,6 +62,7 @@ import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression;
|
|||
import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTEnumerationSpecifier.IASTEnumerator;
|
||||
import org.eclipse.cdt.core.dom.ast.c.ICASTDeclSpecifier;
|
||||
import org.eclipse.cdt.core.dom.ast.c.ICASTPointer;
|
||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCastExpression;
|
||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTDeclSpecifier;
|
||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLiteralExpression;
|
||||
|
@ -749,6 +751,109 @@ public abstract class BuildASTParserAction {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* declarator
|
||||
* ::= <openscope-ast> ptr_operator_seq direct_declarator
|
||||
*
|
||||
* abstract_declarator
|
||||
* ::= <openscope-ast> ptr_operator_seq
|
||||
* | <openscope-ast> ptr_operator_seq direct_declarator
|
||||
*/
|
||||
public void consumeDeclaratorWithPointer(boolean hasDeclarator) {
|
||||
if(TRACE_ACTIONS) DebugUtil.printMethodTrace();
|
||||
|
||||
IASTDeclarator decl;
|
||||
if(hasDeclarator)
|
||||
decl = (IASTDeclarator) astStack.pop();
|
||||
else
|
||||
decl = nodeFactory.newDeclarator(nodeFactory.newName());
|
||||
|
||||
for(Object pointer : astStack.closeScope())
|
||||
decl.addPointerOperator((ICASTPointer)pointer);
|
||||
|
||||
setOffsetAndLength(decl);
|
||||
astStack.push(decl);
|
||||
|
||||
if(TRACE_AST_STACK) System.out.println(astStack);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* init_declarator
|
||||
* ::= declarator initializer
|
||||
*
|
||||
* @param hasDeclarator in C++ its possible for a parameter declaration to specifiy
|
||||
* a default value without also specifying a named declarator
|
||||
*/
|
||||
public void consumeDeclaratorWithInitializer(boolean hasDeclarator) {
|
||||
if(TRACE_ACTIONS) DebugUtil.printMethodTrace();
|
||||
|
||||
IASTInitializer initializer = (IASTInitializer) astStack.pop();
|
||||
|
||||
IASTDeclarator declarator;
|
||||
if(hasDeclarator) {
|
||||
declarator = (IASTDeclarator) astStack.peek();
|
||||
}
|
||||
else {
|
||||
IASTName emptyName = nodeFactory.newName();
|
||||
declarator = nodeFactory.newDeclarator(emptyName);
|
||||
setOffsetAndLength(emptyName);
|
||||
astStack.push(declarator);
|
||||
}
|
||||
|
||||
declarator.setInitializer(initializer);
|
||||
setOffsetAndLength(declarator); // adjust the length to include the initializer
|
||||
|
||||
if(TRACE_AST_STACK) System.out.println(astStack);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* parameter_declaration ::= declaration_specifiers declarator
|
||||
* | declaration_specifiers abstract_declarator
|
||||
*/
|
||||
public void consumeParameterDeclaration() {
|
||||
if(TRACE_ACTIONS) DebugUtil.printMethodTrace();
|
||||
|
||||
IASTDeclarator declarator = (IASTDeclarator) astStack.pop();
|
||||
IASTDeclSpecifier declSpec = (IASTDeclSpecifier) astStack.pop();
|
||||
IASTParameterDeclaration declaration = nodeFactory.newParameterDeclaration(declSpec, declarator);
|
||||
setOffsetAndLength(declaration);
|
||||
astStack.push(declaration);
|
||||
|
||||
if(TRACE_AST_STACK) System.out.println(astStack);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* parameter_declaration ::= declaration_specifiers
|
||||
*/
|
||||
public void consumeParameterDeclarationWithoutDeclarator(/*IBinding binding*/) {
|
||||
if(TRACE_ACTIONS) DebugUtil.printMethodTrace();
|
||||
|
||||
// offsets need to be calculated differently in this case
|
||||
final int endOffset = parser.getRightIToken().getEndOffset() + 1;
|
||||
|
||||
IASTName name = nodeFactory.newName();
|
||||
setOffsetAndLength(name, endOffset, 0);
|
||||
//name.setBinding(binding);
|
||||
|
||||
// it appears that a declarator is always required in the AST here
|
||||
IASTDeclarator declarator = nodeFactory.newDeclarator(name);
|
||||
setOffsetAndLength(declarator, endOffset, 0);
|
||||
|
||||
IASTDeclSpecifier declSpec = (IASTDeclSpecifier) astStack.pop();
|
||||
IASTParameterDeclaration declaration = nodeFactory.newParameterDeclaration(declSpec, declarator);
|
||||
|
||||
setOffsetAndLength(declaration);
|
||||
astStack.push(declaration);
|
||||
|
||||
if(TRACE_AST_STACK) System.out.println(astStack);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* TODO: do I really want to share declaration rules between the two parsers.
|
||||
* Even if there is potential for reuse it still may be cleaner to leave the
|
||||
|
@ -830,7 +935,7 @@ public abstract class BuildASTParserAction {
|
|||
* the additional array modifiers will need to be added to the array declarator.
|
||||
* Special care is taken for nested declarators.
|
||||
*/
|
||||
protected void consumeDeclaratorArray(IASTArrayModifier arrayModifier) {
|
||||
protected void addArrayModifier(IASTArrayModifier arrayModifier) {
|
||||
if(TRACE_ACTIONS) DebugUtil.printMethodTrace();
|
||||
|
||||
IASTDeclarator node = (IASTDeclarator) astStack.pop();
|
||||
|
@ -877,8 +982,9 @@ public abstract class BuildASTParserAction {
|
|||
* Pops a simple declarator from the stack, converts it into
|
||||
* a FunctionDeclator, then pushes it.
|
||||
* TODO: is this the best way of doing this?
|
||||
* TODO, rename this method, its an accidental overload
|
||||
*/
|
||||
protected void consumeDirectDeclaratorFunctionDeclarator(IASTFunctionDeclarator declarator, int endOffset) {
|
||||
protected void addFunctionModifier(IASTFunctionDeclarator declarator, int endOffset) {
|
||||
IASTDeclarator decl = (IASTDeclarator) astStack.pop();
|
||||
|
||||
if(decl.getNestedDeclarator() != null) {
|
||||
|
@ -910,18 +1016,43 @@ public abstract class BuildASTParserAction {
|
|||
if(TRACE_AST_STACK) System.out.println(astStack);
|
||||
}
|
||||
|
||||
// /**
|
||||
// * direct_declarator ::= direct_declarator array_modifier
|
||||
// * consume the direct_declarator part and add the array modifier
|
||||
// */
|
||||
// public void consumeDirectDeclaratorArrayDeclarator() {
|
||||
// if(TRACE_ACTIONS) DebugUtil.printMethodTrace();
|
||||
//
|
||||
// IASTArrayModifier arrayModifier = (IASTArrayModifier) astStack.pop();
|
||||
// addArrayModifier(arrayModifier);
|
||||
// }
|
||||
|
||||
/**
|
||||
* direct_declarator ::= direct_declarator array_modifier
|
||||
* consume the direct_declarator part and add the array modifier
|
||||
* direct_abstract_declarator
|
||||
* ::= array_modifier
|
||||
* | direct_abstract_declarator array_modifier
|
||||
*/
|
||||
public void consumeDirectDeclaratorArrayDeclarator() {
|
||||
public void consumeDirectDeclaratorArrayDeclarator(boolean hasDeclarator) {
|
||||
if(TRACE_ACTIONS) DebugUtil.printMethodTrace();
|
||||
|
||||
IASTArrayModifier arrayModifier = (IASTArrayModifier) astStack.pop();
|
||||
consumeDeclaratorArray(arrayModifier);
|
||||
|
||||
if(hasDeclarator) {
|
||||
addArrayModifier(arrayModifier);
|
||||
}
|
||||
else {
|
||||
IASTArrayDeclarator decl = nodeFactory.newArrayDeclarator(nodeFactory.newName());
|
||||
decl.addArrayModifier(arrayModifier);
|
||||
setOffsetAndLength(decl);
|
||||
astStack.push(decl);
|
||||
|
||||
if(TRACE_AST_STACK) System.out.println(astStack);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* enum_specifier ::= 'enum' '{' <openscope> enumerator_list_opt '}'
|
||||
* | 'enum' enum_identifier '{' <openscope> enumerator_list_opt '}'
|
||||
|
|
|
@ -45,6 +45,7 @@ import org.eclipse.cdt.core.dom.ast.IASTLabelStatement;
|
|||
import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTName;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTNullStatement;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTProblem;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTProblemDeclaration;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTProblemExpression;
|
||||
|
@ -165,4 +166,6 @@ public interface IASTNodeFactory {
|
|||
public IASTArrayModifier newArrayModifier(IASTExpression expr);
|
||||
|
||||
public IASTArrayDeclarator newArrayDeclarator(IASTName name);
|
||||
|
||||
public IASTParameterDeclaration newParameterDeclaration(IASTDeclSpecifier declSpec, IASTDeclarator declarator);
|
||||
}
|
||||
|
|
|
@ -235,40 +235,6 @@ public class C99BuildASTParserAction extends BuildASTParserAction {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* declarator ::= <openscope> pointer direct_declarator
|
||||
*
|
||||
* abstract_declarator -- a declarator that does not include an identifier
|
||||
* ::= <openscope> pointer
|
||||
* | <openscope> pointer direct_abstract_declarator
|
||||
*/
|
||||
public void consumeDeclaratorWithPointer(boolean hasDeclarator) {
|
||||
if(TRACE_ACTIONS) DebugUtil.printMethodTrace();
|
||||
|
||||
IASTDeclarator decl;
|
||||
if(hasDeclarator)
|
||||
decl = (IASTDeclarator) astStack.pop();
|
||||
else
|
||||
decl = nodeFactory.newDeclarator(nodeFactory.newName());
|
||||
|
||||
// add all the pointers to the declarator
|
||||
if(TRACE_ACTIONS) DebugUtil.printMethodTrace();
|
||||
|
||||
List<Object> scope = astStack.closeScope();
|
||||
|
||||
for(Object o : scope) {
|
||||
decl.addPointerOperator((ICASTPointer)o);
|
||||
}
|
||||
|
||||
setOffsetAndLength(decl);
|
||||
astStack.push(decl);
|
||||
|
||||
if(TRACE_AST_STACK) System.out.println(astStack);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* type_qualifier ::= const | restrict | volatile
|
||||
|
@ -328,52 +294,13 @@ public class C99BuildASTParserAction extends BuildASTParserAction {
|
|||
if(TRACE_AST_STACK) System.out.println(astStack);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* init_declarator ::= declarator '=' initializer
|
||||
*/
|
||||
public void consumeDeclaratorWithInitializer() {
|
||||
if(TRACE_ACTIONS) DebugUtil.printMethodTrace();
|
||||
|
||||
IASTInitializer initializer = (IASTInitializer) astStack.pop();
|
||||
IASTDeclarator declarator = (IASTDeclarator) astStack.peek();
|
||||
declarator.setInitializer(initializer);
|
||||
setOffsetAndLength(declarator); // adjust the length to include the initializer
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Deprecated public void consumeDeclaratorCompleteField(/*IBinding binding*/) {
|
||||
//IASTDeclarator declarator = (IASTDeclarator) astStack.peek();
|
||||
//declarator.getName().setBinding(binding);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* direct_declarator ::= direct_declarator '(' <openscope> parameter_type_list ')'
|
||||
* direct_declarator ::= direct_declarator '(' ')'
|
||||
*/
|
||||
public void consumeDirectDeclaratorFunctionDeclarator(boolean hasParameters) {
|
||||
if(TRACE_ACTIONS) DebugUtil.printMethodTrace();
|
||||
|
||||
IASTName name = nodeFactory.newName();
|
||||
IASTStandardFunctionDeclarator declarator = nodeFactory.newFunctionDeclarator(name);
|
||||
|
||||
if(hasParameters) {
|
||||
boolean isVarArgs = astStack.pop() == PLACE_HOLDER;
|
||||
declarator.setVarArgs(isVarArgs);
|
||||
|
||||
for(Object o : astStack.closeScope()) {
|
||||
declarator.addParameterDeclaration((IASTParameterDeclaration)o);
|
||||
}
|
||||
}
|
||||
|
||||
int endOffset = endOffset(parser.getRightIToken());
|
||||
consumeDirectDeclaratorFunctionDeclarator(declarator, endOffset);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* direct_declarator ::= direct_declarator '(' <openscope> identifier_list ')'
|
||||
*/
|
||||
|
@ -385,7 +312,7 @@ public class C99BuildASTParserAction extends BuildASTParserAction {
|
|||
declarator.setParameterNames(names);
|
||||
astStack.closeScope();
|
||||
int endOffset = endOffset(parser.getRightIToken());
|
||||
consumeDirectDeclaratorFunctionDeclarator(declarator, endOffset);
|
||||
addFunctionModifier(declarator, endOffset);
|
||||
}
|
||||
|
||||
|
||||
|
@ -402,9 +329,7 @@ public class C99BuildASTParserAction extends BuildASTParserAction {
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* pointer ::= '*'
|
||||
|
@ -448,49 +373,8 @@ public class C99BuildASTParserAction extends BuildASTParserAction {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* parameter_declaration ::= declaration_specifiers declarator
|
||||
* | declaration_specifiers abstract_declarator
|
||||
*/
|
||||
public void consumeParameterDeclaration() {
|
||||
if(TRACE_ACTIONS) DebugUtil.printMethodTrace();
|
||||
|
||||
IASTDeclarator declarator = (IASTDeclarator) astStack.pop();
|
||||
IASTDeclSpecifier declSpec = (IASTDeclSpecifier) astStack.pop();
|
||||
IASTParameterDeclaration declaration = nodeFactory.newParameterDeclaration(declSpec, declarator);
|
||||
setOffsetAndLength(declaration);
|
||||
astStack.push(declaration);
|
||||
|
||||
if(TRACE_AST_STACK) System.out.println(astStack);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* parameter_declaration ::= declaration_specifiers
|
||||
*/
|
||||
public void consumeParameterDeclarationWithoutDeclarator(/*IBinding binding*/) {
|
||||
if(TRACE_ACTIONS) DebugUtil.printMethodTrace();
|
||||
|
||||
// offsets need to be calculated differently in this case
|
||||
final int endOffset = parser.getRightIToken().getEndOffset() + 1;
|
||||
|
||||
IASTName name = nodeFactory.newName();
|
||||
setOffsetAndLength(name, endOffset, 0);
|
||||
//name.setBinding(binding);
|
||||
|
||||
// it appears that a declarator is always required in the AST here
|
||||
IASTDeclarator declarator = nodeFactory.newDeclarator(name);
|
||||
setOffsetAndLength(declarator, endOffset, 0);
|
||||
|
||||
IASTDeclSpecifier declSpec = (IASTDeclSpecifier) astStack.pop();
|
||||
IASTParameterDeclaration declaration = nodeFactory.newParameterDeclaration(declSpec, declarator);
|
||||
|
||||
setOffsetAndLength(declaration);
|
||||
astStack.push(declaration);
|
||||
|
||||
if(TRACE_AST_STACK) System.out.println(astStack);
|
||||
}
|
||||
|
||||
|
||||
@Deprecated public void consumeDeclaratorCompleteParameter(/*IBinding binding*/) {
|
||||
//if(DEBUG) DebugUtil.printMethodTrace();
|
||||
|
@ -500,28 +384,7 @@ public class C99BuildASTParserAction extends BuildASTParserAction {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* direct_abstract_declarator
|
||||
* ::= array_modifier
|
||||
* | direct_abstract_declarator array_modifier
|
||||
*/
|
||||
public void consumeAbstractDeclaratorArrayModifier(boolean hasDeclarator) {
|
||||
if(TRACE_ACTIONS) DebugUtil.printMethodTrace();
|
||||
|
||||
IASTArrayModifier arrayModifier = (IASTArrayModifier) astStack.pop();
|
||||
|
||||
if(hasDeclarator) {
|
||||
consumeDeclaratorArray(arrayModifier);
|
||||
}
|
||||
else {
|
||||
IASTArrayDeclarator decl = nodeFactory.newArrayDeclarator(nodeFactory.newName());
|
||||
decl.addArrayModifier(arrayModifier);
|
||||
setOffsetAndLength(decl);
|
||||
astStack.push(decl);
|
||||
|
||||
if(TRACE_AST_STACK) System.out.println(astStack);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
@ -531,27 +394,29 @@ public class C99BuildASTParserAction extends BuildASTParserAction {
|
|||
* | '(' <openscope> parameter_type_list ')'
|
||||
* | direct_abstract_declarator '(' <openscope> parameter_type_list ')'
|
||||
*/
|
||||
public void consumeAbstractDeclaratorFunctionDeclarator(boolean hasDeclarator, boolean hasParameters) {
|
||||
public void consumeDirectDeclaratorFunctionDeclarator(boolean hasDeclarator, boolean hasParameters) {
|
||||
if(TRACE_ACTIONS) DebugUtil.printMethodTrace();
|
||||
|
||||
IASTStandardFunctionDeclarator declarator = nodeFactory.newFunctionDeclarator(nodeFactory.newName());
|
||||
IASTName name = nodeFactory.newName();
|
||||
IASTStandardFunctionDeclarator declarator = nodeFactory.newFunctionDeclarator(name);
|
||||
|
||||
if(hasParameters) {
|
||||
if(TRACE_ACTIONS) DebugUtil.printMethodTrace();
|
||||
for(Object o : astStack.closeScope()) {
|
||||
declarator.addParameterDeclaration((IASTParameterDeclaration)o);
|
||||
}
|
||||
boolean isVarArgs = astStack.pop() == PLACE_HOLDER;
|
||||
declarator.setVarArgs(isVarArgs);
|
||||
|
||||
for(Object param : astStack.closeScope())
|
||||
declarator.addParameterDeclaration((IASTParameterDeclaration)param);
|
||||
}
|
||||
|
||||
if(hasDeclarator) {
|
||||
consumeDirectDeclaratorFunctionDeclarator(declarator, endOffset(parser.getRightIToken()));
|
||||
addFunctionModifier(declarator, endOffset(parser.getRightIToken()));
|
||||
}
|
||||
else {
|
||||
setOffsetAndLength(declarator);
|
||||
astStack.push(declarator);
|
||||
|
||||
if(TRACE_AST_STACK) System.out.println(astStack);
|
||||
}
|
||||
|
||||
if(TRACE_AST_STACK) System.out.println(astStack);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -50,8 +50,6 @@ public interface IC99ASTNodeFactory extends IASTNodeFactory {
|
|||
|
||||
public ICASTPointer newCPointer();
|
||||
|
||||
public IASTParameterDeclaration newParameterDeclaration(IASTDeclSpecifier declSpec, IASTDeclarator declarator);
|
||||
|
||||
public ICASTDesignatedInitializer newCDesignatedInitializer(IASTInitializer rhs);
|
||||
|
||||
public ICASTArrayDesignator newCArrayDesignator(IASTExpression exp);
|
||||
|
|
|
@ -46,6 +46,7 @@ import org.eclipse.cdt.core.dom.ast.IASTLabelStatement;
|
|||
import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTName;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTNullStatement;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTPointer;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTProblem;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTProblemDeclaration;
|
||||
|
@ -137,6 +138,7 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNamespaceDefinition;
|
|||
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNewExpression;
|
||||
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNullStatement;
|
||||
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTOperatorName;
|
||||
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTParameterDeclaration;
|
||||
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTPointer;
|
||||
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTPointerToMember;
|
||||
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTProblem;
|
||||
|
@ -164,12 +166,13 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTUsingDirective;
|
|||
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTVisibilityLabel;
|
||||
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTWhileStatement;
|
||||
|
||||
@SuppressWarnings("restriction") // all AST node constructors are internal
|
||||
|
||||
/**
|
||||
* Abstract factory implementation that creates C++ AST nodes.
|
||||
*
|
||||
* @author Mike Kucera
|
||||
*/
|
||||
@SuppressWarnings("restriction") // all AST node constructors are internal
|
||||
public class CPPASTNodeFactory implements ICPPASTNodeFactory {
|
||||
|
||||
public static final CPPASTNodeFactory DEFAULT_INSTANCE = new CPPASTNodeFactory();
|
||||
|
@ -495,4 +498,9 @@ public class CPPASTNodeFactory implements ICPPASTNodeFactory {
|
|||
return new CPPASTFunctionDeclarator(name);
|
||||
}
|
||||
|
||||
public IASTParameterDeclaration newParameterDeclaration(
|
||||
IASTDeclSpecifier declSpec, IASTDeclarator declarator) {
|
||||
return new CPPASTParameterDeclaration(declSpec, declarator);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1254,41 +1254,6 @@ public class CPPBuildASTParserAction extends BuildASTParserAction {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* declarator
|
||||
* ::= <openscope-ast> ptr_operator_seq_opt direct_declarator
|
||||
*/
|
||||
public void consumeDeclaratorWithPointer() {
|
||||
if(TRACE_ACTIONS) DebugUtil.printMethodTrace();
|
||||
|
||||
IASTDeclarator declarator = (IASTDeclarator) astStack.pop();
|
||||
|
||||
for(Object ptr : astStack.closeScope()) {
|
||||
declarator.addPointerOperator((IASTPointerOperator) ptr);
|
||||
}
|
||||
|
||||
setOffsetAndLength(declarator); // TODO is it correct to change the offset and length?
|
||||
astStack.push(declarator);
|
||||
|
||||
if(TRACE_AST_STACK) System.out.println(astStack);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* init_declarator
|
||||
* ::= declarator initializer
|
||||
*/
|
||||
public void consumeDeclaratorWithInitializer() {
|
||||
if(TRACE_ACTIONS) DebugUtil.printMethodTrace();
|
||||
|
||||
IASTInitializer initializer = (IASTInitializer) astStack.pop();
|
||||
IASTDeclarator declarator = (IASTDeclarator) astStack.peek();
|
||||
declarator.setInitializer(initializer);
|
||||
setOffsetAndLength(declarator); // adjust the length to include the initializer
|
||||
|
||||
if(TRACE_AST_STACK) System.out.println(astStack);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* initializer
|
||||
|
@ -1311,7 +1276,7 @@ public class CPPBuildASTParserAction extends BuildASTParserAction {
|
|||
* ::= basic_direct_declarator '(' <openscope-ast> parameter_declaration_clause ')'
|
||||
* <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
|
||||
*/
|
||||
public void consumeDirectDeclaratorFunctionDeclarator() {
|
||||
public void consumeDirectDeclaratorFunctionDeclarator(boolean hasDeclarator) {
|
||||
if(TRACE_ACTIONS) DebugUtil.printMethodTrace();
|
||||
|
||||
IASTName name = nodeFactory.newName();
|
||||
|
@ -1320,6 +1285,7 @@ public class CPPBuildASTParserAction extends BuildASTParserAction {
|
|||
for(Object typeId : astStack.closeScope()) {
|
||||
declarator.addExceptionSpecificationTypeId((IASTTypeId) typeId);
|
||||
}
|
||||
|
||||
for(Object token : astStack.closeScope()) {
|
||||
switch(((IToken)token).getKind()) {
|
||||
default: assert false;
|
||||
|
@ -1335,8 +1301,14 @@ public class CPPBuildASTParserAction extends BuildASTParserAction {
|
|||
declarator.addParameterDeclaration((IASTParameterDeclaration)o);
|
||||
}
|
||||
|
||||
int endOffset = endOffset(parser.getRightIToken());
|
||||
consumeDirectDeclaratorFunctionDeclarator(declarator, endOffset);
|
||||
if(hasDeclarator) {
|
||||
int endOffset = endOffset(parser.getRightIToken());
|
||||
addFunctionModifier(declarator, endOffset);
|
||||
}
|
||||
else {
|
||||
setOffsetAndLength(declarator);
|
||||
astStack.push(declarator);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -685,7 +685,7 @@ init_declarator_list
|
|||
init_declarator
|
||||
::= complete_declarator
|
||||
| complete_declarator '=' initializer
|
||||
/. $Build consumeDeclaratorWithInitializer(); $EndBuild ./
|
||||
/. $Build consumeDeclaratorWithInitializer(true); $EndBuild ./
|
||||
|
||||
|
||||
complete_declarator
|
||||
|
@ -886,7 +886,7 @@ function_specifier
|
|||
|
||||
declarator
|
||||
::= direct_declarator
|
||||
| <openscope-ast> pointer direct_declarator
|
||||
| <openscope-ast> pointer_seq direct_declarator
|
||||
/. $Build consumeDeclaratorWithPointer(true); $EndBuild ./
|
||||
|
||||
|
||||
|
@ -916,9 +916,9 @@ declarator_id_name
|
|||
|
||||
array_direct_declarator
|
||||
::= basic_direct_declarator array_modifier
|
||||
/. $Build consumeDirectDeclaratorArrayDeclarator(); $EndBuild ./
|
||||
/. $Build consumeDirectDeclaratorArrayDeclarator(true); $EndBuild ./
|
||||
| array_direct_declarator array_modifier
|
||||
/. $Build consumeDirectDeclaratorArrayDeclarator(); $EndBuild ./
|
||||
/. $Build consumeDirectDeclaratorArrayDeclarator(true); $EndBuild ./
|
||||
|
||||
|
||||
function_prototype_direct_declarator
|
||||
|
@ -928,14 +928,14 @@ function_prototype_direct_declarator
|
|||
|
||||
function_direct_declarator
|
||||
::= basic_direct_declarator '(' <openscope-symbol> <openscope-ast> parameter_type_list ')'
|
||||
/. $Build consumeDirectDeclaratorFunctionDeclarator(true); $EndBuild ./
|
||||
/. $Build consumeDirectDeclaratorFunctionDeclarator(true, true); $EndBuild ./
|
||||
| basic_direct_declarator '(' <openscope-symbol> ')'
|
||||
/. $Build consumeDirectDeclaratorFunctionDeclarator(false); $EndBuild ./
|
||||
/. $Build consumeDirectDeclaratorFunctionDeclarator(true, false); $EndBuild ./
|
||||
|
||||
|
||||
function_declarator
|
||||
::= function_direct_declarator
|
||||
| <openscope-ast> pointer function_direct_declarator
|
||||
| <openscope-ast> pointer_seq function_direct_declarator
|
||||
/. $Build consumeDeclaratorWithPointer(true); $EndBuild ./
|
||||
|
||||
|
||||
|
@ -953,7 +953,7 @@ knr_direct_declarator
|
|||
|
||||
knr_function_declarator
|
||||
::= knr_direct_declarator
|
||||
| <openscope-ast> pointer knr_direct_declarator
|
||||
| <openscope-ast> pointer_seq knr_direct_declarator
|
||||
/. $Build consumeDeclaratorWithPointer(true); $EndBuild ./
|
||||
|
||||
|
||||
|
@ -989,14 +989,14 @@ array_modifier_type_qualifiers
|
|||
::= type_qualifier_list
|
||||
|
||||
|
||||
pointer
|
||||
pointer_seq
|
||||
::= '*'
|
||||
/. $Build consumePointer(); $EndBuild ./
|
||||
| pointer '*'
|
||||
| pointer_seq '*'
|
||||
/. $Build consumePointer(); $EndBuild ./
|
||||
| '*' <openscope-ast> type_qualifier_list
|
||||
/. $Build consumePointerTypeQualifierList(); $EndBuild ./
|
||||
| pointer '*' <openscope-ast> type_qualifier_list
|
||||
| pointer_seq '*' <openscope-ast> type_qualifier_list
|
||||
/. $Build consumePointerTypeQualifierList(); $EndBuild ./
|
||||
|
||||
|
||||
|
@ -1066,29 +1066,41 @@ type_name
|
|||
|
||||
abstract_declarator -- a declarator that does not include an identifier
|
||||
::= direct_abstract_declarator
|
||||
| <openscope-ast> pointer
|
||||
| <openscope-ast> pointer_seq
|
||||
/. $Build consumeDeclaratorWithPointer(false); $EndBuild ./
|
||||
| <openscope-ast> pointer_seq direct_abstract_declarator
|
||||
/. $Build consumeDeclaratorWithPointer(false); $EndBuild ./
|
||||
| <openscope-ast> pointer direct_abstract_declarator
|
||||
/. $Build consumeDeclaratorWithPointer(true); $EndBuild ./
|
||||
|
||||
|
||||
-- rewritten to use the more general array_modifier rule
|
||||
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_modifier
|
||||
/. $Build consumeAbstractDeclaratorArrayModifier(false); $EndBuild ./
|
||||
| direct_abstract_declarator array_modifier
|
||||
/. $Build consumeAbstractDeclaratorArrayModifier(true); $EndBuild ./
|
||||
| '(' ')'
|
||||
/. $Build consumeAbstractDeclaratorFunctionDeclarator(false, false); $EndBuild ./
|
||||
| direct_abstract_declarator '(' ')'
|
||||
/. $Build consumeAbstractDeclaratorFunctionDeclarator(true, false); $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 consumeAbstractDeclaratorFunctionDeclarator(false, true); $EndBuild ./
|
||||
| direct_abstract_declarator '(' <openscope-ast> parameter_type_list ')'
|
||||
/. $Build consumeAbstractDeclaratorFunctionDeclarator(true, true); $EndBuild ./
|
||||
|
||||
/. $Build consumeDirectDeclaratorFunctionDeclarator(false, true); $EndBuild ./
|
||||
| basic_direct_abstract_declarator '(' <openscope-ast> parameter_type_list ')'
|
||||
/. $Build consumeDirectDeclaratorFunctionDeclarator(true, true); $EndBuild ./
|
||||
|
||||
|
||||
initializer
|
||||
|
|
|
@ -27,7 +27,6 @@ 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.internal.core.dom.lrparser.c99.bindings.IC99Scope;
|
||||
import org.eclipse.cdt.core.dom.lrparser.util.DebugUtil;
|
||||
|
||||
public class C99Parser extends AbstractTrialUndoActionProvider< C99ParserAction , Object > implements IParserActionTokenProvider, IParser {
|
||||
|
@ -181,7 +180,7 @@ public int getKind(int i) {
|
|||
// Initialize ruleAction array.
|
||||
//
|
||||
static {
|
||||
RULE_ACTIONS = new Action[305 + 1];
|
||||
RULE_ACTIONS = new Action[309 + 1];
|
||||
RULE_ACTIONS[0] = null;
|
||||
|
||||
RULE_ACTIONS[1] = new Action1();
|
||||
|
@ -334,29 +333,30 @@ public int getKind(int i) {
|
|||
RULE_ACTIONS[266] = new Action266();
|
||||
RULE_ACTIONS[268] = new Action268();
|
||||
RULE_ACTIONS[269] = new Action269();
|
||||
RULE_ACTIONS[270] = new Action270();
|
||||
RULE_ACTIONS[271] = new Action271();
|
||||
RULE_ACTIONS[272] = new Action272();
|
||||
RULE_ACTIONS[273] = new Action273();
|
||||
RULE_ACTIONS[274] = new Action274();
|
||||
RULE_ACTIONS[275] = new Action275();
|
||||
RULE_ACTIONS[276] = new Action276();
|
||||
RULE_ACTIONS[277] = new Action277();
|
||||
RULE_ACTIONS[278] = new Action278();
|
||||
RULE_ACTIONS[283] = new Action283();
|
||||
RULE_ACTIONS[279] = new Action279();
|
||||
RULE_ACTIONS[280] = new Action280();
|
||||
RULE_ACTIONS[281] = new Action281();
|
||||
RULE_ACTIONS[282] = new Action282();
|
||||
RULE_ACTIONS[287] = new Action287();
|
||||
RULE_ACTIONS[288] = new Action288();
|
||||
RULE_ACTIONS[289] = new Action289();
|
||||
RULE_ACTIONS[290] = new Action290();
|
||||
RULE_ACTIONS[291] = new Action291();
|
||||
RULE_ACTIONS[292] = new Action292();
|
||||
RULE_ACTIONS[297] = new Action297();
|
||||
RULE_ACTIONS[298] = new Action298();
|
||||
RULE_ACTIONS[293] = new Action293();
|
||||
RULE_ACTIONS[294] = new Action294();
|
||||
RULE_ACTIONS[295] = new Action295();
|
||||
RULE_ACTIONS[296] = new Action296();
|
||||
RULE_ACTIONS[301] = new Action301();
|
||||
RULE_ACTIONS[302] = new Action302();
|
||||
RULE_ACTIONS[303] = new Action303();
|
||||
RULE_ACTIONS[304] = new Action304();
|
||||
RULE_ACTIONS[305] = new Action305();
|
||||
RULE_ACTIONS[306] = new Action306();
|
||||
RULE_ACTIONS[307] = new Action307();
|
||||
RULE_ACTIONS[308] = new Action308();
|
||||
RULE_ACTIONS[309] = new Action309();
|
||||
|
||||
|
||||
//
|
||||
|
@ -1345,7 +1345,7 @@ public int getKind(int i) {
|
|||
static final class Action160 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeDeclaratorWithInitializer(); /* action.builder.getASTStack().print();*/
|
||||
consumeDeclaratorWithInitializer(true); /* action.builder.getASTStack().print();*/
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1701,7 +1701,7 @@ public int getKind(int i) {
|
|||
}
|
||||
|
||||
//
|
||||
// Rule 220: declarator ::= <openscope-ast> pointer direct_declarator
|
||||
// Rule 220: declarator ::= <openscope-ast> pointer_seq direct_declarator
|
||||
//
|
||||
static final class Action220 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
|
@ -1759,7 +1759,7 @@ public int getKind(int i) {
|
|||
static final class Action228 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeDirectDeclaratorArrayDeclarator(); /* action.builder.getASTStack().print();*/
|
||||
consumeDirectDeclaratorArrayDeclarator(true); /* action.builder.getASTStack().print();*/
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1769,7 +1769,7 @@ public int getKind(int i) {
|
|||
static final class Action229 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeDirectDeclaratorArrayDeclarator(); /* action.builder.getASTStack().print();*/
|
||||
consumeDirectDeclaratorArrayDeclarator(true); /* action.builder.getASTStack().print();*/
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1795,7 +1795,7 @@ public int getKind(int i) {
|
|||
static final class Action231 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeDirectDeclaratorFunctionDeclarator(true); /* action.builder.getASTStack().print();*/
|
||||
consumeDirectDeclaratorFunctionDeclarator(true, true); /* action.builder.getASTStack().print();*/
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1805,12 +1805,12 @@ public int getKind(int i) {
|
|||
static final class Action232 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeDirectDeclaratorFunctionDeclarator(false); /* action.builder.getASTStack().print();*/
|
||||
consumeDirectDeclaratorFunctionDeclarator(true, false); /* action.builder.getASTStack().print();*/
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 234: function_declarator ::= <openscope-ast> pointer function_direct_declarator
|
||||
// Rule 234: function_declarator ::= <openscope-ast> pointer_seq function_direct_declarator
|
||||
//
|
||||
static final class Action234 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
|
@ -1830,7 +1830,7 @@ public int getKind(int i) {
|
|||
}
|
||||
|
||||
//
|
||||
// Rule 237: knr_function_declarator ::= <openscope-ast> pointer knr_direct_declarator
|
||||
// Rule 237: knr_function_declarator ::= <openscope-ast> pointer_seq knr_direct_declarator
|
||||
//
|
||||
static final class Action237 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
|
@ -1950,7 +1950,7 @@ public int getKind(int i) {
|
|||
}
|
||||
|
||||
//
|
||||
// Rule 250: pointer ::= *
|
||||
// Rule 250: pointer_seq ::= *
|
||||
//
|
||||
static final class Action250 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
|
@ -1960,7 +1960,7 @@ public int getKind(int i) {
|
|||
}
|
||||
|
||||
//
|
||||
// Rule 251: pointer ::= pointer *
|
||||
// Rule 251: pointer_seq ::= pointer_seq *
|
||||
//
|
||||
static final class Action251 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
|
@ -1970,7 +1970,7 @@ public int getKind(int i) {
|
|||
}
|
||||
|
||||
//
|
||||
// Rule 252: pointer ::= * <openscope-ast> type_qualifier_list
|
||||
// Rule 252: pointer_seq ::= * <openscope-ast> type_qualifier_list
|
||||
//
|
||||
static final class Action252 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
|
@ -1980,7 +1980,7 @@ public int getKind(int i) {
|
|||
}
|
||||
|
||||
//
|
||||
// Rule 253: pointer ::= pointer * <openscope-ast> type_qualifier_list
|
||||
// Rule 253: pointer_seq ::= pointer_seq * <openscope-ast> type_qualifier_list
|
||||
//
|
||||
static final class Action253 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
|
@ -2137,7 +2137,7 @@ public int getKind(int i) {
|
|||
}
|
||||
|
||||
//
|
||||
// Rule 268: abstract_declarator ::= <openscope-ast> pointer
|
||||
// Rule 268: abstract_declarator ::= <openscope-ast> pointer_seq
|
||||
//
|
||||
static final class Action268 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
|
@ -2147,19 +2147,19 @@ public int getKind(int i) {
|
|||
}
|
||||
|
||||
//
|
||||
// Rule 269: abstract_declarator ::= <openscope-ast> pointer direct_abstract_declarator
|
||||
// Rule 269: abstract_declarator ::= <openscope-ast> pointer_seq direct_abstract_declarator
|
||||
//
|
||||
static final class Action269 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeDeclaratorWithPointer(true); /* action.builder.getASTStack().print();*/
|
||||
consumeDeclaratorWithPointer(false); /* action.builder.getASTStack().print();*/
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 270: direct_abstract_declarator ::= ( abstract_declarator )
|
||||
// Rule 273: basic_direct_abstract_declarator ::= ( abstract_declarator )
|
||||
//
|
||||
static final class Action270 extends DeclaredAction< C99ParserAction , Object > {
|
||||
static final class Action273 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeDirectDeclaratorBracketed(); /* action.builder.getASTStack().print();*/
|
||||
|
@ -2167,79 +2167,89 @@ public int getKind(int i) {
|
|||
}
|
||||
|
||||
//
|
||||
// Rule 271: direct_abstract_declarator ::= array_modifier
|
||||
//
|
||||
static final class Action271 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeAbstractDeclaratorArrayModifier(false); /* action.builder.getASTStack().print();*/
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 272: direct_abstract_declarator ::= direct_abstract_declarator array_modifier
|
||||
//
|
||||
static final class Action272 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeAbstractDeclaratorArrayModifier(true); /* action.builder.getASTStack().print();*/
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 273: direct_abstract_declarator ::= ( )
|
||||
//
|
||||
static final class Action273 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeAbstractDeclaratorFunctionDeclarator(false, false); /* action.builder.getASTStack().print();*/
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 274: direct_abstract_declarator ::= direct_abstract_declarator ( )
|
||||
// Rule 274: array_direct_abstract_declarator ::= array_modifier
|
||||
//
|
||||
static final class Action274 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeAbstractDeclaratorFunctionDeclarator(true, false); /* action.builder.getASTStack().print();*/
|
||||
consumeDirectDeclaratorArrayDeclarator(false); /* action.builder.getASTStack().print();*/
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 275: direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list )
|
||||
// Rule 275: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
|
||||
//
|
||||
static final class Action275 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeAbstractDeclaratorFunctionDeclarator(false, true); /* action.builder.getASTStack().print();*/
|
||||
consumeDirectDeclaratorArrayDeclarator(true); /* action.builder.getASTStack().print();*/
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 276: direct_abstract_declarator ::= direct_abstract_declarator ( <openscope-ast> parameter_type_list )
|
||||
// Rule 276: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
|
||||
//
|
||||
static final class Action276 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeAbstractDeclaratorFunctionDeclarator(true, true); /* action.builder.getASTStack().print();*/
|
||||
consumeDirectDeclaratorArrayDeclarator(true); /* action.builder.getASTStack().print();*/
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 277: initializer ::= assignment_expression
|
||||
// Rule 277: function_direct_abstract_declarator ::= ( )
|
||||
//
|
||||
static final class Action277 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeDirectDeclaratorFunctionDeclarator(false, false); /* action.builder.getASTStack().print();*/
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 278: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( )
|
||||
//
|
||||
static final class Action278 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeDirectDeclaratorFunctionDeclarator(true, false); /* action.builder.getASTStack().print();*/
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 279: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list )
|
||||
//
|
||||
static final class Action279 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeDirectDeclaratorFunctionDeclarator(false, true); /* action.builder.getASTStack().print();*/
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 280: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list )
|
||||
//
|
||||
static final class Action280 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeDirectDeclaratorFunctionDeclarator(true, true); /* action.builder.getASTStack().print();*/
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 281: initializer ::= assignment_expression
|
||||
//
|
||||
static final class Action281 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeInitializer(); /* action.builder.getASTStack().print();*/
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 278: initializer ::= { <openscope-ast> initializer_list comma_opt }
|
||||
// Rule 282: initializer ::= { <openscope-ast> initializer_list comma_opt }
|
||||
//
|
||||
static final class Action278 extends DeclaredAction< C99ParserAction , Object > {
|
||||
static final class Action282 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeInitializerList(); /* action.builder.getASTStack().print();*/
|
||||
|
@ -2247,9 +2257,9 @@ public int getKind(int i) {
|
|||
}
|
||||
|
||||
//
|
||||
// Rule 283: designated_initializer ::= <openscope-ast> designation = initializer
|
||||
// Rule 287: designated_initializer ::= <openscope-ast> designation = initializer
|
||||
//
|
||||
static final class Action283 extends DeclaredAction< C99ParserAction , Object > {
|
||||
static final class Action287 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeInitializerDesignated(); /* action.builder.getASTStack().print();*/
|
||||
|
@ -2257,59 +2267,59 @@ public int getKind(int i) {
|
|||
}
|
||||
|
||||
//
|
||||
// Rule 287: designator_base ::= [ constant_expression ]
|
||||
//
|
||||
static final class Action287 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeDesignatorArray(); /* action.builder.getASTStack().print();*/
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 288: designator_base ::= . identifier_or_typedefname
|
||||
//
|
||||
static final class Action288 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeDesignatorField(); /* action.builder.getASTStack().print();*/
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 289: designator ::= [ constant_expression ]
|
||||
//
|
||||
static final class Action289 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeDesignatorArray(); /* action.builder.getASTStack().print();*/
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 290: designator ::= . identifier_or_typedefname
|
||||
//
|
||||
static final class Action290 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeDesignatorField(); /* action.builder.getASTStack().print();*/
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 291: translation_unit ::= external_declaration_list
|
||||
// Rule 291: designator_base ::= [ constant_expression ]
|
||||
//
|
||||
static final class Action291 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeDesignatorArray(); /* action.builder.getASTStack().print();*/
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 292: designator_base ::= . identifier_or_typedefname
|
||||
//
|
||||
static final class Action292 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeDesignatorField(); /* action.builder.getASTStack().print();*/
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 293: designator ::= [ constant_expression ]
|
||||
//
|
||||
static final class Action293 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeDesignatorArray(); /* action.builder.getASTStack().print();*/
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 294: designator ::= . identifier_or_typedefname
|
||||
//
|
||||
static final class Action294 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeDesignatorField(); /* action.builder.getASTStack().print();*/
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 295: translation_unit ::= external_declaration_list
|
||||
//
|
||||
static final class Action295 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeTranslationUnit(); /* action.builder.getASTStack().print();*/
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 292: translation_unit ::= $Empty
|
||||
// Rule 296: translation_unit ::= $Empty
|
||||
//
|
||||
static final class Action292 extends DeclaredAction< C99ParserAction , Object > {
|
||||
static final class Action296 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeTranslationUnit(); /* action.builder.getASTStack().print();*/
|
||||
|
@ -2317,9 +2327,9 @@ public int getKind(int i) {
|
|||
}
|
||||
|
||||
//
|
||||
// Rule 297: external_declaration ::= ;
|
||||
// Rule 301: external_declaration ::= ;
|
||||
//
|
||||
static final class Action297 extends DeclaredAction< C99ParserAction , Object > {
|
||||
static final class Action301 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeDeclarationEmpty(); /* action.builder.getASTStack().print();*/
|
||||
|
@ -2327,9 +2337,9 @@ public int getKind(int i) {
|
|||
}
|
||||
|
||||
//
|
||||
// Rule 298: external_declaration ::= ERROR_TOKEN
|
||||
// Rule 302: external_declaration ::= ERROR_TOKEN
|
||||
//
|
||||
static final class Action298 extends DeclaredAction< C99ParserAction , Object > {
|
||||
static final class Action302 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeDeclarationProblem(); /* action.builder.getASTStack().print();*/
|
||||
|
@ -2338,9 +2348,9 @@ public int getKind(int i) {
|
|||
|
||||
|
||||
//
|
||||
// Rule 301: function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body
|
||||
// Rule 305: function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body
|
||||
//
|
||||
static final class Action301 extends DeclaredAction< C99ParserAction , Object > {
|
||||
static final class Action305 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
|
||||
public boolean doTrial(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.resolver.
|
||||
|
@ -2348,7 +2358,7 @@ public int getKind(int i) {
|
|||
return hasUndo;
|
||||
}
|
||||
|
||||
public Action301() { hasUndo = true; };
|
||||
public Action305() { hasUndo = true; };
|
||||
public void doUndo(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.resolver.undo();
|
||||
}
|
||||
|
||||
|
@ -2361,9 +2371,9 @@ public int getKind(int i) {
|
|||
|
||||
|
||||
//
|
||||
// Rule 302: function_definition ::= <openscope-declaration> <openscope-ast> function_declarator function_body
|
||||
// Rule 306: function_definition ::= <openscope-declaration> <openscope-ast> function_declarator function_body
|
||||
//
|
||||
static final class Action302 extends DeclaredAction< C99ParserAction , Object > {
|
||||
static final class Action306 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
|
||||
public boolean doTrial(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.resolver.
|
||||
|
@ -2371,7 +2381,7 @@ public int getKind(int i) {
|
|||
return hasUndo;
|
||||
}
|
||||
|
||||
public Action302() { hasUndo = true; };
|
||||
public Action306() { hasUndo = true; };
|
||||
public void doUndo(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.resolver.undo();
|
||||
}
|
||||
|
||||
|
@ -2384,9 +2394,9 @@ public int getKind(int i) {
|
|||
|
||||
|
||||
//
|
||||
// Rule 303: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement
|
||||
// Rule 307: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement
|
||||
//
|
||||
static final class Action303 extends DeclaredAction< C99ParserAction , Object > {
|
||||
static final class Action307 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
|
||||
public boolean doTrial(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.resolver.
|
||||
|
@ -2394,7 +2404,7 @@ public int getKind(int i) {
|
|||
return hasUndo;
|
||||
}
|
||||
|
||||
public Action303() { hasUndo = true; };
|
||||
public Action307() { hasUndo = true; };
|
||||
public void doUndo(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.resolver.undo();
|
||||
}
|
||||
|
||||
|
@ -2406,9 +2416,9 @@ public int getKind(int i) {
|
|||
}
|
||||
|
||||
//
|
||||
// Rule 304: function_body ::= { }
|
||||
// Rule 308: function_body ::= { }
|
||||
//
|
||||
static final class Action304 extends DeclaredAction< C99ParserAction , Object > {
|
||||
static final class Action308 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeStatementCompoundStatement(false); /* action.builder.getASTStack().print();*/
|
||||
|
@ -2416,9 +2426,9 @@ public int getKind(int i) {
|
|||
}
|
||||
|
||||
//
|
||||
// Rule 305: function_body ::= { <openscope-ast> block_item_list }
|
||||
// Rule 309: function_body ::= { <openscope-ast> block_item_list }
|
||||
//
|
||||
static final class Action305 extends DeclaredAction< C99ParserAction , Object > {
|
||||
static final class Action309 extends DeclaredAction< C99ParserAction , Object > {
|
||||
|
||||
public void doFinal(ITrialUndoActionProvider< Object > provider, C99ParserAction action) { action.builder.
|
||||
consumeStatementCompoundStatement(true); /* action.builder.getASTStack().print();*/
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -923,6 +923,7 @@ declaration_specifiers_opt
|
|||
no_type_declaration_specifier
|
||||
::= storage_class_specifier
|
||||
| function_specifier
|
||||
| cv_qualifier
|
||||
| 'friend'
|
||||
/. $Build consumeDeclSpecToken(); $EndBuild ./
|
||||
| 'typedef'
|
||||
|
@ -998,13 +999,12 @@ typedef_name
|
|||
::= 'identifier'
|
||||
|
||||
|
||||
type_specifier
|
||||
::= simple_type_specifier -- int, void etc...
|
||||
| class_specifier -- structs, unions, classes
|
||||
| enum_specifier -- enums
|
||||
| elaborated_type_specifier -- its elaborated, but this is different than c, includes typename
|
||||
| cv_qualifier -- the const and volatile keywords (separated because they can be applied to pointer modifiers)
|
||||
|
||||
--type_specifier
|
||||
-- ::= simple_type_specifier -- int, void etc...
|
||||
-- | class_specifier -- structs, unions, classes
|
||||
-- | enum_specifier -- enums
|
||||
-- | elaborated_type_specifier -- its elaborated, but this is different than c, includes typename
|
||||
-- | cv_qualifier -- the const and volatile keywords (separated because they can be applied to pointer modifiers)
|
||||
|
||||
|
||||
--simple_type_specifier
|
||||
|
@ -1191,12 +1191,13 @@ init_declarator_list_opt
|
|||
init_declarator
|
||||
::= declarator
|
||||
| declarator initializer
|
||||
/. $Build consumeDeclaratorWithInitializer(); $EndBuild ./
|
||||
/. $Build consumeDeclaratorWithInitializer(true); $EndBuild ./
|
||||
|
||||
|
||||
declarator
|
||||
::= <openscope-ast> ptr_operator_seq_opt direct_declarator
|
||||
/. $Build consumeDeclaratorWithPointer(); $EndBuild ./
|
||||
::= direct_declarator
|
||||
| <openscope-ast> ptr_operator_seq direct_declarator
|
||||
/. $Build consumeDeclaratorWithPointer(true); $EndBuild ./
|
||||
|
||||
|
||||
direct_declarator
|
||||
|
@ -1214,13 +1215,14 @@ basic_direct_declarator
|
|||
|
||||
function_direct_declarator
|
||||
::= basic_direct_declarator '(' <openscope-ast> parameter_declaration_clause ')' <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
|
||||
/. $Build consumeDirectDeclaratorFunctionDeclarator(); $EndBuild ./
|
||||
/. $Build consumeDirectDeclaratorFunctionDeclarator(true); $EndBuild ./
|
||||
|
||||
|
||||
array_direct_declarator
|
||||
::= array_direct_declarator array_modifier
|
||||
/. $Build consumeDirectDeclaratorArrayDeclarator(); $EndBuild ./
|
||||
/. $Build consumeDirectDeclaratorArrayDeclarator(true); $EndBuild ./
|
||||
| basic_direct_declarator array_modifier
|
||||
/. $Build consumeDirectDeclaratorArrayDeclarator(); $EndBuild ./
|
||||
/. $Build consumeDirectDeclaratorArrayDeclarator(true); $EndBuild ./
|
||||
|
||||
|
||||
array_modifier
|
||||
|
@ -1278,32 +1280,53 @@ type_id
|
|||
/. $Build consumeTypeId(true); $EndBuild ./
|
||||
|
||||
|
||||
--type_specifier_seq
|
||||
-- ::= type_specifier
|
||||
-- | type_specifier_seq type_specifier
|
||||
|
||||
|
||||
-- more lenient than spec, but easier to deal with
|
||||
type_specifier_seq
|
||||
::= type_specifier
|
||||
| type_specifier_seq type_specifier
|
||||
::= declaration_specifiers
|
||||
|
||||
|
||||
|
||||
abstract_declarator
|
||||
::= ptr_operator abstract_declarator_opt
|
||||
| direct_abstract_declarator
|
||||
|
||||
|
||||
abstract_declarator_opt
|
||||
::= abstract_declarator
|
||||
| $empty
|
||||
::= direct_abstract_declarator
|
||||
| <openscope-ast> ptr_operator_seq
|
||||
/. $Build consumeDeclaratorWithPointer(false); $EndBuild ./
|
||||
| <openscope-ast> ptr_operator_seq direct_abstract_declarator
|
||||
/. $Build consumeDeclaratorWithPointer(true); $EndBuild ./
|
||||
|
||||
|
||||
|
||||
direct_abstract_declarator
|
||||
::= direct_abstract_declarator_opt '(' <openscope-ast> parameter_declaration_clause ')' <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
|
||||
| direct_abstract_declarator_opt '[' constant_expression_opt ']'
|
||||
| '(' abstract_declarator ')'
|
||||
|
||||
|
||||
direct_abstract_declarator_opt
|
||||
::= direct_abstract_declarator
|
||||
| $empty
|
||||
::= 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
|
||||
::= basic_direct_abstract_declarator '(' <openscope-ast> parameter_declaration_clause ')' <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
|
||||
/. $Build consumeDirectDeclaratorFunctionDeclarator(true); $EndBuild ./
|
||||
| '(' <openscope-ast> parameter_declaration_clause ')' <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
|
||||
/. $Build consumeDirectDeclaratorFunctionDeclarator(false); $EndBuild ./
|
||||
|
||||
|
||||
-- actions just place a marker indicating if '...' was parsed
|
||||
parameter_declaration_clause
|
||||
::= parameter_declaration_list_opt '...'
|
||||
/. $Build consumePlaceHolder(); $EndBuild ./
|
||||
|
@ -1317,15 +1340,47 @@ parameter_declaration_list
|
|||
::= parameter_declaration
|
||||
| parameter_declaration_list ',' parameter_declaration
|
||||
|
||||
|
||||
parameter_declaration_list_opt
|
||||
::= parameter_declaration_list
|
||||
| $empty
|
||||
|
||||
|
||||
-- its just a declarator with an initializer
|
||||
--parameter_declaration
|
||||
-- ::= declaration_specifiers declarator
|
||||
-- | declaration_specifiers declarator = assignment_expression
|
||||
-- | declaration_specifiers abstract_declarator_opt
|
||||
-- | declaration_specifiers abstract_declarator_opt = assignment_expression
|
||||
|
||||
|
||||
abstract_declarator_opt
|
||||
::= abstract_declarator
|
||||
| $empty
|
||||
/. $Build consumeEmpty(); $EndBuild ./
|
||||
|
||||
|
||||
parameter_declaration
|
||||
::= declaration_specifiers declarator
|
||||
| declaration_specifiers declarator = assignment_expression
|
||||
| declaration_specifiers abstract_declarator_opt
|
||||
| declaration_specifiers abstract_declarator_opt = assignment_expression
|
||||
::= declaration_specifiers parameter_init_declarator
|
||||
/. $Build consumeParameterDeclaration(); $EndBuild ./
|
||||
| declaration_specifiers
|
||||
/. $Build consumeParameterDeclarationWithoutDeclarator(); $EndBuild ./
|
||||
|
||||
|
||||
parameter_init_declarator
|
||||
::= declarator
|
||||
| declarator '=' parameter_initializer
|
||||
/. $Build consumeDeclaratorWithInitializer(true); $EndBuild ./
|
||||
| abstract_declarator
|
||||
| abstract_declarator '=' parameter_initializer
|
||||
/. $Build consumeDeclaratorWithInitializer(true); $EndBuild ./
|
||||
| '=' parameter_initializer
|
||||
/. $Build consumeDeclaratorWithInitializer(false); $EndBuild ./
|
||||
|
||||
|
||||
parameter_initializer
|
||||
::= assignment_expression
|
||||
/. $Build consumeInitializer(); $EndBuild ./
|
||||
|
||||
|
||||
function_definition
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -15,68 +15,68 @@ package org.eclipse.cdt.internal.core.dom.lrparser.cpp;
|
|||
|
||||
public interface CPPParsersym {
|
||||
public final static int
|
||||
TK_asm = 54,
|
||||
TK_auto = 55,
|
||||
TK_bool = 8,
|
||||
TK_asm = 63,
|
||||
TK_auto = 49,
|
||||
TK_bool = 13,
|
||||
TK_break = 76,
|
||||
TK_case = 77,
|
||||
TK_catch = 115,
|
||||
TK_char = 9,
|
||||
TK_class = 41,
|
||||
TK_const = 67,
|
||||
TK_char = 14,
|
||||
TK_class = 58,
|
||||
TK_const = 47,
|
||||
TK_const_cast = 26,
|
||||
TK_continue = 78,
|
||||
TK_default = 79,
|
||||
TK_delete = 42,
|
||||
TK_delete = 41,
|
||||
TK_do = 80,
|
||||
TK_double = 10,
|
||||
TK_double = 15,
|
||||
TK_dynamic_cast = 27,
|
||||
TK_else = 120,
|
||||
TK_enum = 44,
|
||||
TK_explicit = 56,
|
||||
TK_enum = 64,
|
||||
TK_explicit = 50,
|
||||
TK_export = 72,
|
||||
TK_extern = 45,
|
||||
TK_extern = 42,
|
||||
TK_false = 28,
|
||||
TK_float = 11,
|
||||
TK_float = 16,
|
||||
TK_for = 81,
|
||||
TK_friend = 57,
|
||||
TK_friend = 51,
|
||||
TK_goto = 82,
|
||||
TK_if = 83,
|
||||
TK_inline = 58,
|
||||
TK_int = 12,
|
||||
TK_long = 13,
|
||||
TK_mutable = 59,
|
||||
TK_namespace = 53,
|
||||
TK_inline = 52,
|
||||
TK_int = 17,
|
||||
TK_long = 18,
|
||||
TK_mutable = 53,
|
||||
TK_namespace = 60,
|
||||
TK_new = 43,
|
||||
TK_operator = 7,
|
||||
TK_operator = 6,
|
||||
TK_private = 116,
|
||||
TK_protected = 117,
|
||||
TK_public = 118,
|
||||
TK_register = 60,
|
||||
TK_register = 54,
|
||||
TK_reinterpret_cast = 29,
|
||||
TK_return = 84,
|
||||
TK_short = 14,
|
||||
TK_signed = 15,
|
||||
TK_short = 19,
|
||||
TK_signed = 20,
|
||||
TK_sizeof = 30,
|
||||
TK_static = 61,
|
||||
TK_static = 55,
|
||||
TK_static_cast = 31,
|
||||
TK_struct = 46,
|
||||
TK_struct = 65,
|
||||
TK_switch = 85,
|
||||
TK_template = 48,
|
||||
TK_template = 44,
|
||||
TK_this = 32,
|
||||
TK_throw = 39,
|
||||
TK_try = 73,
|
||||
TK_true = 33,
|
||||
TK_typedef = 62,
|
||||
TK_typedef = 56,
|
||||
TK_typeid = 34,
|
||||
TK_typename = 21,
|
||||
TK_union = 47,
|
||||
TK_unsigned = 16,
|
||||
TK_using = 51,
|
||||
TK_virtual = 52,
|
||||
TK_void = 17,
|
||||
TK_volatile = 68,
|
||||
TK_wchar_t = 18,
|
||||
TK_typename = 10,
|
||||
TK_union = 66,
|
||||
TK_unsigned = 21,
|
||||
TK_using = 59,
|
||||
TK_virtual = 46,
|
||||
TK_void = 22,
|
||||
TK_volatile = 48,
|
||||
TK_wchar_t = 23,
|
||||
TK_while = 75,
|
||||
TK_integer = 35,
|
||||
TK_floating = 36,
|
||||
|
@ -88,27 +88,27 @@ public interface CPPParsersym {
|
|||
TK_Completion = 122,
|
||||
TK_EndOfCompletion = 123,
|
||||
TK_Invalid = 124,
|
||||
TK_LeftBracket = 63,
|
||||
TK_LeftBracket = 61,
|
||||
TK_LeftParen = 2,
|
||||
TK_LeftBrace = 50,
|
||||
TK_LeftBrace = 57,
|
||||
TK_Dot = 114,
|
||||
TK_DotStar = 94,
|
||||
TK_Arrow = 101,
|
||||
TK_ArrowStar = 88,
|
||||
TK_PlusPlus = 22,
|
||||
TK_MinusMinus = 23,
|
||||
TK_And = 5,
|
||||
TK_Star = 4,
|
||||
TK_Plus = 19,
|
||||
TK_Minus = 20,
|
||||
TK_Tilde = 6,
|
||||
TK_PlusPlus = 11,
|
||||
TK_MinusMinus = 12,
|
||||
TK_And = 7,
|
||||
TK_Star = 5,
|
||||
TK_Plus = 8,
|
||||
TK_Minus = 9,
|
||||
TK_Tilde = 4,
|
||||
TK_Bang = 25,
|
||||
TK_Slash = 89,
|
||||
TK_Percent = 90,
|
||||
TK_RightShift = 86,
|
||||
TK_LeftShift = 87,
|
||||
TK_LT = 64,
|
||||
TK_GT = 65,
|
||||
TK_LT = 62,
|
||||
TK_GT = 67,
|
||||
TK_LE = 91,
|
||||
TK_GE = 92,
|
||||
TK_EQ = 95,
|
||||
|
@ -117,11 +117,11 @@ public interface CPPParsersym {
|
|||
TK_Or = 98,
|
||||
TK_AndAnd = 99,
|
||||
TK_OrOr = 100,
|
||||
TK_Question = 113,
|
||||
TK_Colon = 69,
|
||||
TK_Question = 112,
|
||||
TK_Colon = 70,
|
||||
TK_ColonColon = 3,
|
||||
TK_DotDotDot = 93,
|
||||
TK_Assign = 70,
|
||||
TK_Assign = 69,
|
||||
TK_StarAssign = 102,
|
||||
TK_SlashAssign = 103,
|
||||
TK_PercentAssign = 104,
|
||||
|
@ -132,12 +132,12 @@ public interface CPPParsersym {
|
|||
TK_AndAssign = 109,
|
||||
TK_CaretAssign = 110,
|
||||
TK_OrAssign = 111,
|
||||
TK_Comma = 66,
|
||||
TK_RightBracket = 112,
|
||||
TK_Comma = 68,
|
||||
TK_RightBracket = 113,
|
||||
TK_RightParen = 74,
|
||||
TK_RightBrace = 71,
|
||||
TK_SemiColon = 40,
|
||||
TK_ERROR_TOKEN = 49,
|
||||
TK_ERROR_TOKEN = 45,
|
||||
TK_EOF_TOKEN = 119;
|
||||
|
||||
public final static String orderedTerminalSymbols[] = {
|
||||
|
@ -145,10 +145,15 @@ public interface CPPParsersym {
|
|||
"identifier",
|
||||
"LeftParen",
|
||||
"ColonColon",
|
||||
"Star",
|
||||
"And",
|
||||
"Tilde",
|
||||
"Star",
|
||||
"operator",
|
||||
"And",
|
||||
"Plus",
|
||||
"Minus",
|
||||
"typename",
|
||||
"PlusPlus",
|
||||
"MinusMinus",
|
||||
"bool",
|
||||
"char",
|
||||
"double",
|
||||
|
@ -160,11 +165,6 @@ public interface CPPParsersym {
|
|||
"unsigned",
|
||||
"void",
|
||||
"wchar_t",
|
||||
"Plus",
|
||||
"Minus",
|
||||
"typename",
|
||||
"PlusPlus",
|
||||
"MinusMinus",
|
||||
"stringlit",
|
||||
"Bang",
|
||||
"const_cast",
|
||||
|
@ -182,20 +182,14 @@ public interface CPPParsersym {
|
|||
"zero",
|
||||
"throw",
|
||||
"SemiColon",
|
||||
"class",
|
||||
"delete",
|
||||
"new",
|
||||
"enum",
|
||||
"extern",
|
||||
"struct",
|
||||
"union",
|
||||
"new",
|
||||
"template",
|
||||
"ERROR_TOKEN",
|
||||
"LeftBrace",
|
||||
"using",
|
||||
"virtual",
|
||||
"namespace",
|
||||
"asm",
|
||||
"const",
|
||||
"volatile",
|
||||
"auto",
|
||||
"explicit",
|
||||
"friend",
|
||||
|
@ -204,14 +198,20 @@ public interface CPPParsersym {
|
|||
"register",
|
||||
"static",
|
||||
"typedef",
|
||||
"LeftBrace",
|
||||
"class",
|
||||
"using",
|
||||
"namespace",
|
||||
"LeftBracket",
|
||||
"LT",
|
||||
"asm",
|
||||
"enum",
|
||||
"struct",
|
||||
"union",
|
||||
"GT",
|
||||
"Comma",
|
||||
"const",
|
||||
"volatile",
|
||||
"Colon",
|
||||
"Assign",
|
||||
"Colon",
|
||||
"RightBrace",
|
||||
"export",
|
||||
"try",
|
||||
|
@ -253,8 +253,8 @@ public interface CPPParsersym {
|
|||
"AndAssign",
|
||||
"CaretAssign",
|
||||
"OrAssign",
|
||||
"RightBracket",
|
||||
"Question",
|
||||
"RightBracket",
|
||||
"Dot",
|
||||
"catch",
|
||||
"private",
|
||||
|
|
Loading…
Add table
Reference in a new issue