rendered paste bodyimport java.io.IOException;
import java.util.Iterator;
import org.eclipse.cdt.core.parser.CodeReader;
import org.eclipse.cdt.core.parser.IParser;
import org.eclipse.cdt.core.parser.IProblem;
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
import org.eclipse.cdt.core.parser.NullLogService;
import org.eclipse.cdt.core.parser.ParserFactory;
import org.eclipse.cdt.core.parser.ParserFactoryError;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.ParserMode;
import org.eclipse.cdt.core.parser.ScannerInfo;
import org.eclipse.cdt.core.parser.ast.IASTASMDefinition;
import org.eclipse.cdt.core.parser.ast.IASTAbstractTypeSpecifierDeclaration;
import org.eclipse.cdt.core.parser.ast.IASTClassReference;
import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTCodeScope;
import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit;
import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTEnumerationReference;
import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTEnumeratorReference;
import org.eclipse.cdt.core.parser.ast.IASTField;
import org.eclipse.cdt.core.parser.ast.IASTFieldReference;
import org.eclipse.cdt.core.parser.ast.IASTFunction;
import org.eclipse.cdt.core.parser.ast.IASTFunctionReference;
import org.eclipse.cdt.core.parser.ast.IASTInclusion;
import org.eclipse.cdt.core.parser.ast.IASTLinkageSpecification;
import org.eclipse.cdt.core.parser.ast.IASTMacro;
import org.eclipse.cdt.core.parser.ast.IASTMethod;
import org.eclipse.cdt.core.parser.ast.IASTMethodReference;
import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
import org.eclipse.cdt.core.parser.ast.IASTNamespaceReference;
import org.eclipse.cdt.core.parser.ast.IASTParameterReference;
import org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration;
import org.eclipse.cdt.core.parser.ast.IASTTemplateInstantiation;
import org.eclipse.cdt.core.parser.ast.IASTTemplateParameterReference;
import org.eclipse.cdt.core.parser.ast.IASTTemplateSpecialization;
import org.eclipse.cdt.core.parser.ast.IASTTypedefDeclaration;
import org.eclipse.cdt.core.parser.ast.IASTTypedefReference;
import org.eclipse.cdt.core.parser.ast.IASTUsingDeclaration;
import org.eclipse.cdt.core.parser.ast.IASTUsingDirective;
import org.eclipse.cdt.core.parser.ast.IASTVariable;
import org.eclipse.cdt.core.parser.ast.IASTVariableReference;
public class CDTParserTest {
static class ParserCallBack implements ISourceElementRequestor{
public void acceptVariable(IASTVariable arg0) {
}
public void acceptFunctionDeclaration(IASTFunction arg0) {
}
public void enterFunctionBody(IASTFunction arg0) {
System.out.println("Function found");
System.out.println("Name: "+arg0.getName());
System.out.println("Starting at: "+arg0.getStartingOffset());
System.out.println("Ending at: "+arg0.getEndingOffset());
System.out.println("Name starts at: "+arg0.getNameOffset());
System.out.println("Name ends at: "+arg0.getNameEndOffset());
}
public void acceptTypedefDeclaration(IASTTypedefDeclaration arg0) {}
public void acceptEnumerationSpecifier(IASTEnumerationSpecifier arg0) {}
public void enterNamespaceDefinition(IASTNamespaceDefinition arg0) {}
public void enterClassSpecifier(IASTClassSpecifier arg0) {
}
public void acceptField(IASTField arg0) {
}
public void acceptClassReference(IASTClassReference arg0) {
}
public void acceptTypedefReference(IASTTypedefReference arg0) {}
public void acceptVariableReference(IASTVariableReference arg0) {
}
public void acceptFunctionReference(IASTFunctionReference arg0) {
}
public void acceptFieldReference(IASTFieldReference arg0) {}
public void acceptParameterReference(IASTParameterReference arg0) {
}
public void acceptAbstractTypeSpecDeclaration(IASTAbstractTypeSpecifierDeclaration arg0) {
}
public void acceptMethodDeclaration(IASTMethod arg0) {
}
public void acceptMethodReference(IASTMethodReference arg0) {
}
public void enterMethodBody(IASTMethod arg0) {
}
/* UNIMPLEMENTED INTERFACE FUNCTIIONS */
public void enterCodeBlock(IASTCodeScope arg0) {}
public void acceptMacro(IASTMacro arg0) {}
public void acceptUsingDirective(IASTUsingDirective arg0) {}
public void acceptUsingDeclaration(IASTUsingDeclaration arg0) {}
public void acceptASMDefinition(IASTASMDefinition arg0) {}
public void acceptElaboratedForewardDeclaration(IASTElaboratedTypeSpecifier arg0) {}
public void exitFunctionBody(IASTFunction arg0) {}
public void exitCodeBlock(IASTCodeScope arg0) {}
public void enterCompilationUnit(IASTCompilationUnit arg0) {}
public void enterInclusion(IASTInclusion arg0) {}
public void enterLinkageSpecification(IASTLinkageSpecification arg0) {}
public void enterTemplateDeclaration(IASTTemplateDeclaration arg0) {}
public void enterTemplateSpecialization(IASTTemplateSpecialization arg0) {}
public void exitMethodBody(IASTMethod arg0) {}
public void enterTemplateInstantiation(IASTTemplateInstantiation arg0) {}
public void acceptTemplateParameterReference(IASTTemplateParameterReference arg0) {}
public void acceptEnumeratorReference(IASTEnumeratorReference arg0) {}
public void acceptNamespaceReference(IASTNamespaceReference arg0) {}
public void acceptEnumerationReference(IASTEnumerationReference arg0) {}
public void acceptFriendDeclaration(IASTDeclaration arg0) {}
public void exitTemplateDeclaration(IASTTemplateDeclaration arg0) {}
public void exitTemplateSpecialization(IASTTemplateSpecialization arg0) {}
public void exitTemplateExplicitInstantiation(IASTTemplateInstantiation arg0) {}
public void exitLinkageSpecification(IASTLinkageSpecification arg0) {}
public void exitClassSpecifier(IASTClassSpecifier arg0) {}
public void exitNamespaceDefinition(IASTNamespaceDefinition arg0) {}
public void exitInclusion(IASTInclusion arg0) {}
public void exitCompilationUnit(IASTCompilationUnit arg0) {}
public CodeReader createReader(String arg0, Iterator arg1) {
return null;
}
public boolean acceptProblem(IProblem arg0) {
return false;
}
}
/**
* @param args
* @throws IOException
* @throws ParserFactoryError
*/
public static void main(String[] args) throws ParserFactoryError, IOException {
ParserCallBack callback = new ParserCallBack();
IParser parser = ParserFactory.createParser(
ParserFactory.createScanner(args[0], new ScannerInfo(), ParserMode.COMPLETE_PARSE,
ParserLanguage.CPP, callback, new NullLogService(), null),
callback,
ParserMode.COMPLETE_PARSE,
ParserLanguage.CPP,
new NullLogService());
if(!parser.parse())
System.err.println("Some errors found during parse");
}
}