/**
*
* Copyright (c) 2007 OptXware Research and Development LLC.
* All rights reserved.   This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*   Daniel Varro - Initial API and implementation
*
* This file was generated automatically based upon the VTCL LPG Lexer
* VTCLKWLexer.g (and btVTCLParserTemplateD.g)
*/

package org.eclipse.viatra2.lpgparser;

public interface VTCLKWLexersym {
    public final static int
      Char_a = 5,
      Char_b = 19,
      Char_c = 11,
      Char_d = 14,
      Char_e = 1,
      Char_f = 16,
      Char_g = 10,
      Char_h = 20,
      Char_i = 8,
      Char_j = 37,
      Char_k = 24,
      Char_l = 6,
      Char_m = 18,
      Char_n = 2,
      Char_o = 4,
      Char_p = 12,
      Char_q = 25,
      Char_r = 7,
      Char_s = 15,
      Char_t = 3,
      Char_u = 9,
      Char_v = 21,
      Char_w = 23,
      Char_x = 28,
      Char_y = 13,
      Char_z = 38,
      Char__ = 17,
      Char_A = 29,
      Char_B = 30,
      Char_C = 39,
      Char_D = 31,
      Char_E = 40,
      Char_F = 32,
      Char_G = 41,
      Char_H = 42,
      Char_I = 26,
      Char_J = 43,
      Char_K = 44,
      Char_L = 45,
      Char_M = 27,
      Char_N = 46,
      Char_O = 22,
      Char_P = 47,
      Char_Q = 48,
      Char_R = 49,
      Char_S = 33,
      Char_T = 34,
      Char_U = 50,
      Char_V = 35,
      Char_W = 51,
      Char_X = 52,
      Char_Y = 53,
      Char_Z = 54,
      Char_EOF = 36;

      public final static String orderedTerminalSymbols[] = {
                 "",
                 "e",
                 "n",
                 "t",
                 "o",
                 "a",
                 "l",
                 "r",
                 "i",
                 "u",
                 "g",
                 "c",
                 "p",
                 "y",
                 "d",
                 "s",
                 "f",
                 "_",
                 "m",
                 "b",
                 "h",
                 "v",
                 "O",
                 "w",
                 "k",
                 "q",
                 "I",
                 "M",
                 "x",
                 "A",
                 "B",
                 "D",
                 "F",
                 "S",
                 "T",
                 "V",
                 "EOF",
                 "j",
                 "z",
                 "C",
                 "E",
                 "G",
                 "H",
                 "J",
                 "K",
                 "L",
                 "N",
                 "P",
                 "Q",
                 "R",
                 "U",
                 "W",
                 "X",
                 "Y",
                 "Z"
             };

    public final static boolean isValidForParser = true;
}
