elparser.java
来自「jakarta-taglibs」· Java 代码 · 共 1,205 行 · 第 1/3 页
JAVA
1,205 行
/* Generated By:JavaCC: Do not edit this line. ELParser.java */
package org.apache.taglibs.standard.lang.jstl.parser;
import java.util.ArrayList;
import java.util.List;
import org.apache.taglibs.standard.lang.jstl.AndOperator;
import org.apache.taglibs.standard.lang.jstl.ArraySuffix;
import org.apache.taglibs.standard.lang.jstl.BinaryOperator;
import org.apache.taglibs.standard.lang.jstl.BinaryOperatorExpression;
import org.apache.taglibs.standard.lang.jstl.BooleanLiteral;
import org.apache.taglibs.standard.lang.jstl.ComplexValue;
import org.apache.taglibs.standard.lang.jstl.DivideOperator;
import org.apache.taglibs.standard.lang.jstl.EmptyOperator;
import org.apache.taglibs.standard.lang.jstl.EqualsOperator;
import org.apache.taglibs.standard.lang.jstl.Expression;
import org.apache.taglibs.standard.lang.jstl.ExpressionString;
import org.apache.taglibs.standard.lang.jstl.FloatingPointLiteral;
import org.apache.taglibs.standard.lang.jstl.FunctionInvocation;
import org.apache.taglibs.standard.lang.jstl.GreaterThanOperator;
import org.apache.taglibs.standard.lang.jstl.GreaterThanOrEqualsOperator;
import org.apache.taglibs.standard.lang.jstl.IntegerLiteral;
import org.apache.taglibs.standard.lang.jstl.LessThanOperator;
import org.apache.taglibs.standard.lang.jstl.LessThanOrEqualsOperator;
import org.apache.taglibs.standard.lang.jstl.Literal;
import org.apache.taglibs.standard.lang.jstl.MinusOperator;
import org.apache.taglibs.standard.lang.jstl.ModulusOperator;
import org.apache.taglibs.standard.lang.jstl.MultiplyOperator;
import org.apache.taglibs.standard.lang.jstl.NamedValue;
import org.apache.taglibs.standard.lang.jstl.NotEqualsOperator;
import org.apache.taglibs.standard.lang.jstl.NotOperator;
import org.apache.taglibs.standard.lang.jstl.NullLiteral;
import org.apache.taglibs.standard.lang.jstl.OrOperator;
import org.apache.taglibs.standard.lang.jstl.PlusOperator;
import org.apache.taglibs.standard.lang.jstl.PropertySuffix;
import org.apache.taglibs.standard.lang.jstl.StringLiteral;
import org.apache.taglibs.standard.lang.jstl.UnaryMinusOperator;
import org.apache.taglibs.standard.lang.jstl.UnaryOperator;
import org.apache.taglibs.standard.lang.jstl.UnaryOperatorExpression;
import org.apache.taglibs.standard.lang.jstl.ValueSuffix;
/**
* Generated EL parser.
*
* @author Nathan Abramson
* @author Shawn Bayern
*/
public class ELParser implements ELParserConstants {
public static void main(String args[])
throws ParseException
{
ELParser parser = new ELParser (System.in);
parser.ExpressionString ();
}
/*****************************************
* GRAMMAR PRODUCTIONS *
*****************************************/
/**
*
* Returns a String if the expression string is a single String, an
* Expression if the expression string is a single Expression, an
* ExpressionString if it's a mixture of both.
**/
final public Object ExpressionString() throws ParseException {
Object ret = "";
List elems = null;
Object elem;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case NON_EXPRESSION_TEXT:
ret = AttrValueString();
break;
case START_EXPRESSION:
ret = AttrValueExpression();
break;
default:
jj_la1[0] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
label_1:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case NON_EXPRESSION_TEXT:
case START_EXPRESSION:
;
break;
default:
jj_la1[1] = jj_gen;
break label_1;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case NON_EXPRESSION_TEXT:
elem = AttrValueString();
break;
case START_EXPRESSION:
elem = AttrValueExpression();
break;
default:
jj_la1[2] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
if (elems == null) {
elems = new ArrayList ();
elems.add (ret);
}
elems.add (elem);
}
if (elems != null) {
ret = new ExpressionString (elems.toArray ());
}
{if (true) return ret;}
throw new Error("Missing return statement in function");
}
final public String AttrValueString() throws ParseException {
Token t;
t = jj_consume_token(NON_EXPRESSION_TEXT);
{if (true) return t.image;}
throw new Error("Missing return statement in function");
}
final public Expression AttrValueExpression() throws ParseException {
Expression exp;
jj_consume_token(START_EXPRESSION);
exp = Expression();
jj_consume_token(END_EXPRESSION);
{if (true) return exp;}
throw new Error("Missing return statement in function");
}
final public Expression Expression() throws ParseException {
Expression ret;
ret = OrExpression();
{if (true) return ret;}
throw new Error("Missing return statement in function");
}
final public Expression OrExpression() throws ParseException {
Expression startExpression;
BinaryOperator operator;
Expression expression;
List operators = null;
List expressions = null;
startExpression = AndExpression();
label_2:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case OR1:
case OR2:
;
break;
default:
jj_la1[3] = jj_gen;
break label_2;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case OR1:
jj_consume_token(OR1);
break;
case OR2:
jj_consume_token(OR2);
break;
default:
jj_la1[4] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
operator = OrOperator.SINGLETON;
expression = AndExpression();
if (operators == null) {
operators = new ArrayList ();
expressions = new ArrayList ();
}
operators.add (operator);
expressions.add (expression);
}
if (operators != null) {
{if (true) return new BinaryOperatorExpression (startExpression,
operators,
expressions);}
}
else {
{if (true) return startExpression;}
}
throw new Error("Missing return statement in function");
}
final public Expression AndExpression() throws ParseException {
Expression startExpression;
BinaryOperator operator;
Expression expression;
List operators = null;
List expressions = null;
startExpression = EqualityExpression();
label_3:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case AND1:
case AND2:
;
break;
default:
jj_la1[5] = jj_gen;
break label_3;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case AND1:
jj_consume_token(AND1);
break;
case AND2:
jj_consume_token(AND2);
break;
default:
jj_la1[6] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
operator = AndOperator.SINGLETON;
expression = EqualityExpression();
if (operators == null) {
operators = new ArrayList ();
expressions = new ArrayList ();
}
operators.add (operator);
expressions.add (expression);
}
if (operators != null) {
{if (true) return new BinaryOperatorExpression (startExpression,
operators,
expressions);}
}
else {
{if (true) return startExpression;}
}
throw new Error("Missing return statement in function");
}
final public Expression EqualityExpression() throws ParseException {
Expression startExpression;
BinaryOperator operator;
Expression expression;
List operators = null;
List expressions = null;
startExpression = RelationalExpression();
label_4:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case EQ1:
case EQ2:
case NE1:
case NE2:
;
break;
default:
jj_la1[7] = jj_gen;
break label_4;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case EQ1:
case EQ2:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case EQ1:
jj_consume_token(EQ1);
break;
case EQ2:
jj_consume_token(EQ2);
break;
default:
jj_la1[8] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
operator = EqualsOperator.SINGLETON;
break;
case NE1:
case NE2:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case NE1:
jj_consume_token(NE1);
break;
case NE2:
jj_consume_token(NE2);
break;
default:
jj_la1[9] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
operator = NotEqualsOperator.SINGLETON;
break;
default:
jj_la1[10] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
expression = RelationalExpression();
if (operators == null) {
operators = new ArrayList ();
expressions = new ArrayList ();
}
operators.add (operator);
expressions.add (expression);
}
if (operators != null) {
{if (true) return new BinaryOperatorExpression (startExpression,
operators,
expressions);}
}
else {
{if (true) return startExpression;}
}
throw new Error("Missing return statement in function");
}
final public Expression RelationalExpression() throws ParseException {
Expression startExpression;
BinaryOperator operator;
Expression expression;
List operators = null;
List expressions = null;
startExpression = AddExpression();
label_5:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case GT1:
case GT2:
case LT1:
case LT2:
case LE1:
case LE2:
case GE1:
case GE2:
;
break;
default:
jj_la1[11] = jj_gen;
break label_5;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case LT1:
case LT2:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case LT1:
jj_consume_token(LT1);
break;
case LT2:
jj_consume_token(LT2);
break;
default:
jj_la1[12] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
operator = LessThanOperator.SINGLETON;
break;
case GT1:
case GT2:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case GT1:
jj_consume_token(GT1);
break;
case GT2:
jj_consume_token(GT2);
break;
default:
jj_la1[13] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
operator = GreaterThanOperator.SINGLETON;
break;
case GE1:
case GE2:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case GE1:
jj_consume_token(GE1);
break;
case GE2:
jj_consume_token(GE2);
break;
default:
jj_la1[14] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
operator = GreaterThanOrEqualsOperator.SINGLETON;
break;
case LE1:
case LE2:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case LE1:
jj_consume_token(LE1);
break;
case LE2:
jj_consume_token(LE2);
break;
default:
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?