mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-13 19:25:38 +02:00
CORE
Further restructuring of Parser for ISourceElementRequestor. Added interfaces/implementation for Simple Declarations. Cleaned up DOM's representation of Constructor chains. TESTS Added DOMTests::testAssignmentExpression() Added PreprocessorConditionalTest to ParserTestSuite.
This commit is contained in:
parent
f3ed140c9c
commit
b2aacbd3c1
24 changed files with 1031 additions and 251 deletions
|
@ -1,3 +1,7 @@
|
||||||
|
2003-06-30 John Camelon
|
||||||
|
Added DOMTests::testAssignmentExpression()
|
||||||
|
Added PreprocessorConditionalTest to ParserTestSuite.
|
||||||
|
|
||||||
2003-06-28 John Camelon
|
2003-06-28 John Camelon
|
||||||
Completed Quickparse expression representation.
|
Completed Quickparse expression representation.
|
||||||
Updated ExpressionEvaluation and associated tests.
|
Updated ExpressionEvaluation and associated tests.
|
||||||
|
|
|
@ -34,7 +34,7 @@ public class BaseScannerTest extends TestCase {
|
||||||
super(x);
|
super(x);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void initializeScanner(String input)
|
protected void initializeScanner(String input)
|
||||||
{
|
{
|
||||||
scanner= ParserFactory.createScanner( new StringReader(input),"TEXT", null, null, null );
|
scanner= ParserFactory.createScanner( new StringReader(input),"TEXT", null, null, null );
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package org.eclipse.cdt.core.parser.tests;
|
package org.eclipse.cdt.core.parser.tests;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.StringWriter;
|
import java.io.StringWriter;
|
||||||
import java.io.Writer;
|
import java.io.Writer;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
@ -15,7 +14,6 @@ import org.eclipse.cdt.internal.core.dom.ClassKey;
|
||||||
import org.eclipse.cdt.internal.core.dom.ClassSpecifier;
|
import org.eclipse.cdt.internal.core.dom.ClassSpecifier;
|
||||||
import org.eclipse.cdt.internal.core.dom.ConstructorChain;
|
import org.eclipse.cdt.internal.core.dom.ConstructorChain;
|
||||||
import org.eclipse.cdt.internal.core.dom.ConstructorChainElement;
|
import org.eclipse.cdt.internal.core.dom.ConstructorChainElement;
|
||||||
import org.eclipse.cdt.internal.core.dom.ConstructorChainElementExpression;
|
|
||||||
import org.eclipse.cdt.internal.core.dom.DeclSpecifier;
|
import org.eclipse.cdt.internal.core.dom.DeclSpecifier;
|
||||||
import org.eclipse.cdt.internal.core.dom.Declaration;
|
import org.eclipse.cdt.internal.core.dom.Declaration;
|
||||||
import org.eclipse.cdt.internal.core.dom.Declarator;
|
import org.eclipse.cdt.internal.core.dom.Declarator;
|
||||||
|
@ -914,59 +912,7 @@ public class DOMTests extends BaseDOMTest {
|
||||||
assertEquals( chainElements1.size(), 2 );
|
assertEquals( chainElements1.size(), 2 );
|
||||||
ConstructorChainElement element1_1 = (ConstructorChainElement) chainElements1.get(0);
|
ConstructorChainElement element1_1 = (ConstructorChainElement) chainElements1.get(0);
|
||||||
assertEquals( element1_1.getName().toString(), "RTActor");
|
assertEquals( element1_1.getName().toString(), "RTActor");
|
||||||
List expressions1_1 = element1_1.getExpressionList();
|
|
||||||
assertEquals( expressions1_1.size(), 2 );
|
|
||||||
ConstructorChainElementExpression expression1_1_1 = (ConstructorChainElementExpression)expressions1_1.get(0);
|
|
||||||
assertEquals( expression1_1_1.getExpression().elements().size(), 1 );
|
|
||||||
Name t1_1_1 = (Name)expression1_1_1.getExpression().elements().get(0);
|
|
||||||
ConstructorChainElementExpression expression1_1_2 = (ConstructorChainElementExpression)expressions1_1.get(1);
|
|
||||||
assertEquals( expression1_1_2.getExpression().elements().size(), 1 );
|
|
||||||
Name t1_1_2 = (Name)expression1_1_2.getExpression().elements().get(0);
|
|
||||||
|
|
||||||
assertEquals( t1_1_1.toString(), "rtg_rts");
|
|
||||||
assertEquals( t1_1_2.toString(), "rtg_ref");
|
|
||||||
|
|
||||||
ConstructorChainElement element1_2 = (ConstructorChainElement) chainElements1.get(1);
|
|
||||||
assertEquals( element1_2.getName().toString(), "myId" );
|
|
||||||
List expressions1_2 = element1_2.getExpressionList();
|
|
||||||
assertEquals( expressions1_2.size(), 1 );
|
|
||||||
ConstructorChainElementExpression expression = (ConstructorChainElementExpression) expressions1_2.get(0);
|
|
||||||
assertEquals( expression.getExpression().elements().size(), 1 );
|
|
||||||
Token t = (Token)expression.getExpression().elements().get(0);
|
|
||||||
assertEquals( t.getImage(), "0");
|
|
||||||
assertEquals( t.getType(), IToken.tINTEGER );
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// public void testErrors()
|
|
||||||
// {
|
|
||||||
// validateWeEncounterAnError( "void myFunc( int hey, flo );");
|
|
||||||
// }
|
|
||||||
|
|
||||||
public void validateWeEncounterAnError( String codeText )
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// Parse and get the translaton unit
|
|
||||||
Writer code = new StringWriter();
|
|
||||||
code.write(codeText);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
TranslationUnit translationUnit = parse(code.toString());
|
|
||||||
fail( "We should not reach this line. Failure.");
|
|
||||||
} catch( ParserException pe )
|
|
||||||
{
|
|
||||||
}
|
|
||||||
catch( Exception e )
|
|
||||||
{
|
|
||||||
fail( "Unknown exception " + e.getMessage() );
|
|
||||||
}
|
|
||||||
}catch( IOException io )
|
|
||||||
{
|
|
||||||
fail( "IOException thrown");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testTemplateDeclarationOfMethod() throws Exception
|
public void testTemplateDeclarationOfMethod() throws Exception
|
||||||
|
@ -2239,6 +2185,11 @@ public class DOMTests extends BaseDOMTest {
|
||||||
assertEquals( ((ParameterDeclaration)clause2.getDeclarations().get(0)).getDeclSpecifier().getType(), DeclSpecifier.t_float );
|
assertEquals( ((ParameterDeclaration)clause2.getDeclarations().get(0)).getDeclSpecifier().getType(), DeclSpecifier.t_float );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testAssignmentExpressions() throws Exception
|
||||||
|
{
|
||||||
|
parse( "int x = y = z = 5;");
|
||||||
|
}
|
||||||
|
|
||||||
public void testBug39348() throws Exception
|
public void testBug39348() throws Exception
|
||||||
{
|
{
|
||||||
parse("unsigned char a[sizeof (struct sss)];");
|
parse("unsigned char a[sizeof (struct sss)];");
|
||||||
|
|
|
@ -34,6 +34,7 @@ public class ParserTestSuite extends TestCase {
|
||||||
suite.addTestSuite(CModelElementsTests.class);
|
suite.addTestSuite(CModelElementsTests.class);
|
||||||
suite.addTestSuite(MacroTests.class);
|
suite.addTestSuite(MacroTests.class);
|
||||||
suite.addTestSuite( PreprocessorTest.class );
|
suite.addTestSuite( PreprocessorTest.class );
|
||||||
|
suite.addTestSuite( PreprocessorConditionalTest.class );
|
||||||
return suite;
|
return suite;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,107 @@
|
||||||
|
/**********************************************************************
|
||||||
|
* Copyright (c) 2002,2003 Rational Software Corporation and others.
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Common Public License v0.5
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
* http://www.eclipse.org/legal/cpl-v05.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* IBM Rational Software - Initial API and implementation
|
||||||
|
***********************************************************************/
|
||||||
|
package org.eclipse.cdt.core.parser.tests;
|
||||||
|
|
||||||
|
import java.io.StringReader;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.parser.EndOfFile;
|
||||||
|
import org.eclipse.cdt.core.parser.IToken;
|
||||||
|
import org.eclipse.cdt.core.parser.ParserFactory;
|
||||||
|
import org.eclipse.cdt.core.parser.ParserMode;
|
||||||
|
import org.eclipse.cdt.core.parser.ScannerException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author jcamelon
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class PreprocessorConditionalTest extends BaseScannerTest
|
||||||
|
{
|
||||||
|
|
||||||
|
protected void initializeScanner(String input, Map definitions )
|
||||||
|
{
|
||||||
|
scanner= ParserFactory.createScanner( new StringReader(input),"TEXT", definitions, null, ParserMode.COMPLETE_PARSE );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected void evaluateConditionalsPositive( String conditional, Map definitions )
|
||||||
|
{
|
||||||
|
|
||||||
|
StringBuffer buff = new StringBuffer();
|
||||||
|
buff.append( "#if " );
|
||||||
|
buff.append( conditional );
|
||||||
|
buff.append( "\n int x;\n#else\n#error NEVER\n#endif\n");
|
||||||
|
initializeScanner( buff.toString(), definitions );
|
||||||
|
evaluate();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void evaluateConditionalsNegative( String conditional, Map definitions )
|
||||||
|
{
|
||||||
|
|
||||||
|
StringBuffer buff = new StringBuffer();
|
||||||
|
buff.append( "#if " );
|
||||||
|
buff.append( conditional );
|
||||||
|
buff.append( "\n#error NEVER\n#else\n int x;\n#endif\n");
|
||||||
|
initializeScanner( buff.toString(), definitions );
|
||||||
|
evaluate();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private void evaluate()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
validateToken( IToken.t_int );
|
||||||
|
validateIdentifier( "x");
|
||||||
|
validateToken( IToken.tSEMI );
|
||||||
|
scanner.nextToken();
|
||||||
|
fail( "Should have hit EOF by now");
|
||||||
|
}
|
||||||
|
catch( ScannerException se )
|
||||||
|
{
|
||||||
|
fail( "Got #error, should not have gotten that.");
|
||||||
|
}
|
||||||
|
catch( EndOfFile eof )
|
||||||
|
{
|
||||||
|
// expected
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param x
|
||||||
|
*/
|
||||||
|
public PreprocessorConditionalTest(String x)
|
||||||
|
{
|
||||||
|
super(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testConditionals()
|
||||||
|
{
|
||||||
|
Map definitions = new HashMap();
|
||||||
|
definitions.put( "DEFED", "" );
|
||||||
|
definitions.put( "VALUE", "30 ");
|
||||||
|
|
||||||
|
evaluateConditionalsPositive( "defined( DEFED )", definitions );
|
||||||
|
evaluateConditionalsNegative( "defined( NOTDEFED )", definitions );
|
||||||
|
|
||||||
|
evaluateConditionalsNegative( "! defined( DEFED )", definitions );
|
||||||
|
evaluateConditionalsPositive( "! defined( NOTDEFED )", definitions );
|
||||||
|
|
||||||
|
evaluateConditionalsPositive( "defined( VALUE ) && VALUE == 30", definitions );
|
||||||
|
evaluateConditionalsNegative( "defined( VALUE ) && VALUE == 40", definitions );
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -12,10 +12,6 @@
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
package org.eclipse.cdt.internal.core.dom;
|
package org.eclipse.cdt.internal.core.dom;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.eclipse.cdt.internal.core.parser.Name;
|
import org.eclipse.cdt.internal.core.parser.Name;
|
||||||
|
|
||||||
|
|
||||||
|
@ -23,10 +19,9 @@ import org.eclipse.cdt.internal.core.parser.Name;
|
||||||
* @author jcamelon
|
* @author jcamelon
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class ConstructorChainElement {
|
public class ConstructorChainElement implements IExpressionOwner {
|
||||||
|
|
||||||
private Name name;
|
private Name name;
|
||||||
private List expressionList = new ArrayList();
|
|
||||||
private final ConstructorChain ownerChain;
|
private final ConstructorChain ownerChain;
|
||||||
|
|
||||||
ConstructorChainElement( ConstructorChain chain )
|
ConstructorChainElement( ConstructorChain chain )
|
||||||
|
@ -49,17 +44,7 @@ public class ConstructorChainElement {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return List
|
|
||||||
*/
|
|
||||||
public List getExpressionList() {
|
|
||||||
return Collections.unmodifiableList( expressionList );
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addExpression( ConstructorChainElementExpression expression )
|
|
||||||
{
|
|
||||||
expressionList.add( expression );
|
|
||||||
}
|
|
||||||
/**
|
/**
|
||||||
* @return ConstructorChain
|
* @return ConstructorChain
|
||||||
*/
|
*/
|
||||||
|
@ -67,4 +52,22 @@ public class ConstructorChainElement {
|
||||||
return ownerChain;
|
return ownerChain;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private Expression exp = null;
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.internal.core.dom.IExpressionOwner#getExpression()
|
||||||
|
*/
|
||||||
|
public Expression getExpression()
|
||||||
|
{
|
||||||
|
return exp;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.internal.core.dom.IExpressionOwner#setExpression(org.eclipse.cdt.internal.core.dom.Expression)
|
||||||
|
*/
|
||||||
|
public void setExpression(Expression exp)
|
||||||
|
{
|
||||||
|
this.exp = exp;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,51 +0,0 @@
|
||||||
/**********************************************************************
|
|
||||||
* Created on Mar 28, 2003
|
|
||||||
*
|
|
||||||
* Copyright (c) 2002,2003 Rational Software Corporation and others.
|
|
||||||
* All rights reserved. This program and the accompanying materials
|
|
||||||
* are made available under the terms of the Common Public License v0.5
|
|
||||||
* which accompanies this distribution, and is available at
|
|
||||||
* http://www.eclipse.org/legal/cpl-v05.html
|
|
||||||
*
|
|
||||||
* Contributors:
|
|
||||||
* Rational Software - Initial API and implementation
|
|
||||||
***********************************************************************/
|
|
||||||
package org.eclipse.cdt.internal.core.dom;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author jcamelon
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class ConstructorChainElementExpression implements IExpressionOwner {
|
|
||||||
|
|
||||||
Expression exp;
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see org.eclipse.cdt.internal.core.dom.IExpressionOwner#getExpression()
|
|
||||||
*/
|
|
||||||
public Expression getExpression() {
|
|
||||||
return exp;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see org.eclipse.cdt.internal.core.dom.IExpressionOwner#setExpression(org.eclipse.cdt.internal.core.dom.Expression)
|
|
||||||
*/
|
|
||||||
public void setExpression(Expression exp) {
|
|
||||||
this.exp = exp;
|
|
||||||
}
|
|
||||||
|
|
||||||
ConstructorChainElementExpression( ConstructorChainElement element )
|
|
||||||
{
|
|
||||||
this.ownerElement = element;
|
|
||||||
}
|
|
||||||
|
|
||||||
private final ConstructorChainElement ownerElement;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return ConstructorChainElement
|
|
||||||
*/
|
|
||||||
public ConstructorChainElement getOwnerElement() {
|
|
||||||
return ownerElement;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -801,21 +801,6 @@ public class DOMBuilder implements IParserCallback, ISourceElementRequestor
|
||||||
ele.setName(currName);
|
ele.setName(currName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#constructorChainElementExpressionListElementBegin(java.lang.Object)
|
|
||||||
*/
|
|
||||||
public Object constructorChainElementExpressionListElementBegin(Object element) {
|
|
||||||
return new ConstructorChainElementExpression( (ConstructorChainElement)element );
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#constructorChainElementExpressionListElementEnd(java.lang.Object)
|
|
||||||
*/
|
|
||||||
public void constructorChainElementExpressionListElementEnd(Object expression) {
|
|
||||||
ConstructorChainElementExpression exp = (ConstructorChainElementExpression)expression;
|
|
||||||
exp.getOwnerElement().addExpression( exp );
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#explicitInstantiationBegin(java.lang.Object)
|
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#explicitInstantiationBegin(java.lang.Object)
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -335,6 +335,7 @@ public class DeclSpecifier {
|
||||||
type.append("short ");
|
type.append("short ");
|
||||||
if (isLong())
|
if (isLong())
|
||||||
type.append("long ");
|
type.append("long ");
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default :
|
default :
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2003-06-30 John Camelon
|
||||||
|
Further restructuring of Parser for ISourceElementRequestor.
|
||||||
|
Added interfaces/implementation for Simple Declarations.
|
||||||
|
Cleaned up DOM's representation of Constructor chains.
|
||||||
|
|
||||||
2003-06-28 John Camelon
|
2003-06-28 John Camelon
|
||||||
Completed Quickparse expression representation.
|
Completed Quickparse expression representation.
|
||||||
Updated ExpressionEvaluation and associated tests.
|
Updated ExpressionEvaluation and associated tests.
|
||||||
|
|
|
@ -122,9 +122,6 @@ public interface IParserCallback {
|
||||||
public void constructorChainElementId( Object element );
|
public void constructorChainElementId( Object element );
|
||||||
public void constructorChainElementEnd( Object element );
|
public void constructorChainElementEnd( Object element );
|
||||||
|
|
||||||
public Object constructorChainElementExpressionListElementBegin( Object element );
|
|
||||||
public void constructorChainElementExpressionListElementEnd( Object expression );
|
|
||||||
|
|
||||||
public Object explicitInstantiationBegin( Object container);
|
public Object explicitInstantiationBegin( Object container);
|
||||||
public void explicitInstantiationEnd( Object instantiation );
|
public void explicitInstantiationEnd( Object instantiation );
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
/**********************************************************************
|
||||||
|
* Copyright (c) 2002,2003 Rational Software Corporation and others.
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Common Public License v0.5
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
* http://www.eclipse.org/legal/cpl-v05.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* IBM Rational Software - Initial API and implementation
|
||||||
|
***********************************************************************/
|
||||||
|
package org.eclipse.cdt.core.parser.ast;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author jcamelon
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public interface IASTConstructorMemberInitializer
|
||||||
|
{
|
||||||
|
public IASTExpression getExpressionList();
|
||||||
|
public String getName();
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
/**********************************************************************
|
||||||
|
* Copyright (c) 2002,2003 Rational Software Corporation and others.
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Common Public License v0.5
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
* http://www.eclipse.org/legal/cpl-v05.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* IBM Rational Software - Initial API and implementation
|
||||||
|
***********************************************************************/
|
||||||
|
package org.eclipse.cdt.core.parser.ast;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author jcamelon
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public interface IASTExceptionSpecification
|
||||||
|
{
|
||||||
|
public List getTypeIds();
|
||||||
|
}
|
|
@ -16,6 +16,7 @@ import org.eclipse.cdt.core.parser.Backtrack;
|
||||||
import org.eclipse.cdt.core.parser.ITokenDuple;
|
import org.eclipse.cdt.core.parser.ITokenDuple;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier.ClassNameType;
|
import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier.ClassNameType;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTExpression.IASTNewExpressionDescriptor;
|
import org.eclipse.cdt.core.parser.ast.IASTExpression.IASTNewExpressionDescriptor;
|
||||||
|
import org.eclipse.cdt.internal.core.parser.IASTArrayModifier;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author jcamelon
|
* @author jcamelon
|
||||||
|
@ -75,6 +76,22 @@ public interface IASTFactory {
|
||||||
|
|
||||||
public IASTExpression.IASTNewExpressionDescriptor createNewDescriptor();
|
public IASTExpression.IASTNewExpressionDescriptor createNewDescriptor();
|
||||||
|
|
||||||
public IASTInitializerClause createIASTInitializerClause(IASTInitializerClause.Kind kind, IASTExpression assignmentExpression, List initializerClauses);
|
public IASTInitializerClause createInitializerClause(IASTInitializerClause.Kind kind, IASTExpression assignmentExpression, List initializerClauses);
|
||||||
|
|
||||||
|
public IASTExceptionSpecification createExceptionSpecification( List typeIds );
|
||||||
|
/**
|
||||||
|
* @param exp
|
||||||
|
*/
|
||||||
|
public IASTArrayModifier createArrayModifier(IASTExpression exp);
|
||||||
|
/**
|
||||||
|
* @param duple
|
||||||
|
* @param expressionList
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public IASTConstructorMemberInitializer createConstructorMemberInitializer(ITokenDuple duple, IASTExpression expressionList );
|
||||||
|
|
||||||
|
public IASTSimpleTypeSpecifier createSimpleTypeSpecifier( IASTSimpleTypeSpecifier.SimpleType kind, ITokenDuple typeName, boolean isShort, boolean isLong, boolean isSigned, boolean isUnsigned, boolean isTypename );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
/**********************************************************************
|
||||||
|
* Copyright (c) 2002,2003 Rational Software Corporation and others.
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Common Public License v0.5
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
* http://www.eclipse.org/legal/cpl-v05.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* IBM Rational Software - Initial API and implementation
|
||||||
|
***********************************************************************/
|
||||||
|
package org.eclipse.cdt.core.parser.ast;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.parser.Enum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author jcamelon
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public interface IASTSimpleTypeSpecifier extends IASTTypeSpecifier
|
||||||
|
{
|
||||||
|
public static class SimpleType extends Enum
|
||||||
|
{
|
||||||
|
public static final SimpleType UNSPECIFIED = new SimpleType( 1 );
|
||||||
|
public static final SimpleType CHAR = new SimpleType( 1 );
|
||||||
|
public static final SimpleType WCHAR_T = new SimpleType( 2 );
|
||||||
|
public static final SimpleType BOOL = new SimpleType( 3 );
|
||||||
|
public static final SimpleType INT = new SimpleType( 4 );
|
||||||
|
public static final SimpleType FLOAT = new SimpleType( 5 );
|
||||||
|
public static final SimpleType DOUBLE = new SimpleType( 6 );
|
||||||
|
public static final SimpleType VOID = new SimpleType( 7 );
|
||||||
|
public static final SimpleType TYPENAME = new SimpleType( 8 );
|
||||||
|
public static final SimpleType TEMPLATE = new SimpleType( 9 );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param enumValue
|
||||||
|
*/
|
||||||
|
protected SimpleType(int enumValue)
|
||||||
|
{
|
||||||
|
super(enumValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public SimpleType getType();
|
||||||
|
public String getTypename();
|
||||||
|
public boolean isLong();
|
||||||
|
public boolean isShort();
|
||||||
|
public boolean isSigned();
|
||||||
|
public boolean isUnsigned();
|
||||||
|
public boolean isTypename();
|
||||||
|
}
|
|
@ -12,10 +12,16 @@ package org.eclipse.cdt.internal.core.parser;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
|
||||||
|
import org.eclipse.cdt.core.parser.ast.IASTField;
|
||||||
|
import org.eclipse.cdt.core.parser.ast.IASTFunction;
|
||||||
|
import org.eclipse.cdt.core.parser.ast.IASTMethod;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTScope;
|
import org.eclipse.cdt.core.parser.ast.IASTScope;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier;
|
import org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier;
|
||||||
|
import org.eclipse.cdt.core.parser.ast.IASTVariable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author jcamelon
|
* @author jcamelon
|
||||||
|
@ -300,5 +306,72 @@ public class DeclarationWrapper
|
||||||
typeSpecifier = specifier;
|
typeSpecifier = specifier;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param requestor
|
||||||
|
*/
|
||||||
|
public List createAndCallbackASTNodes()
|
||||||
|
{
|
||||||
|
Iterator i = declarators.iterator();
|
||||||
|
List l = new ArrayList();
|
||||||
|
while( i.hasNext() )
|
||||||
|
l.add( createAndCallbackASTNode( (Declarator)i.next() ) );
|
||||||
|
return l;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @param declarator
|
||||||
|
*/
|
||||||
|
private Object createAndCallbackASTNode(Declarator declarator)
|
||||||
|
{
|
||||||
|
boolean isWithinClass = ( getScope() instanceof IASTClassSpecifier );
|
||||||
|
boolean isFunction = declarator.isFunction();
|
||||||
|
|
||||||
|
if( isWithinClass && isFunction )
|
||||||
|
return createMethodASTNode( declarator );
|
||||||
|
else if( isWithinClass )
|
||||||
|
return createFieldASTNode( declarator );
|
||||||
|
else if ( ( ! isWithinClass )&& isFunction )
|
||||||
|
return createFunctionASTNode( declarator );
|
||||||
|
else
|
||||||
|
return createVariableASTNode( declarator );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param declarator
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private IASTMethod createMethodASTNode(Declarator declarator)
|
||||||
|
{
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @param declarator
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private IASTFunction createFunctionASTNode(Declarator declarator)
|
||||||
|
{
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @param declarator
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private IASTField createFieldASTNode(Declarator declarator)
|
||||||
|
{
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @param declarator
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private IASTVariable createVariableASTNode(Declarator declarator)
|
||||||
|
{
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,10 @@ import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.parser.ITokenDuple;
|
||||||
|
import org.eclipse.cdt.core.parser.ast.IASTConstructorMemberInitializer;
|
||||||
|
import org.eclipse.cdt.core.parser.ast.IASTExceptionSpecification;
|
||||||
|
import org.eclipse.cdt.core.parser.ast.IASTExpression;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTInitializerClause;
|
import org.eclipse.cdt.core.parser.ast.IASTInitializerClause;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -22,12 +26,25 @@ import org.eclipse.cdt.core.parser.ast.IASTInitializerClause;
|
||||||
*/
|
*/
|
||||||
public class Declarator implements IParameterCollection
|
public class Declarator implements IParameterCollection
|
||||||
{
|
{
|
||||||
private final DeclarationWrapper owner1;
|
private boolean isFunction;
|
||||||
|
private boolean hasFunctionBody;
|
||||||
|
private IASTExpression constructorExpression;
|
||||||
|
private boolean pureVirtual = false;
|
||||||
|
private final DeclarationWrapper owner1;
|
||||||
private final Declarator owner2;
|
private final Declarator owner2;
|
||||||
private String name;
|
private Declarator ownedDeclarator = null;
|
||||||
private IASTInitializerClause initializerClause;
|
private String name = "";
|
||||||
|
private IASTInitializerClause initializerClause = null;
|
||||||
private List ptrOps = new ArrayList();
|
private List ptrOps = new ArrayList();
|
||||||
private List parameters = new ArrayList();
|
private List parameters = new ArrayList();
|
||||||
|
private List arrayModifiers = new ArrayList();
|
||||||
|
private List constructorMemberInitializers = new ArrayList();
|
||||||
|
private IASTExceptionSpecification exceptionSpecification = null;
|
||||||
|
private IASTExpression bitFieldExpression = null;
|
||||||
|
private boolean isConst = false;
|
||||||
|
private boolean isVolatile = false;
|
||||||
|
private boolean isKandR = false;
|
||||||
|
|
||||||
|
|
||||||
private int nameStartOffset, nameEndOffset;
|
private int nameStartOffset, nameEndOffset;
|
||||||
|
|
||||||
|
@ -146,4 +163,195 @@ public class Declarator implements IParameterCollection
|
||||||
initializerClause = expression;
|
initializerClause = expression;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public Declarator getOwnedDeclarator()
|
||||||
|
{
|
||||||
|
return ownedDeclarator;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param declarator
|
||||||
|
*/
|
||||||
|
public void setOwnedDeclarator(Declarator declarator)
|
||||||
|
{
|
||||||
|
ownedDeclarator = declarator;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName( ITokenDuple duple )
|
||||||
|
{
|
||||||
|
setName( duple.toString() );
|
||||||
|
setNameStartOffset( duple.getFirstToken().getOffset());
|
||||||
|
setNameEndOffset( duple.getLastToken().getEndOffset());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public IASTExceptionSpecification getExceptionSpecification()
|
||||||
|
{
|
||||||
|
return exceptionSpecification;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public boolean isConst()
|
||||||
|
{
|
||||||
|
return isConst;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public boolean isVolatile()
|
||||||
|
{
|
||||||
|
return isVolatile;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param specification
|
||||||
|
*/
|
||||||
|
public void setExceptionSpecification(IASTExceptionSpecification specification)
|
||||||
|
{
|
||||||
|
exceptionSpecification = specification;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param b
|
||||||
|
*/
|
||||||
|
public void setConst(boolean b)
|
||||||
|
{
|
||||||
|
isConst = b;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param b
|
||||||
|
*/
|
||||||
|
public void setVolatile(boolean b)
|
||||||
|
{
|
||||||
|
isVolatile = b;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public boolean isKandR()
|
||||||
|
{
|
||||||
|
return isKandR;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param b
|
||||||
|
*/
|
||||||
|
public void setKandR(boolean b)
|
||||||
|
{
|
||||||
|
isKandR = b;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param b
|
||||||
|
*/
|
||||||
|
public void setPureVirtual(boolean b)
|
||||||
|
{
|
||||||
|
pureVirtual = b;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public boolean isPureVirtual()
|
||||||
|
{
|
||||||
|
return pureVirtual;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param arrayMod
|
||||||
|
*/
|
||||||
|
public void addArrayModifier(IASTArrayModifier arrayMod)
|
||||||
|
{
|
||||||
|
arrayModifiers.add( arrayMod );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public List getArrayModifiers()
|
||||||
|
{
|
||||||
|
return arrayModifiers;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public IASTExpression getBitFieldExpression()
|
||||||
|
{
|
||||||
|
return bitFieldExpression;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param expression
|
||||||
|
*/
|
||||||
|
public void setBitFieldExpression(IASTExpression expression)
|
||||||
|
{
|
||||||
|
bitFieldExpression = expression;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param astExpression
|
||||||
|
*/
|
||||||
|
public void setConstructorExpression(IASTExpression astExpression)
|
||||||
|
{
|
||||||
|
constructorExpression = astExpression;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public IASTExpression getConstructorExpression()
|
||||||
|
{
|
||||||
|
return constructorExpression;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param initializer
|
||||||
|
*/
|
||||||
|
public void addConstructorMemberInitializer(IASTConstructorMemberInitializer initializer)
|
||||||
|
{
|
||||||
|
constructorMemberInitializers.add( initializer );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public List getConstructorMemberInitializers()
|
||||||
|
{
|
||||||
|
return constructorMemberInitializers;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param b
|
||||||
|
*/
|
||||||
|
public void hasFunctionBody(boolean b)
|
||||||
|
{
|
||||||
|
hasFunctionBody = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public boolean isFunction()
|
||||||
|
{
|
||||||
|
return isFunction;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param b
|
||||||
|
*/
|
||||||
|
public void setIsFunction(boolean b)
|
||||||
|
{
|
||||||
|
isFunction = b;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
/**********************************************************************
|
||||||
|
* Copyright (c) 2002,2003 Rational Software Corporation and others.
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Common Public License v0.5
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
* http://www.eclipse.org/legal/cpl-v05.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* IBM Rational Software - Initial API and implementation
|
||||||
|
***********************************************************************/
|
||||||
|
package org.eclipse.cdt.internal.core.parser;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author jcamelon
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public interface IASTArrayModifier
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
|
@ -960,16 +960,18 @@ public class Parser implements IParser
|
||||||
}
|
}
|
||||||
declSpecifierSeq(simpleDecl, false, tryConstructor, sdw);
|
declSpecifierSeq(simpleDecl, false, tryConstructor, sdw);
|
||||||
Object declarator = null;
|
Object declarator = null;
|
||||||
|
DeclaratorDuple d = null;
|
||||||
if (LT(1) != IToken.tSEMI)
|
if (LT(1) != IToken.tSEMI)
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
declarator = initDeclarator(simpleDecl, sdw);
|
d = initDeclarator(simpleDecl, sdw);
|
||||||
|
declarator = d.getObject();
|
||||||
while (LT(1) == IToken.tCOMMA)
|
while (LT(1) == IToken.tCOMMA)
|
||||||
{
|
{
|
||||||
consume();
|
consume();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
initDeclarator(simpleDecl, sdw);
|
d = initDeclarator(simpleDecl, sdw);
|
||||||
}
|
}
|
||||||
catch (Backtrack b)
|
catch (Backtrack b)
|
||||||
{
|
{
|
||||||
|
@ -981,39 +983,56 @@ public class Parser implements IParser
|
||||||
{
|
{
|
||||||
// allowed to be empty
|
// allowed to be empty
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean done = false;
|
||||||
|
boolean hasFunctionBody = false;
|
||||||
switch (LT(1))
|
switch (LT(1))
|
||||||
{
|
{
|
||||||
case IToken.tSEMI :
|
case IToken.tSEMI :
|
||||||
consume(IToken.tSEMI);
|
consume(IToken.tSEMI);
|
||||||
|
done = true;
|
||||||
break;
|
break;
|
||||||
case IToken.tCOLON :
|
case IToken.tCOLON :
|
||||||
if (forKR)
|
if (forKR)
|
||||||
throw backtrack;
|
throw backtrack;
|
||||||
ctorInitializer(declarator);
|
ctorInitializer(declarator, d.getDeclarator());
|
||||||
// Falling through on purpose
|
// Falling through on purpose
|
||||||
case IToken.tLBRACE :
|
case IToken.tLBRACE :
|
||||||
if (forKR)
|
if (forKR)
|
||||||
throw backtrack;
|
throw backtrack;
|
||||||
Object function = null;
|
|
||||||
try
|
d.getDeclarator().hasFunctionBody( true );
|
||||||
{
|
hasFunctionBody = true;
|
||||||
function = callback.functionBodyBegin(simpleDecl);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
handleFunctionBody();
|
|
||||||
try
|
|
||||||
{
|
|
||||||
callback.functionBodyEnd(function);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
default :
|
default :
|
||||||
throw backtrack;
|
throw backtrack;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List l = sdw.createAndCallbackASTNodes();
|
||||||
|
|
||||||
|
if( hasFunctionBody )
|
||||||
|
{
|
||||||
|
// if( l.size() != 1 )
|
||||||
|
// requestor.acceptProblem( ParserFactory.createProblem());
|
||||||
|
|
||||||
|
Object function = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
function = callback.functionBodyBegin(simpleDecl);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
handleFunctionBody(d.getDeclarator());
|
||||||
|
try
|
||||||
|
{
|
||||||
|
callback.functionBodyEnd(function);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
callback.simpleDeclarationEnd(simpleDecl, (Token)lastToken);
|
callback.simpleDeclarationEnd(simpleDecl, (Token)lastToken);
|
||||||
|
@ -1023,7 +1042,7 @@ public class Parser implements IParser
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void handleFunctionBody() throws Backtrack, EndOfFile {
|
protected void handleFunctionBody(Declarator d) throws Backtrack, EndOfFile {
|
||||||
if (mode == ParserMode.QUICK_PARSE)
|
if (mode == ParserMode.QUICK_PARSE)
|
||||||
{
|
{
|
||||||
// speed up the parser by skiping the body
|
// speed up the parser by skiping the body
|
||||||
|
@ -1059,7 +1078,7 @@ public class Parser implements IParser
|
||||||
* @param declarator IParserCallback object that represents the declarator (constructor) that owns this initializer
|
* @param declarator IParserCallback object that represents the declarator (constructor) that owns this initializer
|
||||||
* @throws Backtrack request a backtrack
|
* @throws Backtrack request a backtrack
|
||||||
*/
|
*/
|
||||||
protected void ctorInitializer(Object declarator) throws Backtrack
|
protected void ctorInitializer(Object declarator, Declarator d) throws Backtrack
|
||||||
{
|
{
|
||||||
consume(IToken.tCOLON);
|
consume(IToken.tCOLON);
|
||||||
Object constructorChain = null;
|
Object constructorChain = null;
|
||||||
|
@ -1085,7 +1104,7 @@ public class Parser implements IParser
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
name();
|
ITokenDuple duple = name();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
callback.constructorChainElementId(constructorChainElement);
|
callback.constructorChainElementId(constructorChainElement);
|
||||||
|
@ -1094,50 +1113,26 @@ public class Parser implements IParser
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
consume(IToken.tLPAREN);
|
consume(IToken.tLPAREN);
|
||||||
while (LT(1) != IToken.tRPAREN)
|
IASTExpression expressionList = null;
|
||||||
|
Object expression = null;
|
||||||
|
try
|
||||||
{
|
{
|
||||||
//handle expression list here
|
expression = callback.expressionBegin(constructorChainElement);
|
||||||
Object item = null;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
item =
|
|
||||||
callback
|
|
||||||
.constructorChainElementExpressionListElementBegin(
|
|
||||||
constructorChainElement);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
Object expression = null;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
expression = callback.expressionBegin(item);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
IASTExpression assignmentExpression = assignmentExpression(expression);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
callback.expressionEnd(item);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
try
|
|
||||||
{
|
|
||||||
callback
|
|
||||||
.constructorChainElementExpressionListElementEnd(
|
|
||||||
item);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
if (LT(1) == IToken.tRPAREN)
|
|
||||||
break;
|
|
||||||
consume(IToken.tCOMMA);
|
|
||||||
}
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
expressionList = expression(expression);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
callback.expressionEnd(expressionList);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
consume(IToken.tRPAREN);
|
consume(IToken.tRPAREN);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
callback.constructorChainElementEnd(
|
callback.constructorChainElementEnd(
|
||||||
|
@ -1146,10 +1141,12 @@ public class Parser implements IParser
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
d.addConstructorMemberInitializer( astFactory.createConstructorMemberInitializer( duple, expressionList ) );
|
||||||
|
|
||||||
if (LT(1) == IToken.tLBRACE)
|
if (LT(1) == IToken.tLBRACE)
|
||||||
break;
|
break;
|
||||||
if (LT(1) == IToken.tCOMMA)
|
consume(IToken.tCOMMA);
|
||||||
consume(IToken.tCOMMA);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Backtrack bt)
|
catch (Backtrack bt)
|
||||||
|
@ -1161,8 +1158,7 @@ public class Parser implements IParser
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
if (mode != ParserMode.QUICK_PARSE)
|
throw backtrack;
|
||||||
throw backtrack;
|
|
||||||
}
|
}
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -1201,7 +1197,8 @@ public class Parser implements IParser
|
||||||
if (LT(1) != IToken.tSEMI)
|
if (LT(1) != IToken.tSEMI)
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Object declarator = initDeclarator(parameterDecl, sdw );
|
DeclaratorDuple d = initDeclarator(parameterDecl, sdw );
|
||||||
|
Object declarator = d.getObject();
|
||||||
}
|
}
|
||||||
catch (Backtrack b)
|
catch (Backtrack b)
|
||||||
{
|
{
|
||||||
|
@ -1922,7 +1919,7 @@ public class Parser implements IParser
|
||||||
* @return declarator that this parsing produced.
|
* @return declarator that this parsing produced.
|
||||||
* @throws Backtrack request a backtrack
|
* @throws Backtrack request a backtrack
|
||||||
*/
|
*/
|
||||||
protected Object initDeclarator(Object owner, DeclarationWrapper sdw)
|
protected DeclaratorDuple initDeclarator(Object owner, DeclarationWrapper sdw)
|
||||||
throws Backtrack
|
throws Backtrack
|
||||||
{
|
{
|
||||||
DeclaratorDuple duple = declarator(owner, sdw, null);
|
DeclaratorDuple duple = declarator(owner, sdw, null);
|
||||||
|
@ -1937,8 +1934,10 @@ public class Parser implements IParser
|
||||||
}
|
}
|
||||||
else if (LT(1) == IToken.tLPAREN)
|
else if (LT(1) == IToken.tLPAREN)
|
||||||
{
|
{
|
||||||
|
// initializer in constructor
|
||||||
consume(IToken.tLPAREN); // EAT IT!
|
consume(IToken.tLPAREN); // EAT IT!
|
||||||
Object expression = null;
|
Object expression = null;
|
||||||
|
IASTExpression astExpression = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -1948,7 +1947,8 @@ public class Parser implements IParser
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
expression(expression);
|
astExpression = expression(expression);
|
||||||
|
consume(IToken.tRPAREN);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
callback.expressionEnd(expression);
|
callback.expressionEnd(expression);
|
||||||
|
@ -1956,10 +1956,12 @@ public class Parser implements IParser
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
d.setConstructorExpression( astExpression );
|
||||||
}
|
}
|
||||||
catch (Backtrack b)
|
catch (Backtrack b)
|
||||||
{
|
{
|
||||||
if (expression != null)
|
if (expression != null)
|
||||||
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
callback.expressionAbort(expression);
|
callback.expressionAbort(expression);
|
||||||
|
@ -1967,9 +1969,9 @@ public class Parser implements IParser
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
throw b;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (LT(1) == IToken.tRPAREN)
|
|
||||||
consume();
|
|
||||||
}
|
}
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -1978,7 +1980,9 @@ public class Parser implements IParser
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
return declarator;
|
|
||||||
|
sdw.addDeclarator(d);
|
||||||
|
return duple;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1993,7 +1997,7 @@ public class Parser implements IParser
|
||||||
if( LT(1) == (IToken.tRBRACE ) )
|
if( LT(1) == (IToken.tRBRACE ) )
|
||||||
{
|
{
|
||||||
consume( IToken.tRBRACE );
|
consume( IToken.tRBRACE );
|
||||||
return astFactory.createIASTInitializerClause( IASTInitializerClause.Kind.EMPTY, null, null );
|
return astFactory.createInitializerClause( IASTInitializerClause.Kind.EMPTY, null, null );
|
||||||
}
|
}
|
||||||
|
|
||||||
// otherwise it is a list of initializers
|
// otherwise it is a list of initializers
|
||||||
|
@ -2006,7 +2010,7 @@ public class Parser implements IParser
|
||||||
consume( IToken.tCOMMA );
|
consume( IToken.tCOMMA );
|
||||||
}
|
}
|
||||||
consume( IToken.tRBRACE );
|
consume( IToken.tRBRACE );
|
||||||
return astFactory.createIASTInitializerClause( IASTInitializerClause.Kind.INITIALIZER_LIST, null, initializerClauses );
|
return astFactory.createInitializerClause( IASTInitializerClause.Kind.INITIALIZER_LIST, null, initializerClauses );
|
||||||
}
|
}
|
||||||
// try this now instead
|
// try this now instead
|
||||||
// assignmentExpression || { initializerList , } || { }
|
// assignmentExpression || { initializerList , } || { }
|
||||||
|
@ -2032,7 +2036,7 @@ public class Parser implements IParser
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
return astFactory.createIASTInitializerClause( IASTInitializerClause.Kind.ASSIGNMENT_EXPRESSION, assignmentExpression, null );
|
return astFactory.createInitializerClause( IASTInitializerClause.Kind.ASSIGNMENT_EXPRESSION, assignmentExpression, null );
|
||||||
}
|
}
|
||||||
catch (Backtrack b)
|
catch (Backtrack b)
|
||||||
{
|
{
|
||||||
|
@ -2074,11 +2078,14 @@ public class Parser implements IParser
|
||||||
*/
|
*/
|
||||||
protected DeclaratorDuple declarator(Object container, DeclarationWrapper sdw, Declarator owningDeclarator) throws Backtrack
|
protected DeclaratorDuple declarator(Object container, DeclarationWrapper sdw, Declarator owningDeclarator) throws Backtrack
|
||||||
{
|
{
|
||||||
boolean anonymous = false;
|
Object declarator = null;
|
||||||
|
Declarator d = null;
|
||||||
|
|
||||||
|
overallLoop:
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
Object declarator = null;
|
declarator = null;
|
||||||
Declarator d = null;
|
d = null;
|
||||||
|
|
||||||
if( sdw != null )
|
if( sdw != null )
|
||||||
d = new Declarator( sdw );
|
d = new Declarator( sdw );
|
||||||
|
@ -2122,7 +2129,8 @@ public class Parser implements IParser
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
name();
|
ITokenDuple duple = name();
|
||||||
|
d.setName( duple );
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
callback.declaratorId(declarator);
|
callback.declaratorId(declarator);
|
||||||
|
@ -2130,10 +2138,12 @@ public class Parser implements IParser
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Backtrack bt)
|
catch (Backtrack bt)
|
||||||
{
|
{
|
||||||
IToken start = null;
|
IToken start = null;
|
||||||
|
IToken mark = mark();
|
||||||
if (LT(1) == IToken.tCOLONCOLON
|
if (LT(1) == IToken.tCOLONCOLON
|
||||||
|| LT(1) == IToken.tIDENTIFIER)
|
|| LT(1) == IToken.tIDENTIFIER)
|
||||||
{
|
{
|
||||||
|
@ -2151,11 +2161,11 @@ public class Parser implements IParser
|
||||||
}
|
}
|
||||||
if (LT(1) == IToken.t_operator)
|
if (LT(1) == IToken.t_operator)
|
||||||
operatorId( declarator, d, start );
|
operatorId( declarator, d, start );
|
||||||
}
|
else
|
||||||
else
|
{
|
||||||
{
|
backup( mark );
|
||||||
// anonymous is good
|
throw backtrack;
|
||||||
anonymous = true;
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2168,6 +2178,7 @@ public class Parser implements IParser
|
||||||
if (!LA(2).looksLikeExpression())
|
if (!LA(2).looksLikeExpression())
|
||||||
{
|
{
|
||||||
// parameterDeclarationClause
|
// parameterDeclarationClause
|
||||||
|
d.setIsFunction( true );
|
||||||
Object clause = null;
|
Object clause = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -2208,8 +2219,7 @@ public class Parser implements IParser
|
||||||
}
|
}
|
||||||
if (LT(1) == IToken.tCOLON)
|
if (LT(1) == IToken.tCOLON)
|
||||||
{
|
{
|
||||||
// this is most likely the definition of the constructor
|
break overallLoop;
|
||||||
return new DeclaratorDuple( declarator, d );
|
|
||||||
}
|
}
|
||||||
IToken beforeCVModifier = mark();
|
IToken beforeCVModifier = mark();
|
||||||
IToken cvModifier = null;
|
IToken cvModifier = null;
|
||||||
|
@ -2226,8 +2236,10 @@ public class Parser implements IParser
|
||||||
afterCVModifier = mark();
|
afterCVModifier = mark();
|
||||||
}
|
}
|
||||||
//check for throws clause here
|
//check for throws clause here
|
||||||
|
List exceptionSpecIds = null;
|
||||||
if (LT(1) == IToken.t_throw)
|
if (LT(1) == IToken.t_throw)
|
||||||
{
|
{
|
||||||
|
exceptionSpecIds = new ArrayList();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
callback.declaratorThrowsException(
|
callback.declaratorThrowsException(
|
||||||
|
@ -2239,6 +2251,7 @@ public class Parser implements IParser
|
||||||
consume(); // throw
|
consume(); // throw
|
||||||
consume(IToken.tLPAREN); // (
|
consume(IToken.tLPAREN); // (
|
||||||
boolean done = false;
|
boolean done = false;
|
||||||
|
ITokenDuple duple = null;
|
||||||
while (!done)
|
while (!done)
|
||||||
{
|
{
|
||||||
switch (LT(1))
|
switch (LT(1))
|
||||||
|
@ -2248,7 +2261,8 @@ public class Parser implements IParser
|
||||||
done = true;
|
done = true;
|
||||||
break;
|
break;
|
||||||
case IToken.tIDENTIFIER :
|
case IToken.tIDENTIFIER :
|
||||||
typeId();
|
duple = typeId();
|
||||||
|
exceptionSpecIds.add( duple );
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
callback
|
callback
|
||||||
|
@ -2263,14 +2277,15 @@ public class Parser implements IParser
|
||||||
consume();
|
consume();
|
||||||
break;
|
break;
|
||||||
default :
|
default :
|
||||||
System.out.println(
|
Util.debugLog( "Unexpected Token =" + LA(1).getImage() );
|
||||||
"Unexpected Token ="
|
failParse();
|
||||||
+ LA(1).getImage());
|
|
||||||
errorHandling();
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if( exceptionSpecIds != null )
|
||||||
|
d.setExceptionSpecification( astFactory.createExceptionSpecification( exceptionSpecIds ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// check for optional pure virtual
|
// check for optional pure virtual
|
||||||
if (LT(1) == IToken.tASSIGN
|
if (LT(1) == IToken.tASSIGN
|
||||||
&& LT(2) == IToken.tINTEGER
|
&& LT(2) == IToken.tINTEGER
|
||||||
|
@ -2278,6 +2293,7 @@ public class Parser implements IParser
|
||||||
{
|
{
|
||||||
consume(IToken.tASSIGN);
|
consume(IToken.tASSIGN);
|
||||||
consume(IToken.tINTEGER);
|
consume(IToken.tINTEGER);
|
||||||
|
d.setPureVirtual( true );
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
callback.declaratorPureVirtual(declarator);
|
callback.declaratorPureVirtual(declarator);
|
||||||
|
@ -2300,6 +2316,12 @@ public class Parser implements IParser
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( cvModifier.getType() == IToken.t_const )
|
||||||
|
d.setConst( true );
|
||||||
|
if( cvModifier.getType() == IToken.t_volatile )
|
||||||
|
d.setVolatile( true );
|
||||||
|
|
||||||
// In this case (method) we can't expect K&R parameter declarations,
|
// In this case (method) we can't expect K&R parameter declarations,
|
||||||
// but we'll check anyway, for errorhandling
|
// but we'll check anyway, for errorhandling
|
||||||
}
|
}
|
||||||
|
@ -2308,6 +2330,7 @@ public class Parser implements IParser
|
||||||
// let's try this modifier as part of K&R parameter declaration
|
// let's try this modifier as part of K&R parameter declaration
|
||||||
backup(beforeCVModifier);
|
backup(beforeCVModifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (LT(1) != IToken.tSEMI)
|
if (LT(1) != IToken.tSEMI)
|
||||||
{
|
{
|
||||||
// try K&R-style parameter declarations
|
// try K&R-style parameter declarations
|
||||||
|
@ -2328,7 +2351,7 @@ public class Parser implements IParser
|
||||||
oldKRParameterDeclarationClause,
|
oldKRParameterDeclarationClause,
|
||||||
false,
|
false,
|
||||||
true,
|
true,
|
||||||
null);
|
sdw.getScope());
|
||||||
}
|
}
|
||||||
while (LT(1) != IToken.tLBRACE);
|
while (LT(1) != IToken.tLBRACE);
|
||||||
}
|
}
|
||||||
|
@ -2362,6 +2385,7 @@ public class Parser implements IParser
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
IASTExpression exp = null;
|
||||||
if (LT(1) != IToken.tRBRACKET)
|
if (LT(1) != IToken.tRBRACKET)
|
||||||
{
|
{
|
||||||
Object expression = null;
|
Object expression = null;
|
||||||
|
@ -2373,7 +2397,7 @@ public class Parser implements IParser
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
constantExpression(expression);
|
exp = constantExpression(expression);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
callback.expressionEnd(expression);
|
callback.expressionEnd(expression);
|
||||||
|
@ -2383,6 +2407,9 @@ public class Parser implements IParser
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
consume(IToken.tRBRACKET);
|
consume(IToken.tRBRACKET);
|
||||||
|
IASTArrayModifier arrayMod = astFactory.createArrayModifier( exp );
|
||||||
|
d.addArrayModifier( arrayMod );
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
callback.arrayDeclaratorEnd(array);
|
callback.arrayDeclaratorEnd(array);
|
||||||
|
@ -2403,6 +2430,7 @@ public class Parser implements IParser
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
Object expression = null;
|
Object expression = null;
|
||||||
|
IASTExpression exp = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
expression = callback.expressionBegin(bitfield);
|
expression = callback.expressionBegin(bitfield);
|
||||||
|
@ -2410,7 +2438,7 @@ public class Parser implements IParser
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
constantExpression(expression);
|
exp = constantExpression(expression);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
callback.expressionEnd(expression);
|
callback.expressionEnd(expression);
|
||||||
|
@ -2425,6 +2453,7 @@ public class Parser implements IParser
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
d.setBitFieldExpression( exp );
|
||||||
default :
|
default :
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -2443,10 +2472,14 @@ public class Parser implements IParser
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return new DeclaratorDuple( declarator, d );
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while (true);
|
while (true);
|
||||||
|
if( sdw == null )
|
||||||
|
owningDeclarator.setOwnedDeclarator(d);
|
||||||
|
return new DeclaratorDuple( declarator, d );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void operatorId(Object declarator, Declarator d, IToken originalToken)
|
protected void operatorId(Object declarator, Declarator d, IToken originalToken)
|
||||||
|
@ -2504,6 +2537,7 @@ public class Parser implements IParser
|
||||||
// In case we'll need better error recovery
|
// In case we'll need better error recovery
|
||||||
// while( LT(1) != Token.tLPAREN ) { toSend = consume(); }
|
// while( LT(1) != Token.tLPAREN ) { toSend = consume(); }
|
||||||
}
|
}
|
||||||
|
ITokenDuple duple = new TokenDuple( originalToken == null ? operatorToken : originalToken ,toSend );
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
callback.nameBegin(originalToken == null ? operatorToken : originalToken );
|
callback.nameBegin(originalToken == null ? operatorToken : originalToken );
|
||||||
|
@ -2519,6 +2553,7 @@ public class Parser implements IParser
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
d.setName( duple );
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Parse a Pointer Operator.
|
* Parse a Pointer Operator.
|
||||||
|
@ -3285,9 +3320,9 @@ public class Parser implements IParser
|
||||||
* @param expression
|
* @param expression
|
||||||
* @throws Backtrack
|
* @throws Backtrack
|
||||||
*/
|
*/
|
||||||
protected void constantExpression(Object expression) throws Backtrack
|
protected IASTExpression constantExpression(Object expression) throws Backtrack
|
||||||
{
|
{
|
||||||
conditionalExpression(expression);
|
return conditionalExpression(expression);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
|
|
@ -21,20 +21,25 @@ import org.eclipse.cdt.core.parser.ast.ClassKind;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTASMDefinition;
|
import org.eclipse.cdt.core.parser.ast.IASTASMDefinition;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
|
import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit;
|
import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit;
|
||||||
|
import org.eclipse.cdt.core.parser.ast.IASTConstructorMemberInitializer;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier;
|
import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier;
|
import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier;
|
||||||
|
import org.eclipse.cdt.core.parser.ast.IASTExceptionSpecification;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTExpression;
|
import org.eclipse.cdt.core.parser.ast.IASTExpression;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTFactory;
|
import org.eclipse.cdt.core.parser.ast.IASTFactory;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTInitializerClause;
|
import org.eclipse.cdt.core.parser.ast.IASTInitializerClause;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTLinkageSpecification;
|
import org.eclipse.cdt.core.parser.ast.IASTLinkageSpecification;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
|
import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTScope;
|
import org.eclipse.cdt.core.parser.ast.IASTScope;
|
||||||
|
import org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration;
|
import org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTUsingDeclaration;
|
import org.eclipse.cdt.core.parser.ast.IASTUsingDeclaration;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTUsingDirective;
|
import org.eclipse.cdt.core.parser.ast.IASTUsingDirective;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier.ClassNameType;
|
import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier.ClassNameType;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTExpression.Kind;
|
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTExpression.IASTNewExpressionDescriptor;
|
import org.eclipse.cdt.core.parser.ast.IASTExpression.IASTNewExpressionDescriptor;
|
||||||
|
import org.eclipse.cdt.core.parser.ast.IASTExpression.Kind;
|
||||||
|
import org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier.SimpleType;
|
||||||
|
import org.eclipse.cdt.internal.core.parser.IASTArrayModifier;
|
||||||
import org.eclipse.cdt.internal.core.parser.ast.BaseASTFactory;
|
import org.eclipse.cdt.internal.core.parser.ast.BaseASTFactory;
|
||||||
import org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol;
|
import org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol;
|
||||||
import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
|
import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
|
||||||
|
@ -219,9 +224,47 @@ public class FullParseASTFactory extends BaseASTFactory implements IASTFactory {
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#createIASTInitializerClause()
|
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#createIASTInitializerClause()
|
||||||
*/
|
*/
|
||||||
public IASTInitializerClause createIASTInitializerClause(IASTInitializerClause.Kind kind, IASTExpression assignmentExpression, List initializerClauses) {
|
public IASTInitializerClause createInitializerClause(IASTInitializerClause.Kind kind, IASTExpression assignmentExpression, List initializerClauses) {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#createExceptionSpecification(java.util.List)
|
||||||
|
*/
|
||||||
|
public IASTExceptionSpecification createExceptionSpecification(List typeIds)
|
||||||
|
{
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#createArrayModifier(org.eclipse.cdt.core.parser.ast.IASTExpression)
|
||||||
|
*/
|
||||||
|
public IASTArrayModifier createArrayModifier(IASTExpression exp)
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
return null;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#createConstructorMemberInitializer(org.eclipse.cdt.core.parser.ITokenDuple, org.eclipse.cdt.core.parser.ast.IASTExpression)
|
||||||
|
*/
|
||||||
|
public IASTConstructorMemberInitializer createConstructorMemberInitializer(ITokenDuple duple, IASTExpression expressionList )
|
||||||
|
{
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#createSimpleTypeSpecifier(org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier.SimpleType, org.eclipse.cdt.core.parser.ITokenDuple, boolean, boolean, boolean, boolean)
|
||||||
|
*/
|
||||||
|
public IASTSimpleTypeSpecifier createSimpleTypeSpecifier(SimpleType kind, ITokenDuple typeName, boolean isShort, boolean isLong, boolean isSigned, boolean isUnsigned, boolean isTypename)
|
||||||
|
{
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
/**********************************************************************
|
||||||
|
* Copyright (c) 2002,2003 Rational Software Corporation and others.
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Common Public License v0.5
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
* http://www.eclipse.org/legal/cpl-v05.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* IBM Rational Software - Initial API and implementation
|
||||||
|
***********************************************************************/
|
||||||
|
package org.eclipse.cdt.internal.core.parser.ast.quick;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.parser.ast.IASTConstructorMemberInitializer;
|
||||||
|
import org.eclipse.cdt.core.parser.ast.IASTExpression;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author jcamelon
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class ASTConstructorMemberInitializer
|
||||||
|
implements IASTConstructorMemberInitializer
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param string
|
||||||
|
* @param expressionList
|
||||||
|
*/
|
||||||
|
public ASTConstructorMemberInitializer(String name, IASTExpression expressionList)
|
||||||
|
{
|
||||||
|
this.name = name;
|
||||||
|
this.expressionList = expressionList;
|
||||||
|
}
|
||||||
|
|
||||||
|
private final IASTExpression expressionList;
|
||||||
|
private final String name;
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.parser.ast.IASTConstructorMemberInitializer#getExpressionList()
|
||||||
|
*/
|
||||||
|
public IASTExpression getExpressionList()
|
||||||
|
{
|
||||||
|
return expressionList;
|
||||||
|
}
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.parser.ast.IASTConstructorMemberInitializer#getName()
|
||||||
|
*/
|
||||||
|
public String getName()
|
||||||
|
{
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,45 @@
|
||||||
|
/**********************************************************************
|
||||||
|
* Copyright (c) 2002,2003 Rational Software Corporation and others.
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Common Public License v0.5
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
* http://www.eclipse.org/legal/cpl-v05.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* IBM Rational Software - Initial API and implementation
|
||||||
|
***********************************************************************/
|
||||||
|
package org.eclipse.cdt.internal.core.parser.ast.quick;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.parser.ITokenDuple;
|
||||||
|
import org.eclipse.cdt.core.parser.ast.IASTExceptionSpecification;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author jcamelon
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class ASTExceptionSpecification implements IASTExceptionSpecification
|
||||||
|
{
|
||||||
|
private final List typeIds;
|
||||||
|
/**
|
||||||
|
* @param typeIds
|
||||||
|
*/
|
||||||
|
public ASTExceptionSpecification(List typeIds)
|
||||||
|
{
|
||||||
|
Iterator i = typeIds.iterator();
|
||||||
|
this.typeIds = new ArrayList();
|
||||||
|
while( i.hasNext() )
|
||||||
|
this.typeIds.add( ((ITokenDuple)i.next()).toString() );
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.parser.ast.IASTExceptionSpecification#getTypeIds()
|
||||||
|
*/
|
||||||
|
public List getTypeIds()
|
||||||
|
{
|
||||||
|
return typeIds;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,153 @@
|
||||||
|
/**********************************************************************
|
||||||
|
* Copyright (c) 2002,2003 Rational Software Corporation and others.
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Common Public License v0.5
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
* http://www.eclipse.org/legal/cpl-v05.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* IBM Rational Software - Initial API and implementation
|
||||||
|
***********************************************************************/
|
||||||
|
package org.eclipse.cdt.internal.core.parser.ast.quick;
|
||||||
|
|
||||||
|
import java.util.Hashtable;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.parser.ITokenDuple;
|
||||||
|
import org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author jcamelon
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class ASTSimpleTypeSpecifier implements IASTSimpleTypeSpecifier
|
||||||
|
{
|
||||||
|
private final boolean isTypename;
|
||||||
|
private final SimpleType kind;
|
||||||
|
private final String typeName;
|
||||||
|
private final boolean isLong, isShort, isSigned, isUnsigned;
|
||||||
|
|
||||||
|
private static final Map nameMap;
|
||||||
|
static
|
||||||
|
{
|
||||||
|
nameMap = new Hashtable();
|
||||||
|
nameMap.put( SimpleType.BOOL, "bool");
|
||||||
|
nameMap.put( SimpleType.CHAR, "char");
|
||||||
|
nameMap.put( SimpleType.DOUBLE, "double");
|
||||||
|
nameMap.put( SimpleType.FLOAT, "float");
|
||||||
|
nameMap.put( SimpleType.INT, "int");
|
||||||
|
nameMap.put( SimpleType.VOID, "void" );
|
||||||
|
nameMap.put( SimpleType.WCHAR_T, "wchar_t" );
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @param kind
|
||||||
|
* @param typeName
|
||||||
|
*/
|
||||||
|
public ASTSimpleTypeSpecifier(SimpleType kind, ITokenDuple typeName, boolean isShort, boolean isLong, boolean isSigned, boolean isUnsigned, boolean isTypename)
|
||||||
|
{
|
||||||
|
this.kind = kind;
|
||||||
|
this.isLong = isLong;
|
||||||
|
this.isShort = isShort;
|
||||||
|
this.isSigned = isSigned;
|
||||||
|
this.isUnsigned = isUnsigned;
|
||||||
|
this.isTypename = isTypename;
|
||||||
|
|
||||||
|
|
||||||
|
StringBuffer type = new StringBuffer();
|
||||||
|
if( this.kind == IASTSimpleTypeSpecifier.SimpleType.CHAR || this.kind == IASTSimpleTypeSpecifier.SimpleType.WCHAR_T )
|
||||||
|
{
|
||||||
|
if (isUnsigned())
|
||||||
|
type.append("unsigned ");
|
||||||
|
type.append( (String)nameMap.get( this.kind ));
|
||||||
|
}
|
||||||
|
else if( this.kind == SimpleType.BOOL || this.kind == SimpleType.FLOAT || this.kind == SimpleType.VOID )
|
||||||
|
{
|
||||||
|
type.append( (String) nameMap.get( this.kind ));
|
||||||
|
}
|
||||||
|
else if( this.kind == SimpleType.INT )
|
||||||
|
{
|
||||||
|
if (isUnsigned())
|
||||||
|
type.append("unsigned ");
|
||||||
|
if (isShort())
|
||||||
|
type.append("short ");
|
||||||
|
if (isLong())
|
||||||
|
type.append("long ");
|
||||||
|
type.append( (String)nameMap.get( this.kind ));
|
||||||
|
}
|
||||||
|
else if( this.kind == SimpleType.DOUBLE )
|
||||||
|
{
|
||||||
|
if (isLong())
|
||||||
|
type.append("long ");
|
||||||
|
type.append( (String)nameMap.get( this.kind ));
|
||||||
|
}
|
||||||
|
else if( this.kind == SimpleType.TYPENAME || this.kind == SimpleType.TEMPLATE )
|
||||||
|
{
|
||||||
|
if (isTypename() )
|
||||||
|
type.append("typename ");
|
||||||
|
type.append(typeName.toString());
|
||||||
|
}
|
||||||
|
else if( this.kind == SimpleType.UNSPECIFIED )
|
||||||
|
{
|
||||||
|
if (isUnsigned())
|
||||||
|
type.append("unsigned ");
|
||||||
|
if (isShort())
|
||||||
|
type.append("short ");
|
||||||
|
if (isLong())
|
||||||
|
type.append("long ");
|
||||||
|
if (isSigned())
|
||||||
|
type.append("signed ");
|
||||||
|
}
|
||||||
|
this.typeName = typeName.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier#getType()
|
||||||
|
*/
|
||||||
|
public SimpleType getType()
|
||||||
|
{
|
||||||
|
return kind;
|
||||||
|
}
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier#getTypename()
|
||||||
|
*/
|
||||||
|
public String getTypename()
|
||||||
|
{
|
||||||
|
return typeName;
|
||||||
|
}
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier#isLong()
|
||||||
|
*/
|
||||||
|
public boolean isLong()
|
||||||
|
{
|
||||||
|
return isLong;
|
||||||
|
}
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier#isShort()
|
||||||
|
*/
|
||||||
|
public boolean isShort()
|
||||||
|
{
|
||||||
|
return isShort;
|
||||||
|
}
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier#isSigned()
|
||||||
|
*/
|
||||||
|
public boolean isSigned()
|
||||||
|
{
|
||||||
|
return isSigned;
|
||||||
|
}
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier#isUnsigned()
|
||||||
|
*/
|
||||||
|
public boolean isUnsigned()
|
||||||
|
{
|
||||||
|
return isUnsigned;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier#isTypename()
|
||||||
|
*/
|
||||||
|
public boolean isTypename()
|
||||||
|
{
|
||||||
|
return isTypename;
|
||||||
|
}
|
||||||
|
}
|
|
@ -20,21 +20,26 @@ import org.eclipse.cdt.core.parser.ast.IASTASMDefinition;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier;
|
import org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
|
import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit;
|
import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit;
|
||||||
|
import org.eclipse.cdt.core.parser.ast.IASTConstructorMemberInitializer;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier;
|
import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier;
|
import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTEnumerator;
|
import org.eclipse.cdt.core.parser.ast.IASTEnumerator;
|
||||||
|
import org.eclipse.cdt.core.parser.ast.IASTExceptionSpecification;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTExpression;
|
import org.eclipse.cdt.core.parser.ast.IASTExpression;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTFactory;
|
import org.eclipse.cdt.core.parser.ast.IASTFactory;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTInitializerClause;
|
import org.eclipse.cdt.core.parser.ast.IASTInitializerClause;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTLinkageSpecification;
|
import org.eclipse.cdt.core.parser.ast.IASTLinkageSpecification;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
|
import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTScope;
|
import org.eclipse.cdt.core.parser.ast.IASTScope;
|
||||||
|
import org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration;
|
import org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTUsingDeclaration;
|
import org.eclipse.cdt.core.parser.ast.IASTUsingDeclaration;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTUsingDirective;
|
import org.eclipse.cdt.core.parser.ast.IASTUsingDirective;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier.ClassNameType;
|
import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier.ClassNameType;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTExpression.Kind;
|
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTExpression.IASTNewExpressionDescriptor;
|
import org.eclipse.cdt.core.parser.ast.IASTExpression.IASTNewExpressionDescriptor;
|
||||||
|
import org.eclipse.cdt.core.parser.ast.IASTExpression.Kind;
|
||||||
|
import org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier.SimpleType;
|
||||||
|
import org.eclipse.cdt.internal.core.parser.IASTArrayModifier;
|
||||||
import org.eclipse.cdt.internal.core.parser.ast.BaseASTFactory;
|
import org.eclipse.cdt.internal.core.parser.ast.BaseASTFactory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -150,8 +155,41 @@ public class QuickParseASTFactory extends BaseASTFactory implements IASTFactory
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#createIASTInitializerClause()
|
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#createIASTInitializerClause()
|
||||||
*/
|
*/
|
||||||
public IASTInitializerClause createIASTInitializerClause(IASTInitializerClause.Kind kind, IASTExpression assignmentExpression, List initializerClauses) {
|
public IASTInitializerClause createInitializerClause(IASTInitializerClause.Kind kind, IASTExpression assignmentExpression, List initializerClauses) {
|
||||||
return new ASTInitializerClause( kind, assignmentExpression, initializerClauses );
|
return new ASTInitializerClause( kind, assignmentExpression, initializerClauses );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#createExceptionSpecification(java.util.List)
|
||||||
|
*/
|
||||||
|
public IASTExceptionSpecification createExceptionSpecification(List typeIds)
|
||||||
|
{
|
||||||
|
return new ASTExceptionSpecification( typeIds );
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#createArrayModifier(org.eclipse.cdt.core.parser.ast.IASTExpression)
|
||||||
|
*/
|
||||||
|
public IASTArrayModifier createArrayModifier(IASTExpression exp)
|
||||||
|
{
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#createConstructorMemberInitializer(org.eclipse.cdt.core.parser.ITokenDuple, org.eclipse.cdt.core.parser.ast.IASTExpression)
|
||||||
|
*/
|
||||||
|
public IASTConstructorMemberInitializer createConstructorMemberInitializer(ITokenDuple duple, IASTExpression expressionList )
|
||||||
|
{
|
||||||
|
return new ASTConstructorMemberInitializer( duple.toString(), expressionList );
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#createSimpleTypeSpecifier(org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier.SimpleType, org.eclipse.cdt.core.parser.ITokenDuple)
|
||||||
|
*/
|
||||||
|
public IASTSimpleTypeSpecifier createSimpleTypeSpecifier(SimpleType kind, ITokenDuple typeName, boolean isShort, boolean isLong, boolean isSigned, boolean isUnsigned, boolean isTypename )
|
||||||
|
{
|
||||||
|
return new ASTSimpleTypeSpecifier( kind, typeName, isShort, isLong, isSigned, isUnsigned, isTypename );
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue