/*
* $Id: ParserBase.java,v 1.95 2002/09/16 08:05:05 jkl Exp $
*
* Copyright (c) 2002 Njet Communications Ltd. All Rights Reserved.
*
* Use is subject to license terms, as defined in
* Anvil Sofware License, Version 1.1. See LICENSE
* file, or http://njet.org/license-1.1.txt
*/
package anvil.script.parser;
import anvil.core.Any;
import anvil.core.AnyPattern;
import anvil.core.ObjectPool;
import anvil.core.LangModule;
import anvil.ErrorListener;
import anvil.Location;
import anvil.script.ClassType;
import anvil.script.ClassRef;
import anvil.script.ConstantVariableType;
import anvil.script.Context;
import anvil.script.CompilableFunction;
import anvil.script.Name;
import anvil.script.Type;
import anvil.script.expression.AdditionAssignmentNode;
import anvil.script.expression.AdditionNode;
import anvil.script.expression.AndNode;
import anvil.script.expression.ArrayNode;
import anvil.script.expression.ArrayComprehensionNode;
import anvil.script.expression.ComprehensionNode;
import anvil.script.expression.ListComprehensionNode;
import anvil.script.expression.AssignmentNode;
import anvil.script.expression.AttributeNode;
import anvil.script.expression.BooleanCastNode;
import anvil.script.expression.CallNode;
import anvil.script.expression.ChainedComparisonNode;
import anvil.script.expression.ClassOfNode;
import anvil.script.expression.CompareNode;
import anvil.script.expression.ConcatenationAssignmentNode;
import anvil.script.expression.ConcatenationNode;
import anvil.script.expression.ConditionalNode;
import anvil.script.expression.ConstantNode;
import anvil.script.expression.ConstructorInvokeNode;
import anvil.script.expression.CopyNode;
import anvil.script.expression.CloneNode;
import anvil.script.expression.DefinedNode;
import anvil.script.expression.DeleteNode;
import anvil.script.expression.TypeNode;
import anvil.script.expression.DivisionAssignmentNode;
import anvil.script.expression.DivisionNode;
import anvil.script.expression.DynamicCallNode;
import anvil.script.expression.DynamicInvokeNode;
import anvil.script.expression.DynamicHasNode;
import anvil.script.expression.EmptyReferenceNode;
import anvil.script.expression.EnumerationNode;
import anvil.script.expression.EqualToNode;
import anvil.script.expression.ExactCompareNode;
import anvil.script.expression.ExactEqualToNode;
import anvil.script.expression.ExactNotEqualToNode;
import anvil.script.expression.Expression;
import anvil.script.expression.ExpressionList;
import anvil.script.expression.MutableExpressionList;
import anvil.script.expression.FloatCastNode;
import anvil.script.expression.GreaterThanNode;
import anvil.script.expression.GreaterThanOrEqualToNode;
import anvil.script.expression.HasNode;
import anvil.script.expression.ImportNode;
import anvil.script.expression.InNode;
import anvil.script.expression.InitAssignmentNode;
import anvil.script.expression.IntCastNode;
import anvil.script.expression.InvokeNode;
import anvil.script.expression.InlinedFunctionNode;
import anvil.script.expression.InstanceOfNode;
import anvil.script.expression.IsNode;
import anvil.script.expression.LessThanNode;
import anvil.script.expression.LessThanOrEqualToNode;
import anvil.script.expression.MappingNode;
import anvil.script.expression.MatchNode;
import anvil.script.expression.ModuloAssignmentNode;
import anvil.script.expression.ModuloNode;
import anvil.script.expression.MultiplicationAssignmentNode;
import anvil.script.expression.MultiplicationNode;
import anvil.script.expression.NamedNode;
import anvil.script.expression.NewNode;
import anvil.script.expression.Node;
import anvil.script.expression.NoMatchNode;
import anvil.script.expression.NotEqualToNode;
import anvil.script.expression.OrNode;
import anvil.script.expression.Parent;
import anvil.script.expression.PipeNode;
import anvil.script.expression.PostfixDecrementNode;
import anvil.script.expression.PostfixIncrementNode;
import anvil.script.expression.PrefixDecrementNode;
import anvil.script.expression.PrefixIncrementNode;
import anvil.script.expression.RangeNode;
import anvil.script.expression.RefNode;
import anvil.script.expression.ReferenceNode;
import anvil.script.expression.SelectNode;
import anvil.script.expression.SizeOfNode;
import anvil.script.expression.SpliceNode;
import anvil.script.expression.StringCastNode;
import anvil.script.expression.SubtractionAssignmentNode;
import anvil.script.expression.SubtractionNode;
import anvil.script.expression.SuperInvokeNode;
import anvil.script.expression.SymbolNode;
import anvil.script.expression.ThisNode;
import anvil.script.expression.TypeOfNode;
import anvil.script.expression.UnaryMinusNode;
import anvil.script.expression.UnaryNegateNode;
import anvil.script.expression.UnaryPlusNode;
import anvil.script.expression.LinkNode;
import anvil.script.expression.VariableNode;
import anvil.script.expression.XorNode;
import anvil.script.expression.ThunkNode;
import anvil.script.expression.ForeachNode;
import anvil.script.InterfaceRef;
import anvil.script.LocalVariableType;
import anvil.script.ParameterListDeclaration;
import anvil.script.Scope;
import anvil.script.ModuleEnvelope;
import anvil.script.statements.AssertStatement;
import anvil.script.statements.BreakStatement;
import anvil.script.statements.BlockStatement;
import anvil.script.statements.ImplicitBlockStatement;
import anvil.script.statements.ExplicitBlockStatement;
import anvil.script.statements.CatchStatement;
import anvil.script.statements.ContinueStatement;
import anvil.script.statements.DoStatement;
import anvil.script.statements.Case;
import anvil.script.statements.ClassStatement;
import anvil.script.statements.ConstructorStatement;
import anvil.script.statements.DefinitionStatement;
import anvil.script.statements.FunctionStatement;
import anvil.script.statements.InterfaceStatement;
import anvil.script.statements.InterfaceMethodStatement;
import anvil.script.statements.MethodStatement;
import anvil.script.statements.ModuleStatement;
import anvil.script.statements.EvalStatement;
import anvil.script.statements.ExitStatement;
import anvil.script.statements.FinallyStatement;
import anvil.script.statements.ForeachStatement;
import anvil.script.statements.ForStatement;
import anvil.script.statements.IfStatement;
import anvil.script.statements.PrintStatement;
import anvil.script.statements.ReturnStatement;
import anvil.script.statements.Statement;
import anvil.script.statements.SwitchStatement;
import anvil.script.statements.SynchronizedStatement;
import anvil.script.statements.ThrowStatement;
import anvil.script.statements.TryStatement;
import anvil.script.statements.WhileStatement;
import anvil.script.statements.YieldStatement;
import anvil.script.statements.VariableStatement;
import anvil.script.statements.LocalVariableStatement;
import anvil.script.statements.ConstantVariableStatement;
import anvil.script.statements.NamespaceStatement;
import anvil.script.Grammar;
import anvil.util.Conversions;
import java.util.Enumeration;
import java.util.Stack;
import java.util.ArrayList;
import java.util.List;
import org.apache.oro.text.regex.MalformedPatternException;
import org.apache.oro.text.regex.Pattern;
/**
* class ParserBase
*
* @author: Jani Lehtim�ki
*/
public abstract class ParserBase implements ErrorListener, ParserBaseConstants {
protected Statement _current = null;
protected NodeStack _nodes = new NodeStack();
public abstract ModuleEnvelope getEnvelope();
public abstract Location toLocation(Token t);
public abstract Location toLocation(int line, int column);
public abstract void error(Location location, Throwable throwable);
public abstract void error(Location location, String message);
public abstract int errors();
public abstract Enumeration getEvents();
public abstract void merge(ErrorListener listener);
public void flowPushChild(Statement stmt)
{
//System.out.println("||pushchild:"+_current+" --> "+stmt);
if (_current != null) {
_current.setChildStatement(stmt);
}
_current = stmt;
}
public void flowPush(Statement stmt)
{
//System.out.println("||push:"+_current+" --> "+stmt);
_current = stmt;
}
public Statement flowPop()
{
Statement stmt = _current;
if (stmt != null) {
_current = stmt.getParentStatement();
}
//System.out.println("||pop:"+stmt+" --> "+_current);
return stmt;
}
public Statement flowPeek()
{
return _current;
}
protected void push(Node node)
{
_nodes.push(node);
}
protected Node pop() throws ParseException
{
if (!_nodes.empty()) {
return _nodes.pop();
} else {
throw new ParseException("Parser stack empty");
}
}
protected Node peek() throws ParseException
{
if (!_nodes.empty()) {
return _nodes.peek();
} else {
throw new ParseException("Parser stack empty");
}
}
public Location getCurrentLocation()
{
return toLocation(getToken(1));
}
protected TryStatement getEnclosingTryBlock()
{
Statement stmt = flowPeek();
switch(stmt.typeOf()) {
case Statement.ST_BLOCK:
case Statement.ST_IMPLICIT_BLOCK:
{
TryStatement trystmt;
BlockStatement block = (BlockStatement)stmt;
stmt = block.getTail();
if (stmt != null && stmt.typeOf() == Statement.ST_TRY) {
trystmt = (TryStatement)stmt;
if (trystmt.hasFinally()) {
trystmt = block.replaceWithTry();
}
} else {
trystmt = block.replaceWithTry();
}
return trystmt;
}
default:
{
TryStatement trystmt = new TryStatement(stmt, stmt.getLocation());
stmt.setChildStatement(trystmt);
return trystmt;
}
}
}
protected void onErrorSkip()
{
_nodes.clear();
ParseException e = generateParseException();
error(toLocation(e.currentToken), e.getMessage());
Token t;
do {
t = getNextToken();
} while ((t.kind != SEMICOLON) && (t.kind != END) && (t.kind != EOF));
}
/*
* Module starts here
*/
final public void Definitions() throws ParseException {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case IMPORT:
Import();
break;
case NAMESPACE:
Namespace();
break;
case CONST:
ConstantVariable();
break;
case FUNCTION:
case SYNCHRONIZED:
Function();
break;
case INTERFACE:
Interface();
break;
case CLASS:
Class();
break;
case STATIC:
case VAR:
Variable();
break;
default:
jj_la1[0] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
final public void Module() throws ParseException {
Token t;
Token n = null;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
t = jj_consume_token(MODULE);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case SYMBOL:
n = jj_consume_token(SYMBOL);
break;
default:
jj_la1[1] = jj_gen;
;
}
String name = (n == null) ? "module" : n.image;
flowPush(new ModuleStatement(getEnvelope(), toLocation(t), name, t.document));
jj_consume_token(BEGIN);
label_1:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case NAMESPACE:
case IMPORT:
case FUNCTION:
case SYNCHRONIZED:
case STATIC:
case INTERFACE:
case CLASS:
case VAR:
case CONST:
;
break;
default:
jj_la1[2] = jj_gen;
break label_1;
}
Definitions();
}
jj_consume_token(END);
break;
default:
jj_la1[4] = jj_gen;
flowPush(new ModuleStatement(getEnvelope(), null, "module", null));
label_2:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case NAMESPACE:
case IMPORT:
case FUNCTION:
case SYNCHRONIZED:
case STATIC:
case INTERFACE:
case CLASS:
case VAR:
case CONST:
;
break;
default:
jj_la1[3] = jj_gen;
break label_2;
}
Definitions();
}
}
jj_consume_token(0);
}
final public NamespaceStatement NamespacePart(Location location, DefinitionStatement scope) throws ParseException {
Token t;
t = jj_consume_token(SYMBOL);
NamespaceStatement namespace;
String name = t.image;
Type declared = scope.lookupDeclaration(name);
if (declared == null) {
namespace = new NamespaceStatement(location, scope, t.image, t.document);
scope.declare(namespace);
} else if (declared.getType() == Type.NAMESPACE) {
namespace = (NamespaceStatement)declared;
} else {
error(location, "Entity '"+name+"' already declared");
namespace = new NamespaceStatement(location, scope, t.image, t.document);
}
{if (true) return namespace;}
throw new Error("Missing return statement in function");
}
final public void Namespace() throws ParseException {
Token t;
Statement stmt = flowPeek();
DefinitionStatement scope = stmt.getScopeStatement();
try {
t = jj_consume_token(NAMESPACE);
Location location = toLocation(t);
scope = NamespacePart(location, scope);
label_3:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case DOT:
;
break;
default:
jj_la1[5] = jj_gen;
break label_3;
}
jj_consume_token(DOT);
scope = NamespacePart(location, scope);
}
flowPush(scope);
jj_consume_token(BEGIN);
label_4:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case NAMESPACE:
case IMPORT:
case FUNCTION:
case SYNCHRONIZED:
case STATIC:
case INTERFACE:
case CLASS:
case VAR:
case CONST:
;
break;
default:
jj_la1[6] = jj_gen;
break label_4;
}
Definitions();
}
jj_consume_token(END);
} finally {
_current = stmt;
}
}
final public Name Name(Name name) throws ParseException {
Token t;
if (name == null) {
name = new Name();
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case SYMBOL:
t = jj_consume_token(SYMBOL);
break;
case MODULE:
t = jj_consume_token(MODULE);
break;
default:
jj_la1[7] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
name.add(t);
label_5:
while (true) {
if (jj_2_1(2)) {
;
} else {
break label_5;
}
jj_consume_token(DOT);
t = jj_consume_token(SYMBOL);
name.add(t);
}
{if (true) return name;}
throw new Error("Missing return statement in function");
}
final public Name[] RequestedDeclarations() throws ParseException {
Name name;
Token as = null;
ArrayList decls = new ArrayList();
name = Name(null);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case DOT:
case AS:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case AS:
jj_consume_token(AS);
as = jj_consume_token(SYMBOL);
break;
case DOT:
jj_consume_token(DOT);
jj_consume_token(STAR);
name.enableStar();
break;
default:
jj_la1[8] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
break;
default:
jj_la1[9] = jj_gen;
;
}
decls.add(name);
if (as != null) {
name.setAs(as.image);
as = null;
}
label_6:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[10] = jj_gen;
break label_6;
}
jj_consume_token(COMMA);
name = Name(null);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case DOT:
case AS:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case AS:
jj_consume_token(AS);
as = jj_consume_token(SYMBOL);
break;
case DOT:
jj_consume_token(DOT);
jj_consume_token(STAR);
name.enableStar();
break;
default:
jj_la1[11] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
break;
default:
jj_la1[12] = jj_gen;
;
}
decls.add(name);
if (as != null) {
name.setAs(as.image);
as = null;
}
}
{if (true) return (Name[])decls.toArray(new Name[decls.size()]);}
throw new Error("Missing return statement in function");
}
final public void Import() throws ParseException {
Token t;
Token href;
Token as = null;
Name entity = null;
Name[] decls;
boolean added = false;
DefinitionStatement scope = flowPeek().getDefinitionStatement();
try {
t = jj_consume_token(IMPORT);
Location location = toLocation(t);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case STRING_LITERAL:
href = jj_consume_token(STRING_LITERAL);
String pathinfo = Conversions.unescape(href.image, true);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case AS:
case COLON:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case AS:
jj_consume_token(AS);
as = jj_consume_token(SYMBOL);
scope.addHrefImport(this, location, pathinfo, as.image, null, false);
added = true;
break;
case COLON:
jj_consume_token(COLON);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
decls = RequestedDeclarations();
scope.addHrefImport(this, location, pathinfo, null, decls, false);
added = true;
break;
case STAR:
jj_consume_token(STAR);
scope.addHrefImport(this, location, pathinfo, null, null, true);
added = true;
break;
default:
jj_la1[13] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
break;
default:
jj_la1[14] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
break;
default:
jj_la1[15] = jj_gen;
;
}
if (!added) {
scope.addHrefImport(this, location, pathinfo, null, null, false);
}
break;
case MODULE:
case SYMBOL:
entity = Name(null);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case DOT:
case AS:
case COLON:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case DOT:
jj_consume_token(DOT);
jj_consume_token(STAR);
scope.addEntityImport(this, location, entity, null, true);
added = true;
break;
case AS:
jj_consume_token(AS);
as = jj_consume_token(SYMBOL);
entity.setAs(as.image);
scope.addEntityImport(this, location, entity, null, false);
added = true;
break;
case COLON:
jj_consume_token(COLON);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
decls = RequestedDeclarations();
scope.addEntityImport(this, location, entity, decls, false);
added = true;
break;
case STAR:
jj_consume_token(STAR);
scope.addEntityImport(this, location, entity, null, true);
added = true;
break;
default:
jj_la1[16] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
break;
default:
jj_la1[17] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
break;
default:
jj_la1[18] = jj_gen;
;
}
if (!added) {
scope.addEntityImport(this, location, entity, null, false);
}
break;
default:
jj_la1[19] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
jj_consume_token(SEMICOLON);
} catch (ParseException e) {
onErrorSkip();
}
}
final public void FunctionParameterPart(ParameterListDeclaration parameters) throws ParseException {
Token t = null;
Token param;
param = jj_consume_token(SYMBOL);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case ASSIGN:
t = jj_consume_token(ASSIGN);
ExpressionStart();
break;
default:
jj_la1[20] = jj_gen;
;
}
String symbol = param.image;
Expression defaultexpr = null;
if (t != null) {
defaultexpr = new Expression(pop(), toLocation(t));
} else {
if (parameters.hasDefaultValues()) {
error(toLocation(param), "Parameters with default values must appear last");
defaultexpr = null;
}
}
if (parameters.isDeclared(symbol)) {
error(toLocation(param), "Entity '"+symbol+"' is already declared");
}
parameters.add(symbol, defaultexpr);
}
final public void FunctionParameterRest(ParameterListDeclaration parameters) throws ParseException {
Token param;
param = jj_consume_token(SYMBOL);
String symbol = param.image;
if (parameters.isDeclared(symbol)) {
error(toLocation(param), "Entity '"+symbol+"' is already declared");
} else {
parameters.add(CompilableFunction.PARAMETER_REST, symbol, Any.EMPTY_TUPLE, null);
}
}
final public void TerminalFunctionParameterList(ParameterListDeclaration parameters) throws ParseException {
FunctionParameterList(parameters);
jj_consume_token(0);
}
final public void FunctionParameterList(ParameterListDeclaration parameters) throws ParseException {
parameters.open();
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case SYMBOL:
case RANGE:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case SYMBOL:
FunctionParameterPart(parameters);
label_7:
while (true) {
if (jj_2_2(2)) {
;
} else {
break label_7;
}
jj_consume_token(COMMA);
FunctionParameterPart(parameters);
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
jj_consume_token(COMMA);
jj_consume_token(RANGE);
FunctionParameterRest(parameters);
break;
default:
jj_la1[21] = jj_gen;
;
}
break;
case RANGE:
jj_consume_token(RANGE);
FunctionParameterRest(parameters);
break;
default:
jj_la1[22] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
break;
default:
jj_la1[23] = jj_gen;
;
}
parameters.close();
}
final public void InterfaceMethod() throws ParseException {
Token t, s;
ParameterListDeclaration parameters = new ParameterListDeclaration();
t = jj_consume_token(FUNCTION);
s = jj_consume_token(SYMBOL);
jj_consume_token(OPEN);
FunctionParameterList(parameters);
jj_consume_token(CLOSE);
jj_consume_token(SEMICOLON);
Location location = toLocation(t);
String name = s.image;
InterfaceStatement intrface = flowPeek().getInterfaceStatement();
InterfaceMethodStatement method = new InterfaceMethodStatement(location, intrface, name, t.document, parameters);
if (intrface.lookupDeclaration(name) == null) {
intrface.declare(method);
} else {
error(location, "Entity '" + name + "' is already declared");
}
}
final public void ConstructorInvoke() throws ParseException {
Token t;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case SUPER:
t = jj_consume_token(SUPER);
jj_consume_token(OPEN);
ArgumentList();
jj_consume_token(CLOSE);
jj_consume_token(SEMICOLON);
Location location = toLocation(t);
flowPushChild(new EvalStatement(flowPeek(), location, new Expression(
new LinkNode(flowPeek(), location, new Name().add(t), (Parent)pop(),
LinkNode.SUPER), location)));
flowPop();
break;
default:
jj_la1[24] = jj_gen;
;
}
}
final public void Function() throws ParseException {
Token r = null;
Token t;
Token s;
ParameterListDeclaration parameters = new ParameterListDeclaration();
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case SYNCHRONIZED:
r = jj_consume_token(SYNCHRONIZED);
break;
default:
jj_la1[25] = jj_gen;
;
}
t = jj_consume_token(FUNCTION);
s = jj_consume_token(SYMBOL);
jj_consume_token(OPEN);
FunctionParameterList(parameters);
jj_consume_token(CLOSE);
boolean is_synchronized = (r != null);
String name = s.image;
String document = (r!=null) ? r.document : t.document;
DefinitionStatement target = flowPeek().getDefinitionStatement();
DefinitionStatement parent = flowPeek().getScopeStatement();
FunctionStatement context = flowPeek().getFunctionStatement();
FunctionStatement function = new FunctionStatement(toLocation(t), parent, context, is_synchronized, name, document, parameters);
function.setParentStatement(flowPeek());
if (target.lookupDeclaration(name) == null) {
parent.declare(function);
if (context != null) {
context.declare(name, function);
}
} else {
error(toLocation(t), "Entity '" + name + "' is already declared");
}
flowPush(function);
flowPush(function.getChildStatement());
jj_consume_token(BEGIN);
label_8:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
case BEGIN:
case DOT:
case STAR:
case IMPORT:
case STRING_LITERAL:
case SEMICOLON:
case RANGE:
case FUNCTION:
case OPEN:
case SUPER:
case SYNCHRONIZED:
case STATIC:
case CLASS:
case VAR:
case IF:
case WHILE:
case TRY:
case CATCH:
case FINALLY:
case THROW:
case PRINT:
case HOOK:
case PRINTLN:
case PRINTBR:
case SWITCH:
case FOR:
case DO:
case FOREACH:
case BREAK:
case CONTINUE:
case EXIT:
case RETURN:
case YIELD:
case ASSERT:
case ET:
case NEGATION:
case PLUS:
case MINUS:
case MINUSMINUS:
case PLUSPLUS:
case COPYOF:
case CLONEOF:
case TYPEOF:
case SIZEOF:
case CLASSOF:
case BOOLEAN:
case INT:
case FLOAT:
case STRING:
case DEFINED:
case UNDEFINED:
case NULL:
case OPEN_BRACKET:
case CARET:
case DELETE:
case BEGIN_LIST:
case NEW:
case THIS:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case INF:
case FALSE:
case TRUE:
case PATTERN:
;
break;
default:
jj_la1[26] = jj_gen;
break label_8;
}
if (jj_2_3(2)) {
Statement();
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case FUNCTION:
case SYNCHRONIZED:
Function();
break;
case IMPORT:
Import();
break;
default:
jj_la1[27] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
}
jj_consume_token(END);
flowPop();
flowPop();
}
final public void Method() throws ParseException {
boolean is_synchronized = false;
boolean is_static = false;
Token t;
Token s;
ParameterListDeclaration parameters = new ParameterListDeclaration();
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case SYNCHRONIZED:
t = jj_consume_token(SYNCHRONIZED);
is_synchronized = true;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case STATIC:
jj_consume_token(STATIC);
is_static = true;
break;
default:
jj_la1[28] = jj_gen;
;
}
jj_consume_token(FUNCTION);
break;
case STATIC:
t = jj_consume_token(STATIC);
is_static = true;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case SYNCHRONIZED:
jj_consume_token(SYNCHRONIZED);
is_synchronized = true;
break;
default:
jj_la1[29] = jj_gen;
;
}
jj_consume_token(FUNCTION);
break;
case FUNCTION:
t = jj_consume_token(FUNCTION);
break;
default:
jj_la1[30] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
s = jj_consume_token(SYMBOL);
jj_consume_token(OPEN);
FunctionParameterList(parameters);
jj_consume_token(CLOSE);
boolean is_constructor = false;
Location location = toLocation(t);
String document = t.document;
String name = s.image;
DefinitionStatement target = flowPeek().getDefinitionStatement();
ClassStatement parent = flowPeek().getClassStatement();
FunctionStatement context = flowPeek().getFunctionStatement();
if (context != null) {
if (context.getType() == Type.FUNCTION) {
is_static = true;
}
}
if (is_static) {
if (name.equals(parent.getName())) {
error(location, "Static methods may not used as constructors");
}
FunctionStatement function = new FunctionStatement(location, parent, context, is_synchronized, name, document, parameters);
function.setParentStatement(flowPeek());
if (target.lookupDeclaration(name) == null) {
parent.declare(function);
if (context != null) {
context.declare(name, function);
}
} else {
error(location, "Entity '" + name + "' is already declared");
}
flowPush(function);
flowPush(function.getChildStatement());
} else {
MethodStatement method;
if ((context == null) && name.equals(parent.getName())) {
is_constructor = true;
method = new ConstructorStatement(location, parent, is_synchronized, name, document, parameters);
if (parent.getConstructor() != null) {
error(location, "Constructor is already declared for class '"+parent+"'");
}
} else {
method = new MethodStatement(location, parent, context, is_synchronized, name, document, parameters);
}
method.setParentStatement(flowPeek());
if (target.lookupLocalDeclaration(name) == null) {
parent.declare(method);
if (context != null) {
context.declare(name, method);
}
} else {
error(location, "Entity '" + name + "' is already declared");
}
flowPush(method);
flowPush(method.getChildStatement());
}
jj_consume_token(BEGIN);
if (is_constructor) {
ConstructorInvoke();
}
label_9:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
case BEGIN:
case DOT:
case STAR:
case IMPORT:
case STRING_LITERAL:
case SEMICOLON:
case RANGE:
case FUNCTION:
case OPEN:
case SUPER:
case SYNCHRONIZED:
case STATIC:
case CLASS:
case VAR:
case IF:
case WHILE:
case TRY:
case CATCH:
case FINALLY:
case THROW:
case PRINT:
case HOOK:
case PRINTLN:
case PRINTBR:
case SWITCH:
case FOR:
case DO:
case FOREACH:
case BREAK:
case CONTINUE:
case EXIT:
case RETURN:
case YIELD:
case ASSERT:
case ET:
case NEGATION:
case PLUS:
case MINUS:
case MINUSMINUS:
case PLUSPLUS:
case COPYOF:
case CLONEOF:
case TYPEOF:
case SIZEOF:
case CLASSOF:
case BOOLEAN:
case INT:
case FLOAT:
case STRING:
case DEFINED:
case UNDEFINED:
case NULL:
case OPEN_BRACKET:
case CARET:
case DELETE:
case BEGIN_LIST:
case NEW:
case THIS:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case INF:
case FALSE:
case TRUE:
case PATTERN:
;
break;
default:
jj_la1[31] = jj_gen;
break label_9;
}
if (jj_2_4(2)) {
Statement();
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case FUNCTION:
case SYNCHRONIZED:
case STATIC:
Method();
break;
case IMPORT:
Import();
break;
default:
jj_la1[32] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
}
jj_consume_token(END);
flowPop();
flowPop();
}
final public void InlineFunction() throws ParseException {
Token t;
ParameterListDeclaration parameters = new ParameterListDeclaration();
jj_consume_token(BEGIN);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case PIPE:
t = jj_consume_token(PIPE);
FunctionParameterList(parameters);
jj_consume_token(PIPE);
break;
case BOOLEAN_OR:
t = jj_consume_token(BOOLEAN_OR);
parameters.open();
parameters.close();
break;
default:
jj_la1[33] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
Statement stmt = flowPeek();
DefinitionStatement parent = stmt.getScopeStatement();
FunctionStatement context = stmt.getFunctionStatement();
FunctionStatement function;
String name = "inline$" + parent.getNextInlined();
if (parent.typeOf() == Statement.ST_CLASS) {
function = new MethodStatement(toLocation(t), parent, context, false, name, null, parameters);
} else {
function = new FunctionStatement(toLocation(t), parent, context, false, name, null, parameters);
}
function.setParentStatement(flowPeek());
parent.declare(function);
flowPush(function);
flowPush(function.getChildStatement());
push(new InlinedFunctionNode(context, function));
label_10:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
case BEGIN:
case DOT:
case STAR:
case IMPORT:
case STRING_LITERAL:
case SEMICOLON:
case RANGE:
case FUNCTION:
case OPEN:
case SUPER:
case SYNCHRONIZED:
case STATIC:
case CLASS:
case VAR:
case IF:
case WHILE:
case TRY:
case CATCH:
case FINALLY:
case THROW:
case PRINT:
case HOOK:
case PRINTLN:
case PRINTBR:
case SWITCH:
case FOR:
case DO:
case FOREACH:
case BREAK:
case CONTINUE:
case EXIT:
case RETURN:
case YIELD:
case ASSERT:
case ET:
case NEGATION:
case PLUS:
case MINUS:
case MINUSMINUS:
case PLUSPLUS:
case COPYOF:
case CLONEOF:
case TYPEOF:
case SIZEOF:
case CLASSOF:
case BOOLEAN:
case INT:
case FLOAT:
case STRING:
case DEFINED:
case UNDEFINED:
case NULL:
case OPEN_BRACKET:
case CARET:
case DELETE:
case BEGIN_LIST:
case NEW:
case THIS:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case INF:
case FALSE:
case TRUE:
case PATTERN:
;
break;
default:
jj_la1[34] = jj_gen;
break label_10;
}
Statement();
}
jj_consume_token(END);
flowPop();
flowPop();
}
final public LinkNode EntityReference(Location location) throws ParseException {
Name name;
name = Name(null);
{if (true) return new LinkNode(flowPeek(), location, name);}
throw new Error("Missing return statement in function");
}
final public void InterfaceReference(Location location, List interfaces) throws ParseException {
LinkNode link;
link = EntityReference(location);
interfaces.add(new InterfaceRef(link));
}
final public InterfaceRef[] Interfaces(Location location) throws ParseException {
ArrayList interfaces = new ArrayList();
InterfaceReference(location, interfaces);
label_11:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[35] = jj_gen;
break label_11;
}
jj_consume_token(COMMA);
InterfaceReference(location, interfaces);
}
{if (true) return (InterfaceRef [])interfaces.toArray(new InterfaceRef[interfaces.size()]);}
throw new Error("Missing return statement in function");
}
final public void Interface() throws ParseException {
Token t;
Token s;
InterfaceRef[] interfaces = new InterfaceRef[0];
t = jj_consume_token(INTERFACE);
Location location = toLocation(t);
s = jj_consume_token(SYMBOL);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case EXTENDS:
jj_consume_token(EXTENDS);
interfaces = Interfaces(location);
break;
default:
jj_la1[36] = jj_gen;
;
}
jj_consume_token(BEGIN);
String name = s.image;
DefinitionStatement parent = flowPeek().getScopeStatement();
InterfaceStatement decl = new InterfaceStatement(location, parent, name, t.document, interfaces);
if (parent.lookupDeclaration(name) == null) {
parent.declare(decl);
} else {
error(location, "Entity '"+name+"' is already declared");
}
flowPush(decl);
label_12:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case IMPORT:
case FUNCTION:
case STATIC:
case INTERFACE:
case CONST:
;
break;
default:
jj_la1[37] = jj_gen;
break label_12;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case IMPORT:
Import();
break;
case CONST:
ConstantVariable();
break;
case FUNCTION:
InterfaceMethod();
break;
case STATIC:
jj_consume_token(STATIC);
Function();
break;
case INTERFACE:
Interface();
break;
default:
jj_la1[38] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
jj_consume_token(END);
flowPop();
}
final public void Class() throws ParseException {
Token t;
Token s;
ClassRef base = null;
InterfaceRef[] interfaces = new InterfaceRef[0];
LinkNode link;
t = jj_consume_token(CLASS);
s = jj_consume_token(SYMBOL);
Location location = toLocation(t);
String name = s.image;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case EXTENDS:
jj_consume_token(EXTENDS);
link = EntityReference(location);
base = new ClassRef(link);
break;
default:
jj_la1[39] = jj_gen;
;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case IMPLEMENTS:
jj_consume_token(IMPLEMENTS);
interfaces = Interfaces(location);
break;
default:
jj_la1[40] = jj_gen;
;
}
jj_consume_token(BEGIN);
DefinitionStatement parent = flowPeek().getDefinitionStatement();
ClassStatement classtype = new ClassStatement(location, parent, name, t.document, base, interfaces);
if (parent.lookupDeclaration(name) == null && !parent.isEntityReserved(name)) {
parent.declare(classtype);
} else {
error(location, "Entity '"+name+"' is already declared");
}
flowPush(classtype);
label_13:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case IMPORT:
case FUNCTION:
case SYNCHRONIZED:
case STATIC:
case CLASS:
case VAR:
case CONST:
;
break;
default:
jj_la1[41] = jj_gen;
break label_13;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case IMPORT:
Import();
break;
case CONST:
ConstantVariable();
break;
case CLASS:
Class();
break;
default:
jj_la1[42] = jj_gen;
if (jj_2_5(2)) {
Variable();
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case FUNCTION:
case SYNCHRONIZED:
case STATIC:
Method();
break;
default:
jj_la1[43] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
}
}
jj_consume_token(END);
classtype.finish();
flowPop();
}
final public void Variable() throws ParseException {
Token t;
String document = null;
boolean statik = false;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case STATIC:
t = jj_consume_token(STATIC);
document = t.document;
statik = true;
break;
default:
jj_la1[44] = jj_gen;
;
}
t = jj_consume_token(VAR);
if (document == null) {
document = t.document;
}
VariableTypePart(statik, document);
label_14:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[45] = jj_gen;
break label_14;
}
jj_consume_token(COMMA);
VariableTypePart(statik, document);
}
jj_consume_token(SEMICOLON);
}
final public void VariableTypePart(boolean statik, String document) throws ParseException {
Token symbol;
Expression expr = null;
symbol = jj_consume_token(SYMBOL);
Location location = toLocation(symbol);
String name = symbol.image;
DefinitionStatement target = flowPeek().getDefinitionStatement();
VariableStatement var = null;
if (target.lookupDeclaration(name) == null && !target.isEntityReserved(name)) {
var = target.declare(location, name, expr, document, statik);
} else {
error(location, "Entity '" + name + "' is already declared");
}
if (var != null) {
flowPush(var);
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case ASSIGN:
jj_consume_token(ASSIGN);
ValueExpression();
expr = (Expression)pop();
break;
default:
jj_la1[46] = jj_gen;
;
}
if (var != null) {
var.setExpression(expr);
flowPop();
}
}
final public void ConstantVariable() throws ParseException {
Token keyword;
keyword = jj_consume_token(CONST);
ConstantVariablePart(keyword);
label_15:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[47] = jj_gen;
break label_15;
}
jj_consume_token(COMMA);
ConstantVariablePart(keyword);
}
jj_consume_token(SEMICOLON);
}
final public void ConstantVariablePart(Token keyword) throws ParseException {
Token symbol;
symbol = jj_consume_token(SYMBOL);
jj_consume_token(ASSIGN);
Location location = toLocation(symbol);
String name = symbol.image;
DefinitionStatement target = flowPeek().getDefinitionStatement();
ConstantVariableStatement constant = new ConstantVariableStatement(location, target, name, null, keyword.document);
if (target.lookupDeclaration(name) == null && !target.isEntityReserved(name)) {
target.declare(constant);
} else {
error(location, "Entity '" + name + "' is already declared");
}
flowPush(constant);
ValueExpression();
constant.setExpression((Expression)pop());
flowPop();
}
/*
* Statement syntax follows.
*/
final public void StandaloneStatements() throws ParseException {
label_16:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
case BEGIN:
case DOT:
case STAR:
case IMPORT:
case STRING_LITERAL:
case SEMICOLON:
case RANGE:
case FUNCTION:
case OPEN:
case SUPER:
case SYNCHRONIZED:
case STATIC:
case CLASS:
case VAR:
case IF:
case WHILE:
case TRY:
case CATCH:
case FINALLY:
case THROW:
case PRINT:
case HOOK:
case PRINTLN:
case PRINTBR:
case SWITCH:
case FOR:
case DO:
case FOREACH:
case BREAK:
case CONTINUE:
case EXIT:
case RETURN:
case YIELD:
case ASSERT:
case ET:
case NEGATION:
case PLUS:
case MINUS:
case MINUSMINUS:
case PLUSPLUS:
case COPYOF:
case CLONEOF:
case TYPEOF:
case SIZEOF:
case CLASSOF:
case BOOLEAN:
case INT:
case FLOAT:
case STRING:
case DEFINED:
case UNDEFINED:
case NULL:
case OPEN_BRACKET:
case CARET:
case DELETE:
case BEGIN_LIST:
case NEW:
case THIS:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case INF:
case FALSE:
case TRUE:
case PATTERN:
;
break;
default:
jj_la1[48] = jj_gen;
break label_16;
}
Statement();
}
jj_consume_token(0);
}
final public void Statement() throws ParseException {
String label = null;
Statement current = _current;
try {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case SEMICOLON:
EmptyStatement();
break;
case PRINT:
case HOOK:
case PRINTLN:
case PRINTBR:
PrintStatement();
break;
case BREAK:
BreakStatement();
break;
case CONTINUE:
ContinueStatement();
break;
case RETURN:
ReturnStatement();
break;
case YIELD:
YieldStatement();
break;
case EXIT:
ExitStatement();
break;
case ASSERT:
AssertStatement();
break;
case TRY:
TryStatement();
break;
case THROW:
ThrowStatement();
break;
case CATCH:
CatchStatement(null);
break;
case FINALLY:
FinallyStatement(null);
break;
case SYNCHRONIZED:
SynchronizedStatement();
break;
case IF:
IfStatement();
break;
case WHILE:
WhileStatement(null);
break;
case FOR:
ForStatement(null);
break;
case DO:
DoStatement(null);
break;
case FOREACH:
ForeachStatement(null);
break;
case SWITCH:
SwitchStatement(null);
break;
default:
jj_la1[50] = jj_gen;
if (jj_2_6(2)) {
label = StatementLabel();
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case WHILE:
WhileStatement(label);
break;
case FOR:
ForStatement(label);
break;
case DO:
DoStatement(label);
break;
case FOREACH:
ForeachStatement(label);
break;
case SWITCH:
SwitchStatement(label);
break;
case BEGIN:
BlockStatement(label);
break;
default:
jj_la1[49] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
} else if (jj_2_7(2)) {
BlockStatement(null);
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
case BEGIN:
case DOT:
case STAR:
case IMPORT:
case STRING_LITERAL:
case RANGE:
case FUNCTION:
case OPEN:
case SUPER:
case STATIC:
case CLASS:
case VAR:
case ET:
case NEGATION:
case PLUS:
case MINUS:
case MINUSMINUS:
case PLUSPLUS:
case COPYOF:
case CLONEOF:
case TYPEOF:
case SIZEOF:
case CLASSOF:
case BOOLEAN:
case INT:
case FLOAT:
case STRING:
case DEFINED:
case UNDEFINED:
case NULL:
case OPEN_BRACKET:
case CARET:
case DELETE:
case BEGIN_LIST:
case NEW:
case THIS:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case INF:
case FALSE:
case TRUE:
case PATTERN:
ExpressionStatement();
break;
default:
jj_la1[51] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
}
} catch (ParseException e) {
onErrorSkip();
_current = current;
}
}
final public void StatementModifier(Statement stmt) throws ParseException {
Token t;
Expression expr;
IfStatement ifStmt;
Statement context = flowPeek();
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case IF:
t = jj_consume_token(IF);
Expression();
jj_consume_token(SEMICOLON);
ifStmt = new IfStatement(context, toLocation(t), (Expression)pop());
ifStmt.setChildStatement(stmt);
stmt.setParentStatement(ifStmt);
context.setChildStatement(ifStmt);
break;
case WHILE:
t = jj_consume_token(WHILE);
Expression();
jj_consume_token(SEMICOLON);
WhileStatement whileStmt = new WhileStatement(context, toLocation(t), (Expression)pop(), null);
whileStmt.setChildStatement(stmt);
stmt.setParentStatement(whileStmt);
context.setChildStatement(whileStmt);
break;
case SEMICOLON:
t = jj_consume_token(SEMICOLON);
context.setChildStatement(stmt);
break;
default:
jj_la1[52] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
final public void BlockStatement(String label) throws ParseException {
Token t;
t = jj_consume_token(BEGIN);
Statement context = flowPeek();
if (label != null) {
flowPushChild(new ExplicitBlockStatement(context, toLocation(t), label));
} else {
flowPushChild(new ImplicitBlockStatement(context, toLocation(t)));
}
label_17:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
case BEGIN:
case DOT:
case STAR:
case IMPORT:
case STRING_LITERAL:
case SEMICOLON:
case RANGE:
case FUNCTION:
case OPEN:
case SUPER:
case SYNCHRONIZED:
case STATIC:
case CLASS:
case VAR:
case IF:
case WHILE:
case TRY:
case CATCH:
case FINALLY:
case THROW:
case PRINT:
case HOOK:
case PRINTLN:
case PRINTBR:
case SWITCH:
case FOR:
case DO:
case FOREACH:
case BREAK:
case CONTINUE:
case EXIT:
case RETURN:
case YIELD:
case ASSERT:
case ET:
case NEGATION:
case PLUS:
case MINUS:
case MINUSMINUS:
case PLUSPLUS:
case COPYOF:
case CLONEOF:
case TYPEOF:
case SIZEOF:
case CLASSOF:
case BOOLEAN:
case INT:
case FLOAT:
case STRING:
case DEFINED:
case UNDEFINED:
case NULL:
case OPEN_BRACKET:
case CARET:
case DELETE:
case BEGIN_LIST:
case NEW:
case THIS:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case INF:
case FALSE:
case TRUE:
case PATTERN:
;
break;
default:
jj_la1[53] = jj_gen;
break label_17;
}
Statement();
}
jj_consume_token(END);
flowPop();
}
final public void TryStatement() throws ParseException {
Token t;
t = jj_consume_token(TRY);
TryStatement trystmt = new TryStatement(flowPeek(), toLocation(t));
flowPushChild(trystmt);
Statement();
label_18:
while (true) {
if (jj_2_8(2147483647)) {
;
} else {
break label_18;
}
CatchStatement(trystmt);
}
if (jj_2_9(2147483647)) {
FinallyStatement(trystmt);
} else {
;
}
flowPop();
}
final public void ThrowStatement() throws ParseException {
Token t;
Statement stmt;
t = jj_consume_token(THROW);
ListExpression();
stmt = new ThrowStatement(flowPeek(), toLocation(t), (Expression)pop());
StatementModifier(stmt);
}
final public void CatchStatement(TryStatement trystmt) throws ParseException {
Token t;
Token param;
int count = 0;
t = jj_consume_token(CATCH);
jj_consume_token(OPEN);
AssignableExpression();
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COLON:
jj_consume_token(COLON);
Expression();
count++;
label_19:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[54] = jj_gen;
break label_19;
}
jj_consume_token(COMMA);
Expression();
count++;
}
break;
default:
jj_la1[55] = jj_gen;
;
}
jj_consume_token(CLOSE);
ExpressionList types = null;
if (count > 0) {
types = new ExpressionList(count);
for(count--; count>=0; count--) {
types.setChild(count, ((Expression)pop()).getChild(0));
}
}
Location location = toLocation(t);
Expression assignment = (Expression)pop();
Statement context = (trystmt != null) ? trystmt : flowPeek();
if (trystmt == null) {
trystmt = getEnclosingTryBlock();
}
CatchStatement catchstmt = new CatchStatement(trystmt, location, assignment, types);
trystmt.addCatch(catchstmt);
flowPush(catchstmt);
Statement();
flowPush(context);
}
final public void FinallyStatement(TryStatement trystmt) throws ParseException {
Token t;
Token param;
t = jj_consume_token(FINALLY);
Location location = toLocation(t);
Statement context = (trystmt != null) ? trystmt : flowPeek();
if (trystmt == null) {
trystmt = getEnclosingTryBlock();
}
FinallyStatement finallystmt = new FinallyStatement(trystmt, toLocation(t));
trystmt.setFinally(finallystmt);
flowPush(finallystmt);
Statement();
flowPush(context);
}
final public void SynchronizedStatement() throws ParseException {
Token t;
t = jj_consume_token(SYNCHRONIZED);
jj_consume_token(OPEN);
Expression();
jj_consume_token(CLOSE);
flowPushChild(new SynchronizedStatement(
flowPeek(), toLocation(t), (Expression)pop()));
Statement();
flowPop();
}
final public void ExpressionStatement() throws ParseException {
Statement stmt;
Expression();
Expression expr = (Expression)pop();
stmt = new EvalStatement(flowPeek(), expr.getLocation(), expr);
StatementModifier(stmt);
}
final public void EmptyStatement() throws ParseException {
jj_consume_token(SEMICOLON);
}
final public Expression[] PrintValueList(Expression suffix) throws ParseException {
ArrayList list = new ArrayList();
Token t;
ValueExpression();
list.add((Expression)pop());
label_20:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[56] = jj_gen;
break label_20;
}
t = jj_consume_token(COMMA);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
jj_consume_token(COMMA);
StringBuffer spaces = new StringBuffer(" ");
label_21:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[57] = jj_gen;
break label_21;
}
jj_consume_token(COMMA);
spaces.append(' ');
}
list.add(new Expression(new ConstantNode(spaces.toString()), toLocation(t)));
break;
default:
jj_la1[58] = jj_gen;
;
}
ValueExpression();
list.add((Expression)pop());
}
if (suffix != null) {
list.add(suffix);
}
{if (true) return (Expression[]) list.toArray(new Expression[list.size()]);}
throw new Error("Missing return statement in function");
}
final public void PrintStatement() throws ParseException {
Token t;
Expression[] list = null;
Statement stmt;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case PRINT:
t = jj_consume_token(PRINT);
list = PrintValueList(null);
stmt = new PrintStatement(flowPeek(), toLocation(t), list, false);
break;
case HOOK:
t = jj_consume_token(HOOK);
list = PrintValueList(null);
stmt = new PrintStatement(flowPeek(), toLocation(t), list, false);
break;
case PRINTLN:
t = jj_consume_token(PRINTLN);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
case BEGIN:
case DOT:
case STAR:
case IMPORT:
case STRING_LITERAL:
case RANGE:
case FUNCTION:
case OPEN:
case SUPER:
case STATIC:
case CLASS:
case VAR:
case ET:
case NEGATION:
case PLUS:
case MINUS:
case MINUSMINUS:
case PLUSPLUS:
case COPYOF:
case CLONEOF:
case TYPEOF:
case SIZEOF:
case CLASSOF:
case BOOLEAN:
case INT:
case FLOAT:
case STRING:
case DEFINED:
case UNDEFINED:
case NULL:
case OPEN_BRACKET:
case CARET:
case DELETE:
case BEGIN_LIST:
case NEW:
case THIS:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case INF:
case FALSE:
case TRUE:
case PATTERN:
list = PrintValueList(null);
break;
default:
jj_la1[59] = jj_gen;
;
}
if (list == null) {
list = new Expression[0];
}
stmt = new PrintStatement(flowPeek(), toLocation(t), list, true);
break;
case PRINTBR:
t = jj_consume_token(PRINTBR);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
case BEGIN:
case DOT:
case STAR:
case IMPORT:
case STRING_LITERAL:
case RANGE:
case FUNCTION:
case OPEN:
case SUPER:
case STATIC:
case CLASS:
case VAR:
case ET:
case NEGATION:
case PLUS:
case MINUS:
case MINUSMINUS:
case PLUSPLUS:
case COPYOF:
case CLONEOF:
case TYPEOF:
case SIZEOF:
case CLASSOF:
case BOOLEAN:
case INT:
case FLOAT:
case STRING:
case DEFINED:
case UNDEFINED:
case NULL:
case OPEN_BRACKET:
case CARET:
case DELETE:
case BEGIN_LIST:
case NEW:
case THIS:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case INF:
case FALSE:
case TRUE:
case PATTERN:
list = PrintValueList(new Expression(new ConstantNode("<br>\n"), null));
break;
default:
jj_la1[60] = jj_gen;
;
}
if (list == null) {
list = new Expression[0];
}
stmt = new PrintStatement(flowPeek(), toLocation(t), list, false);
break;
default:
jj_la1[61] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
StatementModifier(stmt);
}
final public void IfStatement() throws ParseException {
Token t;
IfStatement stmt;
t = jj_consume_token(IF);
jj_consume_token(OPEN);
Expression();
jj_consume_token(CLOSE);
stmt = new IfStatement(flowPeek(), toLocation(t), (Expression)pop());
flowPushChild(stmt);
Statement();
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case ELSE:
jj_consume_token(ELSE);
stmt.onElse();
Statement();
break;
default:
jj_la1[62] = jj_gen;
;
}
flowPop();
}
final public String StatementLabel() throws ParseException {
Token t;
t = jj_consume_token(SYMBOL);
jj_consume_token(COLON);
String label = t.image;
if (flowPeek().allowLabel(label)) {
error(toLocation(t), "Label '" + label + "' is already declared");
label = null;
}
{if (true) return label;}
throw new Error("Missing return statement in function");
}
final public void SwitchStatement(String label) throws ParseException {
Token t;
Case caze;
SwitchStatement stmt;
t = jj_consume_token(SWITCH);
jj_consume_token(OPEN);
Expression();
jj_consume_token(CLOSE);
jj_consume_token(BEGIN);
stmt = new SwitchStatement(flowPeek(), toLocation(t), (Expression)pop(), label);
flowPushChild(stmt);
label_22:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case CASE:
case _DEFAULT:
;
break;
default:
jj_la1[63] = jj_gen;
break label_22;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case CASE:
t = jj_consume_token(CASE);
ValueExpression();
caze = stmt.onCase(this, (Expression)pop());
label_23:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[64] = jj_gen;
break label_23;
}
jj_consume_token(COMMA);
ValueExpression();
caze = stmt.onCase(this, (Expression)pop());
}
flowPush(caze.getBlock());
jj_consume_token(COLON);
label_24:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
case BEGIN:
case DOT:
case STAR:
case IMPORT:
case STRING_LITERAL:
case SEMICOLON:
case RANGE:
case FUNCTION:
case OPEN:
case SUPER:
case SYNCHRONIZED:
case STATIC:
case CLASS:
case VAR:
case IF:
case WHILE:
case TRY:
case CATCH:
case FINALLY:
case THROW:
case PRINT:
case HOOK:
case PRINTLN:
case PRINTBR:
case SWITCH:
case FOR:
case DO:
case FOREACH:
case BREAK:
case CONTINUE:
case EXIT:
case RETURN:
case YIELD:
case ASSERT:
case ET:
case NEGATION:
case PLUS:
case MINUS:
case MINUSMINUS:
case PLUSPLUS:
case COPYOF:
case CLONEOF:
case TYPEOF:
case SIZEOF:
case CLASSOF:
case BOOLEAN:
case INT:
case FLOAT:
case STRING:
case DEFINED:
case UNDEFINED:
case NULL:
case OPEN_BRACKET:
case CARET:
case DELETE:
case BEGIN_LIST:
case NEW:
case THIS:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case INF:
case FALSE:
case TRUE:
case PATTERN:
;
break;
default:
jj_la1[65] = jj_gen;
break label_24;
}
Statement();
}
flowPop();
break;
case _DEFAULT:
t = jj_consume_token(_DEFAULT);
jj_consume_token(COLON);
caze = stmt.onDefault(this, toLocation(t));
flowPush(caze.getBlock());
label_25:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
case BEGIN:
case DOT:
case STAR:
case IMPORT:
case STRING_LITERAL:
case SEMICOLON:
case RANGE:
case FUNCTION:
case OPEN:
case SUPER:
case SYNCHRONIZED:
case STATIC:
case CLASS:
case VAR:
case IF:
case WHILE:
case TRY:
case CATCH:
case FINALLY:
case THROW:
case PRINT:
case HOOK:
case PRINTLN:
case PRINTBR:
case SWITCH:
case FOR:
case DO:
case FOREACH:
case BREAK:
case CONTINUE:
case EXIT:
case RETURN:
case YIELD:
case ASSERT:
case ET:
case NEGATION:
case PLUS:
case MINUS:
case MINUSMINUS:
case PLUSPLUS:
case COPYOF:
case CLONEOF:
case TYPEOF:
case SIZEOF:
case CLASSOF:
case BOOLEAN:
case INT:
case FLOAT:
case STRING:
case DEFINED:
case UNDEFINED:
case NULL:
case OPEN_BRACKET:
case CARET:
case DELETE:
case BEGIN_LIST:
case NEW:
case THIS:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case INF:
case FALSE:
case TRUE:
case PATTERN:
;
break;
default:
jj_la1[66] = jj_gen;
break label_25;
}
Statement();
}
flowPop();
break;
default:
jj_la1[67] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
jj_consume_token(END);
flowPop();
}
final public void WhileStatement(String label) throws ParseException {
Token t;
t = jj_consume_token(WHILE);
jj_consume_token(OPEN);
Expression();
jj_consume_token(CLOSE);
flowPushChild(new WhileStatement(flowPeek(), toLocation(t), (Expression)pop(), label));
Statement();
flowPop();
}
final public void ForAssignmentExpression(Token t) throws ParseException {
Expression();
}
final public Object[] TerminalForExpressionList() throws ParseException {
Object[] list;
list = ForExpressionList(null);
jj_consume_token(0);
{if (true) return list;}
throw new Error("Missing return statement in function");
}
final public Object[] ForExpressionList(Token t) throws ParseException {
Expression[] init = null;
Expression condition = null;
Expression[] action = null;
int n;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
case BEGIN:
case DOT:
case STAR:
case IMPORT:
case STRING_LITERAL:
case RANGE:
case FUNCTION:
case OPEN:
case SUPER:
case STATIC:
case CLASS:
case VAR:
case ET:
case NEGATION:
case PLUS:
case MINUS:
case MINUSMINUS:
case PLUSPLUS:
case COPYOF:
case CLONEOF:
case TYPEOF:
case SIZEOF:
case CLASSOF:
case BOOLEAN:
case INT:
case FLOAT:
case STRING:
case DEFINED:
case UNDEFINED:
case NULL:
case OPEN_BRACKET:
case CARET:
case DELETE:
case BEGIN_LIST:
case NEW:
case THIS:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case INF:
case FALSE:
case TRUE:
case PATTERN:
n = 0;
ForAssignmentExpression(t);
n++;
label_26:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[68] = jj_gen;
break label_26;
}
t = jj_consume_token(COMMA);
ForAssignmentExpression(t);
n++;
}
init = new Expression[n];
for(int i = n-1; i>=0; i--) {
init[i] = (Expression)pop();
}
break;
default:
jj_la1[69] = jj_gen;
;
}
jj_consume_token(SEMICOLON);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
case BEGIN:
case DOT:
case STAR:
case IMPORT:
case STRING_LITERAL:
case RANGE:
case FUNCTION:
case OPEN:
case SUPER:
case STATIC:
case CLASS:
case VAR:
case ET:
case NEGATION:
case PLUS:
case MINUS:
case MINUSMINUS:
case PLUSPLUS:
case COPYOF:
case CLONEOF:
case TYPEOF:
case SIZEOF:
case CLASSOF:
case BOOLEAN:
case INT:
case FLOAT:
case STRING:
case DEFINED:
case UNDEFINED:
case NULL:
case OPEN_BRACKET:
case CARET:
case DELETE:
case BEGIN_LIST:
case NEW:
case THIS:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case INF:
case FALSE:
case TRUE:
case PATTERN:
Expression();
condition = (Expression)pop();
break;
default:
jj_la1[70] = jj_gen;
;
}
t = jj_consume_token(SEMICOLON);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
case BEGIN:
case DOT:
case STAR:
case IMPORT:
case STRING_LITERAL:
case RANGE:
case FUNCTION:
case OPEN:
case SUPER:
case STATIC:
case CLASS:
case VAR:
case ET:
case NEGATION:
case PLUS:
case MINUS:
case MINUSMINUS:
case PLUSPLUS:
case COPYOF:
case CLONEOF:
case TYPEOF:
case SIZEOF:
case CLASSOF:
case BOOLEAN:
case INT:
case FLOAT:
case STRING:
case DEFINED:
case UNDEFINED:
case NULL:
case OPEN_BRACKET:
case CARET:
case DELETE:
case BEGIN_LIST:
case NEW:
case THIS:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case INF:
case FALSE:
case TRUE:
case PATTERN:
n = 0;
ForAssignmentExpression(t);
n++;
label_27:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[71] = jj_gen;
break label_27;
}
t = jj_consume_token(COMMA);
ForAssignmentExpression(t);
n++;
}
action = new Expression[n];
for(int i = n-1; i>=0; i--) {
action[i] = (Expression)pop();
}
break;
default:
jj_la1[72] = jj_gen;
;
}
{if (true) return new Object[] { init, condition, action };}
throw new Error("Missing return statement in function");
}
final public void ForStatement(String label) throws ParseException {
Token t;
Object[] list;
t = jj_consume_token(FOR);
jj_consume_token(OPEN);
list = ForExpressionList(t);
jj_consume_token(CLOSE);
flowPushChild(new ForStatement(
flowPeek(),
toLocation(t),
(Expression[])list[0],
(Expression )list[1],
(Expression[])list[2],
label));
Statement();
flowPop();
}
final public void DoStatement(String label) throws ParseException {
Token t;
DoStatement stmt;
t = jj_consume_token(DO);
stmt = new DoStatement(flowPeek(), toLocation(t), label);
flowPushChild(stmt);
Statement();
jj_consume_token(WHILE);
jj_consume_token(OPEN);
Expression();
jj_consume_token(CLOSE);
jj_consume_token(SEMICOLON);
stmt.onWhile((Expression)pop());
flowPop();
}
final public void ForeachStatement(String label) throws ParseException {
ForeachStatement foreach = null;
foreach = ForeachStatementHeader(flowPeek(), label);
flowPushChild(foreach);
Statement();
flowPop();
}
final public Expression[] ForeachExpressions() throws ParseException {
int count = 0;
AssignableExpression();
count++;
label_28:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[73] = jj_gen;
break label_28;
}
jj_consume_token(COMMA);
AssignableExpression();
count++;
}
Expression[] list = new Expression[count];
for(int i=count-1; i>=0; i--) {
list[i] = (Expression)pop();
}
{if (true) return list;}
throw new Error("Missing return statement in function");
}
final public ForeachStatement ForeachStatementHeader(Statement parent, String label) throws ParseException {
Token t;
int count = 0;
boolean third = false;
Expression[] index = null;
Expression[] key = null;
Expression[] value = null;
t = jj_consume_token(FOREACH);
jj_consume_token(OPEN);
if (jj_2_10(2147483647)) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
case DOT:
case FUNCTION:
case SUPER:
case STATIC:
case CLASS:
case VAR:
case THIS:
index = ForeachExpressions();
break;
default:
jj_la1[74] = jj_gen;
;
}
jj_consume_token(SEMICOLON);
count ++;
} else {
;
}
if (jj_2_11(2147483647)) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
case DOT:
case FUNCTION:
case SUPER:
case STATIC:
case CLASS:
case VAR:
case THIS:
key = ForeachExpressions();
break;
default:
jj_la1[75] = jj_gen;
;
}
jj_consume_token(SEMICOLON);
count ++;
} else {
;
}
if (jj_2_12(2147483647)) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
case DOT:
case FUNCTION:
case SUPER:
case STATIC:
case CLASS:
case VAR:
case THIS:
value = ForeachExpressions();
break;
default:
jj_la1[76] = jj_gen;
;
}
jj_consume_token(SEMICOLON);
count ++;
} else {
;
}
Expression();
jj_consume_token(CLOSE);
Expression expr = (Expression)pop();
switch(count) {
case 1:
value = index;
key = null;
index = null;
break;
case 2:
if (key != null) {
value = key;
key = null;
}
if (index != null) {
key = index;
index = null;
}
break;
case 3:
}
{if (true) return new ForeachStatement(parent, toLocation(t), index, key, value, expr, label);}
throw new Error("Missing return statement in function");
}
final public void BreakStatement() throws ParseException {
Token t;
Token s = null;
Statement stmt;
t = jj_consume_token(BREAK);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case SYMBOL:
s = jj_consume_token(SYMBOL);
break;
default:
jj_la1[77] = jj_gen;
;
}
int depth = 0;
String label = ((s != null) ? s.image : null);
if (flowPeek().allowBreak()) {
if (label != null) {
if (flowPeek().allowLabel(label)) {
depth = flowPeek().getLabelDepth(label);
} else {
error(toLocation(t), "Label '"+label+"' is not declared");
}
}
} else {
error(toLocation(t), "Superfluous break, no valid enclosing statements open");
}
stmt = new BreakStatement(flowPeek(), toLocation(t), label, depth);
StatementModifier(stmt);
}
final public void ContinueStatement() throws ParseException {
Token t;
Token s = null;
String label = null;
int target = 0;
Expression expr = null;
Statement stmt;
t = jj_consume_token(CONTINUE);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case SYMBOL:
s = jj_consume_token(SYMBOL);
label = s.image;
break;
default:
jj_la1[78] = jj_gen;
;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case CASE:
case _DEFAULT:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case CASE:
jj_consume_token(CASE);
ValueExpression();
target = Statement.ST_CASE;
expr = (Expression)pop();
break;
case _DEFAULT:
jj_consume_token(_DEFAULT);
target = Statement.ST_DEFAULT;
break;
default:
jj_la1[79] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
break;
default:
jj_la1[80] = jj_gen;
;
}
stmt = flowPeek();
int depth = 0;
if ((target == 0) ? stmt.allowContinue() : stmt.allowBreak()) {
if (label != null) {
if (stmt.allowLabel(label)) {
depth = stmt.getLabelDepth(label);
} else {
error(toLocation(t), "Label '"+label+"' is not declared");
}
}
} else {
error(toLocation(t), "Superfluous continue, no valid enclosing statements open");
}
stmt = new ContinueStatement(flowPeek(), toLocation(t), label, depth, target, expr);
StatementModifier(stmt);
}
final public void ExitStatement() throws ParseException {
Token t;
Expression expr = null;
t = jj_consume_token(EXIT);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
case BEGIN:
case DOT:
case STAR:
case IMPORT:
case STRING_LITERAL:
case RANGE:
case FUNCTION:
case OPEN:
case SUPER:
case STATIC:
case CLASS:
case VAR:
case ET:
case NEGATION:
case PLUS:
case MINUS:
case MINUSMINUS:
case PLUSPLUS:
case COPYOF:
case CLONEOF:
case TYPEOF:
case SIZEOF:
case CLASSOF:
case BOOLEAN:
case INT:
case FLOAT:
case STRING:
case DEFINED:
case UNDEFINED:
case NULL:
case OPEN_BRACKET:
case CARET:
case DELETE:
case BEGIN_LIST:
case NEW:
case THIS:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case INF:
case FALSE:
case TRUE:
case PATTERN:
ListExpression();
expr = (Expression)pop();
break;
default:
jj_la1[81] = jj_gen;
;
}
StatementModifier(new ExitStatement(flowPeek(), toLocation(t), expr));
}
final public void ReturnStatement() throws ParseException {
Token t;
Expression expression = null;
Statement stmt;
t = jj_consume_token(RETURN);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
case BEGIN:
case DOT:
case STAR:
case IMPORT:
case STRING_LITERAL:
case RANGE:
case FUNCTION:
case OPEN:
case SUPER:
case STATIC:
case CLASS:
case VAR:
case ET:
case NEGATION:
case PLUS:
case MINUS:
case MINUSMINUS:
case PLUSPLUS:
case COPYOF:
case CLONEOF:
case TYPEOF:
case SIZEOF:
case CLASSOF:
case BOOLEAN:
case INT:
case FLOAT:
case STRING:
case DEFINED:
case UNDEFINED:
case NULL:
case OPEN_BRACKET:
case CARET:
case DELETE:
case BEGIN_LIST:
case NEW:
case THIS:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case INF:
case FALSE:
case TRUE:
case PATTERN:
ListExpression();
expression = (Expression)pop();
break;
default:
jj_la1[82] = jj_gen;
;
}
if (flowPeek().getFunctionStatement().getType() == Type.CONSTRUCTOR) {
if (expression != null) {
error(toLocation(t), "Constructors cannot have return values");
expression = null;
}
} else {
if (expression == null) {
expression = Expression.UNDEFINED;
}
}
stmt = new ReturnStatement(flowPeek(), toLocation(t), expression);
StatementModifier(stmt);
}
final public void YieldStatement() throws ParseException {
Token t;
Expression expression = null;
Statement stmt;
t = jj_consume_token(YIELD);
ListExpression();
expression = (Expression)pop();
if (flowPeek().getFunctionStatement().getType() == Type.CONSTRUCTOR) {
if (expression != null) {
error(toLocation(t), "Constructors cannot be generators");
}
}
stmt = new YieldStatement(flowPeek(), toLocation(t), expression);
StatementModifier(stmt);
}
final public void AssertStatement() throws ParseException {
Token start;
Token end;
start = jj_consume_token(ASSERT);
Expression();
end = jj_consume_token(SEMICOLON);
StringBuffer buf = new StringBuffer();
Token p = start.next;
while(p != end && p != null) {
buf.append(p.image);
p = p.next;
}
AssertStatement stmt = new AssertStatement(flowPeek(), toLocation(start), (Expression)pop(), buf.toString());
flowPushChild(stmt);
flowPop();
}
/*
* Expression(s) starts here
*/
final public void TerminalArgumentList() throws ParseException {
ArgumentList();
jj_consume_token(0);
}
final public void TerminalValueExpression() throws ParseException {
ValueExpression();
jj_consume_token(0);
}
final public void TerminalAssignableExpression() throws ParseException {
AssignableExpression();
jj_consume_token(0);
}
final public void TerminalExpression() throws ParseException {
Expression();
jj_consume_token(0);
}
final public void TerminalList() throws ParseException {
List(true, false);
jj_consume_token(0);
}
final public void TerminalAssignmentExpression() throws ParseException {
AssignmentExpression();
jj_consume_token(0);
}
final public Expression[] TerminalForeachAssignmentExpression() throws ParseException {
Expression[] exprs;
exprs = ForeachExpressions();
jj_consume_token(0);
{if (true) return exprs;}
throw new Error("Missing return statement in function");
}
final public void Expression() throws ParseException {
if (jj_2_13(2147483647)) {
AssignmentExpression();
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
case BEGIN:
case DOT:
case STAR:
case IMPORT:
case STRING_LITERAL:
case RANGE:
case FUNCTION:
case OPEN:
case SUPER:
case STATIC:
case CLASS:
case VAR:
case ET:
case NEGATION:
case PLUS:
case MINUS:
case MINUSMINUS:
case PLUSPLUS:
case COPYOF:
case CLONEOF:
case TYPEOF:
case SIZEOF:
case CLASSOF:
case BOOLEAN:
case INT:
case FLOAT:
case STRING:
case DEFINED:
case UNDEFINED:
case NULL:
case OPEN_BRACKET:
case CARET:
case DELETE:
case BEGIN_LIST:
case NEW:
case THIS:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case INF:
case FALSE:
case TRUE:
case PATTERN:
ValueExpression();
break;
default:
jj_la1[83] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
}
final public void ListExpression() throws ParseException {
Location loc = getCurrentLocation();
List(false, false);
push(new Expression(pop(), loc));
}
final public void ValueExpression() throws ParseException {
Location loc = getCurrentLocation();
ExpressionStart();
push(new Expression(pop(), loc));
}
final public void AssignmentExpression() throws ParseException {
int count = 0;
Token op;
Token et = null;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case ET:
et = jj_consume_token(ET);
break;
default:
jj_la1[84] = jj_gen;
;
}
Symbol(LinkNode.ASSIGN);
if (et != null) {
push(new RefNode(toLocation(et), pop(), true));
}
count++;
label_29:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[85] = jj_gen;
break label_29;
}
jj_consume_token(COMMA);
et=null;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case ET:
et = jj_consume_token(ET);
break;
default:
jj_la1[86] = jj_gen;
;
}
Symbol(LinkNode.ASSIGN);
if (et != null) {
push(new RefNode(toLocation(et), pop(), true));
}
count++;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case ASSIGN:
op = jj_consume_token(ASSIGN);
break;
case ASSIGN_ADD:
op = jj_consume_token(ASSIGN_ADD);
break;
case ASSIGN_SUBSTRACT:
op = jj_consume_token(ASSIGN_SUBSTRACT);
break;
case ASSIGN_MULTIPLY:
op = jj_consume_token(ASSIGN_MULTIPLY);
break;
case ASSIGN_DIVIDE:
op = jj_consume_token(ASSIGN_DIVIDE);
break;
case ASSIGN_REMAINDER:
op = jj_consume_token(ASSIGN_REMAINDER);
break;
case ASSIGN_CONCAT:
op = jj_consume_token(ASSIGN_CONCAT);
break;
case ASSIGN_INIT:
op = jj_consume_token(ASSIGN_INIT);
break;
default:
jj_la1[87] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
List(false, false);
Location location = toLocation(op);
Parent assignment = null;
switch(op.kind) {
case ASSIGN:
assignment = new AssignmentNode(location, count + 1);
break;
case ASSIGN_ADD:
assignment = new AdditionAssignmentNode(location, count + 1);
break;
case ASSIGN_SUBSTRACT:
assignment = new SubtractionAssignmentNode(location, count + 1);
break;
case ASSIGN_MULTIPLY:
assignment = new MultiplicationAssignmentNode(location, count + 1);
break;
case ASSIGN_DIVIDE:
assignment = new DivisionAssignmentNode(location, count + 1);
break;
case ASSIGN_REMAINDER:
assignment = new ModuloAssignmentNode(location, count + 1);
break;
case ASSIGN_CONCAT:
assignment = new ConcatenationAssignmentNode(location, count + 1);
break;
case ASSIGN_INIT:
assignment = new InitAssignmentNode(location, count + 1);
break;
}
assignment.setChild(count, pop());
while(count-- > 0) {
assignment.setChild(count, pop());
}
push(new Expression(assignment, location));
}
final public void AssignableExpression() throws ParseException {
Location loc = getCurrentLocation();
Symbol(LinkNode.ASSIGN);
push(new Expression(pop(), loc));
}
final public void List(boolean forcelist, boolean mutable) throws ParseException {
int argc = 1;
Expression();
label_30:
while (true) {
if (jj_2_14(2)) {
;
} else {
break label_30;
}
jj_consume_token(COMMA);
ExpressionStart();
argc++;
}
if (jj_2_15(2)) {
jj_consume_token(COMMA);
forcelist = true;
} else {
;
}
if (forcelist || (argc > 1)) {
if (mutable) {
MutableExpressionList list = new MutableExpressionList(argc);
while(argc-- > 0) {
list.setChild(argc, pop());
}
push(list);
} else {
ExpressionList list = new ExpressionList(argc);
while(argc-- > 0) {
list.setChild(argc, pop());
}
push(list);
}
}
}
final public void ExpressionStart() throws ParseException {
ForeachExpression();
}
final public void ForeachExpression() throws ParseException {
PipeExpression();
label_31:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case FOREACH:
;
break;
default:
jj_la1[88] = jj_gen;
break label_31;
}
jj_consume_token(FOREACH);
InlineFunction();
Node block = pop();
Node self = pop();
push(new ForeachNode(self, block));
}
}
final public void PipeExpression() throws ParseException {
MappingExpression();
label_32:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case ARROW:
;
break;
default:
jj_la1[89] = jj_gen;
break label_32;
}
jj_consume_token(ARROW);
MappingExpression();
Node right = pop();
Node left = pop();
push(new PipeNode(left, right));
}
}
final public void MappingExpression() throws ParseException {
ConditionalExpression();
label_33:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MAP:
;
break;
default:
jj_la1[90] = jj_gen;
break label_33;
}
jj_consume_token(MAP);
ConditionalExpression();
Node right = pop();
Node left = pop();
push(new MappingNode(left, right));
}
}
final public void ConditionalExpression() throws ParseException {
Node right = ConstantNode.UNDEFINED;
Node left;
Node middle;
RangeExpression();
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case HOOK:
case HOOKHOOK:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case HOOKHOOK:
jj_consume_token(HOOKHOOK);
ConditionalExpression();
right = pop();
left = pop();
push(new SelectNode(left, right));
break;
case HOOK:
jj_consume_token(HOOK);
ConditionalExpression();
jj_consume_token(COLON);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
case BEGIN:
case DOT:
case STAR:
case IMPORT:
case STRING_LITERAL:
case RANGE:
case FUNCTION:
case OPEN:
case SUPER:
case STATIC:
case CLASS:
case VAR:
case ET:
case NEGATION:
case PLUS:
case MINUS:
case MINUSMINUS:
case PLUSPLUS:
case COPYOF:
case CLONEOF:
case TYPEOF:
case SIZEOF:
case CLASSOF:
case BOOLEAN:
case INT:
case FLOAT:
case STRING:
case DEFINED:
case UNDEFINED:
case NULL:
case OPEN_BRACKET:
case CARET:
case DELETE:
case BEGIN_LIST:
case NEW:
case THIS:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case INF:
case FALSE:
case TRUE:
case PATTERN:
ConditionalExpression();
right = pop();
break;
default:
jj_la1[91] = jj_gen;
;
}
middle = pop();
left = pop();
push(new ConditionalNode(left, middle, right));
break;
default:
jj_la1[92] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
break;
default:
jj_la1[93] = jj_gen;
;
}
}
final public void RangeExpression() throws ParseException {
Node right = ConstantNode.INF;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case RANGE:
jj_consume_token(RANGE);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
case BEGIN:
case DOT:
case STAR:
case IMPORT:
case STRING_LITERAL:
case FUNCTION:
case OPEN:
case SUPER:
case STATIC:
case CLASS:
case VAR:
case ET:
case NEGATION:
case PLUS:
case MINUS:
case MINUSMINUS:
case PLUSPLUS:
case COPYOF:
case CLONEOF:
case TYPEOF:
case SIZEOF:
case CLASSOF:
case BOOLEAN:
case INT:
case FLOAT:
case STRING:
case DEFINED:
case UNDEFINED:
case NULL:
case OPEN_BRACKET:
case CARET:
case DELETE:
case BEGIN_LIST:
case NEW:
case THIS:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case INF:
case FALSE:
case TRUE:
case PATTERN:
LogicalORExpression();
right = pop();
break;
default:
jj_la1[94] = jj_gen;
;
}
push(new RangeNode(ConstantNode.NEG_INF, right));
break;
case MODULE:
case SYMBOL:
case BEGIN:
case DOT:
case STAR:
case IMPORT:
case STRING_LITERAL:
case FUNCTION:
case OPEN:
case SUPER:
case STATIC:
case CLASS:
case VAR:
case ET:
case NEGATION:
case PLUS:
case MINUS:
case MINUSMINUS:
case PLUSPLUS:
case COPYOF:
case CLONEOF:
case TYPEOF:
case SIZEOF:
case CLASSOF:
case BOOLEAN:
case INT:
case FLOAT:
case STRING:
case DEFINED:
case UNDEFINED:
case NULL:
case OPEN_BRACKET:
case CARET:
case DELETE:
case BEGIN_LIST:
case NEW:
case THIS:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case INF:
case FALSE:
case TRUE:
case PATTERN:
LogicalORExpression();
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case RANGE:
jj_consume_token(RANGE);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
case BEGIN:
case DOT:
case STAR:
case IMPORT:
case STRING_LITERAL:
case FUNCTION:
case OPEN:
case SUPER:
case STATIC:
case CLASS:
case VAR:
case ET:
case NEGATION:
case PLUS:
case MINUS:
case MINUSMINUS:
case PLUSPLUS:
case COPYOF:
case CLONEOF:
case TYPEOF:
case SIZEOF:
case CLASSOF:
case BOOLEAN:
case INT:
case FLOAT:
case STRING:
case DEFINED:
case UNDEFINED:
case NULL:
case OPEN_BRACKET:
case CARET:
case DELETE:
case BEGIN_LIST:
case NEW:
case THIS:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case INF:
case FALSE:
case TRUE:
case PATTERN:
LogicalORExpression();
right = pop();
break;
default:
jj_la1[95] = jj_gen;
;
}
push(new RangeNode(pop(), right));
break;
default:
jj_la1[96] = jj_gen;
;
}
break;
default:
jj_la1[97] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
final public void LogicalORExpression() throws ParseException {
LogicalXORExpression();
label_34:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case BOOLEAN_OR:
;
break;
default:
jj_la1[98] = jj_gen;
break label_34;
}
jj_consume_token(BOOLEAN_OR);
LogicalXORExpression();
Node right = pop();
Node left = pop();
push(new OrNode(left, right));
}
}
final public void LogicalXORExpression() throws ParseException {
LogicalANDExpression();
label_35:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case BOOLEAN_XOR:
;
break;
default:
jj_la1[99] = jj_gen;
break label_35;
}
jj_consume_token(BOOLEAN_XOR);
LogicalANDExpression();
Node right = pop();
Node left = pop();
push(new XorNode(left, right));
}
}
final public void LogicalANDExpression() throws ParseException {
EqualityExpression();
label_36:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case BOOLEAN_AND:
;
break;
default:
jj_la1[100] = jj_gen;
break label_36;
}
jj_consume_token(BOOLEAN_AND);
EqualityExpression();
Node right = pop();
Node left = pop();
push(new AndNode(left, right));
}
}
final public void EqualityExpression() throws ParseException {
Token op;
RelationalExpression();
label_37:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case EQUAL:
case NOT_EQUAL:
case EXACT_EQUAL:
case EXACT_NOT_EQUAL:
case COMPARE:
case EXACT_COMPARE:
;
break;
default:
jj_la1[101] = jj_gen;
break label_37;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case EQUAL:
op = jj_consume_token(EQUAL);
break;
case NOT_EQUAL:
op = jj_consume_token(NOT_EQUAL);
break;
case EXACT_EQUAL:
op = jj_consume_token(EXACT_EQUAL);
break;
case EXACT_NOT_EQUAL:
op = jj_consume_token(EXACT_NOT_EQUAL);
break;
case COMPARE:
op = jj_consume_token(COMPARE);
break;
case EXACT_COMPARE:
op = jj_consume_token(EXACT_COMPARE);
break;
default:
jj_la1[102] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
RelationalExpression();
Node right = pop();
Node left = pop();
switch(op.kind) {
case EQUAL:
push(new EqualToNode(left, right));
break;
case NOT_EQUAL:
push(new NotEqualToNode(left, right));
break;
case EXACT_EQUAL:
push(new ExactEqualToNode(left, right));
break;
case EXACT_NOT_EQUAL:
push(new ExactNotEqualToNode(left, right));
break;
case COMPARE:
push(new CompareNode(left, right));
break;
case EXACT_COMPARE:
push(new ExactCompareNode(left, right));
break;
}
}
}
final public void RelationalExpression() throws ParseException {
ArrayList ops = null;
Token op;
InExpression();
label_38:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case LESS:
case GREATER:
case LESS_OR_EQUAL:
case GREATER_OR_EQUAL:
;
break;
default:
jj_la1[103] = jj_gen;
break label_38;
}
if (ops == null) {
ops = new ArrayList();
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case LESS:
op = jj_consume_token(LESS);
break;
case GREATER:
op = jj_consume_token(GREATER);
break;
case LESS_OR_EQUAL:
op = jj_consume_token(LESS_OR_EQUAL);
break;
case GREATER_OR_EQUAL:
op = jj_consume_token(GREATER_OR_EQUAL);
break;
default:
jj_la1[104] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
ops.add(op);
InExpression();
}
if (ops != null) {
int n = ops.size() + 1;
if (n > 2) {
Node[] childs = new Node[n];
int[] operators = new int[n-1];
for(int i=n-1; i>=0; i--) {
childs[i] = pop();
}
for(int i=0; i<n-1; i++) {
operators[i] = ((Token)ops.get(i)).kind;
}
push(new ChainedComparisonNode(childs, operators));
} else {
Node right = pop();
Node left = pop();
switch(((Token)ops.get(0)).kind) {
case LESS:
push(new LessThanNode(left, right));
break;
case GREATER:
push(new GreaterThanNode(left, right));
break;
case LESS_OR_EQUAL:
push(new LessThanOrEqualToNode(left, right));
break;
case GREATER_OR_EQUAL:
push(new GreaterThanOrEqualToNode(left, right));
break;
}
}
}
}
final public void InExpression() throws ParseException {
Token op;
Token neg = null;
AdditiveExpression();
label_39:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case NEGATION:
case IN:
;
break;
default:
jj_la1[105] = jj_gen;
break label_39;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case NEGATION:
neg = jj_consume_token(NEGATION);
break;
default:
jj_la1[106] = jj_gen;
;
}
op = jj_consume_token(IN);
AdditiveExpression();
Node right = pop();
Node left = pop();
if (neg != null) {
push(new UnaryNegateNode(new InNode(left, right)));
} else {
push(new InNode(left, right));
}
}
}
final public void AdditiveExpression() throws ParseException {
Token op;
MultiplicativeExpression();
label_40:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case ET:
case PLUS:
case MINUS:
;
break;
default:
jj_la1[107] = jj_gen;
break label_40;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case PLUS:
op = jj_consume_token(PLUS);
break;
case MINUS:
op = jj_consume_token(MINUS);
break;
case ET:
op = jj_consume_token(ET);
break;
default:
jj_la1[108] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
MultiplicativeExpression();
Node right = pop();
Node left = pop();
switch(op.kind) {
case PLUS:
push(new AdditionNode(left, right));
break;
case MINUS:
push(new SubtractionNode(left, right));
break;
case ET:
push(new ConcatenationNode(left, right));
break;
}
}
}
final public void MultiplicativeExpression() throws ParseException {
Token op;
MatchExpression();
label_41:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case STAR:
case SLASH:
case REMAINDER:
;
break;
default:
jj_la1[109] = jj_gen;
break label_41;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case STAR:
op = jj_consume_token(STAR);
break;
case SLASH:
op = jj_consume_token(SLASH);
break;
case REMAINDER:
op = jj_consume_token(REMAINDER);
break;
default:
jj_la1[110] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
MatchExpression();
Node right = pop();
Node left = pop();
switch(op.kind) {
case STAR:
push(new MultiplicationNode(left, right));
break;
case SLASH:
push(new DivisionNode(left, right));
break;
case REMAINDER:
push(new ModuloNode(left, right));
break;
}
}
}
final public void MatchExpression() throws ParseException {
Token op;
UnaryExpression();
label_42:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MATCH:
case NO_MATCH:
;
break;
default:
jj_la1[111] = jj_gen;
break label_42;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MATCH:
op = jj_consume_token(MATCH);
break;
case NO_MATCH:
op = jj_consume_token(NO_MATCH);
break;
default:
jj_la1[112] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
UnaryExpression();
Node right = pop();
Node left = pop();
switch(op.kind) {
case MATCH:
push(new MatchNode(left, right));
break;
case NO_MATCH:
push(new NoMatchNode(left, right));
break;
}
}
}
final public void UnaryExpression() throws ParseException {
Token op;
Token t;
Node child;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case NEGATION:
jj_consume_token(NEGATION);
UnaryExpression();
push(new UnaryNegateNode(pop()));
break;
case PLUS:
jj_consume_token(PLUS);
UnaryExpression();
push(new UnaryPlusNode(pop()));
break;
case MINUS:
jj_consume_token(MINUS);
UnaryExpression();
String image = null;
child = pop();
if (child.typeOf() == Node.EXPR_CONSTANT) {
image = ((ConstantNode)child).getImage();
}
if (image == null) {
push(new UnaryMinusNode(child));
} else {
image = "-" + image;
push(new ConstantNode(image, Conversions.parseNumber(image)));
}
break;
case STAR:
op = jj_consume_token(STAR);
UnaryExpression();
push(new EnumerationNode(pop()));
break;
case MINUSMINUS:
op = jj_consume_token(MINUSMINUS);
UnaryExpression();
push(new PrefixDecrementNode(toLocation(op), pop()));
break;
case PLUSPLUS:
op = jj_consume_token(PLUSPLUS);
UnaryExpression();
push(new PrefixIncrementNode(toLocation(op), pop()));
break;
case COPYOF:
jj_consume_token(COPYOF);
UnaryExpression();
push(new CopyNode(pop()));
break;
case CLONEOF:
jj_consume_token(CLONEOF);
UnaryExpression();
push(new CloneNode(pop()));
break;
case TYPEOF:
jj_consume_token(TYPEOF);
UnaryExpression();
push(new TypeOfNode(pop()));
break;
case SIZEOF:
jj_consume_token(SIZEOF);
UnaryExpression();
push(new SizeOfNode(pop()));
break;
case CLASSOF:
jj_consume_token(CLASSOF);
UnaryExpression();
push(new ClassOfNode(pop()));
break;
default:
jj_la1[114] = jj_gen;
if (jj_2_16(2)) {
jj_consume_token(OPEN);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case BOOLEAN:
op = jj_consume_token(BOOLEAN);
break;
case INT:
op = jj_consume_token(INT);
break;
case FLOAT:
op = jj_consume_token(FLOAT);
break;
case STRING:
op = jj_consume_token(STRING);
break;
default:
jj_la1[113] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
jj_consume_token(CLOSE);
UnaryExpression();
switch(op.kind) {
case BOOLEAN:
push(new BooleanCastNode(pop()));
break;
case INT:
push(new IntCastNode(pop()));
break;
case FLOAT:
push(new FloatCastNode(pop()));
break;
case STRING:
push(new StringCastNode(pop()));
break;
}
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
case BEGIN:
case DOT:
case IMPORT:
case STRING_LITERAL:
case FUNCTION:
case OPEN:
case SUPER:
case STATIC:
case CLASS:
case VAR:
case ET:
case BOOLEAN:
case INT:
case FLOAT:
case STRING:
case DEFINED:
case UNDEFINED:
case NULL:
case OPEN_BRACKET:
case CARET:
case DELETE:
case BEGIN_LIST:
case NEW:
case THIS:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case INF:
case FALSE:
case TRUE:
case PATTERN:
UnaryPostfixExpression();
break;
default:
jj_la1[115] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
}
}
final public void UnaryPostfixExpression() throws ParseException {
Token op;
Node child;
IsExpression();
label_43:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MINUSMINUS:
case PLUSPLUS:
;
break;
default:
jj_la1[116] = jj_gen;
break label_43;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case PLUSPLUS:
op = jj_consume_token(PLUSPLUS);
push(new PostfixIncrementNode(toLocation(op), pop()));
break;
case MINUSMINUS:
op = jj_consume_token(MINUSMINUS);
push(new PostfixDecrementNode(toLocation(op), pop()));
break;
default:
jj_la1[117] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
}
final public void IsExpression() throws ParseException {
Token t;
Name name;
boolean not = false;
LazyExpression();
label_44:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case IS:
case HAS:
;
break;
default:
jj_la1[118] = jj_gen;
break label_44;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case IS:
t = jj_consume_token(IS);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case NEGATION:
jj_consume_token(NEGATION);
not = true;
break;
default:
jj_la1[119] = jj_gen;
;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case DEFINED:
jj_consume_token(DEFINED);
push(new IsNode(pop(), IsNode.IS_DEFINED));
break;
case UNDEFINED:
jj_consume_token(UNDEFINED);
push(new IsNode(pop(), IsNode.IS_UNDEFINED));
break;
case NULL:
jj_consume_token(NULL);
push(new IsNode(pop(), Any.IS_NULL));
break;
case BOOLEAN:
jj_consume_token(BOOLEAN);
push(new IsNode(pop(), Any.IS_BOOLEAN));
break;
case INT:
jj_consume_token(INT);
push(new IsNode(pop(), Any.IS_INT));
break;
case FLOAT:
jj_consume_token(FLOAT);
push(new IsNode(pop(), Any.IS_DOUBLE));
break;
case STRING:
jj_consume_token(STRING);
push(new IsNode(pop(), Any.IS_STRING));
break;
case RANGE:
jj_consume_token(RANGE);
push(new IsNode(pop(), Any.IS_RANGE));
break;
case MAP:
jj_consume_token(MAP);
push(new IsNode(pop(), Any.IS_MAP));
break;
case OPEN:
jj_consume_token(OPEN);
jj_consume_token(CLOSE);
push(new IsNode(pop(), Any.IS_TUPLE));
break;
case BEGIN:
jj_consume_token(BEGIN);
jj_consume_token(END);
push(new IsNode(pop(), Any.IS_LIST));
break;
case OPEN_BRACKET:
jj_consume_token(OPEN_BRACKET);
jj_consume_token(CLOSE_BRACKET);
push(new IsNode(pop(), Any.IS_ARRAY));
break;
case CLASS:
jj_consume_token(CLASS);
push(new IsNode(pop(), Any.IS_CLASS));
break;
case ET:
jj_consume_token(ET);
push(new IsNode(pop(), Any.IS_REF));
break;
case MODULE:
case SYMBOL:
name = Name(null);
Location location = toLocation(t);
LinkNode link = new LinkNode(flowPeek(), location, name, null, LinkNode.GET);
push(new InstanceOfNode(pop(), link, location));
break;
default:
jj_la1[120] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
if (not) {
push(new UnaryNegateNode(pop()));
not = false;
}
break;
case HAS:
jj_consume_token(HAS);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case NEGATION:
jj_consume_token(NEGATION);
not = true;
break;
default:
jj_la1[121] = jj_gen;
;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case SYMBOL:
t = jj_consume_token(SYMBOL);
push(new HasNode(pop(), t.image));
break;
case OPEN:
jj_consume_token(OPEN);
ExpressionStart();
jj_consume_token(CLOSE);
Node right = pop();
Node left = pop();
push(new DynamicHasNode(left, right));
break;
default:
jj_la1[122] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
if (not) {
push(new UnaryNegateNode(pop()));
not = false;
}
break;
default:
jj_la1[123] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
}
final public void LazyExpression() throws ParseException {
Token op = null;
Location location = null;
FunctionStatement thunk = null;
FunctionStatement context = null;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case CARET:
op = jj_consume_token(CARET);
location = toLocation(op);
Statement stmt = flowPeek();
DefinitionStatement parent = stmt.getScopeStatement();
context = stmt.getFunctionStatement();
String name = "thunk$" + parent.getNextInlined();
if (parent.typeOf() == Statement.ST_CLASS) {
thunk = new MethodStatement(location, parent, context, false, name, null, ParameterListDeclaration.EMPTY);
} else {
thunk = new FunctionStatement(location, parent, context, false, name, null, ParameterListDeclaration.EMPTY);
}
thunk.setParentStatement(flowPeek());
parent.declare(thunk);
flowPush(thunk);
flowPush(thunk.getChildStatement());
break;
default:
jj_la1[124] = jj_gen;
;
}
PrimaryExpression();
if (op != null) {
Expression expr = new Expression(pop(), location);
EvalStatement evalstmt = new EvalStatement(thunk, location, expr);
thunk.addChild(evalstmt);
push(new ThunkNode(context, thunk));
flowPop();
flowPop();
}
}
final public void PrimaryExpression() throws ParseException {
Token op;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case STRING_LITERAL:
case UNDEFINED:
case NULL:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case INF:
case FALSE:
case TRUE:
case PATTERN:
Constant();
ObjectConstruct(LinkNode.GET);
break;
case IMPORT:
jj_consume_token(IMPORT);
jj_consume_token(OPEN);
ExpressionStart();
jj_consume_token(CLOSE);
push(new ImportNode(pop()));
ObjectConstruct(LinkNode.GET);
break;
case DEFINED:
jj_consume_token(DEFINED);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case OPEN:
jj_consume_token(OPEN);
Symbol(LinkNode.GET);
jj_consume_token(CLOSE);
break;
case MODULE:
case SYMBOL:
case DOT:
case FUNCTION:
case SUPER:
case STATIC:
case CLASS:
case VAR:
case THIS:
Symbol(LinkNode.GET);
break;
default:
jj_la1[125] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
push(new DefinedNode(pop()));
break;
case DELETE:
op = jj_consume_token(DELETE);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case OPEN:
jj_consume_token(OPEN);
Symbol(LinkNode.GET);
jj_consume_token(CLOSE);
break;
case MODULE:
case SYMBOL:
case DOT:
case FUNCTION:
case SUPER:
case STATIC:
case CLASS:
case VAR:
case THIS:
Symbol(LinkNode.GET);
break;
default:
jj_la1[126] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
Node child = pop();
switch (child.typeOf()) {
case Node.EXPR_VARIABLE:
error(toLocation(op), "Cannot delete variables");
break;
case Node.EXPR_INVOKE:
error(toLocation(op), "Cannot delete methods");
break;
case Node.EXPR_CALL:
error(toLocation(op), "Cannot delete functions");
break;
}
push(new DeleteNode(child));
break;
default:
jj_la1[128] = jj_gen;
if (jj_2_17(2)) {
jj_consume_token(OPEN);
jj_consume_token(CLOSE);
push(new ExpressionList(0));
ObjectConstruct(LinkNode.GET);
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case OPEN:
jj_consume_token(OPEN);
List(false, false);
jj_consume_token(CLOSE);
ObjectConstruct(LinkNode.GET);
break;
default:
jj_la1[129] = jj_gen;
if (jj_2_18(2)) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case BEGIN_LIST:
jj_consume_token(BEGIN_LIST);
break;
case BEGIN:
jj_consume_token(BEGIN);
break;
default:
jj_la1[127] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
jj_consume_token(END);
push(new MutableExpressionList(0));
ObjectConstruct(LinkNode.GET);
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case OPEN_BRACKET:
ArrayExpression();
ObjectConstruct(LinkNode.GET);
break;
case NEW:
NewConstruct();
ObjectConstruct(LinkNode.GET);
break;
default:
jj_la1[130] = jj_gen;
if (jj_2_19(2147483647)) {
InlineFunction();
ObjectConstruct(LinkNode.GET);
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case BEGIN:
case BEGIN_LIST:
ListConstruct();
ObjectConstruct(LinkNode.GET);
break;
case BOOLEAN:
jj_consume_token(BOOLEAN);
push(new TypeNode(anvil.core.AnyBoolean.__class__));
ObjectConstruct(LinkNode.GET);
break;
case INT:
jj_consume_token(INT);
push(new TypeNode(anvil.core.AnyInt.__class__));
ObjectConstruct(LinkNode.GET);
break;
case FLOAT:
jj_consume_token(FLOAT);
push(new TypeNode(anvil.core.AnyDouble.__class__));
ObjectConstruct(LinkNode.GET);
break;
case STRING:
jj_consume_token(STRING);
push(new TypeNode(anvil.core.AnyString.__class__));
ObjectConstruct(LinkNode.GET);
break;
case ET:
op = jj_consume_token(ET);
Symbol(LinkNode.GET);
push(new RefNode(toLocation(op), pop(), false));
break;
case MODULE:
case SYMBOL:
case DOT:
case FUNCTION:
case SUPER:
case STATIC:
case CLASS:
case VAR:
case THIS:
Symbol(LinkNode.GET);
break;
default:
jj_la1[131] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
}
}
}
}
}
}
final public void NewConstruct() throws ParseException {
Token t;
Location location;
Name name = new Name();
t = jj_consume_token(NEW);
location = toLocation(t);
name.add(t);
Name(name);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case OPEN:
jj_consume_token(OPEN);
ArgumentList();
jj_consume_token(CLOSE);
break;
case BEGIN:
InlineFunction();
push(new ExpressionList(pop()));
break;
default:
jj_la1[132] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
push(new LinkNode(flowPeek(), location, name, (Parent)pop(), LinkNode.NEW));
}
final public Token DotAndThisOrSymbol() throws ParseException {
Token t;
jj_consume_token(DOT);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case THIS:
t = jj_consume_token(THIS);
break;
case SYMBOL:
t = jj_consume_token(SYMBOL);
break;
default:
jj_la1[133] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
{if (true) return t;}
throw new Error("Missing return statement in function");
}
final public void Symbol(int role) throws ParseException {
Token t;
Token var = null;
Location location;
Parent args = null;
Name name = new Name();
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
case FUNCTION:
case SUPER:
case STATIC:
case CLASS:
case VAR:
case THIS:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case SYMBOL:
case VAR:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case VAR:
var = jj_consume_token(VAR);
break;
default:
jj_la1[134] = jj_gen;
;
}
t = jj_consume_token(SYMBOL);
break;
case MODULE:
t = jj_consume_token(MODULE);
break;
case CLASS:
t = jj_consume_token(CLASS);
break;
case STATIC:
t = jj_consume_token(STATIC);
break;
case THIS:
t = jj_consume_token(THIS);
break;
case SUPER:
t = jj_consume_token(SUPER);
break;
case FUNCTION:
t = jj_consume_token(FUNCTION);
break;
default:
jj_la1[135] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
location = toLocation(var != null ? var : t);
if (var != null) {
Statement stmt = flowPeek();
if (stmt.isStaticRegion() && stmt.getFunctionStatement() == null) {
error(location, "Explicit variable declaration modifier 'var' cannot be used in static initialization");
} else {
switch(role) {
case LinkNode.ASSIGN:
case LinkNode.GET:
case LinkNode.DECLARE:
role = LinkNode.DECLARE;
break;
default:
error(location, "Invalid use of explicit variable declaration modifier 'var'");
}
}
}
name.add(t);
label_45:
while (true) {
if (jj_2_20(2147483647)) {
;
} else {
break label_45;
}
t = DotAndThisOrSymbol();
name.add(t);
}
break;
case DOT:
t = jj_consume_token(DOT);
location = toLocation(t);
name.add(t);
t = jj_consume_token(SYMBOL);
name.add(t);
label_46:
while (true) {
if (jj_2_21(2147483647)) {
;
} else {
break label_46;
}
t = DotAndThisOrSymbol();
name.add(t);
}
break;
default:
jj_la1[136] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
if (jj_2_22(2147483647)) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case OPEN:
jj_consume_token(OPEN);
ArgumentList();
jj_consume_token(CLOSE);
args = (Parent)pop();
break;
case BEGIN:
InlineFunction();
args = new ExpressionList(pop());
break;
default:
jj_la1[137] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
} else {
;
}
push(new LinkNode(flowPeek(), location, name, args, role));
ObjectConstruct(role);
}
final public void ObjectConstruct(int role) throws ParseException {
Token t;
boolean terminated = false;
boolean isMethod;
Parent parameters;
label_47:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case BEGIN:
case DOT:
case OPEN:
case OPEN_BRACKET:
;
break;
default:
jj_la1[138] = jj_gen;
break label_47;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case OPEN:
t = jj_consume_token(OPEN);
ArgumentList();
jj_consume_token(CLOSE);
parameters = (Parent)pop();
if (parameters.hasNamedParameters()) {
error(toLocation(t), "Named parameters are ignored in anonymous calls");
}
push(new DynamicCallNode(pop(), parameters));
break;
case BEGIN:
InlineFunction();
parameters = new ExpressionList(pop());
push(new DynamicCallNode(pop(), parameters));
break;
case DOT:
jj_consume_token(DOT);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case OPEN:
t = jj_consume_token(OPEN);
ExpressionStart();
jj_consume_token(CLOSE);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case OPEN:
jj_consume_token(OPEN);
ArgumentList();
jj_consume_token(CLOSE);
break;
case BEGIN:
InlineFunction();
push(new ExpressionList(pop()));
break;
default:
jj_la1[139] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
if (terminated) {
error(toLocation(t), "Empty brackets terminate variable expression");
}
parameters = (Parent)pop();
if (parameters.hasNamedParameters()) {
error(toLocation(t), "Named parameters are ignored in anonymous invokes");
}
Node method = pop();
Node self = pop();
push(new DynamicInvokeNode(self, method, parameters));
break;
case SYMBOL:
t = jj_consume_token(SYMBOL);
isMethod = false;
if (jj_2_23(2)) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case OPEN:
jj_consume_token(OPEN);
ArgumentList();
jj_consume_token(CLOSE);
break;
case BEGIN:
InlineFunction();
push(new ExpressionList(pop()));
break;
default:
jj_la1[140] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
isMethod = true;
} else {
;
}
if (terminated) {
error(toLocation(t), "Empty brackets terminate variable expression");
}
if (isMethod) {
parameters = (Parent)pop();
if (parameters.hasNamedParameters()) {
error(toLocation(t), "Named parameters are ignored in anonymous invokes");
}
push(new InvokeNode(pop(), t.image, parameters));
} else {
push(new AttributeNode(pop(), t.image));
}
break;
case CLASS:
jj_consume_token(CLASS);
push(new ClassOfNode(pop()));
break;
case SIZEOF:
jj_consume_token(SIZEOF);
push(new SizeOfNode(pop()));
break;
case TYPEOF:
jj_consume_token(TYPEOF);
push(new TypeOfNode(pop()));
break;
case CLONEOF:
jj_consume_token(CLONEOF);
push(new CloneNode(pop()));
break;
case COPYOF:
jj_consume_token(COPYOF);
push(new CopyNode(pop()));
break;
default:
jj_la1[141] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
break;
default:
jj_la1[142] = jj_gen;
if (jj_2_24(2)) {
t = jj_consume_token(OPEN_BRACKET);
List(false, false);
jj_consume_token(CLOSE_BRACKET);
if (terminated) {
error(toLocation(t), "Empty brackets terminate variable expression");
}
Node expression = pop();
Node self = pop();
push(new ReferenceNode(self, expression));
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case OPEN_BRACKET:
t = jj_consume_token(OPEN_BRACKET);
jj_consume_token(CLOSE_BRACKET);
if (role != LinkNode.ASSIGN) {
error(toLocation(t), "Empty brackets may only be used on assignments");
}
terminated = true;
push(new EmptyReferenceNode(pop()));
break;
default:
jj_la1[143] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
}
}
}
final public void Comprehension(ComprehensionNode compr, Statement root, Statement parent) throws ParseException {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case IF:
ComprehensionIf(compr, root, parent);
break;
case FOREACH:
ComprehensionForeach(compr, root, parent);
break;
case MODULE:
case SYMBOL:
case BEGIN:
case DOT:
case STAR:
case IMPORT:
case STRING_LITERAL:
case RANGE:
case FUNCTION:
case OPEN:
case SUPER:
case STATIC:
case CLASS:
case VAR:
case ET:
case NEGATION:
case PLUS:
case MINUS:
case MINUSMINUS:
case PLUSPLUS:
case COPYOF:
case CLONEOF:
case TYPEOF:
case SIZEOF:
case CLASSOF:
case BOOLEAN:
case INT:
case FLOAT:
case STRING:
case DEFINED:
case UNDEFINED:
case NULL:
case OPEN_BRACKET:
case CARET:
case DELETE:
case BEGIN_LIST:
case NEW:
case THIS:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case INF:
case FALSE:
case TRUE:
case PATTERN:
ArrayArgument();
FunctionStatement function = flowPeek().getFunctionStatement();
VariableNode var = new VariableNode(function.declare("array$"+root.hashCode()));
Location location = parent.getLocation();
AssignmentNode assign = new AssignmentNode(location, 2);
assign.setChild(0, new EmptyReferenceNode(var));
assign.setChild(1, pop());
parent.setChildStatement(new EvalStatement(parent, location,
new Expression(assign, location)));
compr.init(root, var);
break;
default:
jj_la1[144] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
final public void ComprehensionForeach(ComprehensionNode compr, Statement root, Statement parent) throws ParseException {
Statement stmt = null;
stmt = ForeachStatementHeader(parent, null);
parent.setChildStatement(stmt);
if (root == null) {
root = stmt;
}
Comprehension(compr, root, stmt);
}
final public void ComprehensionIf(ComprehensionNode compr, Statement root, Statement parent) throws ParseException {
Token t;
Statement stmt = null;
t = jj_consume_token(IF);
jj_consume_token(OPEN);
Expression();
jj_consume_token(CLOSE);
stmt = new IfStatement(parent, toLocation(t), (Expression)pop());
parent.setChildStatement(stmt);
Comprehension(compr, root, stmt);
}
final public void ListConstruct() throws ParseException {
ComprehensionNode node = null;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case BEGIN:
jj_consume_token(BEGIN);
break;
case BEGIN_LIST:
jj_consume_token(BEGIN_LIST);
break;
default:
jj_la1[145] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case FOREACH:
node = new ListComprehensionNode();
ComprehensionForeach(node, null, flowPeek());
push(node);
break;
case MODULE:
case SYMBOL:
case BEGIN:
case DOT:
case STAR:
case IMPORT:
case STRING_LITERAL:
case RANGE:
case FUNCTION:
case OPEN:
case SUPER:
case STATIC:
case CLASS:
case VAR:
case ET:
case NEGATION:
case PLUS:
case MINUS:
case MINUSMINUS:
case PLUSPLUS:
case COPYOF:
case CLONEOF:
case TYPEOF:
case SIZEOF:
case CLASSOF:
case BOOLEAN:
case INT:
case FLOAT:
case STRING:
case DEFINED:
case UNDEFINED:
case NULL:
case OPEN_BRACKET:
case CARET:
case DELETE:
case BEGIN_LIST:
case NEW:
case THIS:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case INF:
case FALSE:
case TRUE:
case PATTERN:
List(true, true);
break;
default:
jj_la1[146] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
jj_consume_token(END);
}
final public void ArrayExpression() throws ParseException {
Token t;
int argc = 0;
ComprehensionNode node = null;
t = jj_consume_token(OPEN_BRACKET);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
case BEGIN:
case DOT:
case STAR:
case IMPORT:
case STRING_LITERAL:
case RANGE:
case FUNCTION:
case OPEN:
case SUPER:
case STATIC:
case CLASS:
case VAR:
case FOREACH:
case ET:
case NEGATION:
case PLUS:
case MINUS:
case MINUSMINUS:
case PLUSPLUS:
case COPYOF:
case CLONEOF:
case TYPEOF:
case SIZEOF:
case CLASSOF:
case BOOLEAN:
case INT:
case FLOAT:
case STRING:
case DEFINED:
case UNDEFINED:
case NULL:
case OPEN_BRACKET:
case CARET:
case DELETE:
case BEGIN_LIST:
case NEW:
case THIS:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case INF:
case FALSE:
case TRUE:
case PATTERN:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case FOREACH:
node = new ArrayComprehensionNode();
ComprehensionForeach(node, null, flowPeek());
break;
case MODULE:
case SYMBOL:
case BEGIN:
case DOT:
case STAR:
case IMPORT:
case STRING_LITERAL:
case RANGE:
case FUNCTION:
case OPEN:
case SUPER:
case STATIC:
case CLASS:
case VAR:
case ET:
case NEGATION:
case PLUS:
case MINUS:
case MINUSMINUS:
case PLUSPLUS:
case COPYOF:
case CLONEOF:
case TYPEOF:
case SIZEOF:
case CLASSOF:
case BOOLEAN:
case INT:
case FLOAT:
case STRING:
case DEFINED:
case UNDEFINED:
case NULL:
case OPEN_BRACKET:
case CARET:
case DELETE:
case BEGIN_LIST:
case NEW:
case THIS:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case INF:
case FALSE:
case TRUE:
case PATTERN:
ArrayArgument();
argc++;
label_48:
while (true) {
if (jj_2_25(2)) {
;
} else {
break label_48;
}
jj_consume_token(COMMA);
ArrayArgument();
argc++;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
jj_consume_token(COMMA);
break;
default:
jj_la1[147] = jj_gen;
;
}
break;
default:
jj_la1[148] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
break;
default:
jj_la1[149] = jj_gen;
;
}
jj_consume_token(CLOSE_BRACKET);
if (node != null) {
push(node);
} else {
Parent argv = new ExpressionList(argc);
for(--argc; argc>=0; argc--) {
argv.setChild(argc, pop());
}
push(new ArrayNode(argv));
}
}
final public void ArrayArgument() throws ParseException {
Token symbol = null;
if (jj_2_26(2)) {
symbol = jj_consume_token(SYMBOL);
jj_consume_token(ASSIGN);
ExpressionStart();
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
case BEGIN:
case DOT:
case STAR:
case IMPORT:
case STRING_LITERAL:
case RANGE:
case FUNCTION:
case OPEN:
case SUPER:
case STATIC:
case CLASS:
case VAR:
case ET:
case NEGATION:
case PLUS:
case MINUS:
case MINUSMINUS:
case PLUSPLUS:
case COPYOF:
case CLONEOF:
case TYPEOF:
case SIZEOF:
case CLASSOF:
case BOOLEAN:
case INT:
case FLOAT:
case STRING:
case DEFINED:
case UNDEFINED:
case NULL:
case OPEN_BRACKET:
case CARET:
case DELETE:
case BEGIN_LIST:
case NEW:
case THIS:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case INF:
case FALSE:
case TRUE:
case PATTERN:
ExpressionStart();
break;
default:
jj_la1[150] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
if (symbol != null) {
push(new MappingNode(new SymbolNode(symbol.image), pop()));
}
}
final public void OneArgument() throws ParseException {
Token named = null;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case AT:
jj_consume_token(AT);
ExpressionStart();
push(new SpliceNode(pop()));
break;
default:
jj_la1[151] = jj_gen;
if (jj_2_27(2)) {
named = jj_consume_token(SYMBOL);
jj_consume_token(ASSIGN);
ExpressionStart();
push(new NamedNode(pop(), named.image));
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
case BEGIN:
case DOT:
case STAR:
case IMPORT:
case STRING_LITERAL:
case RANGE:
case FUNCTION:
case OPEN:
case SUPER:
case STATIC:
case CLASS:
case VAR:
case ET:
case NEGATION:
case PLUS:
case MINUS:
case MINUSMINUS:
case PLUSPLUS:
case COPYOF:
case CLONEOF:
case TYPEOF:
case SIZEOF:
case CLASSOF:
case BOOLEAN:
case INT:
case FLOAT:
case STRING:
case DEFINED:
case UNDEFINED:
case NULL:
case OPEN_BRACKET:
case CARET:
case DELETE:
case BEGIN_LIST:
case NEW:
case THIS:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case INF:
case FALSE:
case TRUE:
case PATTERN:
ExpressionStart();
break;
default:
jj_la1[152] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
}
}
final public void ArgumentList() throws ParseException {
int argc = 0;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MODULE:
case SYMBOL:
case BEGIN:
case DOT:
case STAR:
case IMPORT:
case STRING_LITERAL:
case RANGE:
case FUNCTION:
case OPEN:
case SUPER:
case STATIC:
case CLASS:
case VAR:
case ET:
case NEGATION:
case PLUS:
case MINUS:
case MINUSMINUS:
case PLUSPLUS:
case COPYOF:
case CLONEOF:
case TYPEOF:
case SIZEOF:
case CLASSOF:
case BOOLEAN:
case INT:
case FLOAT:
case STRING:
case DEFINED:
case UNDEFINED:
case NULL:
case OPEN_BRACKET:
case CARET:
case DELETE:
case BEGIN_LIST:
case NEW:
case THIS:
case AT:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case INF:
case FALSE:
case TRUE:
case PATTERN:
OneArgument();
argc++;
label_49:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[153] = jj_gen;
break label_49;
}
jj_consume_token(COMMA);
OneArgument();
argc++;
}
break;
default:
jj_la1[154] = jj_gen;
;
}
Parent argv = new ExpressionList(argc);
for(int i=argc-1; i>=0; i--) {
argv.setChild(i, pop());
}
push(argv);
}
final public void Constant() throws ParseException {
Token t;
Token s = null;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case INTEGER_LITERAL:
t = jj_consume_token(INTEGER_LITERAL);
push(new ConstantNode(t.image, Conversions.parseNumber(t.image)));
break;
case FLOATING_POINT_LITERAL:
t = jj_consume_token(FLOATING_POINT_LITERAL);
push(new ConstantNode(Any.create(Any.IS_DOUBLE, t.image)));
break;
case STRING_LITERAL:
StringBuffer buffer = new StringBuffer();
label_50:
while (true) {
t = jj_consume_token(STRING_LITERAL);
if (t.image.length()>1) {
buffer.append(t.image.substring(1, t.image.length() - 1));
}
if (s == null) {
s = t;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case STRING_LITERAL:
;
break;
default:
jj_la1[155] = jj_gen;
break label_50;
}
}
push(Grammar.parseString(this, toLocation(s), buffer.toString()));
break;
case INF:
t = jj_consume_token(INF);
push(ConstantNode.INF);
break;
case FALSE:
t = jj_consume_token(FALSE);
push(ConstantNode.FALSE);
break;
case TRUE:
t = jj_consume_token(TRUE);
push(ConstantNode.TRUE);
break;
case NULL:
t = jj_consume_token(NULL);
push(ConstantNode.NULL);
break;
case UNDEFINED:
t = jj_consume_token(UNDEFINED);
push(ConstantNode.UNDEFINED);
break;
case PATTERN:
t = jj_consume_token(PATTERN);
int i = t.image.lastIndexOf('/');
String image;
String flags;
if (i>0) {
image = t.image.substring(1, i);
flags = t.image.substring(i+1);
} else {
image = t.image;
flags = "";
}
Pattern pattern = null;
try {
pattern = ObjectPool.createPattern(image, flags);
push(new ConstantNode(new AnyPattern(pattern)));
} catch (MalformedPatternException e) {
error(toLocation(t), "Invalid regular expression: " + e.getMessage());
push(ConstantNode.UNDEFINED);
}
break;
default:
jj_la1[156] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
final private boolean jj_2_1(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
boolean retval = !jj_3_1();
jj_save(0, xla);
return retval;
}
final private boolean jj_2_2(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
boolean retval = !jj_3_2();
jj_save(1, xla);
return retval;
}
final private boolean jj_2_3(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
boolean retval = !jj_3_3();
jj_save(2, xla);
return retval;
}
final private boolean jj_2_4(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
boolean retval = !jj_3_4();
jj_save(3, xla);
return retval;
}
final private boolean jj_2_5(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
boolean retval = !jj_3_5();
jj_save(4, xla);
return retval;
}
final private boolean jj_2_6(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
boolean retval = !jj_3_6();
jj_save(5, xla);
return retval;
}
final private boolean jj_2_7(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
boolean retval = !jj_3_7();
jj_save(6, xla);
return retval;
}
final private boolean jj_2_8(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
boolean retval = !jj_3_8();
jj_save(7, xla);
return retval;
}
final private boolean jj_2_9(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
boolean retval = !jj_3_9();
jj_save(8, xla);
return retval;
}
final private boolean jj_2_10(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
boolean retval = !jj_3_10();
jj_save(9, xla);
return retval;
}
final private boolean jj_2_11(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
boolean retval = !jj_3_11();
jj_save(10, xla);
return retval;
}
final private boolean jj_2_12(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
boolean retval = !jj_3_12();
jj_save(11, xla);
return retval;
}
final private boolean jj_2_13(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
boolean retval = !jj_3_13();
jj_save(12, xla);
return retval;
}
final private boolean jj_2_14(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
boolean retval = !jj_3_14();
jj_save(13, xla);
return retval;
}
final private boolean jj_2_15(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
boolean retval = !jj_3_15();
jj_save(14, xla);
return retval;
}
final private boolean jj_2_16(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
boolean retval = !jj_3_16();
jj_save(15, xla);
return retval;
}
final private boolean jj_2_17(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
boolean retval = !jj_3_17();
jj_save(16, xla);
return retval;
}
final private boolean jj_2_18(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
boolean retval = !jj_3_18();
jj_save(17, xla);
return retval;
}
final private boolean jj_2_19(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
boolean retval = !jj_3_19();
jj_save(18, xla);
return retval;
}
final private boolean jj_2_20(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
boolean retval = !jj_3_20();
jj_save(19, xla);
return retval;
}
final private boolean jj_2_21(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
boolean retval = !jj_3_21();
jj_save(20, xla);
return retval;
}
final private boolean jj_2_22(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
boolean retval = !jj_3_22();
jj_save(21, xla);
return retval;
}
final private boolean jj_2_23(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
boolean retval = !jj_3_23();
jj_save(22, xla);
return retval;
}
final private boolean jj_2_24(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
boolean retval = !jj_3_24();
jj_save(23, xla);
return retval;
}
final private boolean jj_2_25(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
boolean retval = !jj_3_25();
jj_save(24, xla);
return retval;
}
final private boolean jj_2_26(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
boolean retval = !jj_3_26();
jj_save(25, xla);
return retval;
}
final private boolean jj_2_27(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
boolean retval = !jj_3_27();
jj_save(26, xla);
return retval;
}
final private boolean jj_3R_279() {
if (jj_scan_token(LESS)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_261() {
if (jj_3R_264()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_270()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
final private boolean jj_3R_389() {
if (jj_scan_token(IF)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(OPEN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_116()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(CLOSE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_385()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_270() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_279()) {
jj_scanpos = xsp;
if (jj_3R_280()) {
jj_scanpos = xsp;
if (jj_3R_281()) {
jj_scanpos = xsp;
if (jj_3R_282()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_264()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_250() {
if (jj_3R_116()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_383() {
if (jj_3R_162()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_385()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_132() {
if (jj_scan_token(WHILE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(OPEN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_116()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(CLOSE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_52()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_258() {
if (jj_3R_52()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_266() {
if (jj_scan_token(BOOLEAN_AND)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_248()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_388() {
if (jj_3R_75()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_387() {
if (jj_3R_383()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_386() {
if (jj_3R_389()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_244() {
if (jj_scan_token(_DEFAULT)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(COLON)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_258()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
final private boolean jj_3R_276() {
if (jj_scan_token(EXACT_COMPARE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_385() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_386()) {
jj_scanpos = xsp;
if (jj_3R_387()) {
jj_scanpos = xsp;
if (jj_3R_388()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_275() {
if (jj_scan_token(COMPARE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_257() {
if (jj_3R_52()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_248() {
if (jj_3R_261()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_268()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
final private boolean jj_3R_274() {
if (jj_scan_token(EXACT_NOT_EQUAL)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3_3() {
if (jj_3R_52()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_273() {
if (jj_scan_token(EXACT_EQUAL)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_272() {
if (jj_scan_token(NOT_EQUAL)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_271() {
if (jj_scan_token(EQUAL)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_263() {
if (jj_scan_token(BOOLEAN_XOR)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_234()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_268() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_271()) {
jj_scanpos = xsp;
if (jj_3R_272()) {
jj_scanpos = xsp;
if (jj_3R_273()) {
jj_scanpos = xsp;
if (jj_3R_274()) {
jj_scanpos = xsp;
if (jj_3R_275()) {
jj_scanpos = xsp;
if (jj_3R_276()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_261()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_256() {
if (jj_scan_token(COMMA)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_177()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_231() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_243()) {
jj_scanpos = xsp;
if (jj_3R_244()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_243() {
if (jj_scan_token(CASE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_177()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_256()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
if (jj_scan_token(COLON)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
while (true) {
xsp = jj_scanpos;
if (jj_3R_257()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
final private boolean jj_3R_234() {
if (jj_3R_248()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_266()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
final private boolean jj_3R_190() {
if (jj_scan_token(OPEN_BRACKET)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(CLOSE_BRACKET)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_259() {
if (jj_scan_token(BOOLEAN_OR)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_223()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_136() {
if (jj_scan_token(SWITCH)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(OPEN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_116()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(CLOSE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(BEGIN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_231()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
if (jj_scan_token(END)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3_24() {
if (jj_scan_token(OPEN_BRACKET)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_74()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(CLOSE_BRACKET)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_223() {
if (jj_3R_234()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_263()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
final private boolean jj_3R_201() {
if (jj_scan_token(COPYOF)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_200() {
if (jj_scan_token(CLONEOF)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_199() {
if (jj_scan_token(TYPEOF)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_246() {
if (jj_scan_token(RANGE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_260()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_198() {
if (jj_scan_token(SIZEOF)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_213() {
if (jj_3R_223()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_259()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
final private boolean jj_3R_54() {
if (jj_scan_token(SYMBOL)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(COLON)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_197() {
if (jj_scan_token(CLASS)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_245() {
if (jj_3R_213()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_260() {
if (jj_3R_213()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_229() {
if (jj_scan_token(ELSE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_52()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_73() {
if (jj_3R_115()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_72() {
if (jj_scan_token(OPEN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_114()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(CLOSE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_210() {
if (jj_3R_213()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_246()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3_23() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_72()) {
jj_scanpos = xsp;
if (jj_3R_73()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_196() {
if (jj_scan_token(SYMBOL)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3_23()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_131() {
if (jj_scan_token(IF)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(OPEN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_116()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(CLOSE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_52()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_229()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_209() {
if (jj_scan_token(RANGE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_245()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_180() {
if (jj_3R_178()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_203() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_209()) {
jj_scanpos = xsp;
if (jj_3R_210()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_179() {
if (jj_3R_178()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_207() {
if (jj_3R_115()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_206() {
if (jj_scan_token(OPEN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_114()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(CLOSE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_212() {
if (jj_scan_token(MAP)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_191()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_224() {
if (jj_scan_token(COMMA)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(RANGE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_225()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_247() {
if (jj_3R_191()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3_2() {
if (jj_scan_token(COMMA)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_51()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_215() {
if (jj_scan_token(RANGE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_225()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_195() {
if (jj_scan_token(OPEN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_60()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(CLOSE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_206()) {
jj_scanpos = xsp;
if (jj_3R_207()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_154() {
if (jj_scan_token(PRINTBR)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_180()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_233() {
if (jj_scan_token(HOOK)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_191()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(COLON)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_247()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_214() {
if (jj_3R_51()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3_2()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
xsp = jj_scanpos;
if (jj_3R_224()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_189() {
if (jj_scan_token(DOT)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_195()) {
jj_scanpos = xsp;
if (jj_3R_196()) {
jj_scanpos = xsp;
if (jj_3R_197()) {
jj_scanpos = xsp;
if (jj_3R_198()) {
jj_scanpos = xsp;
if (jj_3R_199()) {
jj_scanpos = xsp;
if (jj_3R_200()) {
jj_scanpos = xsp;
if (jj_3R_201()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_211() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_214()) {
jj_scanpos = xsp;
if (jj_3R_215()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_191() {
if (jj_3R_203()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_222()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_232() {
if (jj_scan_token(HOOKHOOK)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_191()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_153() {
if (jj_scan_token(PRINTLN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_179()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_188() {
if (jj_3R_115()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_205() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_211()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_222() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_232()) {
jj_scanpos = xsp;
if (jj_3R_233()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_152() {
if (jj_scan_token(HOOK)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_178()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_208() {
if (jj_scan_token(ARROW)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_175()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_174() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_187()) {
jj_scanpos = xsp;
if (jj_3R_188()) {
jj_scanpos = xsp;
if (jj_3R_189()) {
jj_scanpos = xsp;
if (jj_3_24()) {
jj_scanpos = xsp;
if (jj_3R_190()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_187() {
if (jj_scan_token(OPEN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_114()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(CLOSE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_151() {
if (jj_scan_token(PRINT)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_178()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_119() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_151()) {
jj_scanpos = xsp;
if (jj_3R_152()) {
jj_scanpos = xsp;
if (jj_3R_153()) {
jj_scanpos = xsp;
if (jj_3R_154()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_155()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_143() {
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_174()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
final private boolean jj_3R_175() {
if (jj_3R_191()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_212()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
final private boolean jj_3R_71() {
if (jj_scan_token(BEGIN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_202() {
if (jj_scan_token(FOREACH)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_115()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3_22() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_70()) {
jj_scanpos = xsp;
if (jj_3R_71()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_70() {
if (jj_scan_token(OPEN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_225() {
if (jj_scan_token(SYMBOL)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_145() {
if (jj_3R_175()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_208()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
final private boolean jj_3R_173() {
if (jj_3R_115()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3_21() {
if (jj_3R_69()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_172() {
if (jj_scan_token(OPEN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_114()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(CLOSE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_235() {
if (jj_scan_token(ASSIGN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_60()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_142() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_172()) {
jj_scanpos = xsp;
if (jj_3R_173()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_265() {
if (jj_scan_token(COMMA)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_111() {
if (jj_3R_145()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_202()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
final private boolean jj_3R_171() {
if (jj_3R_69()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_262() {
if (jj_scan_token(COMMA)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_265()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
final private boolean jj_3R_249() {
if (jj_scan_token(COMMA)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_262()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_177()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3_20() {
if (jj_3R_69()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_51() {
if (jj_scan_token(SYMBOL)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_235()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_178() {
if (jj_3R_177()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_249()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
final private boolean jj_3R_141() {
if (jj_scan_token(DOT)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(SYMBOL)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_171()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
final private boolean jj_3R_60() {
if (jj_3R_111()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_170() {
if (jj_3R_69()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_118() {
if (jj_scan_token(SEMICOLON)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_137() {
if (jj_3R_116()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_155()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3_15() {
if (jj_scan_token(COMMA)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3_14() {
if (jj_scan_token(COMMA)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_60()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_74() {
if (jj_3R_116()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3_14()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
xsp = jj_scanpos;
if (jj_3_15()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_169() {
if (jj_scan_token(FUNCTION)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_168() {
if (jj_scan_token(SUPER)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_167() {
if (jj_scan_token(THIS)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_166() {
if (jj_scan_token(STATIC)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_165() {
if (jj_scan_token(CLASS)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_164() {
if (jj_scan_token(MODULE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_186() {
if (jj_scan_token(VAR)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_163() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_186()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(SYMBOL)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_140() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_163()) {
jj_scanpos = xsp;
if (jj_3R_164()) {
jj_scanpos = xsp;
if (jj_3R_165()) {
jj_scanpos = xsp;
if (jj_3R_166()) {
jj_scanpos = xsp;
if (jj_3R_167()) {
jj_scanpos = xsp;
if (jj_3R_168()) {
jj_scanpos = xsp;
if (jj_3R_169()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
while (true) {
xsp = jj_scanpos;
if (jj_3R_170()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
final private boolean jj_3R_113() {
if (jj_scan_token(SYMBOL)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_130() {
if (jj_scan_token(SYNCHRONIZED)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(OPEN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_116()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(CLOSE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_52()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_101() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_140()) {
jj_scanpos = xsp;
if (jj_3R_141()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
xsp = jj_scanpos;
if (jj_3R_142()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_143()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_138() {
if (jj_3R_101()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_112() {
if (jj_scan_token(THIS)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_69() {
if (jj_scan_token(DOT)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_112()) {
jj_scanpos = xsp;
if (jj_3R_113()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_129() {
if (jj_scan_token(FINALLY)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_52()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_376() {
if (jj_3R_115()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_375() {
if (jj_scan_token(OPEN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_114()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(CLOSE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_334() {
if (jj_scan_token(NEW)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_373()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_375()) {
jj_scanpos = xsp;
if (jj_3R_376()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_110() {
if (jj_scan_token(ASSIGN_INIT)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_109() {
if (jj_scan_token(ASSIGN_CONCAT)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_108() {
if (jj_scan_token(ASSIGN_REMAINDER)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_107() {
if (jj_scan_token(ASSIGN_DIVIDE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_328() {
if (jj_3R_101()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_106() {
if (jj_scan_token(ASSIGN_MULTIPLY)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_105() {
if (jj_scan_token(ASSIGN_SUBSTRACT)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_104() {
if (jj_scan_token(ASSIGN_ADD)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_103() {
if (jj_scan_token(ASSIGN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_236() {
if (jj_scan_token(COMMA)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_116()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_327() {
if (jj_scan_token(ET)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_101()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_228() {
if (jj_scan_token(COLON)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_116()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_236()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
final private boolean jj_3R_68() {
if (jj_scan_token(BOOLEAN_OR)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_144() {
if (jj_scan_token(ET)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_326() {
if (jj_scan_token(STRING)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_143()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_128() {
if (jj_scan_token(CATCH)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(OPEN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_138()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_228()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(CLOSE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_52()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_102() {
if (jj_scan_token(COMMA)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_144()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_101()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_66() {
if (jj_scan_token(BEGIN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_372() {
if (jj_3R_101()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_67() {
if (jj_scan_token(PIPE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_325() {
if (jj_scan_token(FLOAT)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_143()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_100() {
if (jj_scan_token(ET)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_59() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_100()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_101()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
while (true) {
xsp = jj_scanpos;
if (jj_3R_102()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
xsp = jj_scanpos;
if (jj_3R_103()) {
jj_scanpos = xsp;
if (jj_3R_104()) {
jj_scanpos = xsp;
if (jj_3R_105()) {
jj_scanpos = xsp;
if (jj_3R_106()) {
jj_scanpos = xsp;
if (jj_3R_107()) {
jj_scanpos = xsp;
if (jj_3R_108()) {
jj_scanpos = xsp;
if (jj_3R_109()) {
jj_scanpos = xsp;
if (jj_3R_110()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_74()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_324() {
if (jj_scan_token(INT)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_143()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3_19() {
if (jj_scan_token(BEGIN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_67()) {
jj_scanpos = xsp;
if (jj_3R_68()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_322() {
if (jj_3R_335()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_143()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_65() {
if (jj_scan_token(BEGIN_LIST)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_370() {
if (jj_3R_101()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_323() {
if (jj_scan_token(BOOLEAN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_143()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_127() {
if (jj_scan_token(THROW)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_160()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_155()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3_9() {
if (jj_scan_token(FINALLY)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3_8() {
if (jj_scan_token(CATCH)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_321() {
if (jj_3R_115()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_143()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_319() {
if (jj_3R_333()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_143()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_177() {
if (jj_3R_60()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_320() {
if (jj_3R_334()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_143()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3_18() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_65()) {
jj_scanpos = xsp;
if (jj_3R_66()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(END)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_143()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_227() {
if (jj_3R_129()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_226() {
if (jj_3R_128()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_318() {
if (jj_scan_token(OPEN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_74()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(CLOSE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_143()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_160() {
if (jj_3R_74()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3_13() {
if (jj_3R_59()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3_17() {
if (jj_scan_token(OPEN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(CLOSE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_143()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_126() {
if (jj_scan_token(TRY)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_52()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_226()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
xsp = jj_scanpos;
if (jj_3R_227()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_380() {
if (jj_scan_token(MODULE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_371() {
if (jj_scan_token(OPEN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_101()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(CLOSE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_150() {
if (jj_3R_177()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_149() {
if (jj_3R_59()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3_1() {
if (jj_scan_token(DOT)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(SYMBOL)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_98() {
if (jj_3R_52()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_116() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_149()) {
jj_scanpos = xsp;
if (jj_3R_150()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_379() {
if (jj_scan_token(SYMBOL)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_369() {
if (jj_scan_token(OPEN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_101()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(CLOSE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_317() {
if (jj_scan_token(DELETE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_371()) {
jj_scanpos = xsp;
if (jj_3R_372()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_373() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_379()) {
jj_scanpos = xsp;
if (jj_3R_380()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
while (true) {
xsp = jj_scanpos;
if (jj_3_1()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
final private boolean jj_3R_55() {
if (jj_scan_token(BEGIN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_98()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
if (jj_scan_token(END)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_316() {
if (jj_scan_token(DEFINED)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_369()) {
jj_scanpos = xsp;
if (jj_3R_370()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_315() {
if (jj_scan_token(IMPORT)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(OPEN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_60()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(CLOSE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_143()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_183() {
if (jj_scan_token(SEMICOLON)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_314() {
if (jj_3R_332()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_143()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_312() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_314()) {
jj_scanpos = xsp;
if (jj_3R_315()) {
jj_scanpos = xsp;
if (jj_3R_316()) {
jj_scanpos = xsp;
if (jj_3R_317()) {
jj_scanpos = xsp;
if (jj_3_17()) {
jj_scanpos = xsp;
if (jj_3R_318()) {
jj_scanpos = xsp;
if (jj_3_18()) {
jj_scanpos = xsp;
if (jj_3R_319()) {
jj_scanpos = xsp;
if (jj_3R_320()) {
jj_scanpos = xsp;
if (jj_3R_321()) {
jj_scanpos = xsp;
if (jj_3R_322()) {
jj_scanpos = xsp;
if (jj_3R_323()) {
jj_scanpos = xsp;
if (jj_3R_324()) {
jj_scanpos = xsp;
if (jj_3R_325()) {
jj_scanpos = xsp;
if (jj_3R_326()) {
jj_scanpos = xsp;
if (jj_3R_327()) {
jj_scanpos = xsp;
if (jj_3R_328()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_182() {
if (jj_scan_token(WHILE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_116()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(SEMICOLON)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_181() {
if (jj_scan_token(IF)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_116()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(SEMICOLON)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_155() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_181()) {
jj_scanpos = xsp;
if (jj_3R_182()) {
jj_scanpos = xsp;
if (jj_3R_183()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_95() {
if (jj_3R_137()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3_7() {
if (jj_3R_55()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_221() {
if (jj_3R_55()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_220() {
if (jj_3R_136()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_219() {
if (jj_3R_135()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_218() {
if (jj_3R_134()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_217() {
if (jj_3R_133()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_311() {
if (jj_scan_token(CARET)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_216() {
if (jj_3R_132()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_310() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_311()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_312()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3_6() {
if (jj_3R_54()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_216()) {
jj_scanpos = xsp;
if (jj_3R_217()) {
jj_scanpos = xsp;
if (jj_3R_218()) {
jj_scanpos = xsp;
if (jj_3R_219()) {
jj_scanpos = xsp;
if (jj_3R_220()) {
jj_scanpos = xsp;
if (jj_3R_221()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_94() {
if (jj_3R_136()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_93() {
if (jj_3R_135()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_92() {
if (jj_3R_134()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_91() {
if (jj_3R_133()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_90() {
if (jj_3R_132()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_89() {
if (jj_3R_131()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_88() {
if (jj_3R_130()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_87() {
if (jj_3R_129()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_86() {
if (jj_3R_128()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_85() {
if (jj_3R_127()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_84() {
if (jj_3R_126()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_83() {
if (jj_3R_125()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_82() {
if (jj_3R_124()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_81() {
if (jj_3R_123()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_80() {
if (jj_3R_122()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_79() {
if (jj_3R_121()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_78() {
if (jj_3R_120()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_77() {
if (jj_3R_119()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_367() {
if (jj_scan_token(OPEN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_60()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(CLOSE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_76() {
if (jj_3R_118()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_366() {
if (jj_scan_token(SYMBOL)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_365() {
if (jj_scan_token(NEGATION)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_337() {
if (jj_scan_token(HAS)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_365()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
xsp = jj_scanpos;
if (jj_3R_366()) {
jj_scanpos = xsp;
if (jj_3R_367()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_52() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_76()) {
jj_scanpos = xsp;
if (jj_3R_77()) {
jj_scanpos = xsp;
if (jj_3R_78()) {
jj_scanpos = xsp;
if (jj_3R_79()) {
jj_scanpos = xsp;
if (jj_3R_80()) {
jj_scanpos = xsp;
if (jj_3R_81()) {
jj_scanpos = xsp;
if (jj_3R_82()) {
jj_scanpos = xsp;
if (jj_3R_83()) {
jj_scanpos = xsp;
if (jj_3R_84()) {
jj_scanpos = xsp;
if (jj_3R_85()) {
jj_scanpos = xsp;
if (jj_3R_86()) {
jj_scanpos = xsp;
if (jj_3R_87()) {
jj_scanpos = xsp;
if (jj_3R_88()) {
jj_scanpos = xsp;
if (jj_3R_89()) {
jj_scanpos = xsp;
if (jj_3R_90()) {
jj_scanpos = xsp;
if (jj_3R_91()) {
jj_scanpos = xsp;
if (jj_3R_92()) {
jj_scanpos = xsp;
if (jj_3R_93()) {
jj_scanpos = xsp;
if (jj_3R_94()) {
jj_scanpos = xsp;
if (jj_3_6()) {
jj_scanpos = xsp;
if (jj_3_7()) {
jj_scanpos = xsp;
if (jj_3R_95()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_125() {
if (jj_scan_token(ASSERT)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_116()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(SEMICOLON)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_364() {
if (jj_3R_373()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_363() {
if (jj_scan_token(ET)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_362() {
if (jj_scan_token(CLASS)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_123() {
if (jj_scan_token(YIELD)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_160()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_155()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_361() {
if (jj_scan_token(OPEN_BRACKET)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(CLOSE_BRACKET)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_360() {
if (jj_scan_token(BEGIN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(END)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_359() {
if (jj_scan_token(OPEN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(CLOSE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_358() {
if (jj_scan_token(MAP)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_357() {
if (jj_scan_token(RANGE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_356() {
if (jj_scan_token(STRING)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_355() {
if (jj_scan_token(FLOAT)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_159() {
if (jj_3R_160()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_354() {
if (jj_scan_token(INT)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_122() {
if (jj_scan_token(RETURN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_159()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_155()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_353() {
if (jj_scan_token(BOOLEAN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_161() {
if (jj_3R_160()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_352() {
if (jj_scan_token(NULL)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_351() {
if (jj_scan_token(UNDEFINED)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_64() {
if (jj_scan_token(STRING)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_350() {
if (jj_scan_token(DEFINED)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_349() {
if (jj_scan_token(NEGATION)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_124() {
if (jj_scan_token(EXIT)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_161()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_155()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_307() {
if (jj_3R_310()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_329()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
final private boolean jj_3R_336() {
if (jj_scan_token(IS)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_349()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
xsp = jj_scanpos;
if (jj_3R_350()) {
jj_scanpos = xsp;
if (jj_3R_351()) {
jj_scanpos = xsp;
if (jj_3R_352()) {
jj_scanpos = xsp;
if (jj_3R_353()) {
jj_scanpos = xsp;
if (jj_3R_354()) {
jj_scanpos = xsp;
if (jj_3R_355()) {
jj_scanpos = xsp;
if (jj_3R_356()) {
jj_scanpos = xsp;
if (jj_3R_357()) {
jj_scanpos = xsp;
if (jj_3R_358()) {
jj_scanpos = xsp;
if (jj_3R_359()) {
jj_scanpos = xsp;
if (jj_3R_360()) {
jj_scanpos = xsp;
if (jj_3R_361()) {
jj_scanpos = xsp;
if (jj_3R_362()) {
jj_scanpos = xsp;
if (jj_3R_363()) {
jj_scanpos = xsp;
if (jj_3R_364()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_329() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_336()) {
jj_scanpos = xsp;
if (jj_3R_337()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_63() {
if (jj_scan_token(FLOAT)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_97() {
if (jj_scan_token(SYMBOL)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_330() {
if (jj_scan_token(PLUSPLUS)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_313() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_330()) {
jj_scanpos = xsp;
if (jj_3R_331()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_62() {
if (jj_scan_token(INT)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_331() {
if (jj_scan_token(MINUSMINUS)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_157() {
if (jj_scan_token(SYMBOL)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_302() {
if (jj_3R_307()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_313()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
final private boolean jj_3R_185() {
if (jj_scan_token(_DEFAULT)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_61() {
if (jj_scan_token(BOOLEAN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_96() {
if (jj_scan_token(STATIC)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_184() {
if (jj_scan_token(CASE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_177()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_297() {
if (jj_3R_302()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_53() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_96()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(VAR)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_97()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_158() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_184()) {
jj_scanpos = xsp;
if (jj_3R_185()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_121() {
if (jj_scan_token(CONTINUE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_157()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
xsp = jj_scanpos;
if (jj_3R_158()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_155()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3_5() {
if (jj_3R_53()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3_16() {
if (jj_scan_token(OPEN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_61()) {
jj_scanpos = xsp;
if (jj_3R_62()) {
jj_scanpos = xsp;
if (jj_3R_63()) {
jj_scanpos = xsp;
if (jj_3R_64()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(CLOSE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_283()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_296() {
if (jj_scan_token(CLASSOF)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_283()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_156() {
if (jj_scan_token(SYMBOL)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_295() {
if (jj_scan_token(SIZEOF)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_283()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_294() {
if (jj_scan_token(TYPEOF)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_283()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_120() {
if (jj_scan_token(BREAK)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_156()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_155()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_293() {
if (jj_scan_token(CLONEOF)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_283()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_291() {
if (jj_scan_token(PLUSPLUS)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_283()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_292() {
if (jj_scan_token(COPYOF)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_283()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_290() {
if (jj_scan_token(MINUSMINUS)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_283()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_289() {
if (jj_scan_token(STAR)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_283()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_58() {
if (jj_3R_99()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3_12() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_58()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(SEMICOLON)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_346() {
if (jj_scan_token(PATTERN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_57() {
if (jj_3R_99()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_345() {
if (jj_scan_token(UNDEFINED)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3_11() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_57()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(SEMICOLON)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_56() {
if (jj_3R_99()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_255() {
if (jj_3R_99()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_288() {
if (jj_scan_token(MINUS)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_283()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_344() {
if (jj_scan_token(NULL)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3_10() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_56()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(SEMICOLON)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_309() {
if (jj_scan_token(NO_MATCH)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_242() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_255()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(SEMICOLON)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_254() {
if (jj_3R_99()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_343() {
if (jj_scan_token(TRUE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_241() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_254()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(SEMICOLON)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_253() {
if (jj_3R_99()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_342() {
if (jj_scan_token(FALSE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_286() {
if (jj_scan_token(NEGATION)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_283()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_240() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_253()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(SEMICOLON)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_287() {
if (jj_scan_token(PLUS)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_283()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_283() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_286()) {
jj_scanpos = xsp;
if (jj_3R_287()) {
jj_scanpos = xsp;
if (jj_3R_288()) {
jj_scanpos = xsp;
if (jj_3R_289()) {
jj_scanpos = xsp;
if (jj_3R_290()) {
jj_scanpos = xsp;
if (jj_3R_291()) {
jj_scanpos = xsp;
if (jj_3R_292()) {
jj_scanpos = xsp;
if (jj_3R_293()) {
jj_scanpos = xsp;
if (jj_3R_294()) {
jj_scanpos = xsp;
if (jj_3R_295()) {
jj_scanpos = xsp;
if (jj_3R_296()) {
jj_scanpos = xsp;
if (jj_3_16()) {
jj_scanpos = xsp;
if (jj_3R_297()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_341() {
if (jj_scan_token(INF)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_308() {
if (jj_scan_token(MATCH)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_303() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_308()) {
jj_scanpos = xsp;
if (jj_3R_309()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_283()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_162() {
if (jj_scan_token(FOREACH)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(OPEN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_240()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
xsp = jj_scanpos;
if (jj_3R_241()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
xsp = jj_scanpos;
if (jj_3R_242()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_116()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(CLOSE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_306() {
if (jj_scan_token(REMAINDER)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_368() {
if (jj_scan_token(STRING_LITERAL)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_340() {
Token xsp;
if (jj_3R_368()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
while (true) {
xsp = jj_scanpos;
if (jj_3R_368()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
final private boolean jj_3R_301() {
if (jj_scan_token(ET)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_305() {
if (jj_scan_token(SLASH)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_339() {
if (jj_scan_token(FLOATING_POINT_LITERAL)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_139() {
if (jj_scan_token(COMMA)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_138()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_277() {
if (jj_3R_283()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_303()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
final private boolean jj_3R_338() {
if (jj_scan_token(INTEGER_LITERAL)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_99() {
if (jj_3R_138()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_139()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
final private boolean jj_3R_332() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_338()) {
jj_scanpos = xsp;
if (jj_3R_339()) {
jj_scanpos = xsp;
if (jj_3R_340()) {
jj_scanpos = xsp;
if (jj_3R_341()) {
jj_scanpos = xsp;
if (jj_3R_342()) {
jj_scanpos = xsp;
if (jj_3R_343()) {
jj_scanpos = xsp;
if (jj_3R_344()) {
jj_scanpos = xsp;
if (jj_3R_345()) {
jj_scanpos = xsp;
if (jj_3R_346()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_304() {
if (jj_scan_token(STAR)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_298() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_304()) {
jj_scanpos = xsp;
if (jj_3R_305()) {
jj_scanpos = xsp;
if (jj_3R_306()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_277()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_300() {
if (jj_scan_token(MINUS)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_146() {
if (jj_3R_176()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_204()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
final private boolean jj_3R_114() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_146()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_204() {
if (jj_scan_token(COMMA)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_176()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_135() {
if (jj_3R_162()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_52()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_299() {
if (jj_scan_token(PLUS)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_284() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_299()) {
jj_scanpos = xsp;
if (jj_3R_300()) {
jj_scanpos = xsp;
if (jj_3R_301()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_269()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_384() {
if (jj_scan_token(COMMA)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_194() {
if (jj_3R_52()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_269() {
if (jj_3R_277()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_298()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
final private boolean jj_3R_193() {
if (jj_3R_60()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3_27() {
if (jj_scan_token(SYMBOL)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(ASSIGN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_60()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_134() {
if (jj_scan_token(DO)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_52()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(WHILE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(OPEN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_116()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(CLOSE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(SEMICOLON)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_192() {
if (jj_scan_token(AT)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_60()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_176() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_192()) {
jj_scanpos = xsp;
if (jj_3_27()) {
jj_scanpos = xsp;
if (jj_3R_193()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_285() {
if (jj_scan_token(NEGATION)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_278() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_285()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(IN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_267()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_148() {
if (jj_scan_token(BOOLEAN_OR)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_147() {
if (jj_scan_token(PIPE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_205()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(PIPE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_267() {
if (jj_3R_269()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_284()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
final private boolean jj_3R_115() {
if (jj_scan_token(BEGIN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_147()) {
jj_scanpos = xsp;
if (jj_3R_148()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
while (true) {
xsp = jj_scanpos;
if (jj_3R_194()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
if (jj_scan_token(END)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_117() {
if (jj_3R_60()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3_26() {
if (jj_scan_token(SYMBOL)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(ASSIGN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_60()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_75() {
Token xsp;
xsp = jj_scanpos;
if (jj_3_26()) {
jj_scanpos = xsp;
if (jj_3R_117()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_133() {
if (jj_scan_token(FOR)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(OPEN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_230()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(CLOSE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_52()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3_4() {
if (jj_3R_52()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_264() {
if (jj_3R_267()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_278()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
final private boolean jj_3_25() {
if (jj_scan_token(COMMA)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_75()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_382() {
if (jj_3R_75()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3_25()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
xsp = jj_scanpos;
if (jj_3R_384()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_252() {
if (jj_scan_token(COMMA)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_250()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_282() {
if (jj_scan_token(GREATER_OR_EQUAL)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_381() {
if (jj_3R_383()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_239() {
if (jj_3R_250()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_252()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
final private boolean jj_3R_374() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_381()) {
jj_scanpos = xsp;
if (jj_3R_382()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_238() {
if (jj_3R_116()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_333() {
if (jj_scan_token(OPEN_BRACKET)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_374()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(CLOSE_BRACKET)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_251() {
if (jj_scan_token(COMMA)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_250()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_237() {
if (jj_3R_250()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_251()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
final private boolean jj_3R_281() {
if (jj_scan_token(LESS_OR_EQUAL)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_378() {
if (jj_3R_74()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_348() {
if (jj_scan_token(BEGIN_LIST)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_230() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_237()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(SEMICOLON)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
xsp = jj_scanpos;
if (jj_3R_238()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(SEMICOLON)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
xsp = jj_scanpos;
if (jj_3R_239()) jj_scanpos = xsp;
else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_377() {
if (jj_3R_383()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_347() {
if (jj_scan_token(BEGIN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_280() {
if (jj_scan_token(GREATER)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
final private boolean jj_3R_335() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_347()) {
jj_scanpos = xsp;
if (jj_3R_348()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
xsp = jj_scanpos;
if (jj_3R_377()) {
jj_scanpos = xsp;
if (jj_3R_378()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_scan_token(END)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
public TokenManager token_source;
public Token token, jj_nt;
private int jj_ntk;
private Token jj_scanpos, jj_lastpos;
private int jj_la;
public boolean lookingAhead = false;
private boolean jj_semLA;
private int jj_gen;
final private int[] jj_la1 = new int[157];
final private int[] jj_la1_0 = {0x35310420,0x4,0x35310420,0x35310420,0x2,0x40,0x35310420,0x6,0xc0,0xc0,0x200,0xc0,0xc0,0x106,0x1080,0x1080,0x106,0x10c0,0x10c0,0x806,0x4000,0x200,0x8004,0x8004,0x80000,0x100000,0xd43bad4e,0x110400,0x200000,0x100000,0x310000,0xd43bad4e,0x310400,0xc00000,0xd43bad4e,0x200,0x2000000,0x21210400,0x21210400,0x2000000,0x8000000,0x34310400,0x24000400,0x310000,0x200000,0x200,0x4000,0x200,0xd43bad4e,0x80000008,0xc0102000,0x142b8d4e,0xc0002000,0xd43bad4e,0x200,0x1000,0x200,0x200,0x200,0x142b8d4e,0x142b8d4e,0x0,0x0,0x0,0x200,0xd43bad4e,0xd43bad4e,0x0,0x200,0x142b8d4e,0x142b8d4e,0x200,0x142b8d4e,0x200,0x14290046,0x14290046,0x14290046,0x4,0x4,0x0,0x0,0x142b8d4e,0x142b8d4e,0x142b8d4e,0x0,0x200,0x0,0x4000,0x0,0x0,0x0,0x142b8d4e,0x0,0x0,0x142b0d4e,0x142b0d4e,0x8000,0x142b8d4e,0x800000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x100,0x0,0x0,0x0,0x100,0x142b0c4e,0x0,0x0,0x0,0x0,0x402800e,0x0,0x20004,0x0,0x0,0x142b0046,0x142b0046,0x8,0xc00,0x20000,0x0,0x1429004e,0x20008,0x4,0x10000000,0x14290006,0x14290046,0x20008,0x20048,0x20008,0x20008,0x4020004,0x20048,0x0,0x542b8d4e,0x8,0x142b8d4e,0x200,0x142b8d4e,0x142b8d4e,0x142b8d4e,0x0,0x142b8d4e,0x200,0x142b8d4e,0x800,0x800,};
final private int[] jj_la1_1 = {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3ff2ff,0x0,0x0,0x0,0x0,0x3ff2ff,0x0,0x0,0x3ff2ff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3ff2ff,0x7200,0x1ff2ff,0x200000,0x0,0x3ff2ff,0x0,0x0,0x0,0x0,0x0,0x200000,0x200000,0xf0,0x100,0xc00,0x0,0x3ff2ff,0x3ff2ff,0xc00,0x0,0x200000,0x200000,0x0,0x200000,0x0,0x0,0x0,0x0,0x0,0x0,0xc00,0xc00,0x200000,0x200000,0x200000,0x200000,0x0,0x200000,0x1fc00000,0x4000,0x20000000,0x40000000,0x200000,0x80000020,0x80000020,0x200000,0x200000,0x0,0x200000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200000,0x200000,0x0,0x0,0x0,0x0,0x0,0x0,0x200000,0x0,0x0,0x0,0x0,0x40200000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x204000,0x0,0x204000,0x0,0x204000,0x204000,0x200000,0x0,0x200000,0x0,0x200000,0x0,0x0,};
final private int[] jj_la1_2 = {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7ff0d000,0x0,0x0,0x0,0x0,0x7ff0d000,0x0,0x0,0x7ff0d000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7ff0d000,0x0,0x0,0x7ff0d000,0x0,0x7ff0d000,0x0,0x0,0x0,0x0,0x0,0x7ff0d000,0x7ff0d000,0x0,0x0,0x0,0x0,0x7ff0d000,0x7ff0d000,0x0,0x0,0x7ff0d000,0x7ff0d000,0x0,0x7ff0d000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7ff0d000,0x7ff0d000,0x7ff0d000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7ff0d000,0x0,0x0,0x7ff0d000,0x7ff0d000,0x0,0x7ff0d000,0x0,0x1,0x2,0xfc,0xfc,0xf00,0xf00,0x3000,0x1000,0xc000,0xc000,0x30000,0x30000,0xc0000,0xc0000,0x78000000,0x7f0d000,0x78000000,0x300000,0x300000,0x80000000,0x1000,0x78000000,0x1000,0x0,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x78000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c00000,0x0,0x0,0x7ff0d000,0x0,0x7ff0d000,0x0,0x7ff0d000,0x7ff0d000,0x7ff0d000,0x0,0x7ff0d000,0x0,0x7ff0d000,0x0,0x0,};
final private int[] jj_la1_3 = {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3f7cf,0x0,0x0,0x0,0x0,0x3f7cf,0x0,0x0,0x3f7cf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3f7cf,0x0,0x0,0x3f7cf,0x0,0x3f7cf,0x0,0x0,0x0,0x0,0x0,0x3f7cf,0x3f7cf,0x0,0x0,0x0,0x0,0x3f7cf,0x3f7cf,0x0,0x0,0x3f7cf,0x3f7cf,0x0,0x3f7cf,0x0,0x400,0x400,0x400,0x0,0x0,0x0,0x0,0x3f7cf,0x3f7cf,0x3f7cf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3f7cf,0x0,0x0,0x3f7cf,0x3f7cf,0x0,0x3f7cf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3f7cf,0x0,0x0,0x20,0x0,0xf,0x0,0x0,0x20,0x40,0x400,0x400,0x100,0x3f087,0x0,0x208,0x500,0x0,0x400,0x0,0x400,0x400,0x0,0x8,0x0,0x0,0x0,0x0,0x8,0x3f7cf,0x100,0x3f7cf,0x0,0x3f7cf,0x3f7cf,0x3f7cf,0x800,0x3f7cf,0x0,0x3ffcf,0x0,0x3f006,};
final private JJCalls[] jj_2_rtns = new JJCalls[27];
private boolean jj_rescan = false;
private int jj_gc = 0;
public ParserBase(TokenManager tm) {
token_source = tm;
token = new Token();
jj_ntk = -1;
jj_gen = 0;
for (int i = 0; i < 157; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
public void ReInit(TokenManager tm) {
token_source = tm;
token = new Token();
jj_ntk = -1;
jj_gen = 0;
for (int i = 0; i < 157; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
final private Token jj_consume_token(int kind) throws ParseException {
Token oldToken;
if ((oldToken = token).next != null) token = token.next;
else token = token.next = token_source.getNextToken();
jj_ntk = -1;
if (token.kind == kind) {
jj_gen++;
if (++jj_gc > 100) {
jj_gc = 0;
for (int i = 0; i < jj_2_rtns.length; i++) {
JJCalls c = jj_2_rtns[i];
while (c != null) {
if (c.gen < jj_gen) c.first = null;
c = c.next;
}
}
}
return token;
}
token = oldToken;
jj_kind = kind;
throw generateParseException();
}
final private boolean jj_scan_token(int kind) {
if (jj_scanpos == jj_lastpos) {
jj_la--;
if (jj_scanpos.next == null) {
jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
} else {
jj_lastpos = jj_scanpos = jj_scanpos.next;
}
} else {
jj_scanpos = jj_scanpos.next;
}
if (jj_rescan) {
int i = 0; Token tok = token;
while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
if (tok != null) jj_add_error_token(kind, i);
}
return (jj_scanpos.kind != kind);
}
final public Token getNextToken() {
if (token.next != null) token = token.next;
else token = token.next = token_source.getNextToken();
jj_ntk = -1;
jj_gen++;
return token;
}
final public Token getToken(int index) {
Token t = lookingAhead ? jj_scanpos : token;
for (int i = 0; i < index; i++) {
if (t.next != null) t = t.next;
else t = t.next = token_source.getNextToken();
}
return t;
}
final private int jj_ntk() {
if ((jj_nt=token.next) == null)
return (jj_ntk = (token.next=token_source.getNextToken()).kind);
else
return (jj_ntk = jj_nt.kind);
}
private java.util.Vector jj_expentries = new java.util.Vector();
private int[] jj_expentry;
private int jj_kind = -1;
private int[] jj_lasttokens = new int[100];
private int jj_endpos;
private void jj_add_error_token(int kind, int pos) {
if (pos >= 100) return;
if (pos == jj_endpos + 1) {
jj_lasttokens[jj_endpos++] = kind;
} else if (jj_endpos != 0) {
jj_expentry = new int[jj_endpos];
for (int i = 0; i < jj_endpos; i++) {
jj_expentry[i] = jj_lasttokens[i];
}
boolean exists = false;
for (java.util.Enumeration enum = jj_expentries.elements(); enum.hasMoreElements();) {
int[] oldentry = (int[])(enum.nextElement());
if (oldentry.length == jj_expentry.length) {
exists = true;
for (int i = 0; i < jj_expentry.length; i++) {
if (oldentry[i] != jj_expentry[i]) {
exists = false;
break;
}
}
if (exists) break;
}
}
if (!exists) jj_expentries.addElement(jj_expentry);
if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
}
}
final public ParseException generateParseException() {
jj_expentries.removeAllElements();
boolean[] la1tokens = new boolean[114];
for (int i = 0; i < 114; i++) {
la1tokens[i] = false;
}
if (jj_kind >= 0) {
la1tokens[jj_kind] = true;
jj_kind = -1;
}
for (int i = 0; i < 157; i++) {
if (jj_la1[i] == jj_gen) {
for (int j = 0; j < 32; j++) {
if ((jj_la1_0[i] & (1<<j)) != 0) {
la1tokens[j] = true;
}
if ((jj_la1_1[i] & (1<<j)) != 0) {
la1tokens[32+j] = true;
}
if ((jj_la1_2[i] & (1<<j)) != 0) {
la1tokens[64+j] = true;
}
if ((jj_la1_3[i] & (1<<j)) != 0) {
la1tokens[96+j] = true;
}
}
}
}
for (int i = 0; i < 114; i++) {
if (la1tokens[i]) {
jj_expentry = new int[1];
jj_expentry[0] = i;
jj_expentries.addElement(jj_expentry);
}
}
jj_endpos = 0;
jj_rescan_token();
jj_add_error_token(0, 0);
int[][] exptokseq = new int[jj_expentries.size()][];
for (int i = 0; i < jj_expentries.size(); i++) {
exptokseq[i] = (int[])jj_expentries.elementAt(i);
}
return new ParseException(token, exptokseq, tokenImage);
}
final public void enable_tracing() {
}
final public void disable_tracing() {
}
final private void jj_rescan_token() {
jj_rescan = true;
for (int i = 0; i < 27; i++) {
JJCalls p = jj_2_rtns[i];
do {
if (p.gen > jj_gen) {
jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
switch (i) {
case 0: jj_3_1(); break;
case 1: jj_3_2(); break;
case 2: jj_3_3(); break;
case 3: jj_3_4(); break;
case 4: jj_3_5(); break;
case 5: jj_3_6(); break;
case 6: jj_3_7(); break;
case 7: jj_3_8(); break;
case 8: jj_3_9(); break;
case 9: jj_3_10(); break;
case 10: jj_3_11(); break;
case 11: jj_3_12(); break;
case 12: jj_3_13(); break;
case 13: jj_3_14(); break;
case 14: jj_3_15(); break;
case 15: jj_3_16(); break;
case 16: jj_3_17(); break;
case 17: jj_3_18(); break;
case 18: jj_3_19(); break;
case 19: jj_3_20(); break;
case 20: jj_3_21(); break;
case 21: jj_3_22(); break;
case 22: jj_3_23(); break;
case 23: jj_3_24(); break;
case 24: jj_3_25(); break;
case 25: jj_3_26(); break;
case 26: jj_3_27(); break;
}
}
p = p.next;
} while (p != null);
}
jj_rescan = false;
}
final private void jj_save(int index, int xla) {
JJCalls p = jj_2_rtns[index];
while (p.gen > jj_gen) {
if (p.next == null) { p = p.next = new JJCalls(); break; }
p = p.next;
}
p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
}
static final class JJCalls {
int gen;
Token first;
int arg;
JJCalls next;
}
}