blob: aa472a9a7be1041814074351f81acd64e651fc38 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006 Eclipse.org
*
* 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
*******************************************************************************/
package org.eclipse.gmf.internal.xpand.parser;
public class XpandKWLexer extends XpandKWLexerprs implements XpandParsersym
{
private char[] inputChars;
private final int keywordKind[] = new int[47 + 1];
public int[] getKeywordKinds() { return keywordKind; }
public int lexer(int curtok, int lasttok)
{
int current_kind = getKind(inputChars[curtok]),
act;
for (act = tAction(START_STATE, current_kind);
act > NUM_RULES && act < ACCEPT_ACTION;
act = tAction(act, current_kind))
{
curtok++;
current_kind = (curtok > lasttok
? Char_EOF
: getKind(inputChars[curtok]));
}
if (act > ERROR_ACTION)
{
curtok++;
act -= ERROR_ACTION;
}
return keywordKind[act == ERROR_ACTION || curtok <= lasttok ? 0 : act];
}
public void setInputChars(char[] inputChars) { this.inputChars = inputChars; }
final static int tokenKind[] = new int[128];
static {
tokenKind['a'] = Char_a;
tokenKind['b'] = Char_b;
tokenKind['c'] = Char_c;
tokenKind['d'] = Char_d;
tokenKind['e'] = Char_e;
tokenKind['f'] = Char_f;
tokenKind['g'] = Char_g;
tokenKind['h'] = Char_h;
tokenKind['i'] = Char_i;
tokenKind['j'] = Char_j;
tokenKind['k'] = Char_k;
tokenKind['l'] = Char_l;
tokenKind['m'] = Char_m;
tokenKind['n'] = Char_n;
tokenKind['o'] = Char_o;
tokenKind['p'] = Char_p;
tokenKind['q'] = Char_q;
tokenKind['r'] = Char_r;
tokenKind['s'] = Char_s;
tokenKind['t'] = Char_t;
tokenKind['u'] = Char_u;
tokenKind['v'] = Char_v;
tokenKind['w'] = Char_w;
tokenKind['x'] = Char_x;
tokenKind['y'] = Char_y;
tokenKind['z'] = Char_z;
tokenKind['A'] = Char_A;
tokenKind['B'] = Char_B;
tokenKind['C'] = Char_C;
tokenKind['D'] = Char_D;
tokenKind['E'] = Char_E;
tokenKind['F'] = Char_F;
tokenKind['G'] = Char_G;
tokenKind['H'] = Char_H;
tokenKind['I'] = Char_I;
tokenKind['J'] = Char_J;
tokenKind['K'] = Char_K;
tokenKind['L'] = Char_L;
tokenKind['M'] = Char_M;
tokenKind['N'] = Char_N;
tokenKind['O'] = Char_O;
tokenKind['P'] = Char_P;
tokenKind['Q'] = Char_Q;
tokenKind['R'] = Char_R;
tokenKind['S'] = Char_S;
tokenKind['T'] = Char_T;
tokenKind['U'] = Char_U;
tokenKind['V'] = Char_V;
tokenKind['W'] = Char_W;
tokenKind['X'] = Char_X;
tokenKind['Y'] = Char_Y;
tokenKind['Z'] = Char_Z;
};
final int getKind(char c) {
return (c < 128 ? tokenKind[c] : 0);
}
public XpandKWLexer(char[] inputChars, int identifierKind)
{
this.inputChars = inputChars;
keywordKind[0] = identifierKind;
//
// Rule 1: KeyWord ::= n u l l
//
keywordKind[1] = (TK_null);
//
// Rule 2: KeyWord ::= t r u e
//
keywordKind[2] = (TK_true);
//
// Rule 3: KeyWord ::= f a l s e
//
keywordKind[3] = (TK_false);
//
// Rule 4: KeyWord ::= n e w
//
keywordKind[4] = (TK_new);
//
// Rule 5: KeyWord ::= l e t
//
keywordKind[5] = (TK_let);
//
// Rule 6: KeyWord ::= s w i t c h
//
keywordKind[6] = (TK_switch);
//
// Rule 7: KeyWord ::= c a s e
//
keywordKind[7] = (TK_case);
//
// Rule 8: KeyWord ::= d e f a u l t
//
keywordKind[8] = (TK_default);
//
// Rule 9: KeyWord ::= i m p l i e s
//
keywordKind[9] = (TK_implies);
//
// Rule 10: KeyWord ::= S e t
//
keywordKind[10] = (TK_Set);
//
// Rule 11: KeyWord ::= L i s t
//
keywordKind[11] = (TK_List);
//
// Rule 12: KeyWord ::= C o l l e c t i o n
//
keywordKind[12] = (TK_Collection);
//
// Rule 13: KeyWord ::= f o r A l l
//
keywordKind[13] = (TK_forAll);
//
// Rule 14: KeyWord ::= e x i s t s
//
keywordKind[14] = (TK_exists);
//
// Rule 15: KeyWord ::= n o t E x i s t s
//
keywordKind[15] = (TK_notExists);
//
// Rule 16: KeyWord ::= c o l l e c t
//
keywordKind[16] = (TK_collect);
//
// Rule 17: KeyWord ::= s e l e c t
//
keywordKind[17] = (TK_select);
//
// Rule 18: KeyWord ::= r e j e c t
//
keywordKind[18] = (TK_reject);
//
// Rule 19: KeyWord ::= t y p e S e l e c t
//
keywordKind[19] = (TK_typeSelect);
//
// Rule 20: KeyWord ::= I M P O R T
//
keywordKind[20] = (TK_IMPORT);
//
// Rule 21: KeyWord ::= E X T E N S I O N
//
keywordKind[21] = (TK_EXTENSION);
//
// Rule 22: KeyWord ::= A R O U N D
//
keywordKind[22] = (TK_AROUND);
//
// Rule 23: KeyWord ::= E N D A R O U N D
//
keywordKind[23] = (TK_ENDAROUND);
//
// Rule 24: KeyWord ::= D E F I N E
//
keywordKind[24] = (TK_DEFINE);
//
// Rule 25: KeyWord ::= E N D D E F I N E
//
keywordKind[25] = (TK_ENDDEFINE);
//
// Rule 26: KeyWord ::= E R R O R
//
keywordKind[26] = (TK_ERROR);
//
// Rule 27: KeyWord ::= E X P A N D
//
keywordKind[27] = (TK_EXPAND);
//
// Rule 28: KeyWord ::= F O R
//
keywordKind[28] = (TK_FOR);
//
// Rule 29: KeyWord ::= S E P A R A T O R
//
keywordKind[29] = (TK_SEPARATOR);
//
// Rule 30: KeyWord ::= A S
//
keywordKind[30] = (TK_AS);
//
// Rule 31: KeyWord ::= I T E R A T O R
//
keywordKind[31] = (TK_ITERATOR);
//
// Rule 32: KeyWord ::= F O R E A C H
//
keywordKind[32] = (TK_FOREACH);
//
// Rule 33: KeyWord ::= E N D F O R E A C H
//
keywordKind[33] = (TK_ENDFOREACH);
//
// Rule 34: KeyWord ::= F I L E
//
keywordKind[34] = (TK_FILE);
//
// Rule 35: KeyWord ::= E N D F I L E
//
keywordKind[35] = (TK_ENDFILE);
//
// Rule 36: KeyWord ::= I F
//
keywordKind[36] = (TK_IF);
//
// Rule 37: KeyWord ::= E L S E I F
//
keywordKind[37] = (TK_ELSEIF);
//
// Rule 38: KeyWord ::= E L S E
//
keywordKind[38] = (TK_ELSE);
//
// Rule 39: KeyWord ::= E N D I F
//
keywordKind[39] = (TK_ENDIF);
//
// Rule 40: KeyWord ::= L E T
//
keywordKind[40] = (TK_LET);
//
// Rule 41: KeyWord ::= E N D L E T
//
keywordKind[41] = (TK_ENDLET);
//
// Rule 42: KeyWord ::= P R O T E C T
//
keywordKind[42] = (TK_PROTECT);
//
// Rule 43: KeyWord ::= C S T A R T
//
keywordKind[43] = (TK_CSTART);
//
// Rule 44: KeyWord ::= C E N D
//
keywordKind[44] = (TK_CEND);
//
// Rule 45: KeyWord ::= I D
//
keywordKind[45] = (TK_ID);
//
// Rule 46: KeyWord ::= D I S A B L E
//
keywordKind[46] = (TK_DISABLE);
//
// Rule 47: KeyWord ::= E N D P R O T E C T
//
keywordKind[47] = (TK_ENDPROTECT);
for (int i = 0; i < keywordKind.length; i++)
{
if (keywordKind[i] == 0)
keywordKind[i] = identifierKind;
}
}
}