From fd62bdd86c4f71e996c9fe32be14e6159d7e5811 Mon Sep 17 00:00:00 2001 From: John Camelon Date: Thu, 5 Aug 2004 15:22:00 +0000 Subject: [PATCH] Activated Scanner2 in HEAD. Forgive me Lord, for I know what I do. --- .../tests/CompleteParseASTExpressionTest.java | 5 +---- .../core/parser/tests/ParserTestSuite.java | 10 +--------- .../cdt/core/parser/ParserFactory.java | 10 +--------- .../core/parser/DeclarationWrapper.java | 6 +++--- .../ast/complete/CompleteParseASTFactory.java | 20 ++++++------------- .../ast/expression/ExpressionFactory.java | 1 - .../parser/scanner2/ExpressionEvaluator.java | 4 +++- .../core/parser/scanner2/Scanner2.java | 2 ++ .../core/parser/token/ImagedToken.java | 15 +------------- 9 files changed, 18 insertions(+), 55 deletions(-) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTExpressionTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTExpressionTest.java index db403d1a059..c7839da8548 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTExpressionTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTExpressionTest.java @@ -249,10 +249,7 @@ public class CompleteParseASTExpressionTest extends CompleteParseBaseTest{ i = getDeclarations( test ); IASTVariable someInt = (IASTVariable) i.next(); IASTExpression exp = someInt.getInitializerClause().getAssigmentExpression(); - if( ParserFactory.USE_NEW_SCANNER ) - assertEquals( exp.toString(), "foo(int(3), short(4), double(3.0), float(4.0), char('a'), wchar_t('a'), signed(2), unsigned(3), bool(false), long(3L))" ); //$NON-NLS-1$ - else - assertEquals( exp.toString(), "foo(int(3), short(4), double(3.0), float(4.0), char('a'), wchar_t('a'), signed(2), unsigned(3), bool(false), long(3))" ); //$NON-NLS-1$ + assertEquals( exp.toString(), "foo(int(3), short(4), double(3.0), float(4.0), char('a'), wchar_t('a'), signed(2), unsigned(3), bool(false), long(3L))" ); //$NON-NLS-1$ } // Kind POSTFIX_TYPENAME_IDENTIFIER diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ParserTestSuite.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ParserTestSuite.java index 42d444c3c73..4e4dc614619 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ParserTestSuite.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ParserTestSuite.java @@ -16,7 +16,6 @@ import junit.framework.TestSuite; import org.eclipse.cdt.core.model.tests.CModelElementsTests; import org.eclipse.cdt.core.model.tests.StructuralCModelElementsTests; -import org.eclipse.cdt.core.parser.ParserFactory; import org.eclipse.cdt.core.parser.tests.scanner2.ObjectMapTest; import org.eclipse.cdt.core.parser.tests.scanner2.Scanner2Test; @@ -29,14 +28,7 @@ import org.eclipse.cdt.core.parser.tests.scanner2.Scanner2Test; public class ParserTestSuite extends TestCase { public static Test suite() { TestSuite suite= new TestSuite(ParserTestSuite.class.getName()); - if( ParserFactory.USE_NEW_SCANNER ) - suite.addTestSuite(Scanner2Test.class ); - else - { - suite.addTestSuite(BranchTrackerTest.class); - suite.addTestSuite(ScannerTestCase.class); - suite.addTestSuite(ExprEvalTest.class); - } + suite.addTestSuite(Scanner2Test.class ); suite.addTestSuite(QuickParseASTTests.class); suite.addTestSuite(ParserSymbolTableTest.class); suite.addTestSuite(ParserSymbolTableTemplateTests.class ); 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 bec6a4aaa5f..44f61453bdf 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 @@ -29,7 +29,6 @@ import org.eclipse.cdt.internal.core.parser.StructuralParser; import org.eclipse.cdt.internal.core.parser.ast.complete.CompleteParseASTFactory; import org.eclipse.cdt.internal.core.parser.ast.expression.ExpressionParseASTFactory; import org.eclipse.cdt.internal.core.parser.ast.quick.QuickParseASTFactory; -import org.eclipse.cdt.internal.core.parser.scanner.Scanner; import org.eclipse.cdt.internal.core.parser.scanner2.Scanner2; import org.eclipse.cdt.internal.core.parser.token.KeywordSets; @@ -39,8 +38,6 @@ import org.eclipse.cdt.internal.core.parser.token.KeywordSets; * */ public class ParserFactory { - - public static final boolean USE_NEW_SCANNER = false; private static IParserExtensionFactory extensionFactory = new ParserExtensionFactory( ExtensionDialect.GCC ); @@ -104,12 +101,7 @@ public class ParserFactory { IParserLogService logService = ( log == null ) ? createDefaultLogService() : log; ParserMode ourMode = ( (mode == null )? ParserMode.COMPLETE_PARSE : mode ); ISourceElementRequestor ourRequestor = (( requestor == null) ? new NullSourceElementRequestor() : requestor ); - IScanner s = null; - if( USE_NEW_SCANNER ) - s = new Scanner2( code, config, ourRequestor, ourMode, language, logService, extensionFactory.createScannerExtension(), workingCopies ); - else - s = new Scanner( code, config, ourRequestor, ourMode, language, logService, extensionFactory.createScannerExtension(), workingCopies ); - return s; + return new Scanner2( code, config, ourRequestor, ourMode, language, logService, extensionFactory.createScannerExtension(), workingCopies ); } public static IScanner createScanner( String fileName, IScannerInfo config, ParserMode mode, ParserLanguage language, ISourceElementRequestor requestor, IParserLogService log, List workingCopies ) throws ParserFactoryError, IOException diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/DeclarationWrapper.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/DeclarationWrapper.java index a25c06cd98b..5947a1ce55d 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/DeclarationWrapper.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/DeclarationWrapper.java @@ -551,10 +551,10 @@ public class DeclarationWrapper implements IDeclaratorOwner for( int i = 0; i < currentParameters.size(); ++i ) { DeclarationWrapper wrapper = (DeclarationWrapper)currentParameters.get(i); - List declarators = wrapper.getDeclaratorsList(); - for( int j = 0; j < declarators.size(); j++ ) + List decls = wrapper.getDeclaratorsList(); + for( int j = 0; j < decls.size(); j++ ) { - Declarator declarator = (Declarator)declarators.get(j); + Declarator declarator = (Declarator)decls.get(j); result.add( astFactory.createParameterDeclaration( diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java index 86329f54517..03f2ba30d34 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java @@ -22,7 +22,6 @@ import org.eclipse.cdt.core.parser.IProblem; import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate; import org.eclipse.cdt.core.parser.IToken; import org.eclipse.cdt.core.parser.ITokenDuple; -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.ast.ASTAccessVisibility; @@ -1560,21 +1559,14 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto info = provider.completeConstruction(); //types that need a pointer - if( ParserFactory.USE_NEW_SCANNER ){ - if( kind == IASTExpression.Kind.PRIMARY_STRING_LITERAL || - (literal.length > 3 && ( kind == IASTExpression.Kind.PRIMARY_CHAR_LITERAL || + + if( kind == IASTExpression.Kind.PRIMARY_STRING_LITERAL || + (literal.length > 3 && ( kind == IASTExpression.Kind.PRIMARY_CHAR_LITERAL || kind == IASTExpression.Kind.POSTFIX_SIMPLETYPE_CHAR )) ) - { - info.addPtrOperator(new ITypeInfo.PtrOp(ITypeInfo.PtrOp.t_pointer)); - } - } else { - if( kind == IASTExpression.Kind.PRIMARY_STRING_LITERAL || - (literal.length > 1 && ( kind == IASTExpression.Kind.PRIMARY_CHAR_LITERAL || - kind == IASTExpression.Kind.POSTFIX_SIMPLETYPE_CHAR )) ) - { - info.addPtrOperator(new ITypeInfo.PtrOp(ITypeInfo.PtrOp.t_pointer)); - } + { + info.addPtrOperator(new ITypeInfo.PtrOp(ITypeInfo.PtrOp.t_pointer)); } + return new ExpressionResult( info ); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/expression/ExpressionFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/expression/ExpressionFactory.java index 300901e02b8..3b3ca63cde8 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/expression/ExpressionFactory.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/expression/ExpressionFactory.java @@ -20,7 +20,6 @@ import org.eclipse.cdt.core.parser.ast.IASTExpression.Kind; * */ public class ExpressionFactory { - private static final String EMPTY_STRING = ""; //$NON-NLS-1$ /** * */ diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/ExpressionEvaluator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/ExpressionEvaluator.java index b1adef52dad..4cecd76e8c5 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/ExpressionEvaluator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/ExpressionEvaluator.java @@ -187,8 +187,10 @@ public class ExpressionEvaluator { long r2 = unaryExpression(); if (t == tMULT) r1 = r1 * r2; - else // t == tDIV; + else if( r2 != 0 )// t == tDIV; r1 = r1 / r2; + else + throw new EvalException( "Divide by 0 encountered"); //$NON-NLS-1$ } return r1; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/Scanner2.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/Scanner2.java index 78a7e20bd6f..76d673d29f3 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/Scanner2.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/Scanner2.java @@ -746,6 +746,7 @@ public class Scanner2 implements IScanner, IScannerData { { // escaped newline ++bufferPos[bufferStackPos]; + ++bufferLineNums[bufferStackPos]; len += 2; escapedNewline = true; continue; @@ -1216,6 +1217,7 @@ public class Scanner2 implements IScanner, IScannerData { { // escaped newline ++bufferPos[bufferStackPos]; + ++bufferLineNums[bufferStackPos]; len += 2; continue; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/token/ImagedToken.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/token/ImagedToken.java index bac46c6f1f0..ec9bd834823 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/token/ImagedToken.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/token/ImagedToken.java @@ -10,7 +10,6 @@ ***********************************************************************/ package org.eclipse.cdt.internal.core.parser.token; -import org.eclipse.cdt.core.parser.ParserFactory; import org.eclipse.cdt.internal.core.parser.scanner.ContextStack; import org.eclipse.cdt.internal.core.parser.scanner.IScannerContext; @@ -77,18 +76,6 @@ public class ImagedToken extends SimpleToken { public int getLength() { if( getCharImage() == null ) return 0; - if( ParserFactory.USE_NEW_SCANNER ) - return getCharImage().length; - switch( getType() ) - { - case tSTRING: - case tCHAR: - return getCharImage().length + 2; // 'c' is 3 characters, not 1 - case tLSTRING: - case tLCHAR: - return getCharImage().length + 3; // L"X" if 4 characters, not 1 - default: - return getCharImage().length; - } + return getCharImage().length; } }