Skip to main content
aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorJohn Camelon2003-11-05 23:35:28 +0000
committerJohn Camelon2003-11-05 23:35:28 +0000
commit97e203468edf67f1df228f522bcb03c910a1eab6 (patch)
tree18ca19067441cb46dc09451cea2ae8c7f0b98471 /core
parent6189ea9764d971a4393677e908001251f061ff95 (diff)
downloadorg.eclipse.cdt-97e203468edf67f1df228f522bcb03c910a1eab6.tar.gz
org.eclipse.cdt-97e203468edf67f1df228f522bcb03c910a1eab6.tar.xz
org.eclipse.cdt-97e203468edf67f1df228f522bcb03c910a1eab6.zip
CORE
Cleaned up the ParserFactory interface to check for validity of input arguments. Moved NullSourceElementRequestor and ScannerInfo to public interface as requested. Restructured code so that no Eclipse/CDT source outside the parser source directory is used. Updated parser clients to use new ParserFactory (stand-alone parser work item). UI & TESTS Updated parser clients to use new ParserFactory (stand-alone parser work item).
Diffstat (limited to 'core')
-rw-r--r--core/org.eclipse.cdt.core.tests/ChangeLog3
-rw-r--r--core/org.eclipse.cdt.core.tests/build/org/eclipse/cdt/core/build/managed/tests/ManagedBuildTests.java6
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/AutomatedFramework.java2
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/AutomatedTest.java6
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/BaseASTTest.java19
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/BaseScannerTest.java13
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseBaseTest.java11
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ExprEvalTest.java6
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/FractionalAutomatedTest.java6
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/PreprocessorConditionalTest.java16
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/PreprocessorTest.java6
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/QuickParseASTTests.java13
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ScannerTestCase.java15
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/TortureTest.java4
-rw-r--r--core/org.eclipse.cdt.core.tests/search/org/eclipse/cdt/core/search/tests/ParseTestOnSearchFiles.java12
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexer.java17
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder.java19
-rw-r--r--core/org.eclipse.cdt.core/parser/ChangeLog6
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/DefaultLogService.java36
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IParserLogService.java23
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/NullSourceElementRequestor.java (renamed from core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/NullSourceElementRequestor.java)6
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ParserFactory.java27
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ParserFactoryException.java44
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ScannerInfo.java (renamed from core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ScannerInfo.java)2
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java22
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Preprocessor.java9
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/QuickParseCallback.java1
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Scanner.java62
-rw-r--r--core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java85
-rw-r--r--core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java17
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ICLogConstants.java1
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/parser/IScannerInfoChangeListener.java (renamed from core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IScannerInfoChangeListener.java)0
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/parser/IScannerInfoProvider.java (renamed from core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IScannerInfoProvider.java)0
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/parser/ParserUtil.java27
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/parser/ParserLogService.java41
-rw-r--r--core/org.eclipse.cdt.ui/ChangeLog3
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/compare/CStructureCreator.java11
37 files changed, 459 insertions, 138 deletions
diff --git a/core/org.eclipse.cdt.core.tests/ChangeLog b/core/org.eclipse.cdt.core.tests/ChangeLog
index 4146681f0f5..51ca54d39f4 100644
--- a/core/org.eclipse.cdt.core.tests/ChangeLog
+++ b/core/org.eclipse.cdt.core.tests/ChangeLog
@@ -1,4 +1,7 @@
2003-11-05 John Camelon
+ Updated parser clients to use new ParserFactory (stand-alone parser work item).
+
+2003-11-05 John Camelon
Updated parser clients to use new IProblem strategy.
2003-10-28 Andrew Niefer
diff --git a/core/org.eclipse.cdt.core.tests/build/org/eclipse/cdt/core/build/managed/tests/ManagedBuildTests.java b/core/org.eclipse.cdt.core.tests/build/org/eclipse/cdt/core/build/managed/tests/ManagedBuildTests.java
index 09ddd195237..deea26f711b 100644
--- a/core/org.eclipse.cdt.core.tests/build/org/eclipse/cdt/core/build/managed/tests/ManagedBuildTests.java
+++ b/core/org.eclipse.cdt.core.tests/build/org/eclipse/cdt/core/build/managed/tests/ManagedBuildTests.java
@@ -28,10 +28,10 @@ import org.eclipse.cdt.core.parser.IScannerInfo;
import org.eclipse.cdt.core.parser.IScannerInfoChangeListener;
import org.eclipse.cdt.core.parser.IScannerInfoProvider;
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
+import org.eclipse.cdt.core.parser.NullSourceElementRequestor;
import org.eclipse.cdt.core.parser.ParserFactory;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.ParserMode;
-import org.eclipse.cdt.internal.core.parser.NullSourceElementRequestor;
import org.eclipse.cdt.managedbuilder.core.BuildException;
import org.eclipse.cdt.managedbuilder.core.IConfiguration;
import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
@@ -982,9 +982,9 @@ public class ManagedBuildTests extends TestCase {
ISourceElementRequestor callback = new NullSourceElementRequestor();
IScanner scanner = ParserFactory.createScanner( new StringReader( "#include <header.h>\n int A::i = 1;" ),
- "TEST", info, ParserMode.COMPLETE_PARSE, ParserLanguage.CPP, callback );
+ "TEST", info, ParserMode.COMPLETE_PARSE, ParserLanguage.CPP, callback, null);
- IParser parser = ParserFactory.createParser( scanner, callback, ParserMode.COMPLETE_PARSE, ParserLanguage.CPP );
+ IParser parser = ParserFactory.createParser( scanner, callback, ParserMode.COMPLETE_PARSE, ParserLanguage.CPP, null );
assertTrue( parser.parse() );
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/AutomatedFramework.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/AutomatedFramework.java
index 4dd5dddc79d..3326734d962 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/AutomatedFramework.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/AutomatedFramework.java
@@ -25,7 +25,7 @@ import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
-import org.eclipse.cdt.internal.core.parser.NullSourceElementRequestor;
+import org.eclipse.cdt.core.parser.NullSourceElementRequestor;
/**
* @author aniefer
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/AutomatedTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/AutomatedTest.java
index 027113b3e69..a1aeed0c6af 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/AutomatedTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/AutomatedTest.java
@@ -23,10 +23,10 @@ import junit.framework.Test;
import org.eclipse.cdt.core.parser.ILineOffsetReconciler;
import org.eclipse.cdt.core.parser.IParser;
-import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.ParserFactory;
+import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.ParserMode;
-import org.eclipse.cdt.internal.core.parser.ScannerInfo;
+import org.eclipse.cdt.core.parser.ScannerInfo;
import org.eclipse.core.runtime.Path;
@@ -58,7 +58,7 @@ public class AutomatedTest extends AutomatedFramework {
String filePath = file.getCanonicalPath();
ParserLanguage language = ((String)natures.get( filePath )).equalsIgnoreCase("cpp") ? ParserLanguage.CPP : ParserLanguage.C;
- parser = ParserFactory.createParser( ParserFactory.createScanner( new InputStreamReader (stream), filePath, new ScannerInfo(), ParserMode.QUICK_PARSE, language, nullCallback ), nullCallback, ParserMode.QUICK_PARSE, language);
+ parser = ParserFactory.createParser( ParserFactory.createScanner( new InputStreamReader (stream), filePath, new ScannerInfo(), ParserMode.QUICK_PARSE, language, nullCallback, null ), nullCallback, ParserMode.QUICK_PARSE, language, null);
mapping = ParserFactory.createLineOffsetReconciler( new InputStreamReader( stream ) );
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/BaseASTTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/BaseASTTest.java
index a10f33c072b..4c0950e242c 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/BaseASTTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/BaseASTTest.java
@@ -17,9 +17,11 @@ import junit.framework.TestCase;
import org.eclipse.cdt.core.parser.IParser;
import org.eclipse.cdt.core.parser.IQuickParseCallback;
-import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.ParserFactory;
+import org.eclipse.cdt.core.parser.ParserFactoryException;
+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.ASTNotImplementedException;
import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit;
import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
@@ -29,7 +31,6 @@ import org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTTypedefDeclaration;
import org.eclipse.cdt.core.parser.ast.IASTVariable;
import org.eclipse.cdt.internal.core.parser.ParserException;
-import org.eclipse.cdt.internal.core.parser.ScannerInfo;
/**
* @author jcamelon
@@ -45,38 +46,38 @@ public class BaseASTTest extends TestCase
protected IQuickParseCallback quickParseCallback;
protected IParser parser;
- protected IASTCompilationUnit parse( String code, boolean quick, boolean throwExceptionOnError, ParserLanguage lang ) throws ParserException
+ protected IASTCompilationUnit parse( String code, boolean quick, boolean throwExceptionOnError, ParserLanguage lang ) throws ParserException, ParserFactoryException
{
ParserMode mode = quick ? ParserMode.QUICK_PARSE : ParserMode.COMPLETE_PARSE;
quickParseCallback = ParserFactory.createQuickParseCallback();
- parser = ParserFactory.createParser( ParserFactory.createScanner( new StringReader( code ), "code", new ScannerInfo(), mode, lang, quickParseCallback), quickParseCallback, mode, lang );
+ parser = ParserFactory.createParser( ParserFactory.createScanner( new StringReader( code ), "code", new ScannerInfo(), mode, lang, quickParseCallback, null), quickParseCallback, mode, lang, null );
if( ! parser.parse() && throwExceptionOnError )
throw new ParserException("Parse failure");
return quickParseCallback.getCompilationUnit();
}
- protected IASTCompilationUnit parse( String code, boolean quick, boolean throwExceptionOnError ) throws ParserException
+ protected IASTCompilationUnit parse( String code, boolean quick, boolean throwExceptionOnError ) throws ParserException, ParserFactoryException
{
return parse( code, quick, throwExceptionOnError, ParserLanguage.CPP );
}
- protected IASTCompilationUnit parse( String code )throws ParserException
+ protected IASTCompilationUnit parse( String code )throws ParserException, ParserFactoryException
{
return parse( code, true, true );
}
- protected IASTCompilationUnit fullParse( String code ) throws ParserException
+ protected IASTCompilationUnit fullParse( String code ) throws ParserException, ParserFactoryException
{
return parse( code, false, true );
}
- protected IASTDeclaration assertSoleDeclaration( String code ) throws ParserException
+ protected IASTDeclaration assertSoleDeclaration( String code ) throws ParserException, ParserFactoryException
{
return assertSoleDeclaration( code, ParserLanguage.CPP );
}
- protected IASTDeclaration assertSoleDeclaration( String code, ParserLanguage language ) throws ParserException
+ protected IASTDeclaration assertSoleDeclaration( String code, ParserLanguage language ) throws ParserException, ParserFactoryException
{
Iterator declarationIter = null;
try
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/BaseScannerTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/BaseScannerTest.java
index 4bf7f8dc21f..36a875e0899 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/BaseScannerTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/BaseScannerTest.java
@@ -18,12 +18,13 @@ import junit.framework.TestCase;
import org.eclipse.cdt.core.parser.EndOfFile;
import org.eclipse.cdt.core.parser.IScanner;
import org.eclipse.cdt.core.parser.IToken;
-import org.eclipse.cdt.core.parser.ParserLanguage;
+import org.eclipse.cdt.core.parser.NullSourceElementRequestor;
import org.eclipse.cdt.core.parser.ParserFactory;
+import org.eclipse.cdt.core.parser.ParserFactoryException;
+import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.ParserMode;
import org.eclipse.cdt.core.parser.ScannerException;
-import org.eclipse.cdt.internal.core.parser.NullSourceElementRequestor;
-import org.eclipse.cdt.internal.core.parser.ScannerInfo;
+import org.eclipse.cdt.core.parser.ScannerInfo;
/**
* @author jcamelon
@@ -38,13 +39,13 @@ public class BaseScannerTest extends TestCase {
super(x);
}
- protected void initializeScanner( String input, ParserMode mode )
+ protected void initializeScanner( String input, ParserMode mode ) throws ParserFactoryException
{
- scanner= ParserFactory.createScanner( new StringReader(input),"TEXT", new ScannerInfo(), mode, ParserLanguage.CPP, new NullSourceElementRequestor( mode ) );
+ scanner= ParserFactory.createScanner( new StringReader(input),"TEXT", new ScannerInfo(), mode, ParserLanguage.CPP, new NullSourceElementRequestor( mode ), null );
}
- protected void initializeScanner(String input)
+ protected void initializeScanner(String input) throws ParserFactoryException
{
initializeScanner( input, ParserMode.COMPLETE_PARSE );
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseBaseTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseBaseTest.java
index 2b4cf1bda71..c7e3f035e9e 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseBaseTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseBaseTest.java
@@ -26,8 +26,10 @@ import org.eclipse.cdt.core.parser.IProblem;
import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
import org.eclipse.cdt.core.parser.ParserFactory;
+import org.eclipse.cdt.core.parser.ParserFactoryException;
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;
@@ -64,7 +66,6 @@ import org.eclipse.cdt.core.parser.ast.IASTUsingDirective;
import org.eclipse.cdt.core.parser.ast.IASTVariable;
import org.eclipse.cdt.core.parser.ast.IASTVariableReference;
import org.eclipse.cdt.internal.core.parser.ParserException;
-import org.eclipse.cdt.internal.core.parser.ScannerInfo;
/**
* @author jcamelon
@@ -672,22 +673,22 @@ public class CompleteParseBaseTest extends TestCase
}
protected FullParseCallback callback;
- protected IASTScope parse( String code ) throws ParserException
+ protected IASTScope parse( String code ) throws ParserException, ParserFactoryException
{
return parse( code, true, ParserLanguage.CPP );
}
- protected IASTScope parse( String code, boolean throwOnError ) throws ParserException
+ protected IASTScope parse( String code, boolean throwOnError ) throws ParserException, ParserFactoryException
{
return parse( code, throwOnError, ParserLanguage.CPP );
}
- protected IASTScope parse(String code, boolean throwOnError, ParserLanguage language) throws ParserException
+ protected IASTScope parse(String code, boolean throwOnError, ParserLanguage language) throws ParserException, ParserFactoryException
{
callback = new FullParseCallback();
IParser parser = ParserFactory.createParser(
ParserFactory.createScanner( new StringReader( code ), "test-code", new ScannerInfo(),
- ParserMode.COMPLETE_PARSE, language, callback ), callback, ParserMode.COMPLETE_PARSE, language
+ ParserMode.COMPLETE_PARSE, language, callback, null ), callback, ParserMode.COMPLETE_PARSE, language, null
);
if( ! parser.parse() && throwOnError ) throw new ParserException( "FAILURE");
return callback.getCompilationUnit();
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ExprEvalTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ExprEvalTest.java
index 78009004215..68072d7394f 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ExprEvalTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ExprEvalTest.java
@@ -7,12 +7,12 @@ import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.eclipse.cdt.core.parser.IParser;
+import org.eclipse.cdt.core.parser.NullSourceElementRequestor;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.ParserFactory;
import org.eclipse.cdt.core.parser.ParserMode;
import org.eclipse.cdt.core.parser.ast.IASTExpression;
-import org.eclipse.cdt.internal.core.parser.NullSourceElementRequestor;
-import org.eclipse.cdt.internal.core.parser.ScannerInfo;
+import org.eclipse.cdt.core.parser.ScannerInfo;
public class ExprEvalTest extends TestCase {
@@ -27,7 +27,7 @@ public class ExprEvalTest extends TestCase {
public void runTest(String code, int expectedValue) throws Exception {
final NullSourceElementRequestor nullCallback = new NullSourceElementRequestor();
- IParser parser = ParserFactory.createParser(ParserFactory.createScanner( new StringReader( code ), null, new ScannerInfo(), null, ParserLanguage.CPP, nullCallback ), nullCallback, ParserMode.QUICK_PARSE, ParserLanguage.CPP );
+ IParser parser = ParserFactory.createParser(ParserFactory.createScanner( new StringReader( code ), getClass().getName(), new ScannerInfo(), null, ParserLanguage.CPP, nullCallback, null ), nullCallback, ParserMode.QUICK_PARSE, ParserLanguage.CPP, null );
IASTExpression expression = parser.expression(null);
assertEquals(expectedValue, expression.evaluateExpression());
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/FractionalAutomatedTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/FractionalAutomatedTest.java
index 0edfb9db88c..615499b4ec3 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/FractionalAutomatedTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/FractionalAutomatedTest.java
@@ -23,10 +23,10 @@ import java.util.StringTokenizer;
import junit.framework.Test;
import org.eclipse.cdt.core.parser.IParser;
-import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.ParserFactory;
+import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.ParserMode;
-import org.eclipse.cdt.internal.core.parser.ScannerInfo;
+import org.eclipse.cdt.core.parser.ScannerInfo;
import org.eclipse.core.runtime.Path;
/**
@@ -241,7 +241,7 @@ public class FractionalAutomatedTest extends AutomatedFramework {
result = null;
ParserLanguage language = cppNature ? ParserLanguage.CPP : ParserLanguage.C;
IParser parser = ParserFactory.createParser(
- ParserFactory.createScanner( new StringReader( code ), null, new ScannerInfo(), ParserMode.QUICK_PARSE, language, nullCallback ), nullCallback, ParserMode.QUICK_PARSE, language);
+ ParserFactory.createScanner( new StringReader( code ), null, new ScannerInfo(), ParserMode.QUICK_PARSE, language, nullCallback, null ), nullCallback, ParserMode.QUICK_PARSE, language, null );
parser.parse();
} catch ( Exception e ){
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/PreprocessorConditionalTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/PreprocessorConditionalTest.java
index 9623e2e103f..5b57f09b11c 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/PreprocessorConditionalTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/PreprocessorConditionalTest.java
@@ -17,12 +17,12 @@ import java.util.Map;
import org.eclipse.cdt.core.parser.EndOfFile;
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
import org.eclipse.cdt.core.parser.IToken;
-import org.eclipse.cdt.core.parser.ParserLanguage;
+import org.eclipse.cdt.core.parser.NullSourceElementRequestor;
import org.eclipse.cdt.core.parser.ParserFactory;
+import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.ParserMode;
import org.eclipse.cdt.core.parser.ScannerException;
-import org.eclipse.cdt.internal.core.parser.NullSourceElementRequestor;
-import org.eclipse.cdt.internal.core.parser.ScannerInfo;
+import org.eclipse.cdt.core.parser.ScannerInfo;
/**
* @author jcamelon
@@ -34,13 +34,13 @@ public class PreprocessorConditionalTest extends BaseScannerTest
private ISourceElementRequestor nullSourceElementRequestor = new NullSourceElementRequestor();
- protected void initializeScanner(String input, Map definitions )
+ protected void initializeScanner(String input, Map definitions ) throws Exception
{
- scanner= ParserFactory.createScanner( new StringReader(input),"TEXT", new ScannerInfo( definitions, null), ParserMode.COMPLETE_PARSE, ParserLanguage.CPP, nullSourceElementRequestor );
+ scanner= ParserFactory.createScanner( new StringReader(input),"TEXT", new ScannerInfo( definitions, null), ParserMode.COMPLETE_PARSE, ParserLanguage.CPP, nullSourceElementRequestor, null );
}
- protected void evaluateConditionalsPositive( String conditional, Map definitions )
+ protected void evaluateConditionalsPositive( String conditional, Map definitions ) throws Exception
{
StringBuffer buff = new StringBuffer();
@@ -51,7 +51,7 @@ public class PreprocessorConditionalTest extends BaseScannerTest
evaluate();
}
- protected void evaluateConditionalsNegative( String conditional, Map definitions )
+ protected void evaluateConditionalsNegative( String conditional, Map definitions )throws Exception
{
StringBuffer buff = new StringBuffer();
@@ -94,7 +94,7 @@ public class PreprocessorConditionalTest extends BaseScannerTest
super(x);
}
- public void testConditionals()
+ public void testConditionals()throws Exception
{
Map definitions = new HashMap();
definitions.put( "DEFED", "" );
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/PreprocessorTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/PreprocessorTest.java
index 8eaf24cfc0c..b8be417bb46 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/PreprocessorTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/PreprocessorTest.java
@@ -19,12 +19,12 @@ import junit.framework.TestCase;
import org.eclipse.cdt.core.parser.IPreprocessor;
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
+import org.eclipse.cdt.core.parser.NullSourceElementRequestor;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.ParserFactory;
import org.eclipse.cdt.core.parser.ParserMode;
import org.eclipse.cdt.core.parser.ast.IASTInclusion;
-import org.eclipse.cdt.internal.core.parser.NullSourceElementRequestor;
-import org.eclipse.cdt.internal.core.parser.ScannerInfo;
+import org.eclipse.cdt.core.parser.ScannerInfo;
/**
* @author jcamelon
@@ -75,7 +75,7 @@ public class PreprocessorTest extends TestCase {
public IPreprocessor setupPreprocessor( String text, List includePaths, Map defns, ISourceElementRequestor rq )
{
IPreprocessor p = ParserFactory.createPreprocessor( new StringReader( text ), "test", new ScannerInfo( defns,
- includePaths == null ? null : (String [])includePaths.toArray()), ParserMode.COMPLETE_PARSE, ParserLanguage.CPP, rq );
+ includePaths == null ? null : (String [])includePaths.toArray()), ParserMode.COMPLETE_PARSE, ParserLanguage.CPP, rq, null );
return p;
}
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/QuickParseASTTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/QuickParseASTTests.java
index b3694bc2312..f689839234e 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/QuickParseASTTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/QuickParseASTTests.java
@@ -1800,7 +1800,7 @@ public class QuickParseASTTests extends BaseASTTest
parse( "const int x = 4; int y = ::x;");
}
- public void testBug40419() throws ParserException
+ public void testBug40419() throws Exception
{
Writer code = new StringWriter();
try
@@ -1849,7 +1849,8 @@ public class QuickParseASTTests extends BaseASTTest
public void testBug43644() throws Exception
{
Iterator i = parse( "void foo();{ int x; }", true, false ).getDeclarations();
- IASTFunction f = (IASTFunction)i.next();
+ IASTFunction f = (IASTFunction)i.next();
+ assertEquals( f.getName(), "foo");
assertFalse( i.hasNext() );
}
@@ -1894,11 +1895,11 @@ public class QuickParseASTTests extends BaseASTTest
writer.write( "};\n" );
Iterator i = parse( writer.toString() ).getDeclarations();
- IASTTemplateDeclaration templateDecl = (IASTTemplateDeclaration)i.next();
+ assertTrue( i.next() instanceof IASTTemplateDeclaration );
IASTClassSpecifier classB = (IASTClassSpecifier)((IASTAbstractTypeSpecifierDeclaration)i.next()).getTypeSpecifier();
Iterator members = classB.getDeclarations();
- IASTTemplateDeclaration friend = (IASTTemplateDeclaration)members.next();
- IASTMethod method = (IASTMethod)members.next();
+ assertTrue (members.next() instanceof IASTTemplateDeclaration );
+ assertTrue( members.next() instanceof IASTMethod );
assertFalse( i.hasNext() );
}
@@ -1910,7 +1911,7 @@ public class QuickParseASTTests extends BaseASTTest
public void testBug41935() throws Exception
{
Iterator i = parse( "namespace A { int x; } namespace B = A;" ).getDeclarations();
- IASTNamespaceDefinition n = (IASTNamespaceDefinition)i.next();
+ assertTrue( i.next() instanceof IASTNamespaceDefinition );
IASTNamespaceAlias a = (IASTNamespaceAlias)i.next();
assertEquals( a.getName(), "B" );
assertFalse( i.hasNext() );
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ScannerTestCase.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ScannerTestCase.java
index a89a52d3c0e..802b843df69 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ScannerTestCase.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ScannerTestCase.java
@@ -8,6 +8,7 @@ import org.eclipse.cdt.core.parser.EndOfFile;
import org.eclipse.cdt.core.parser.IMacroDescriptor;
import org.eclipse.cdt.core.parser.IProblem;
import org.eclipse.cdt.core.parser.IToken;
+import org.eclipse.cdt.core.parser.ParserFactoryException;
import org.eclipse.cdt.core.parser.ParserMode;
import org.eclipse.cdt.core.parser.ScannerException;
import org.eclipse.cdt.internal.core.parser.Token;
@@ -156,7 +157,7 @@ public class ScannerTestCase extends BaseScannerTest
public final static int SIZEOF_TRUTHTABLE = 10;
- public void testWeirdStrings()
+ public void testWeirdStrings() throws Exception
{
try
{
@@ -174,7 +175,7 @@ public class ScannerTestCase extends BaseScannerTest
}
- public void testNumerics()
+ public void testNumerics()throws Exception
{
try
{
@@ -205,7 +206,7 @@ public class ScannerTestCase extends BaseScannerTest
super(name);
}
- public void testPreprocessorDefines()
+ public void testPreprocessorDefines()throws Exception
{
try
{
@@ -848,7 +849,7 @@ public class ScannerTestCase extends BaseScannerTest
}
}
- public void testQuickScan() throws EndOfFile
+ public void testQuickScan() throws EndOfFile, ParserFactoryException
{
try
{
@@ -924,7 +925,7 @@ public class ScannerTestCase extends BaseScannerTest
}
- public void testOtherPreprocessorCommands()
+ public void testOtherPreprocessorCommands() throws ParserFactoryException
{
try
{
@@ -1033,7 +1034,7 @@ public class ScannerTestCase extends BaseScannerTest
validateEOF();
}
- public void testBug35892()
+ public void testBug35892() throws ParserFactoryException
{
try
{
@@ -1064,7 +1065,7 @@ public class ScannerTestCase extends BaseScannerTest
validateString( "\\\"\\\\");
}
- public void testConditionalWithBraces()
+ public void testConditionalWithBraces() throws ParserFactoryException
{
try
{
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/TortureTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/TortureTest.java
index 14bb6efc569..630b25a72fa 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/TortureTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/TortureTest.java
@@ -27,7 +27,7 @@ import org.eclipse.cdt.core.parser.IParser;
import org.eclipse.cdt.core.parser.ParserFactory;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.ParserMode;
-import org.eclipse.cdt.internal.core.parser.ScannerInfo;
+import org.eclipse.cdt.core.parser.ScannerInfo;
import org.eclipse.core.runtime.Path;
@@ -280,7 +280,7 @@ public class TortureTest extends FractionalAutomatedTest {
ParserMode parserMode = quickParse ? ParserMode.QUICK_PARSE : ParserMode.COMPLETE_PARSE;
ParserLanguage language = cppNature ? ParserLanguage.CPP : ParserLanguage.C;
parser = ParserFactory.createParser(
- ParserFactory.createScanner( new StringReader( code ), null, new ScannerInfo(), parserMode, language, nullCallback ), nullCallback, parserMode, language);
+ ParserFactory.createScanner( new StringReader( code ), null, new ScannerInfo(), parserMode, language, nullCallback, null ), nullCallback, parserMode, language, null);
mapping = ParserFactory.createLineOffsetReconciler( new StringReader( code ) );
diff --git a/core/org.eclipse.cdt.core.tests/search/org/eclipse/cdt/core/search/tests/ParseTestOnSearchFiles.java b/core/org.eclipse.cdt.core.tests/search/org/eclipse/cdt/core/search/tests/ParseTestOnSearchFiles.java
index 1582942b46e..9e099a55684 100644
--- a/core/org.eclipse.cdt.core.tests/search/org/eclipse/cdt/core/search/tests/ParseTestOnSearchFiles.java
+++ b/core/org.eclipse.cdt.core.tests/search/org/eclipse/cdt/core/search/tests/ParseTestOnSearchFiles.java
@@ -18,11 +18,11 @@ import junit.framework.TestCase;
import org.eclipse.cdt.core.parser.IParser;
import org.eclipse.cdt.core.parser.IScanner;
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
-import org.eclipse.cdt.core.parser.ParserLanguage;
+import org.eclipse.cdt.core.parser.NullSourceElementRequestor;
import org.eclipse.cdt.core.parser.ParserFactory;
+import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.ParserMode;
-import org.eclipse.cdt.internal.core.parser.NullSourceElementRequestor;
-import org.eclipse.cdt.internal.core.parser.ScannerInfo;
+import org.eclipse.cdt.core.parser.ScannerInfo;
import org.eclipse.core.runtime.Path;
/**
@@ -55,11 +55,11 @@ public class ParseTestOnSearchFiles extends TestCase
fileIn = new FileInputStream(name);
}
- public void testParseOfAndrewsFile()
+ public void testParseOfAndrewsFile() throws Exception
{
ISourceElementRequestor requestor = new NullSourceElementRequestor();
- IScanner scanner = ParserFactory.createScanner( new InputStreamReader( fileIn ), name, new ScannerInfo(), ParserMode.COMPLETE_PARSE, ParserLanguage.CPP, requestor );
- IParser parser = ParserFactory.createParser( scanner, requestor, ParserMode.COMPLETE_PARSE, ParserLanguage.CPP );
+ IScanner scanner = ParserFactory.createScanner( new InputStreamReader( fileIn ), name, new ScannerInfo(), ParserMode.COMPLETE_PARSE, ParserLanguage.CPP, requestor, null );
+ IParser parser = ParserFactory.createParser( scanner, requestor, ParserMode.COMPLETE_PARSE, ParserLanguage.CPP, null );
assertTrue( parser.parse() );
}
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexer.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexer.java
index e03f595f7cc..7acdf1a0378 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexer.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexer.java
@@ -21,15 +21,17 @@ import java.io.StringReader;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.ICLogConstants;
import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.parser.ParserUtil;
import org.eclipse.cdt.core.parser.IParser;
import org.eclipse.cdt.core.parser.IScannerInfo;
import org.eclipse.cdt.core.parser.IScannerInfoProvider;
+import org.eclipse.cdt.core.parser.ParserFactoryException;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.ParserFactory;
import org.eclipse.cdt.core.parser.ParserMode;
import org.eclipse.cdt.internal.core.index.IDocument;
import org.eclipse.cdt.internal.core.model.CModelManager;
-import org.eclipse.cdt.internal.core.parser.ScannerInfo;
+import org.eclipse.cdt.core.parser.ScannerInfo;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
@@ -84,9 +86,16 @@ public class SourceIndexer extends AbstractIndexer {
//C or CPP?
ParserLanguage language = CoreModel.getDefault().hasCCNature(currentProject) ? ParserLanguage.CPP : ParserLanguage.C;
- IParser parser = ParserFactory.createParser(
- ParserFactory.createScanner( new StringReader( document.getStringContent() ), resourceFile.getLocation().toOSString(), scanInfo, ParserMode.COMPLETE_PARSE, language, requestor ),
- requestor, ParserMode.COMPLETE_PARSE, language );
+ IParser parser = null;
+
+ try
+ {
+ parser = ParserFactory.createParser(
+ ParserFactory.createScanner( new StringReader( document.getStringContent() ), resourceFile.getLocation().toOSString(), scanInfo, ParserMode.COMPLETE_PARSE, language, requestor, ParserUtil.getParserLogService() ),
+ requestor, ParserMode.COMPLETE_PARSE, language, ParserUtil.getParserLogService() );
+ } catch( ParserFactoryException pfe )
+ {
+ }
boolean retVal = parser.parse();
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder.java
index aced75e8c64..cc81e6afee1 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder.java
@@ -22,8 +22,11 @@ import org.eclipse.cdt.core.model.ITemplate;
import org.eclipse.cdt.core.parser.IParser;
import org.eclipse.cdt.core.parser.IQuickParseCallback;
import org.eclipse.cdt.core.parser.ParserFactory;
+import org.eclipse.cdt.core.parser.ParserFactoryException;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.ParserMode;
+import org.eclipse.cdt.core.parser.ParserUtil;
+import org.eclipse.cdt.core.parser.ScannerInfo;
import org.eclipse.cdt.core.parser.ast.ASTClassKind;
import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
import org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration;
@@ -48,7 +51,6 @@ import org.eclipse.cdt.core.parser.ast.IASTTypeSpecifierOwner;
import org.eclipse.cdt.core.parser.ast.IASTTypedefDeclaration;
import org.eclipse.cdt.core.parser.ast.IASTVariable;
import org.eclipse.cdt.internal.core.parser.ParserException;
-import org.eclipse.cdt.internal.core.parser.ScannerInfo;
import org.eclipse.cdt.internal.core.parser.util.ASTUtil;
import org.eclipse.core.resources.IProject;
@@ -71,9 +73,18 @@ public class CModelBuilder {
quickParseCallback = ParserFactory.createQuickParseCallback();
ParserLanguage language = hasCppNature ? ParserLanguage.CPP : ParserLanguage.C;
- IParser parser = ParserFactory.createParser(
- ParserFactory.createScanner( new StringReader( code ), "code",
- new ScannerInfo(), mode, language, quickParseCallback), quickParseCallback, mode, language );
+
+ IParser parser = null;
+ try
+ {
+ parser = ParserFactory.createParser(
+ ParserFactory.createScanner( new StringReader( code ), "code",
+ new ScannerInfo(), mode, language, quickParseCallback, ParserUtil.getParserLogService()), quickParseCallback, mode, language, ParserUtil.getParserLogService() );
+ }
+ catch( ParserFactoryException pfe )
+ {
+ throw new ParserException( "Parser/Scanner construction failure.");
+ }
if( ! parser.parse() && throwExceptionOnError )
throw new ParserException("Parse failure");
diff --git a/core/org.eclipse.cdt.core/parser/ChangeLog b/core/org.eclipse.cdt.core/parser/ChangeLog
index 70b72dc81c1..9c3b7487eb9 100644
--- a/core/org.eclipse.cdt.core/parser/ChangeLog
+++ b/core/org.eclipse.cdt.core/parser/ChangeLog
@@ -1,4 +1,10 @@
2003-11-05 John Camelon
+ Cleaned up the ParserFactory interface to check for validity of input arguments.
+ Moved NullSourceElementRequestor and ScannerInfo to public interface as requested.
+ Restructured code so that no Eclipse/CDT source outside the parser source directory is used.
+ Updated parser clients to use new ParserFactory (stand-alone parser work item).
+
+2003-11-05 John Camelon
Removed warnings from parser source tree.
Removed preliminary task tags support to clean up parser interfaces and implementation.
Added preliminary IProblem support to
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/DefaultLogService.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/DefaultLogService.java
new file mode 100644
index 00000000000..b109f067c6b
--- /dev/null
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/DefaultLogService.java
@@ -0,0 +1,36 @@
+/**********************************************************************
+ * 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;
+
+/**
+ * @author jcamelon
+ *
+ */
+public class DefaultLogService implements IParserLogService
+{
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.parser.IParserLogService#traceLog(java.lang.String)
+ */
+ public void traceLog(String message)
+ {
+ // do nothing
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.parser.IParserLogService#errorLog(java.lang.String)
+ */
+ public void errorLog(String message)
+ {
+ // do nothing
+ }
+
+}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IParserLogService.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IParserLogService.java
new file mode 100644
index 00000000000..1da817e2e25
--- /dev/null
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IParserLogService.java
@@ -0,0 +1,23 @@
+/**********************************************************************
+ * 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;
+
+/**
+ * @author jcamelon
+ *
+ */
+public interface IParserLogService
+{
+
+ public void traceLog( String message );
+ public void errorLog( String message );
+
+}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/NullSourceElementRequestor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/NullSourceElementRequestor.java
index c38f5faba3f..7cc60547d39 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/NullSourceElementRequestor.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/NullSourceElementRequestor.java
@@ -1,9 +1,5 @@
-package org.eclipse.cdt.internal.core.parser;
+package org.eclipse.cdt.core.parser;
-import org.eclipse.cdt.core.parser.DefaultProblemHandler;
-import org.eclipse.cdt.core.parser.IProblem;
-import org.eclipse.cdt.core.parser.ISourceElementRequestor;
-import org.eclipse.cdt.core.parser.ParserMode;
import org.eclipse.cdt.core.parser.ast.IASTASMDefinition;
import org.eclipse.cdt.core.parser.ast.IASTAbstractTypeSpecifierDeclaration;
import org.eclipse.cdt.core.parser.ast.IASTClassReference;
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ParserFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ParserFactory.java
index 776b2ecae3b..a8bcfc44fb6 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ParserFactory.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ParserFactory.java
@@ -14,7 +14,6 @@ import java.io.Reader;
import org.eclipse.cdt.core.parser.ast.IASTFactory;
import org.eclipse.cdt.internal.core.parser.LineOffsetReconciler;
-import org.eclipse.cdt.internal.core.parser.NullSourceElementRequestor;
import org.eclipse.cdt.internal.core.parser.Parser;
import org.eclipse.cdt.internal.core.parser.Preprocessor;
import org.eclipse.cdt.internal.core.parser.QuickParseCallback;
@@ -37,26 +36,34 @@ public class ParserFactory {
return new CompleteParseASTFactory( language );
}
- public static IParser createParser( IScanner scanner, ISourceElementRequestor callback, ParserMode mode, ParserLanguage language )
+ public static IParser createParser( IScanner scanner, ISourceElementRequestor callback, ParserMode mode, ParserLanguage language, IParserLogService log ) throws ParserFactoryException
{
+ if( scanner == null ) throw new ParserFactoryException( ParserFactoryException.Kind.NULL_SCANNER );
+ if( language == null ) throw new ParserFactoryException( ParserFactoryException.Kind.NULL_LANGUAGE );
+ IParserLogService logService = ( log == null ) ? createDefaultLogService() : log;
ParserMode ourMode = ( (mode == null )? ParserMode.COMPLETE_PARSE : mode );
ISourceElementRequestor ourCallback = (( callback == null) ? new NullSourceElementRequestor() : callback );
- return new Parser( scanner, ourCallback, ourMode, language );
+ return new Parser( scanner, ourCallback, ourMode, language, logService );
}
- public static IScanner createScanner( Reader input, String fileName, IScannerInfo config, ParserMode mode, ParserLanguage language, ISourceElementRequestor requestor )
+ public static IScanner createScanner( Reader input, String fileName, IScannerInfo config, ParserMode mode, ParserLanguage language, ISourceElementRequestor requestor, IParserLogService log ) throws ParserFactoryException
{
+ if( input == null ) throw new ParserFactoryException( ParserFactoryException.Kind.NULL_READER );
+ if( fileName == null ) throw new ParserFactoryException( ParserFactoryException.Kind.NULL_FILENAME );
+ if( config == null ) throw new ParserFactoryException( ParserFactoryException.Kind.NULL_CONFIG );
+ if( language == null ) throw new ParserFactoryException( ParserFactoryException.Kind.NULL_LANGUAGE );
+ IParserLogService logService = ( log == null ) ? createDefaultLogService() : log;
ParserMode ourMode = ( (mode == null )? ParserMode.COMPLETE_PARSE : mode );
ISourceElementRequestor ourRequestor = (( requestor == null) ? new NullSourceElementRequestor() : requestor );
- IScanner s = new Scanner( input, fileName, config, ourRequestor, ourMode, language );
+ IScanner s = new Scanner( input, fileName, config, ourRequestor, ourMode, language, logService );
return s;
}
- public static IPreprocessor createPreprocessor( Reader input, String fileName, IScannerInfo info, ParserMode mode, ParserLanguage language, ISourceElementRequestor requestor )
+ public static IPreprocessor createPreprocessor( Reader input, String fileName, IScannerInfo info, ParserMode mode, ParserLanguage language, ISourceElementRequestor requestor, IParserLogService logService )
{
ParserMode ourMode = ( (mode == null )? ParserMode.COMPLETE_PARSE : mode );
ISourceElementRequestor ourRequestor = (( requestor == null) ? new NullSourceElementRequestor() : requestor );
- IPreprocessor s = new Preprocessor( input, fileName, info, ourRequestor, ourMode, language );
+ IPreprocessor s = new Preprocessor( input, fileName, info, ourRequestor, ourMode, language, logService );
return s;
}
@@ -70,4 +77,10 @@ public class ParserFactory {
return new QuickParseCallback();
}
+ public static IParserLogService createDefaultLogService()
+ {
+ return defaultLogService;
+ }
+
+ private static IParserLogService defaultLogService = new DefaultLogService();
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ParserFactoryException.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ParserFactoryException.java
new file mode 100644
index 00000000000..f1c3a0d02bc
--- /dev/null
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ParserFactoryException.java
@@ -0,0 +1,44 @@
+/**********************************************************************
+ * 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;
+
+/**
+ * @author jcamelon
+ *
+ */
+public class ParserFactoryException extends Exception {
+
+ public static class Kind extends Enum {
+
+ public static final Kind NULL_READER = new Kind( 1 );
+ public static final Kind NULL_FILENAME = new Kind( 2 );
+ public static final Kind NULL_CONFIG = new Kind( 3 );
+ public static final Kind NULL_LANGUAGE = new Kind( 4 );
+ public static final Kind NULL_SCANNER = new Kind( 5 );
+
+ protected Kind( int arg )
+ {
+ super( arg );
+ }
+ }
+
+ public ParserFactoryException( Kind e )
+ {
+ kind = e;
+ }
+
+ public Kind getKind()
+ {
+ return kind;
+ }
+
+ private Kind kind;
+}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ScannerInfo.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ScannerInfo.java
index 8b126f2824d..2ddc7e69ebd 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ScannerInfo.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ScannerInfo.java
@@ -8,7 +8,7 @@
* Contributors:
* IBM Rational Software - Initial API and implementation
***********************************************************************/
-package org.eclipse.cdt.internal.core.parser;
+package org.eclipse.cdt.core.parser;
import java.util.Map;
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java
index ecc78211d62..30307e4d25f 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java
@@ -14,10 +14,10 @@ import java.util.Iterator;
import java.util.List;
import java.util.Stack;
-import org.eclipse.cdt.core.ICLogConstants;
import org.eclipse.cdt.core.parser.Backtrack;
import org.eclipse.cdt.core.parser.EndOfFile;
import org.eclipse.cdt.core.parser.IParser;
+import org.eclipse.cdt.core.parser.IParserLogService;
import org.eclipse.cdt.core.parser.IScanner;
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
import org.eclipse.cdt.core.parser.IToken;
@@ -60,8 +60,6 @@ import org.eclipse.cdt.core.parser.ast.IASTUsingDeclaration;
import org.eclipse.cdt.core.parser.ast.IASTUsingDirective;
import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier.ClassNameType;
import org.eclipse.cdt.core.parser.ast.IASTExpression.Kind;
-import org.eclipse.cdt.internal.core.model.IDebugLogConstants;
-import org.eclipse.cdt.internal.core.model.Util;
/**
* This is our first implementation of the IParser interface, serving as a parser for
@@ -73,7 +71,8 @@ import org.eclipse.cdt.internal.core.model.Util;
*/
public class Parser implements IParser
{
- private static final List EMPTY_LIST = new ArrayList();
+ protected final IParserLogService log;
+ private static final List EMPTY_LIST = new ArrayList();
private static int DEFAULT_OFFSET = -1;
// sentinel initial value for offsets
private int firstErrorOffset = DEFAULT_OFFSET;
@@ -119,7 +118,7 @@ public class Parser implements IParser
IScanner scanner,
ISourceElementRequestor callback,
ParserMode mode,
- ParserLanguage language )
+ ParserLanguage language, IParserLogService log )
{
this.scanner = scanner;
requestor = callback;
@@ -127,6 +126,7 @@ public class Parser implements IParser
this.language = language;
astFactory = ParserFactory.createASTFactory( mode, language);
scanner.setASTFactory(astFactory);
+ this.log = log;
}
// counter that keeps track of the number of times Parser.parse() is called
private static int parseCount = 0;
@@ -140,13 +140,13 @@ public class Parser implements IParser
// For the debuglog to take place, you have to call
// Util.setDebugging(true);
// Or set debug to true in the core plugin preference
- Util.debugLog(
+ log.traceLog(
"Parse "
+ (++parseCount)
+ ": "
+ (System.currentTimeMillis() - startTime)
+ "ms"
- + (parsePassed ? "" : " - parse failure"), IDebugLogConstants.PARSER);
+ + (parsePassed ? "" : " - parse failure") );
return parsePassed;
}
@@ -2254,9 +2254,9 @@ public class Parser implements IParser
catch (Backtrack e)
{
failParse();
- Util.debugLog(
+ log.traceLog(
"Unexpected Token ="
- + image,IDebugLogConstants.PARSER);
+ + image );
consume();
// eat this token anyway
continue;
@@ -5142,8 +5142,8 @@ public class Parser implements IParser
}
catch (ScannerException e)
{
- Util.debugLog( "ScannerException thrown : " + e.getMessage(), IDebugLogConstants.PARSER );
- org.eclipse.cdt.internal.core.model.Util.log(e, "Scanner Exception: " + e.getMessage() , ICLogConstants.CDT); //$NON-NLS-1$h
+ log.traceLog( "ScannerException thrown : " + e.getProblem().getMessage() );
+ log.errorLog( "Scanner Exception: " + e.getProblem().getMessage()); //$NON-NLS-1$h
failParse();
return fetchToken();
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Preprocessor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Preprocessor.java
index 0c1f9e422d7..356988d0e98 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Preprocessor.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Preprocessor.java
@@ -12,8 +12,8 @@ package org.eclipse.cdt.internal.core.parser;
import java.io.Reader;
-import org.eclipse.cdt.core.ICLogConstants;
import org.eclipse.cdt.core.parser.EndOfFile;
+import org.eclipse.cdt.core.parser.IParserLogService;
import org.eclipse.cdt.core.parser.IPreprocessor;
import org.eclipse.cdt.core.parser.IScannerInfo;
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
@@ -33,8 +33,8 @@ public class Preprocessor extends Scanner implements IPreprocessor {
* @param filename
* @param defns
*/
- public Preprocessor(Reader reader, String filename, IScannerInfo info, ISourceElementRequestor requestor, ParserMode mode, ParserLanguage language ) {
- super(reader, filename, info, requestor, mode, language );
+ public Preprocessor(Reader reader, String filename, IScannerInfo info, ISourceElementRequestor requestor, ParserMode mode, ParserLanguage language, IParserLogService logService ) {
+ super(reader, filename, info, requestor, mode, language, logService );
}
public void process()
@@ -47,8 +47,7 @@ public class Preprocessor extends Scanner implements IPreprocessor {
catch( ScannerException se )
{
// callback IProblem here
- org.eclipse.cdt.internal.core.model.Util.log(se, "Preprocessor Exception", ICLogConstants.CDT); //$NON-NLS-1$h
-
+ log.errorLog("Preprocessor Exception "+ se.getProblem().getMessage()); //$NON-NLS-1$h
}
catch( EndOfFile eof )
{
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/QuickParseCallback.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/QuickParseCallback.java
index adc9f27f870..2128ceb7f86 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/QuickParseCallback.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/QuickParseCallback.java
@@ -15,6 +15,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
+import org.eclipse.cdt.core.parser.*;
import org.eclipse.cdt.core.parser.IQuickParseCallback;
import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit;
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Scanner.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Scanner.java
index 6c5632bc246..11775bd3ea9 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Scanner.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Scanner.java
@@ -31,22 +31,23 @@ import org.eclipse.cdt.core.parser.EndOfFile;
import org.eclipse.cdt.core.parser.ILineOffsetReconciler;
import org.eclipse.cdt.core.parser.IMacroDescriptor;
import org.eclipse.cdt.core.parser.IParser;
+import org.eclipse.cdt.core.parser.IParserLogService;
import org.eclipse.cdt.core.parser.IProblem;
import org.eclipse.cdt.core.parser.IScanner;
import org.eclipse.cdt.core.parser.IScannerInfo;
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
import org.eclipse.cdt.core.parser.IToken;
+import org.eclipse.cdt.core.parser.NullSourceElementRequestor;
import org.eclipse.cdt.core.parser.ParserFactory;
+import org.eclipse.cdt.core.parser.ParserFactoryException;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.ParserMode;
import org.eclipse.cdt.core.parser.ScannerException;
+import org.eclipse.cdt.core.parser.ScannerInfo;
import org.eclipse.cdt.core.parser.ast.ExpressionEvaluationException;
import org.eclipse.cdt.core.parser.ast.IASTExpression;
import org.eclipse.cdt.core.parser.ast.IASTFactory;
import org.eclipse.cdt.core.parser.ast.IASTInclusion;
-import org.eclipse.cdt.internal.core.model.IDebugLogConstants;
-import org.eclipse.cdt.internal.core.model.Util;
-
/**
* @author jcamelon
@@ -55,6 +56,8 @@ import org.eclipse.cdt.internal.core.model.Util;
public class Scanner implements IScanner {
+ protected final IParserLogService log;
+ private final static String SCRATCH = "<scratch>";
private Reader backupReader;
private IProblemFactory problemFactory = new ScannerProblemFactory();
@@ -76,7 +79,8 @@ public class Scanner implements IScanner {
throw new ScannerException( p );
}
- public Scanner(Reader reader, String filename, IScannerInfo info, ISourceElementRequestor requestor, ParserMode parserMode, ParserLanguage language ) {
+ public Scanner(Reader reader, String filename, IScannerInfo info, ISourceElementRequestor requestor, ParserMode parserMode, ParserLanguage language, IParserLogService log ) {
+ this.log = log;
this.requestor = requestor;
this.mode = parserMode;
this.language = language;
@@ -1887,14 +1891,21 @@ public class Scanner implements IScanner {
else
{
final NullSourceElementRequestor nullCallback = new NullSourceElementRequestor();
- IScanner trial =
- ParserFactory.createScanner(
- new StringReader(expression + ";"),
- EXPRESSION,
- new ScannerInfo( definitions, originalConfig.getIncludePaths()),
- ParserMode.QUICK_PARSE, language, nullCallback );
- IParser parser = ParserFactory.createParser(trial, nullCallback, ParserMode.QUICK_PARSE, language );
-
+ IParser parser = null;
+ try
+ {
+ IScanner trial =
+ ParserFactory.createScanner(
+ new StringReader(expression + ";"),
+ EXPRESSION,
+ new ScannerInfo( definitions, originalConfig.getIncludePaths()),
+ ParserMode.QUICK_PARSE, language, nullCallback, log );
+ parser = ParserFactory.createParser(trial, nullCallback, ParserMode.QUICK_PARSE, language, log );
+ } catch( ParserFactoryException pfe )
+ {
+ // TODO - make INTERNAL IProblem
+ // should never happen
+ }
try {
IASTExpression exp = parser.expression(null);
if( exp.evaluateExpression() == 0 )
@@ -1988,7 +1999,7 @@ public class Scanner implements IScanner {
new ScannerInfo(definitions, originalConfig.getIncludePaths()),
new NullSourceElementRequestor(),
mode,
- language );
+ language, log );
IToken t = null;
try {
@@ -2142,7 +2153,18 @@ public class Scanner implements IScanner {
if( ! replacementString.equals( "" ) )
{
- IScanner helperScanner = ParserFactory.createScanner( new StringReader(replacementString), null, new ScannerInfo( ), mode, language, new NullSourceElementRequestor() );
+ IScanner helperScanner=null;
+ try {
+ helperScanner =
+ ParserFactory.createScanner(
+ new StringReader(replacementString),
+ SCRATCH,
+ new ScannerInfo(),
+ mode,
+ language,
+ new NullSourceElementRequestor(), log);
+ } catch (ParserFactoryException e1) {
+ }
helperScanner.setTokenizingMacroReplacementList( true );
IToken t = helperScanner.nextToken(false);
@@ -2227,7 +2249,7 @@ public class Scanner implements IScanner {
return;
}
} else {
- Util.debugLog("Scanner : Encountered unexpected character " + ((char) c), IDebugLogConstants.PARSER);
+ log.traceLog("Scanner : Encountered unexpected character " + ((char) c));
handleProblem( IProblem.PREPROCESSOR_INVALID_MACRO_DEFN, "#define " + key + (char)c + getRestOfPreprocessorLine(), beginning, false, true, true );
return;
}
@@ -2266,9 +2288,9 @@ public class Scanner implements IScanner {
if( previousDefinition instanceof String )
{
Scanner previous = new Scanner( new StringReader( (String)previousDefinition ), "redef-test", new ScannerInfo(), new NullSourceElementRequestor(),
- mode, language );
+ mode, language, log );
Scanner current = new Scanner( new StringReader( (String)newDefinition ), "redef-test", new ScannerInfo(), new NullSourceElementRequestor(),
- mode, language );
+ mode, language, log );
for ( ; ; )
{
IToken p = null;
@@ -2309,7 +2331,7 @@ public class Scanner implements IScanner {
protected Vector getMacroParameters (String params, boolean forStringizing) throws ScannerException {
- Scanner tokenizer = new Scanner(new StringReader(params), TEXT, new ScannerInfo( definitions, originalConfig.getIncludePaths() ), new NullSourceElementRequestor(), mode, language);
+ Scanner tokenizer = new Scanner(new StringReader(params), TEXT, new ScannerInfo( definitions, originalConfig.getIncludePaths() ), new NullSourceElementRequestor(), mode, language, log);
tokenizer.setThrowExceptionOnBadCharacterRead(false);
Vector parameterValues = new Vector();
Token t = null;
@@ -2512,9 +2534,9 @@ public class Scanner implements IScanner {
}
} else {
- Util.debugLog(
+ log.traceLog(
"Unexpected class stored in definitions table. "
- + expansion.getClass().getName(), IDebugLogConstants.PARSER);
+ + expansion.getClass().getName() );
}
}
diff --git a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java
index 0bde2d93c6d..a65b2ffc7e3 100644
--- a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java
+++ b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java
@@ -24,10 +24,14 @@ import org.eclipse.cdt.core.parser.IProblem;
import org.eclipse.cdt.core.parser.IQuickParseCallback;
import org.eclipse.cdt.core.parser.IScanner;
import org.eclipse.cdt.core.parser.IToken;
+import org.eclipse.cdt.core.parser.NullSourceElementRequestor;
import org.eclipse.cdt.core.parser.ParserFactory;
+import org.eclipse.cdt.core.parser.ParserFactoryException;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.ParserMode;
+import org.eclipse.cdt.core.parser.ParserUtil;
import org.eclipse.cdt.core.parser.ScannerException;
+import org.eclipse.cdt.core.parser.ScannerInfo;
import org.eclipse.cdt.core.parser.ast.ASTClassKind;
import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
import org.eclipse.cdt.core.parser.ast.ASTPointerOperator;
@@ -47,8 +51,6 @@ import org.eclipse.cdt.internal.core.index.IEntryResult;
import org.eclipse.cdt.internal.core.index.IIndex;
import org.eclipse.cdt.internal.core.index.impl.BlocksIndexInput;
import org.eclipse.cdt.internal.core.index.impl.IndexInput;
-import org.eclipse.cdt.internal.core.parser.NullSourceElementRequestor;
-import org.eclipse.cdt.internal.core.parser.ScannerInfo;
import org.eclipse.cdt.internal.core.search.IIndexSearchRequestor;
import org.eclipse.cdt.internal.core.search.indexing.IIndexConstants;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -171,7 +173,20 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
return orPattern;
}
- IScanner scanner = ParserFactory.createScanner( new StringReader( patternString ), "TEXT", new ScannerInfo(), ParserMode.QUICK_PARSE, ParserLanguage.CPP, callback );
+ IScanner scanner = null;
+ try {
+ scanner =
+ ParserFactory.createScanner(
+ new StringReader(patternString),
+ "TEXT",
+ new ScannerInfo(),
+ ParserMode.QUICK_PARSE,
+ ParserLanguage.CPP,
+ callback,
+ ParserUtil.getParserLogService());
+ } catch (ParserFactoryException e) {
+
+ }
LinkedList list = scanForNames( scanner, null );
char [] name = (char []) list.removeLast();
@@ -229,7 +244,19 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
return orPattern;
}
- IScanner scanner = ParserFactory.createScanner( new StringReader( patternString ), "TEXT", new ScannerInfo(), ParserMode.QUICK_PARSE, ParserLanguage.CPP, callback );
+ IScanner scanner=null;
+ try {
+ scanner =
+ ParserFactory.createScanner(
+ new StringReader(patternString),
+ "TEXT",
+ new ScannerInfo(),
+ ParserMode.QUICK_PARSE,
+ ParserLanguage.CPP,
+ callback,ParserUtil.getParserLogService());
+ } catch (ParserFactoryException e) {
+
+ }
LinkedList list = scanForNames( scanner, null );
char [] name = (char []) list.removeLast();
@@ -259,7 +286,18 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
String paramString = ( index == -1 ) ? "" : patternString.substring( index );
String nameString = ( index == -1 ) ? patternString : patternString.substring( 0, index );
- IScanner scanner = ParserFactory.createScanner( new StringReader( nameString ), "TEXT", new ScannerInfo(), ParserMode.QUICK_PARSE, ParserLanguage.CPP, callback );
+ IScanner scanner=null;
+ try {
+ scanner =
+ ParserFactory.createScanner(
+ new StringReader(nameString),
+ "TEXT",
+ new ScannerInfo(),
+ ParserMode.QUICK_PARSE,
+ ParserLanguage.CPP,
+ callback,ParserUtil.getParserLogService());
+ } catch (ParserFactoryException e) {
+ }
LinkedList names = scanForNames( scanner, null );
@@ -306,7 +344,18 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
// return orPattern;
// }
- IScanner scanner = ParserFactory.createScanner( new StringReader( patternString ), "TEXT", new ScannerInfo(), ParserMode.QUICK_PARSE, ParserLanguage.CPP, callback );
+ IScanner scanner =null;
+ try {
+ scanner =
+ ParserFactory.createScanner(
+ new StringReader(patternString),
+ "TEXT",
+ new ScannerInfo(),
+ ParserMode.QUICK_PARSE,
+ ParserLanguage.CPP,
+ callback,ParserUtil.getParserLogService());
+ } catch (ParserFactoryException e1) {
+ }
IToken token = null;
ASTClassKind kind = null;
@@ -359,9 +408,29 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
String functionString = "void f " + paramString + ";";
- IScanner scanner = ParserFactory.createScanner( new StringReader( functionString ), "TEXT", new ScannerInfo(), ParserMode.QUICK_PARSE, ParserLanguage.CPP, callback );
+ IScanner scanner=null;
+ try {
+ scanner =
+ ParserFactory.createScanner(
+ new StringReader(functionString),
+ "TEXT",
+ new ScannerInfo(),
+ ParserMode.QUICK_PARSE,
+ ParserLanguage.CPP,
+ callback,ParserUtil.getParserLogService());
+ } catch (ParserFactoryException e1) {
+ }
IQuickParseCallback callback = ParserFactory.createQuickParseCallback();
- IParser parser = ParserFactory.createParser( scanner, callback, ParserMode.QUICK_PARSE, ParserLanguage.CPP );
+ IParser parser=null;
+ try {
+ parser =
+ ParserFactory.createParser(
+ scanner,
+ callback,
+ ParserMode.QUICK_PARSE,
+ ParserLanguage.CPP, ParserUtil.getParserLogService());
+ } catch (ParserFactoryException e2) {
+ }
if( parser.parse() ){
IASTCompilationUnit compUnit = callback.getCompilationUnit();
diff --git a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java
index 83a0178c9f3..a39baaef70c 100644
--- a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java
+++ b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java
@@ -35,8 +35,11 @@ import org.eclipse.cdt.core.parser.IScannerInfoProvider;
import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
import org.eclipse.cdt.core.parser.ParserFactory;
+import org.eclipse.cdt.core.parser.ParserFactoryException;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.ParserMode;
+import org.eclipse.cdt.core.parser.ParserUtil;
+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;
@@ -78,7 +81,6 @@ import org.eclipse.cdt.core.search.ICSearchResultCollector;
import org.eclipse.cdt.core.search.ICSearchScope;
import org.eclipse.cdt.core.search.IMatch;
import org.eclipse.cdt.internal.core.model.IWorkingCopy;
-import org.eclipse.cdt.internal.core.parser.ScannerInfo;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
@@ -434,8 +436,17 @@ public class MatchLocator implements ISourceElementRequestor, ICSearchConstants
//TODO no project, what language do we use?
language = ParserLanguage.CPP;
}
- IScanner scanner = ParserFactory.createScanner( reader, realPath.toOSString(), scanInfo, ParserMode.COMPLETE_PARSE, language, this );
- IParser parser = ParserFactory.createParser( scanner, this, ParserMode.COMPLETE_PARSE, language );
+
+ IParser parser = null;
+ try
+ {
+ IScanner scanner = ParserFactory.createScanner( reader, realPath.toOSString(), scanInfo, ParserMode.COMPLETE_PARSE, language, this, ParserUtil.getParserLogService() );
+ parser = ParserFactory.createParser( scanner, this, ParserMode.COMPLETE_PARSE, language, ParserUtil.getParserLogService() );
+ }
+ catch( ParserFactoryException pfe )
+ {
+
+ }
if (VERBOSE)
MatchLocator.verbose("*** New Search for path: " + pathString);
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ICLogConstants.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ICLogConstants.java
index b5faaf4091e..2e0ceb7ae9c 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ICLogConstants.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ICLogConstants.java
@@ -25,7 +25,6 @@ public interface ICLogConstants {
public static final LogConst PDE = new LogConst( 1 );
-
public static final LogConst CDT = new LogConst( 2 );
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IScannerInfoChangeListener.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/parser/IScannerInfoChangeListener.java
index 161dc941e4a..161dc941e4a 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IScannerInfoChangeListener.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/parser/IScannerInfoChangeListener.java
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IScannerInfoProvider.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/parser/IScannerInfoProvider.java
index 54b9e6fa28e..54b9e6fa28e 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IScannerInfoProvider.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/parser/IScannerInfoProvider.java
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/parser/ParserUtil.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/parser/ParserUtil.java
new file mode 100644
index 00000000000..b2b00322520
--- /dev/null
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/parser/ParserUtil.java
@@ -0,0 +1,27 @@
+/**********************************************************************
+ * 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;
+
+import org.eclipse.cdt.internal.core.parser.ParserLogService;
+
+/**
+ * @author jcamelon
+ *
+ */
+public class ParserUtil
+{
+ public static IParserLogService getParserLogService()
+ {
+ return parserLogService;
+ }
+
+ private static IParserLogService parserLogService = new ParserLogService();
+}
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/parser/ParserLogService.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/parser/ParserLogService.java
new file mode 100644
index 00000000000..f8600192134
--- /dev/null
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/parser/ParserLogService.java
@@ -0,0 +1,41 @@
+/**********************************************************************
+ * 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;
+
+import org.eclipse.cdt.core.ICLogConstants;
+import org.eclipse.cdt.core.parser.IParserLogService;
+import org.eclipse.cdt.internal.core.model.IDebugLogConstants;
+import org.eclipse.cdt.internal.core.model.Util;
+
+/**
+ * @author jcamelon
+ *
+ */
+public class ParserLogService implements IParserLogService
+{
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.parser.IParserLogService#traceLog(java.lang.String)
+ */
+ public void traceLog(String message)
+ {
+ Util.debugLog( message, IDebugLogConstants.PARSER );
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.parser.IParserLogService#errorLog(java.lang.String)
+ */
+ public void errorLog(String message)
+ {
+ Util.log( message, ICLogConstants.CDT );
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui/ChangeLog b/core/org.eclipse.cdt.ui/ChangeLog
index 8495789bab1..4242725922b 100644
--- a/core/org.eclipse.cdt.ui/ChangeLog
+++ b/core/org.eclipse.cdt.ui/ChangeLog
@@ -1,4 +1,7 @@
2003-11-05 John Camelon
+ Updated parser clients to use new ParserFactory (stand-alone parser work item).
+
+2003-11-05 John Camelon
Updated parser clients to use new IProblem strategy.
2003-10-28 Andrew Niefer
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/compare/CStructureCreator.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/compare/CStructureCreator.java
index f4393b2bede..549a997ec34 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/compare/CStructureCreator.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/compare/CStructureCreator.java
@@ -12,13 +12,14 @@ import java.io.InputStreamReader;
import java.io.StringReader;
import org.eclipse.cdt.core.model.ICElement;
+import org.eclipse.cdt.core.parser.ParserUtil;
import org.eclipse.cdt.core.parser.IParser;
import org.eclipse.cdt.core.parser.IScanner;
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
-import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.ParserFactory;
+import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.ParserMode;
-import org.eclipse.cdt.internal.core.parser.ScannerInfo;
+import org.eclipse.cdt.core.parser.ScannerInfo;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.compare.IEditableContent;
import org.eclipse.compare.IStreamContentAccessor;
@@ -72,13 +73,15 @@ public class CStructureCreator implements IStructureCreator {
//are bugs while parsing C files, we might want to create a separate Structure
//compare for c files, but we'll never be completely right about .h files
IScanner scanner =
- ParserFactory.createScanner(new StringReader(s), "code", new ScannerInfo(), ParserMode.QUICK_PARSE, ParserLanguage.CPP, builder);
- IParser parser = ParserFactory.createParser(scanner, builder, ParserMode.QUICK_PARSE, ParserLanguage.CPP );
+ ParserFactory.createScanner(new StringReader(s), "code", new ScannerInfo(), ParserMode.QUICK_PARSE, ParserLanguage.CPP, builder,ParserUtil.getParserLogService());
+ IParser parser = ParserFactory.createParser(scanner, builder, ParserMode.QUICK_PARSE, ParserLanguage.CPP, ParserUtil.getParserLogService() );
parser.parse();
} catch (Exception e) {
// What to do when error ?
// The CParseTreeBuilder will throw CParseTreeBuilder.ParseError
// for acceptProblem.
+
+ //TODO : New : ParserFactoryException gets thrown by ParserFactory primitives
}
return root;

Back to the top