LOOKAHEAD = 1;
CHOICE_AMBIGUITY_CHECK = 2;
OTHER_AMBIGUITY_CHECK = 1;
- STATIC = true;
+ STATIC = false;
DEBUG_PARSER = false;
DEBUG_LOOKAHEAD = false;
DEBUG_TOKEN_MANAGER = false;
/** The cursor in expression stack. */
private static int nodePtr;
- public static final boolean PARSER_DEBUG = true;
+ public static final boolean PARSER_DEBUG = false;
public final void setFileToParse(final IFile fileToParse) {
PHPParser.fileToParse = fileToParse;
PHPParser.fileToParse = fileToParse;
}
- public static final void phpParserTester(final String strEval) throws ParseException {
+ public 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);
+ token_source = new PHPParserTokenManager(jj_input_stream);
}
ReInit(new StringReader(strEval));
init();
phpDocument = new PHPDocument(null,"_root".toCharArray());
currentSegment = phpDocument;
outlineInfo = new PHPOutlineInfo(null, currentSegment);
- PHPParserTokenManager.SwitchTo(PHPParserTokenManager.PHPPARSING);
+ token_source.SwitchTo(PHPParserTokenManager.PHPPARSING);
phpTest();
}
- public static final void htmlParserTester(final File fileName) throws FileNotFoundException, ParseException {
+ public 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);
+ token_source = new PHPParserTokenManager(jj_input_stream);
}
ReInit(stream);
init();
phpFile();
}
- public static final void htmlParserTester(final String strEval) throws ParseException {
+ public 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);
+ token_source = new PHPParserTokenManager(jj_input_stream);
}
ReInit(stream);
init();
final StringReader stream = new StringReader(s);
if (jj_input_stream == null) {
jj_input_stream = new SimpleCharStream(stream, 1, 1);
+ token_source = new PHPParserTokenManager(jj_input_stream);
}
ReInit(stream);
init();
e.currentToken.sourceStart,
e.currentToken.sourceEnd,
errorLevel,
- "Line " + e.currentToken.beginLine+", "+e.currentToken.sourceStart+":"+e.currentToken.sourceEnd);
+ "Line " + e.currentToken.beginLine+", "+e.currentToken.sourceStart+':'+e.currentToken.sourceEnd);
} else {
setMarker(fileToParse,
errorMessage,
errorStart,
errorEnd,
errorLevel,
- "Line " + e.currentToken.beginLine+", "+errorStart+":"+errorEnd);
+ "Line " + e.currentToken.beginLine+", "+errorStart+':'+errorEnd);
errorStart = -1;
errorEnd = -1;
}
final StringReader stream = new StringReader(s);
if (jj_input_stream == null) {
jj_input_stream = new SimpleCharStream(stream, 1, 1);
+ token_source = new PHPParserTokenManager(jj_input_stream);
}
ReInit(stream);
init();
/**
* Put a new html block in the stack.
*/
- public static final void createNewHTMLCode() {
+ public final void createNewHTMLCode() {
final int currentPosition = token.sourceStart;
if (currentPosition == htmlStart ||
currentPosition < htmlStart ||
- currentPosition > SimpleCharStream.currentBuffer.length()) {
+ currentPosition > jj_input_stream.getCurrentBuffer().length()) {
return;
}
- final char[] chars = SimpleCharStream.currentBuffer.substring(htmlStart,
- currentPosition).toCharArray();
- pushOnAstNodes(new HTMLCode(chars, htmlStart,currentPosition));
+ final String html = jj_input_stream.getCurrentBuffer().substring(htmlStart, currentPosition);
+ pushOnAstNodes(new HTMLCode(html, htmlStart,currentPosition));
}
/** Create a new task. */
- public static final void createNewTask(final int todoStart) {
- final String todo = SimpleCharStream.currentBuffer.substring(todoStart,
- SimpleCharStream.currentBuffer.indexOf("\n",
+ public final void createNewTask(final int todoStart) {
+ final String todo = jj_input_stream.getCurrentBuffer().substring(todoStart,
+ jj_input_stream.getCurrentBuffer().indexOf("\n",
todoStart)-1);
if (!PARSER_DEBUG) {
try {
setMarker(fileToParse,
todo,
- SimpleCharStream.getBeginLine(),
+ jj_input_stream.getBeginLine(),
TASK,
- "Line "+SimpleCharStream.getBeginLine());
+ "Line "+jj_input_stream.getBeginLine());
} catch (CoreException e) {
PHPeclipsePlugin.log(e);
}
}
}
- private static final void parse() throws ParseException {
+ private final void parse() throws ParseException {
phpFile();
}
}
// CharStream class to set corresponding fields in each Token (which was
// also extended with new fields). By default Jack doesn't supply absolute
// offsets, just line/column offsets
- static void CommonTokenAction(Token t) {
- t.sourceStart = input_stream.beginOffset;
- t.sourceEnd = input_stream.endOffset;
+ void CommonTokenAction(Token t) {
+ t.sourceStart = input_stream.getBeginOffset();
+ t.sourceEnd = input_stream.getBeginOffset();
} // CommonTokenAction
} // TOKEN_MGR_DECLS
|
<#EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+ >
|
- <STRING_LITERAL: (<STRING_1> | <STRING_2> | <STRING_3>)>
-| <STRING_1: "\"" ( ~["\"","\\"] | "\\" ~[] )* "\"">
+ <STRING_LITERAL: (<STRING_2> | <STRING_3>)>
+//| <STRING_1: "\"" ( ~["\"","\\"] | "\\" ~[] )* "\"">
| <STRING_2: "'" ( ~["'","\\"] | "\\" ~[] )* "'">
| <STRING_3: "`" ( ~["`","\\"] | "\\" ~[] )* "`">
}
+<IN_STRING,DOLLAR_IN_STRING> SKIP :
+{
+ <ESCAPED : ("\\" ~[])> : IN_STRING
+}
+
+<PHPPARSING> TOKEN :
+{
+ <DOUBLEQUOTE : "\""> : IN_STRING
+}
+
+
+<IN_STRING> TOKEN :
+{
+ <DOLLARS : "$"> : DOLLAR_IN_STRING
+}
+
+<IN_STRING,DOLLAR_IN_STRING> TOKEN :
+{
+ <DOUBLEQUOTE2 : "\""> : PHPPARSING
+}
+
+<DOLLAR_IN_STRING> TOKEN :
+{
+ <LBRACE1 : "{"> : DOLLAR_IN_STRING_EXPR
+}
+
+<IN_STRING> SPECIAL_TOKEN :
+{
+ <"{"> : SKIPSTRING
+}
+
+<SKIPSTRING> SPECIAL_TOKEN :
+{
+ <"}"> : IN_STRING
+}
+
+<SKIPSTRING> SKIP :
+{
+ <~[]>
+}
+
+<DOLLAR_IN_STRING_EXPR> TOKEN :
+{
+ <RBRACE1 : "}"> : DOLLAR_IN_STRING
+}
+
+<DOLLAR_IN_STRING_EXPR> TOKEN :
+{
+ <ID : (~["}"])*>
+}
+
+<IN_STRING> SKIP :
+{
+ <~[]>
+}
+
+<DOLLAR_IN_STRING_EXPR,IN_STRING> SKIP :
+{
+ <~[]>
+}
/* IDENTIFIERS */
<PHPPARSING,IN_VARIABLE> TOKEN : {<DOLLAR : "$"> : IN_VARIABLE}
-<PHPPARSING, IN_VARIABLE> TOKEN :
+<PHPPARSING, IN_VARIABLE, DOLLAR_IN_STRING> TOKEN :
{
<IDENTIFIER: (<LETTER>|<SPECIAL>) (<LETTER>|<DIGIT>|<SPECIAL>)* >
|
>
}
+<DOLLAR_IN_STRING> SPECIAL_TOKEN :
+{
+ < ~[] > : IN_STRING
+}
/* SEPARATORS */
<PHPPARSING,IN_VARIABLE> TOKEN :
{
try {
(PhpBlock())*
- {PHPParser.createNewHTMLCode();}
+ {createNewHTMLCode();}
} catch (TokenMgrError e) {
PHPeclipsePlugin.log(e);
- errorStart = SimpleCharStream.beginOffset;
- errorEnd = SimpleCharStream.endOffset;
+ errorStart = jj_input_stream.getBeginOffset();
+ errorEnd = jj_input_stream.getEndOffset();
errorMessage = e.getMessage();
errorLevel = ERROR;
throw generateParseException();
PHPeclipsePlugin.log(e);
}}
]
- {PHPParser.createNewHTMLCode();}
+ {createNewHTMLCode();}
Php()
try {
phpEnd = <PHPEND>
} catch (ParseException e) {
errorMessage = "'?>' expected";
errorLevel = ERROR;
- errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
- errorEnd = SimpleCharStream.getPosition() + 1;
+ errorStart = e.currentToken.sourceStart;
+ errorEnd = e.currentToken.sourceEnd;
processParseExceptionDebug(e);
}
}
final Token token, token2;
}
{
- token = <PHPECHOSTART> {PHPParser.createNewHTMLCode();}
+ token = <PHPECHOSTART> {createNewHTMLCode();}
expr = Expression() [ <SEMICOLON> ] token2 = <PHPEND>
{
htmlStart = token2.sourceEnd;
} catch (ParseException e) {
errorMessage = "unexpected token : '"+ e.currentToken.next.image + "'. '{' expected";
errorLevel = ERROR;
- errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
- errorEnd = SimpleCharStream.getPosition() + 1;
+ errorStart = e.currentToken.sourceStart;
+ errorEnd = e.currentToken.sourceEnd;
processParseExceptionDebug(e);
}
( ClassBodyDeclaration(classDeclaration) )*
} catch (ParseException e) {
errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. 'var', 'function' or '}' expected";
errorLevel = ERROR;
- errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
- errorEnd = SimpleCharStream.getPosition() + 1;
+ errorStart = e.currentToken.sourceStart;
+ errorEnd = e.currentToken.sourceEnd;
processParseExceptionDebug(e);
- return PHPParser.token.sourceEnd;
+ return this.token.sourceEnd;
}
}
token = <VAR> variableDeclaration = VariableDeclaratorNoSuffix()
{
arrayList.add(variableDeclaration);
- outlineInfo.addVariable(variableDeclaration.name());
pos = variableDeclaration.sourceEnd;
}
(
*/
AbstractVariable VariableDeclaratorId() :
{
- final Variable var;
- AbstractVariable expression = null;
+ AbstractVariable var;
}
{
try {
var = Variable()
(
LOOKAHEAD(2)
- expression = VariableSuffix(var)
+ var = VariableSuffix(var)
)*
{
- if (expression == null) {
- return var;
- }
- return expression;
+ return var;
}
} catch (ParseException e) {
errorMessage = "'$' expected for variable identifier";
errorLevel = ERROR;
- errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
- errorEnd = SimpleCharStream.getPosition() + 1;
+ errorStart = e.currentToken.sourceStart;
+ errorEnd = e.currentToken.sourceEnd;
throw e;
}
}
final Token token;
}
{
- token = <DOLLAR> variable = Var(token)
+ token = <DOLLAR> variable = Var()
{
- return new Variable(variable,token.sourceEnd,variable.sourceEnd);
+ return variable;
}
}
-Variable Var(final Token dollar) :
+Variable Var() :
{
Variable variable = null;
final Token token,token2;
Expression expression;
}
{
- token = <DOLLAR> variable = Var(token)
- {return new Variable(variable,dollar.sourceEnd,variable.sourceEnd);}
+ token = <DOLLAR> variable = Var()
+ {return new Variable(variable,variable.sourceStart,variable.sourceEnd);}
|
token = <LBRACE> expression = Expression() token2 = <RBRACE>
{
return new Variable(expression,
- dollar.sourceStart,
+ token.sourceStart,
token2.sourceEnd);
}
|
token = <IDENTIFIER>
- {return new Variable(token.image,dollar.sourceStart,token.sourceEnd);}
+ {
+ outlineInfo.addVariable('$' + token.image);
+ return new Variable(token.image,token.sourceStart,token.sourceEnd);
+ }
}
Expression VariableInitializer() :
<ARRAYASSIGN> expr2 = Expression()
{return new ArrayVariableDeclaration(expr,expr2);}
]
- {return new ArrayVariableDeclaration(expr,SimpleCharStream.getPosition());}
+ {return new ArrayVariableDeclaration(expr,jj_input_stream.getPosition());}
}
ArrayVariableDeclaration[] ArrayInitializer() :
if (errorMessage != null) throw e;
errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', function identifier expected";
errorLevel = ERROR;
- errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
- errorEnd = SimpleCharStream.getPosition() + 1;
+ errorStart = e.currentToken.sourceStart;
+ errorEnd = e.currentToken.sourceEnd;
throw e;
}
{currentSegment = functionDeclaration;}
{
Token identifier = null;
Token reference = null;
- final Hashtable formalParameters = new Hashtable();
+ final ArrayList formalParameters = new ArrayList();
String identifierChar = SYNTAX_ERROR_CHAR;
int end = start;
}
* FormalParameters follows method identifier.
* (FormalParameter())
*/
-int FormalParameters(final Hashtable parameters) :
+int FormalParameters(final ArrayList parameters) :
{
VariableDeclaration var;
final Token token;
- Token tok = PHPParser.token;
+ Token tok = this.token;
int end = tok.sourceEnd;
}
{
}
[
var = FormalParameter()
- {parameters.put(var.name(),var);end = var.sourceEnd;}
+ {parameters.add(var);end = var.sourceEnd;}
(
<COMMA> var = FormalParameter()
- {parameters.put(var.name(),var);end = var.sourceEnd;}
+ {parameters.add(var);end = var.sourceEnd;}
)*
]
try {
{
[token = <BIT_AND>] variableDeclaration = VariableDeclaratorNoSuffix()
{
+ outlineInfo.addVariable('$'+variableDeclaration.name());
if (token != null) {
variableDeclaration.setReference(true);
}
}
errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected";
errorLevel = ERROR;
- errorEnd = SimpleCharStream.getPosition();
+ errorEnd = jj_input_stream.getPosition();
throw e;
}
]
expr = UnaryExpression()
} catch (ParseException e) {
if (errorMessage != null) throw e;
- errorMessage = "unexpected token '"+e.currentToken.next.image+"'";
+ errorMessage = "unexpected token '"+e.currentToken.next.image+'\'';
errorLevel = ERROR;
- errorStart = PHPParser.token.sourceStart;
- errorEnd = PHPParser.token.sourceEnd;
+ errorStart = this.token.sourceStart;
+ errorEnd = this.token.sourceEnd;
throw e;
}
(
token = <ARRAY> vars = ArrayInitializer()
{return new ArrayInitializer(vars,
token.sourceStart,
- PHPParser.token.sourceEnd);}
+ this.token.sourceEnd);}
}
Expression ClassIdentifier():
Literal Literal() :
{
final Token token;
+ StringLiteral literal;
}
{
token = <INTEGER_LITERAL> {return new NumberLiteral(token);}
| token = <TRUE> {return new TrueLiteral(token);}
| token = <FALSE> {return new FalseLiteral(token);}
| token = <NULL> {return new NullLiteral(token);}
+| literal = evaluableString() {return literal;}
+}
+
+StringLiteral evaluableString() :
+{
+ ArrayList list = new ArrayList();
+ Token start,end;
+ Token token,lbrace,rbrace;
+ AbstractVariable var;
+ Expression expr;
+}
+{
+ start = <DOUBLEQUOTE>
+ (
+ <DOLLARS>
+ (
+ token = <IDENTIFIER> {list.add(new Variable(token.image,
+ token.sourceStart,
+ token.sourceEnd));}
+ |
+ lbrace = <LBRACE1>
+ token = <ID>
+ {list.add(new Variable(token.image,
+ token.sourceStart,
+ token.sourceEnd));}
+ rbrace = <RBRACE1>
+ )
+ )*
+ end = <DOUBLEQUOTE2>
+ {
+ AbstractVariable[] vars = new AbstractVariable[list.size()];
+ list.toArray(vars);
+ return new StringLiteral(jj_input_stream.getCurrentBuffer().substring(start.sourceEnd,end.sourceStart),
+ start.sourceStart,
+ end.sourceEnd,
+ vars);
+ }
}
FunctionCall Arguments(final Expression func) :
{
Expression[] args = null;
-final Token token;
+final Token token,lparen;
}
{
- <LPAREN> [ args = ArgumentList() ]
+ lparen = <LPAREN> [ args = ArgumentList() ]
try {
token = <RPAREN>
{return new FunctionCall(func,args,token.sourceEnd);}
} catch (ParseException e) {
errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ')' expected to close the argument list";
errorLevel = ERROR;
- errorStart = args[args.length-1].sourceEnd+1;
- errorEnd = args[args.length-1].sourceEnd+1;
+ if (args == null) {
+ errorStart = lparen.sourceEnd+1;
+ errorEnd = lparen.sourceEnd+2;
+ } else {
+ errorStart = args[args.length-1].sourceEnd+1;
+ errorEnd = args[args.length-1].sourceEnd+2;
+ }
processParseExceptionDebug(e);
}
- {return new FunctionCall(func,args,args[args.length-1].sourceEnd);}
+ {
+ int sourceEnd = (args == null && args.length != 0) ? lparen.sourceEnd+1 : args[args.length-1].sourceEnd;
+ return new FunctionCall(func,args,sourceEnd);}
}
/**
(phpEchoBlock())*
try {
(<PHPSTARTLONG> | <PHPSTARTSHORT>)
- {PHPParser.createNewHTMLCode();}
+ {createNewHTMLCode();}
} catch (ParseException e) {
errorMessage = "unexpected end of file , '<?php' expected";
errorLevel = ERROR;
- errorStart = SimpleCharStream.getPosition();
- errorEnd = SimpleCharStream.getPosition();
+ errorStart = e.currentToken.sourceStart;
+ errorEnd = e.currentToken.sourceEnd;
throw e;
}
{
} catch (ParseException e) {
errorMessage = "'{' expected";
errorLevel = ERROR;
- pos = PHPParser.token.sourceEnd+1;
+ pos = this.token.sourceEnd+1;
start=pos;
errorStart = pos;
errorEnd = pos;
list.add(statement);
pos = statement.sourceEnd+1;
}
- pos = PHPParser.token.sourceEnd+1;
+ pos = this.token.sourceEnd+1;
}
)*
try {
{return new SwitchStatement(variable,
cases,
switchToken.sourceStart,
- PHPParser.token.sourceEnd);}
+ this.token.sourceEnd);}
}
AbstractCase[] switchStatementBrace() :
final Expression expr;
Statement statement;
final ArrayList stmts = new ArrayList();
- final Token token = PHPParser.token;
+ final Token token = this.token;
+ final int start = this.token.next.sourceStart;
}
{
expr = SwitchLabel()
final Statement[] stmtsArray = new Statement[listSize];
stmts.toArray(stmtsArray);
if (expr == null) {//it's a default
- return new DefaultCase(stmtsArray,token.sourceStart,stmtsArray[listSize-1].sourceEnd);
+ final int end = this.token.next.sourceStart;
+ return new DefaultCase(stmtsArray,start,end);
}
if (listSize != 0) {
return new Case(expr,stmtsArray,expr.sourceStart,stmtsArray[listSize-1].sourceEnd);
}
try {
token = <COLON>
- {return expr;}
} catch (ParseException e) {
errorMessage = "':' expected after case expression";
errorLevel = ERROR;
errorEnd = expr.sourceEnd+1;
processParseExceptionDebug(e);
}
+ {return expr;}
|
token = <_DEFAULT>
try {
<COLON>
- {return null;}
} catch (ParseException e) {
errorMessage = "':' expected after 'default' keyword";
errorLevel = ERROR;
errorEnd = token.sourceEnd+1;
processParseExceptionDebug(e);
}
+ {return null;}
}
Break BreakStatement() :
} catch (ParseException e) {
errorMessage = "'(' expected after " + keyword + " keyword";
errorLevel = ERROR;
- errorStart = PHPParser.token.sourceEnd + 1;
- errorEnd = PHPParser.token.sourceEnd + 1;
+ errorStart = this.token.sourceEnd + 1;
+ errorEnd = this.token.sourceEnd + 1;
processParseExceptionDebug(e);
}
condition = Expression()
final ArrayList stmts;
final ArrayList elseIfList = new ArrayList();
final ElseIf[] elseIfs;
- int pos = SimpleCharStream.getPosition();
+ int pos = jj_input_stream.getPosition();
final int endStatements;
}
{
{stmts = new ArrayList();}
( statement = Statement() {stmts.add(statement);}
| statement = htmlBlock() {if (statement != null) {stmts.add(statement);}})*
- {endStatements = SimpleCharStream.getPosition();}
+ {endStatements = jj_input_stream.getPosition();}
(elseifStatement = ElseIfStatementColon() {elseIfList.add(elseifStatement);})*
[elseStatement = ElseStatementColon()]
} catch (ParseException e) {
errorMessage = "'endif' expected";
errorLevel = ERROR;
- errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
- errorEnd = SimpleCharStream.getPosition() + 1;
+ errorStart = e.currentToken.sourceStart;
+ errorEnd = e.currentToken.sourceEnd;
throw e;
}
try {
} catch (ParseException e) {
errorMessage = "';' expected after 'endif' keyword";
errorLevel = ERROR;
- errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
- errorEnd = SimpleCharStream.getPosition() + 1;
+ errorStart = e.currentToken.sourceStart;
+ errorEnd = e.currentToken.sourceEnd;
throw e;
}
{
elseIfs,
elseStatement,
pos,
- SimpleCharStream.getPosition());
+ jj_input_stream.getPosition());
} else {
statementsArray = new Statement[stmts.size()];
stmts.toArray(statementsArray);
elseIfs,
elseStatement,
pos,
- SimpleCharStream.getPosition());
+ jj_input_stream.getPosition());
}
}
[ LOOKAHEAD(1)
<ELSE>
try {
- {pos = SimpleCharStream.getPosition();}
+ {pos = jj_input_stream.getPosition();}
statement = Statement()
- {elseStatement = new Else(statement,pos,SimpleCharStream.getPosition());}
+ {elseStatement = new Else(statement,pos,jj_input_stream.getPosition());}
} catch (ParseException e) {
if (errorMessage != null) {
throw e;
}
errorMessage = "unexpected token '"+e.currentToken.next.image+"', a statement was expected";
errorLevel = ERROR;
- errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
- errorEnd = SimpleCharStream.getPosition() + 1;
+ errorStart = e.currentToken.sourceStart;
+ errorEnd = e.currentToken.sourceEnd;
throw e;
}
]
elseIfs,
elseStatement,
pos,
- SimpleCharStream.getPosition());}
+ jj_input_stream.getPosition());}
}
ElseIf ElseIfStatementColon() :
{
Statement statement;
final ArrayList stmts = new ArrayList();
- final int pos = SimpleCharStream.getPosition();
+ final int pos = jj_input_stream.getPosition();
}
{
<COLON> (statement = Statement() {stmts.add(statement);})*
} catch (ParseException e) {
errorMessage = "'endwhile' expected";
errorLevel = ERROR;
- errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
- errorEnd = SimpleCharStream.getPosition() + 1;
+ errorStart = e.currentToken.sourceStart;
+ errorEnd = e.currentToken.sourceEnd;
throw e;
}
try {
{
final Statement[] stmtsArray = new Statement[stmts.size()];
stmts.toArray(stmtsArray);
- return new Block(stmtsArray,pos,SimpleCharStream.getPosition());}
+ return new Block(stmtsArray,pos,jj_input_stream.getPosition());}
} catch (ParseException e) {
errorMessage = "';' expected after 'endwhile' keyword";
errorLevel = ERROR;
- errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
- errorEnd = SimpleCharStream.getPosition() + 1;
+ errorStart = e.currentToken.sourceStart;
+ errorEnd = e.currentToken.sourceEnd;
throw e;
}
|
} catch (ParseException e) {
errorMessage = "'(' expected after 'foreach' keyword";
errorLevel = ERROR;
- errorStart = foreachToken.sourceEnd+1;
- errorEnd = foreachToken.sourceEnd+1;
+ errorStart = e.currentToken.sourceStart;
+ errorEnd = e.currentToken.sourceEnd;
processParseExceptionDebug(e);
{pos = foreachToken.sourceEnd+1;}
}
} catch (ParseException e) {
errorMessage = "variable expected";
errorLevel = ERROR;
- errorStart = pos;
- errorEnd = pos;
+ errorStart = e.currentToken.sourceStart;
+ errorEnd = e.currentToken.sourceEnd;
processParseExceptionDebug(e);
}
try {
} catch (ParseException e) {
errorMessage = "'as' expected";
errorLevel = ERROR;
- errorStart = pos;
- errorEnd = pos;
+ errorStart = e.currentToken.sourceStart;
+ errorEnd = e.currentToken.sourceEnd;
processParseExceptionDebug(e);
}
try {
if (errorMessage != null) throw e;
errorMessage = "variable expected";
errorLevel = ERROR;
- errorStart = pos;
- errorEnd = pos;
+ errorStart = e.currentToken.sourceStart;
+ errorEnd = e.currentToken.sourceEnd;
processParseExceptionDebug(e);
}
try {
} catch (ParseException e) {
errorMessage = "')' expected after 'foreach' keyword";
errorLevel = ERROR;
- errorStart = pos;
- errorEnd = pos;
+ errorStart = e.currentToken.sourceStart;
+ errorEnd = e.currentToken.sourceEnd;
processParseExceptionDebug(e);
}
try {
statement = Statement()
- {pos = rparenToken.sourceEnd+1;}
+ {pos = statement.sourceEnd+1;}
} catch (ParseException e) {
if (errorMessage != null) throw e;
errorMessage = "statement expected";
errorLevel = ERROR;
- errorStart = pos;
- errorEnd = pos;
+ errorStart = e.currentToken.sourceStart;
+ errorEnd = e.currentToken.sourceEnd;
processParseExceptionDebug(e);
}
- {return new ForeachStatement(expression,
+ {
+ return new ForeachStatement(expression,
variable,
statement,
foreachToken.sourceStart,
- statement.sourceEnd);}
+ pos);}
}