X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/test/PHPParser.jj b/net.sourceforge.phpeclipse/src/test/PHPParser.jj index 530693d..2c1b336 100644 --- a/net.sourceforge.phpeclipse/src/test/PHPParser.jj +++ b/net.sourceforge.phpeclipse/src/test/PHPParser.jj @@ -3,7 +3,7 @@ options { CHOICE_AMBIGUITY_CHECK = 2; OTHER_AMBIGUITY_CHECK = 1; STATIC = true; - DEBUG_PARSER = false; + DEBUG_PARSER = true; DEBUG_LOOKAHEAD = false; DEBUG_TOKEN_MANAGER = false; OPTIMIZE_TOKEN_MANAGER = false; @@ -40,7 +40,7 @@ import net.sourceforge.phpdt.internal.compiler.ast.*; import net.sourceforge.phpdt.internal.compiler.parser.OutlineableWithChildren; import net.sourceforge.phpdt.internal.compiler.parser.Outlineable; import net.sourceforge.phpdt.internal.compiler.parser.PHPOutlineInfo; -import junit.framework.Assert; +import net.sourceforge.phpdt.internal.corext.Assert; /** * A new php parser. @@ -81,7 +81,7 @@ public final class PHPParser extends PHPParserSuperclass { /** The cursor in expression stack. */ private static int nodePtr; - private static final boolean PARSER_DEBUG = false; + private static final boolean PARSER_DEBUG = true; public final void setFileToParse(final IFile fileToParse) { PHPParser.fileToParse = fileToParse; @@ -95,6 +95,46 @@ public final class PHPParser extends PHPParserSuperclass { PHPParser.fileToParse = fileToParse; } + public static final void phpParserTester(final String strEval) throws ParseException { + final StringReader stream = new StringReader(strEval); + if (jj_input_stream == null) { + jj_input_stream = new SimpleCharStream(stream, 1, 1); + } + ReInit(new StringReader(strEval)); + init(); + phpDocument = new PHPDocument(null,"_root".toCharArray()); + currentSegment = phpDocument; + outlineInfo = new PHPOutlineInfo(null, currentSegment); + PHPParserTokenManager.SwitchTo(PHPParserTokenManager.PHPPARSING); + phpTest(); + } + + public static final void htmlParserTester(final File fileName) throws FileNotFoundException, ParseException { + final Reader stream = new FileReader(fileName); + if (jj_input_stream == null) { + jj_input_stream = new SimpleCharStream(stream, 1, 1); + } + ReInit(stream); + init(); + phpDocument = new PHPDocument(null,"_root".toCharArray()); + currentSegment = phpDocument; + outlineInfo = new PHPOutlineInfo(null, currentSegment); + phpFile(); + } + + public static final void htmlParserTester(final String strEval) throws ParseException { + final StringReader stream = new StringReader(strEval); + if (jj_input_stream == null) { + jj_input_stream = new SimpleCharStream(stream, 1, 1); + } + ReInit(stream); + init(); + phpDocument = new PHPDocument(null,"_root".toCharArray()); + currentSegment = phpDocument; + outlineInfo = new PHPOutlineInfo(null, currentSegment); + phpFile(); + } + /** * Reinitialize the parser. */ @@ -144,16 +184,18 @@ public final class PHPParser extends PHPParserSuperclass { return outlineInfo; } + private static void processParseExceptionDebug(final ParseException e) throws ParseException { + if (PARSER_DEBUG) { + throw e; + } + processParseException(e); + } /** * This method will process the parse exception. * If the error message is null, the parse exception wasn't catched and a trace is written in the log * @param e the ParseException */ private static void processParseException(final ParseException e) { - if (PARSER_DEBUG) { - e.printStackTrace(); - Assert.assertTrue(false); - } if (errorMessage == null) { PHPeclipsePlugin.log(e); errorMessage = "this exception wasn't handled by the parser please tell us how to reproduce it"; @@ -581,6 +623,13 @@ MORE : > } +void phpTest() : +{} +{ + Php() + +} + void phpFile() : {} { @@ -632,7 +681,7 @@ void PhpBlock() : errorLevel = ERROR; errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; errorEnd = SimpleCharStream.getPosition() + 1; - processParseException(e); + processParseExceptionDebug(e); } } @@ -675,7 +724,7 @@ ClassDeclaration ClassDeclaration() : errorLevel = ERROR; errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; errorEnd = SimpleCharStream.getPosition() + 1; - processParseException(e); + processParseExceptionDebug(e); } [ @@ -687,7 +736,7 @@ ClassDeclaration ClassDeclaration() : errorLevel = ERROR; errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; errorEnd = SimpleCharStream.getPosition() + 1; - processParseException(e); + processParseExceptionDebug(e); superclassNameImage = SYNTAX_ERROR_CHAR; } ] @@ -709,7 +758,7 @@ ClassDeclaration ClassDeclaration() : } ClassBody(classDeclaration) {currentSegment = (OutlineableWithChildren) currentSegment.getParent(); - classDeclaration.sourceEnd = SimpleCharStream.getPosition(); + classDeclaration.setSourceEnd(SimpleCharStream.getPosition()); pushOnAstNodes(classDeclaration); return classDeclaration;} } @@ -724,7 +773,7 @@ void ClassBody(final ClassDeclaration classDeclaration) : errorLevel = ERROR; errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; errorEnd = SimpleCharStream.getPosition() + 1; - processParseException(e); + processParseExceptionDebug(e); } ( ClassBodyDeclaration(classDeclaration) )* try { @@ -734,7 +783,7 @@ void ClassBody(final ClassDeclaration classDeclaration) : errorLevel = ERROR; errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; errorEnd = SimpleCharStream.getPosition() + 1; - processParseException(e); + processParseExceptionDebug(e); } } @@ -779,7 +828,7 @@ FieldDeclaration FieldDeclaration() : errorLevel = ERROR; errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; errorEnd = SimpleCharStream.getPosition() + 1; - processParseException(e); + processParseExceptionDebug(e); } {list = new VariableDeclaration[arrayList.size()]; @@ -798,10 +847,10 @@ VariableDeclaration VariableDeclaratorNoSuffix() : { final Token varName; Expression initializer = null; - final int pos = SimpleCharStream.getPosition(); } { varName = + {final int pos = SimpleCharStream.getPosition()-varName.image.length();} [ try { @@ -811,18 +860,18 @@ VariableDeclaration VariableDeclaratorNoSuffix() : errorLevel = ERROR; errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; errorEnd = SimpleCharStream.getPosition() + 1; - processParseException(e); + processParseExceptionDebug(e); } ] { if (initializer == null) { return new VariableDeclaration(currentSegment, - new Variable(varName.image.substring(1).toCharArray(),SimpleCharStream.getPosition()-varName.image.length()-1,SimpleCharStream.getPosition()), + new Variable(varName.image.substring(1),SimpleCharStream.getPosition()-varName.image.length()-1,SimpleCharStream.getPosition()), pos, SimpleCharStream.getPosition()); } return new VariableDeclaration(currentSegment, - new Variable(varName.image.substring(1).toCharArray(),SimpleCharStream.getPosition()-varName.image.length()-1,SimpleCharStream.getPosition()), + new Variable(varName.image.substring(1),SimpleCharStream.getPosition()-varName.image.length()-1,SimpleCharStream.getPosition()), initializer, VariableDeclaration.EQUAL, pos); @@ -834,12 +883,12 @@ VariableDeclaration VariableDeclaratorNoSuffix() : */ VariableDeclaration VariableDeclarator() : { - final String varName; + final AbstractVariable variable; Expression initializer = null; final int pos = SimpleCharStream.getPosition(); } { - varName = VariableDeclaratorId() + variable = VariableDeclaratorId() [ try { @@ -849,18 +898,18 @@ VariableDeclaration VariableDeclarator() : errorLevel = ERROR; errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; errorEnd = SimpleCharStream.getPosition() + 1; - processParseException(e); + processParseExceptionDebug(e); } ] { if (initializer == null) { return new VariableDeclaration(currentSegment, - new Variable(varName.substring(1).toCharArray(),SimpleCharStream.getPosition()-varName.length()-1,SimpleCharStream.getPosition()), - pos, - SimpleCharStream.getPosition()); + variable, + pos, + SimpleCharStream.getPosition()); } return new VariableDeclaration(currentSegment, - new Variable(varName.substring(1).toCharArray(),SimpleCharStream.getPosition()-varName.length()-1,SimpleCharStream.getPosition()), + variable, initializer, VariableDeclaration.EQUAL, pos); @@ -871,28 +920,24 @@ VariableDeclaration VariableDeclarator() : * A Variable name. * @return the variable name (with suffix) */ -String VariableDeclaratorId() : +AbstractVariable VariableDeclaratorId() : { - final String var; - Expression expression = null; + final Variable var; + AbstractVariable expression = null; final int pos = SimpleCharStream.getPosition(); - ConstantIdentifier ex; } { try { var = Variable() ( LOOKAHEAD(2) - {ex = new ConstantIdentifier(var.toCharArray(), - pos, - SimpleCharStream.getPosition());} - expression = VariableSuffix(ex) + expression = VariableSuffix(var) )* { if (expression == null) { return var; } - return expression.toStringExpression(); + return expression; } } catch (ParseException e) { errorMessage = "'$' expected for variable identifier"; @@ -907,68 +952,102 @@ String VariableDeclaratorId() : * Return a variablename without the $. * @return a variable name */ -String Variable(): +Variable Variable(): { final StringBuffer buff; Expression expression = null; final Token token; - final String expr; + Variable expr; + final int pos; } { - token = [ expression = Expression() ] + token = {pos = SimpleCharStream.getPosition()-token.image.length();} + [ expression = Expression() ] { if (expression == null) { - return token.image.substring(1); + return new Variable(token.image.substring(1),pos,SimpleCharStream.getPosition()); } - buff = new StringBuffer(token.image); + String s = expression.toStringExpression(); + buff = new StringBuffer(token.image.length()+s.length()+2); + buff.append(token.image); buff.append("{"); - buff.append(expression.toStringExpression()); + buff.append(s); buff.append("}"); - return buff.toString(); + s = buff.toString(); + return new Variable(s,pos,SimpleCharStream.getPosition()); } | - expr = VariableName() - {return expr;} + {pos = SimpleCharStream.getPosition()-1;} + expr = VariableName() + {return new Variable(expr,pos,SimpleCharStream.getPosition());} } /** * A Variable name (without the $) * @return a variable name String */ -String VariableName(): +Variable VariableName(): { final StringBuffer buff; - final String expr; + String expr; + final Variable var; Expression expression = null; final Token token; + int pos; } { - expression = Expression() - {buff = new StringBuffer("{"); - buff.append(expression.toStringExpression()); + + {pos = SimpleCharStream.getPosition()-1;} + expression = Expression() + {expr = expression.toStringExpression(); + buff = new StringBuffer(expr.length()+2); + buff.append("{"); + buff.append(expr); buff.append("}"); - return buff.toString();} + pos = SimpleCharStream.getPosition(); + expr = buff.toString(); + return new Variable(expr, + pos, + SimpleCharStream.getPosition()); + + } | - token = [ expression = Expression() ] + token = + {pos = SimpleCharStream.getPosition() - token.image.length();} + [ expression = Expression() ] { if (expression == null) { - return token.image; + return new Variable(token.image, + pos, + SimpleCharStream.getPosition()); } - buff = new StringBuffer(token.image); + expr = expression.toStringExpression(); + buff = new StringBuffer(token.image.length()+expr.length()+2); + buff.append(token.image); buff.append("{"); - buff.append(expression.toStringExpression()); + buff.append(expr); buff.append("}"); - return buff.toString(); + expr = buff.toString(); + return new Variable(expr, + pos, + SimpleCharStream.getPosition()); } | - expr = VariableName() + {pos = SimpleCharStream.getPosition() - 1;} + var = VariableName() { - buff = new StringBuffer("$"); - buff.append(expr); - return buff.toString(); + return new Variable(var, + pos, + SimpleCharStream.getPosition()); } | - token = {return token.image;} + token = + { + pos = SimpleCharStream.getPosition(); + return new Variable(token.image, + pos-token.image.length(), + pos); + } } Expression VariableInitializer() : @@ -1092,7 +1171,7 @@ MethodDeclaration MethodDeclarator() : errorLevel = ERROR; errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; errorEnd = SimpleCharStream.getPosition() + 1; - processParseException(e); + processParseExceptionDebug(e); } formalParameters = FormalParameters() {MethodDeclaration method = new MethodDeclaration(currentSegment, @@ -1121,7 +1200,7 @@ Hashtable FormalParameters() : errorLevel = ERROR; errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; errorEnd = SimpleCharStream.getPosition() + 1; - processParseException(e); + processParseExceptionDebug(e); } [ var = FormalParameter() @@ -1138,7 +1217,7 @@ Hashtable FormalParameters() : errorLevel = ERROR; errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; errorEnd = SimpleCharStream.getPosition() + 1; - processParseException(e); + processParseExceptionDebug(e); } {return parameters;} } @@ -1209,21 +1288,21 @@ Expression Expression() : } ] { - char[] varName = expr.toStringExpression().substring(1).toCharArray(); - if (assignOperator == -1) { + if (assignOperator != -1) {// todo : change this, very very bad :( + if (expr instanceof AbstractVariable) { + return new VariableDeclaration(currentSegment, + (AbstractVariable) expr, + pos, + SimpleCharStream.getPosition()); + } + String varName = expr.toStringExpression().substring(1); return new VariableDeclaration(currentSegment, - new Variable(varName,SimpleCharStream.getPosition()-varName.length-1,SimpleCharStream.getPosition()), + new Variable(varName,SimpleCharStream.getPosition()-varName.length()-1,SimpleCharStream.getPosition()), pos, SimpleCharStream.getPosition()); - return expr; - } - return new VariableDeclaration(currentSegment, - new Variable(varName,SimpleCharStream.getPosition()-varName.length-1,SimpleCharStream.getPosition()), - initializer, - assignOperator, - pos); } - {return expr;} + return expr; + } | expr = ExpressionWBang() {return expr;} } @@ -1242,8 +1321,9 @@ Expression ExpressionNoBang() : Expression expr; } { + expr = ListExpression() {return expr;} +| expr = PrintExpression() {return expr;} -| expr = ListExpression() {return expr;} } /** @@ -1447,9 +1527,10 @@ Expression AdditiveExpression() : { expr = MultiplicativeExpression() ( - LOOKAHEAD(1) - ( {operator = OperatorIds.PLUS;} - | {operator = OperatorIds.MINUS;} ) + LOOKAHEAD(1) + ( {operator = OperatorIds.PLUS;} + | {operator = OperatorIds.MINUS;} + ) expr2 = MultiplicativeExpression() {expr = new BinaryExpression(expr,expr2,operator);} )* @@ -1491,9 +1572,9 @@ Expression UnaryExpression() : final int pos = SimpleCharStream.getPosition(); } { - expr = UnaryExpressionNoPrefix() + /* expr = UnaryExpressionNoPrefix() //why did I had that ? {return new PrefixedUnaryExpression(expr,OperatorIds.AND,pos);} -| +| */ expr = AtNotUnaryExpression() {return expr;} } @@ -1523,26 +1604,18 @@ Expression AtNotUnaryExpression() : Expression UnaryExpressionNoPrefix() : { final Expression expr; - final int operator; final int pos = SimpleCharStream.getPosition(); } { - ( - {operator = OperatorIds.PLUS;} - | - {operator = OperatorIds.MINUS;} - ) - expr = UnaryExpression() - {return new PrefixedUnaryExpression(expr,operator,pos);} + expr = AtNotUnaryExpression() {return new PrefixedUnaryExpression(expr,OperatorIds.PLUS,pos);} +| + expr = AtNotUnaryExpression() {return new PrefixedUnaryExpression(expr,OperatorIds.MINUS,pos);} | expr = PreIncDecExpression() {return expr;} | expr = UnaryExpressionNotPlusMinus() {return expr;} -/*| - LOOKAHEAD(2) - expr = PrintExpression() {return expr;}*/ } @@ -1625,22 +1698,40 @@ Expression PostfixExpression() : Expression PrimaryExpression() : { - Expression expr; + Expression expr = null; + Expression expr2; int assignOperator = -1; final Token identifier; final String var; - final int pos = SimpleCharStream.getPosition(); + final int pos; } { - expr = PrimaryPrefix() - (expr = PrimarySuffix(expr))* + token = + { + pos = SimpleCharStream.getPosition(); + expr = new ConstantIdentifier(token.image.toCharArray(), + pos-token.image.length(), + pos); + } + ( + expr2 = ClassIdentifier() + {expr = new ClassAccess(expr, + expr2, + ClassAccess.STATIC);} + )* [ expr = Arguments(expr) ] {return expr;} | - expr = ClassIdentifier() + expr = VariableDeclaratorId() + [ expr = Arguments(expr) ] + {return expr;} +| + + {pos = SimpleCharStream.getPosition();} + expr = ClassIdentifier() {expr = new PrefixedUnaryExpression(expr, OperatorIds.NEW, - pos); + pos-3); } [ expr = Arguments(expr) ] {return expr;} @@ -1649,37 +1740,6 @@ Expression PrimaryExpression() : {return expr;} } -Expression PrimaryPrefix() : -{ - final Expression expr; - final Token token; - final String var; - final int pos = SimpleCharStream.getPosition(); -} -{ - token = {return new ConstantIdentifier(token.image.toCharArray(), - pos, - SimpleCharStream.getPosition());} -| - var = VariableDeclaratorId() {return new Variable(var.toCharArray(), - pos, - SimpleCharStream.getPosition());} -} - -AbstractSuffixExpression PrimarySuffix(final Expression prefix) : -{ - final AbstractSuffixExpression suffix; - final Expression expr; -} -{ - suffix = VariableSuffix(prefix) {return suffix;} -| expr = ClassIdentifier() - {suffix = new ClassAccess(prefix, - expr, - ClassAccess.STATIC); - return suffix;} -} - /** * An array declarator. * array(vars) @@ -1716,26 +1776,28 @@ PrefixedUnaryExpression classInstantiation() : pos);} } -ConstantIdentifier ClassIdentifier(): +Expression ClassIdentifier(): { - final String expr; + final Expression expr; final Token token; - final int pos = SimpleCharStream.getPosition(); final ConstantIdentifier type; } { - token = {return new ConstantIdentifier(token.image.toCharArray(), - pos, - SimpleCharStream.getPosition());} -| type = Type() {return type;} -| expr = VariableDeclaratorId() {return new ConstantIdentifier(expr.toCharArray(), - pos, - SimpleCharStream.getPosition());} + token = + {final int pos = SimpleCharStream.getPosition(); + return new ConstantIdentifier(token.image.toCharArray(), + pos-token.image.length(), + pos);} +| expr = Type() {return expr;} +| expr = VariableDeclaratorId() {return expr;} } -AbstractSuffixExpression VariableSuffix(final Expression prefix) : +/** + * Used by Variabledeclaratorid and primarysuffix + */ +AbstractVariable VariableSuffix(final AbstractVariable prefix) : { - String expr = null; + Variable expr = null; final int pos = SimpleCharStream.getPosition(); Expression expression = null; } @@ -1751,7 +1813,7 @@ AbstractSuffixExpression VariableSuffix(final Expression prefix) : throw e; } {return new ClassAccess(prefix, - new ConstantIdentifier(expr.toCharArray(),pos,SimpleCharStream.getPosition()), + expr, ClassAccess.NORMAL);} | [ expression = Expression() | expression = Type() ] //Not good @@ -1910,7 +1972,7 @@ Define defineStatement() : errorLevel = ERROR; errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; errorEnd = SimpleCharStream.getPosition() + 1; - processParseException(e); + processParseExceptionDebug(e); } try { defineName = Expression() @@ -1928,7 +1990,7 @@ Define defineStatement() : errorLevel = ERROR; errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; errorEnd = SimpleCharStream.getPosition() + 1; - processParseException(e); + processParseExceptionDebug(e); } try { defineValue = Expression() @@ -1946,7 +2008,7 @@ Define defineStatement() : errorLevel = ERROR; errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; errorEnd = SimpleCharStream.getPosition() + 1; - processParseException(e); + processParseExceptionDebug(e); } {return new Define(currentSegment, defineName, @@ -2051,7 +2113,7 @@ PrintExpression PrintExpression() : ListExpression ListExpression() : { - String expr = null; + Expression expr = null; final Expression expression; final ArrayList list = new ArrayList(); final int pos = SimpleCharStream.getPosition(); @@ -2095,17 +2157,17 @@ ListExpression ListExpression() : } [ expression = Expression() { - final String[] strings = new String[list.size()]; - list.toArray(strings); - return new ListExpression(strings, + final Variable[] vars = new Variable[list.size()]; + list.toArray(vars); + return new ListExpression(vars, expression, pos, SimpleCharStream.getPosition());} ] { - final String[] strings = new String[list.size()]; - list.toArray(strings); - return new ListExpression(strings,pos,SimpleCharStream.getPosition());} + final Variable[] vars = new Variable[list.size()]; + list.toArray(vars); + return new ListExpression(vars,pos,SimpleCharStream.getPosition());} } /** @@ -2144,25 +2206,25 @@ EchoStatement EchoStatement() : GlobalStatement GlobalStatement() : { final int pos = SimpleCharStream.getPosition(); - String expr; + Variable expr; final ArrayList vars = new ArrayList(); final GlobalStatement global; } { - expr = VariableDeclaratorId() + expr = Variable() {vars.add(expr);} ( - expr = VariableDeclaratorId() + expr = Variable() {vars.add(expr);} )* try { { - final String[] strings = new String[vars.size()]; - vars.toArray(strings); + final Variable[] variables = new Variable[vars.size()]; + vars.toArray(variables); global = new GlobalStatement(currentSegment, - strings, + variables, pos, SimpleCharStream.getPosition()); currentSegment.add(global); @@ -2183,16 +2245,18 @@ StaticStatement StaticStatement() : VariableDeclaration expr; } { - expr = VariableDeclarator() {vars.add(new String(expr.name()));} - ( expr = VariableDeclarator() {vars.add(new String(expr.name()));})* + expr = VariableDeclarator() {vars.add(expr);} + ( + expr = VariableDeclarator() {vars.add(expr);} + )* try { { - final String[] strings = new String[vars.size()]; - vars.toArray(strings); - return new StaticStatement(strings, - pos, - SimpleCharStream.getPosition());} + final VariableDeclaration[] variables = new VariableDeclaration[vars.size()]; + vars.toArray(variables); + return new StaticStatement(variables, + pos, + SimpleCharStream.getPosition());} } catch (ParseException e) { errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. a ';' was expected"; errorLevel = ERROR; @@ -2305,24 +2369,24 @@ VariableDeclaration[] LocalVariableDeclaration() : */ VariableDeclaration LocalVariableDeclarator() : { - final String varName; + final Variable varName; Expression initializer = null; final int pos = SimpleCharStream.getPosition(); } { - varName = VariableDeclaratorId() [ initializer = Expression() ] + varName = Variable() [ initializer = Expression() ] { if (initializer == null) { return new VariableDeclaration(currentSegment, - new Variable(varName.toCharArray(),SimpleCharStream.getPosition()-varName.length(),SimpleCharStream.getPosition()), - pos, - SimpleCharStream.getPosition()); + varName, + pos, + SimpleCharStream.getPosition()); } return new VariableDeclaration(currentSegment, - new Variable(varName.toCharArray(),SimpleCharStream.getPosition()-varName.length(),SimpleCharStream.getPosition()), - initializer, - VariableDeclaration.EQUAL, - pos); + varName, + initializer, + VariableDeclaration.EQUAL, + pos); } } @@ -2579,7 +2643,7 @@ Expression Condition(final String keyword) : errorLevel = ERROR; errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length(); errorEnd = errorStart +1; - processParseException(e); + processParseExceptionDebug(e); } condition = Expression() try { @@ -2589,7 +2653,7 @@ Expression Condition(final String keyword) : errorLevel = ERROR; errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; errorEnd = SimpleCharStream.getPosition() + 1; - processParseException(e); + processParseExceptionDebug(e); } {return condition;} }