/* Generated By:JJTree&JavaCC: Do not edit this line. ELParserConstants.java */
package org.apache.el.parser;


/**
 * Token literal values and constants. Generated by org.javacc.parser.OtherFilesGen#start()
 */
public interface ELParserConstants {

    /** End of File. */
    int EOF = 0;
    /** RegularExpression Id. */
    int LITERAL_EXPRESSION = 1;
    /** RegularExpression Id. */
    int START_DYNAMIC_EXPRESSION = 2;
    /** RegularExpression Id. */
    int START_DEFERRED_EXPRESSION = 3;
    /** RegularExpression Id. */
    int START_SET_OR_MAP = 8;
    /** RegularExpression Id. */
    int RBRACE = 9;
    /** RegularExpression Id. */
    int INTEGER_LITERAL = 10;
    /** RegularExpression Id. */
    int FLOATING_POINT_LITERAL = 11;
    /** RegularExpression Id. */
    int EXPONENT = 12;
    /** RegularExpression Id. */
    int STRING_LITERAL = 13;
    /** RegularExpression Id. */
    int TRUE = 14;
    /** RegularExpression Id. */
    int FALSE = 15;
    /** RegularExpression Id. */
    int NULL = 16;
    /** RegularExpression Id. */
    int DOT = 17;
    /** RegularExpression Id. */
    int LPAREN = 18;
    /** RegularExpression Id. */
    int RPAREN = 19;
    /** RegularExpression Id. */
    int LBRACK = 20;
    /** RegularExpression Id. */
    int RBRACK = 21;
    /** RegularExpression Id. */
    int COLON = 22;
    /** RegularExpression Id. */
    int SEMICOLON = 23;
    /** RegularExpression Id. */
    int COMMA = 24;
    /** RegularExpression Id. */
    int GT0 = 25;
    /** RegularExpression Id. */
    int GT1 = 26;
    /** RegularExpression Id. */
    int LT0 = 27;
    /** RegularExpression Id. */
    int LT1 = 28;
    /** RegularExpression Id. */
    int GE0 = 29;
    /** RegularExpression Id. */
    int GE1 = 30;
    /** RegularExpression Id. */
    int LE0 = 31;
    /** RegularExpression Id. */
    int LE1 = 32;
    /** RegularExpression Id. */
    int EQ0 = 33;
    /** RegularExpression Id. */
    int EQ1 = 34;
    /** RegularExpression Id. */
    int NE0 = 35;
    /** RegularExpression Id. */
    int NE1 = 36;
    /** RegularExpression Id. */
    int NOT0 = 37;
    /** RegularExpression Id. */
    int NOT1 = 38;
    /** RegularExpression Id. */
    int AND0 = 39;
    /** RegularExpression Id. */
    int AND1 = 40;
    /** RegularExpression Id. */
    int OR0 = 41;
    /** RegularExpression Id. */
    int OR1 = 42;
    /** RegularExpression Id. */
    int EMPTY = 43;
    /** RegularExpression Id. */
    int MULT = 44;
    /** RegularExpression Id. */
    int PLUS = 45;
    /** RegularExpression Id. */
    int MINUS = 46;
    /** RegularExpression Id. */
    int QUESTIONMARK = 47;
    /** RegularExpression Id. */
    int DIV0 = 48;
    /** RegularExpression Id. */
    int DIV1 = 49;
    /** RegularExpression Id. */
    int MOD0 = 50;
    /** RegularExpression Id. */
    int MOD1 = 51;
    /** RegularExpression Id. */
    int CONCAT = 52;
    /** RegularExpression Id. */
    int ASSIGN = 53;
    /** RegularExpression Id. */
    int ARROW = 54;
    /** RegularExpression Id. */
    int IDENTIFIER = 55;
    /** RegularExpression Id. */
    int JAVALETTER = 56;
    /** RegularExpression Id. */
    int JAVADIGIT = 57;
    /** RegularExpression Id. */
    int ILLEGAL_CHARACTER = 58;

    /** Lexical state. */
    int DEFAULT = 0;
    /** Lexical state. */
    int IN_EXPRESSION = 1;
    /** Lexical state. */
    int IN_SET_OR_MAP = 2;

    /** Literal token values. */
    String[] tokenImage = { "<EOF>", "<LITERAL_EXPRESSION>", "\"${\"", "\"#{\"", "\" \"", "\"\\t\"", "\"\\n\"",
            "\"\\r\"", "\"{\"", "\"}\"", "<INTEGER_LITERAL>", "<FLOATING_POINT_LITERAL>", "<EXPONENT>",
            "<STRING_LITERAL>", "\"true\"", "\"false\"", "\"null\"", "\".\"", "\"(\"", "\")\"", "\"[\"", "\"]\"",
            "\":\"", "\";\"", "\",\"", "\">\"", "\"gt\"", "\"<\"", "\"lt\"", "\">=\"", "\"ge\"", "\"<=\"", "\"le\"",
            "\"==\"", "\"eq\"", "\"!=\"", "\"ne\"", "\"!\"", "\"not\"", "\"&&\"", "\"and\"", "\"||\"", "\"or\"",
            "\"empty\"", "\"*\"", "\"+\"", "\"-\"", "\"?\"", "\"/\"", "\"div\"", "\"%\"", "\"mod\"", "\"+=\"", "\"=\"",
            "\"->\"", "<IDENTIFIER>", "<JAVALETTER>", "<JAVADIGIT>", "<ILLEGAL_CHARACTER>", };

}
