/* Generated By:JavaCC: Do not edit this line. ELParserTreeConstants.java Version 7.0.10 */
package org.apache.el.parser;

public interface ELParserTreeConstants
{
  int JJTCOMPOSITEEXPRESSION = 0;
  int JJTLITERALEXPRESSION = 1;
  int JJTDEFERREDEXPRESSION = 2;
  int JJTDYNAMICEXPRESSION = 3;
  int JJTVOID = 4;
  int JJTSEMICOLON = 5;
  int JJTASSIGN = 6;
  int JJTLAMBDAEXPRESSION = 7;
  int JJTLAMBDAPARAMETERS = 8;
  int JJTCHOICE = 9;
  int JJTOR = 10;
  int JJTAND = 11;
  int JJTEQUAL = 12;
  int JJTNOTEQUAL = 13;
  int JJTLESSTHAN = 14;
  int JJTGREATERTHAN = 15;
  int JJTLESSTHANEQUAL = 16;
  int JJTGREATERTHANEQUAL = 17;
  int JJTCONCATENATION = 18;
  int JJTPLUS = 19;
  int JJTMINUS = 20;
  int JJTMULT = 21;
  int JJTDIV = 22;
  int JJTMOD = 23;
  int JJTNEGATIVE = 24;
  int JJTNOT = 25;
  int JJTEMPTY = 26;
  int JJTVALUE = 27;
  int JJTDOTSUFFIX = 28;
  int JJTBRACKETSUFFIX = 29;
  int JJTMETHODPARAMETERS = 30;
  int JJTSETDATA = 31;
  int JJTLISTDATA = 32;
  int JJTMAPDATA = 33;
  int JJTMAPENTRY = 34;
  int JJTIDENTIFIER = 35;
  int JJTFUNCTION = 36;
  int JJTTRUE = 37;
  int JJTFALSE = 38;
  int JJTFLOATINGPOINT = 39;
  int JJTINTEGER = 40;
  int JJTSTRING = 41;
  int JJTNULL = 42;


  String[] jjtNodeName = {
    "CompositeExpression",
    "LiteralExpression",
    "DeferredExpression",
    "DynamicExpression",
    "void",
    "Semicolon",
    "Assign",
    "LambdaExpression",
    "LambdaParameters",
    "Choice",
    "Or",
    "And",
    "Equal",
    "NotEqual",
    "LessThan",
    "GreaterThan",
    "LessThanEqual",
    "GreaterThanEqual",
    "Concatenation",
    "Plus",
    "Minus",
    "Mult",
    "Div",
    "Mod",
    "Negative",
    "Not",
    "Empty",
    "Value",
    "DotSuffix",
    "BracketSuffix",
    "MethodParameters",
    "SetData",
    "ListData",
    "MapData",
    "MapEntry",
    "Identifier",
    "Function",
    "True",
    "False",
    "FloatingPoint",
    "Integer",
    "String",
    "Null",
  };
}
/* JavaCC - OriginalChecksum=4a0b3deb38bd21ee4df7ed00585cdbf6 (do not edit this line) */
