blob: 405eea0910a12c52ac7bcefc154242a8bb45f959 [file] [log] [blame]
/**
* Essential OCL Keyword Lexer
* <copyright>
*
* Copyright (c) 2005, 2009 IBM Corporation and others.
* 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:
* IBM - Initial API and implementation
* E.D.Willink - Lexer and Parser refactoring to support extensibility and flexible error handling
* E.D.Willink - Bug 285633, 292112
* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - LPG v 2.0.17 adoption (242153)
* Adolfo Sanchez-Barbudo Herrera (Open Canarias) - Introducing new LPG templates (299396)
* E.D.Willink - Extended API and implementation for QVTr
*
* </copyright>
*
*
*/
package org.eclipse.qvt.declarative.parser.qvtrelation;
public class QVTrKWLexer extends QVTrKWLexerprs
{
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['$'] = QVTrKWLexersym.Char_DollarSign;
tokenKind['%'] = QVTrKWLexersym.Char_Percent;
tokenKind['_'] = QVTrKWLexersym.Char__;
tokenKind['a'] = QVTrKWLexersym.Char_a;
tokenKind['b'] = QVTrKWLexersym.Char_b;
tokenKind['c'] = QVTrKWLexersym.Char_c;
tokenKind['d'] = QVTrKWLexersym.Char_d;
tokenKind['e'] = QVTrKWLexersym.Char_e;
tokenKind['f'] = QVTrKWLexersym.Char_f;
tokenKind['g'] = QVTrKWLexersym.Char_g;
tokenKind['h'] = QVTrKWLexersym.Char_h;
tokenKind['i'] = QVTrKWLexersym.Char_i;
tokenKind['j'] = QVTrKWLexersym.Char_j;
tokenKind['k'] = QVTrKWLexersym.Char_k;
tokenKind['l'] = QVTrKWLexersym.Char_l;
tokenKind['m'] = QVTrKWLexersym.Char_m;
tokenKind['n'] = QVTrKWLexersym.Char_n;
tokenKind['o'] = QVTrKWLexersym.Char_o;
tokenKind['p'] = QVTrKWLexersym.Char_p;
tokenKind['q'] = QVTrKWLexersym.Char_q;
tokenKind['r'] = QVTrKWLexersym.Char_r;
tokenKind['s'] = QVTrKWLexersym.Char_s;
tokenKind['t'] = QVTrKWLexersym.Char_t;
tokenKind['u'] = QVTrKWLexersym.Char_u;
tokenKind['v'] = QVTrKWLexersym.Char_v;
tokenKind['w'] = QVTrKWLexersym.Char_w;
tokenKind['x'] = QVTrKWLexersym.Char_x;
tokenKind['y'] = QVTrKWLexersym.Char_y;
tokenKind['z'] = QVTrKWLexersym.Char_z;
tokenKind['A'] = QVTrKWLexersym.Char_A;
tokenKind['B'] = QVTrKWLexersym.Char_B;
tokenKind['C'] = QVTrKWLexersym.Char_C;
tokenKind['D'] = QVTrKWLexersym.Char_D;
tokenKind['E'] = QVTrKWLexersym.Char_E;
tokenKind['F'] = QVTrKWLexersym.Char_F;
tokenKind['G'] = QVTrKWLexersym.Char_G;
tokenKind['H'] = QVTrKWLexersym.Char_H;
tokenKind['I'] = QVTrKWLexersym.Char_I;
tokenKind['J'] = QVTrKWLexersym.Char_J;
tokenKind['K'] = QVTrKWLexersym.Char_K;
tokenKind['L'] = QVTrKWLexersym.Char_L;
tokenKind['M'] = QVTrKWLexersym.Char_M;
tokenKind['N'] = QVTrKWLexersym.Char_N;
tokenKind['O'] = QVTrKWLexersym.Char_O;
tokenKind['P'] = QVTrKWLexersym.Char_P;
tokenKind['Q'] = QVTrKWLexersym.Char_Q;
tokenKind['R'] = QVTrKWLexersym.Char_R;
tokenKind['S'] = QVTrKWLexersym.Char_S;
tokenKind['T'] = QVTrKWLexersym.Char_T;
tokenKind['U'] = QVTrKWLexersym.Char_U;
tokenKind['V'] = QVTrKWLexersym.Char_V;
tokenKind['W'] = QVTrKWLexersym.Char_W;
tokenKind['X'] = QVTrKWLexersym.Char_X;
tokenKind['Y'] = QVTrKWLexersym.Char_Y;
tokenKind['Z'] = QVTrKWLexersym.Char_Z;
};
final int getKind(char c)
{
return (((c & 0xFFFFFF80) == 0) /* 0 <= c < 128? */ ? tokenKind[c] : 0);
}
static
{
tokenKind['_'] = Char__;
};
public QVTrKWLexer(char[] inputChars, int identifierKind)
{
this.inputChars = inputChars;
keywordKind[0] = identifierKind;
//
// Rule 1: KeyWord ::= s e l f
//
keywordKind[1] = (QVTrParsersym.TK_self);
//
// Rule 2: KeyWord ::= i f
//
keywordKind[2] = (QVTrParsersym.TK_if);
//
// Rule 3: KeyWord ::= t h e n
//
keywordKind[3] = (QVTrParsersym.TK_then);
//
// Rule 4: KeyWord ::= e l s e
//
keywordKind[4] = (QVTrParsersym.TK_else);
//
// Rule 5: KeyWord ::= e n d i f
//
keywordKind[5] = (QVTrParsersym.TK_endif);
//
// Rule 6: KeyWord ::= a n d
//
keywordKind[6] = (QVTrParsersym.TK_and);
//
// Rule 7: KeyWord ::= o r
//
keywordKind[7] = (QVTrParsersym.TK_or);
//
// Rule 8: KeyWord ::= x o r
//
keywordKind[8] = (QVTrParsersym.TK_xor);
//
// Rule 9: KeyWord ::= n o t
//
keywordKind[9] = (QVTrParsersym.TK_not);
//
// Rule 10: KeyWord ::= i m p l i e s
//
keywordKind[10] = (QVTrParsersym.TK_implies);
//
// Rule 11: KeyWord ::= l e t
//
keywordKind[11] = (QVTrParsersym.TK_let);
//
// Rule 12: KeyWord ::= i n
//
keywordKind[12] = (QVTrParsersym.TK_in);
//
// Rule 13: KeyWord ::= t r u e
//
keywordKind[13] = (QVTrParsersym.TK_true);
//
// Rule 14: KeyWord ::= f a l s e
//
keywordKind[14] = (QVTrParsersym.TK_false);
//
// Rule 15: KeyWord ::= S e t
//
keywordKind[15] = (QVTrParsersym.TK_Set);
//
// Rule 16: KeyWord ::= B a g
//
keywordKind[16] = (QVTrParsersym.TK_Bag);
//
// Rule 17: KeyWord ::= S e q u e n c e
//
keywordKind[17] = (QVTrParsersym.TK_Sequence);
//
// Rule 18: KeyWord ::= C o l l e c t i o n
//
keywordKind[18] = (QVTrParsersym.TK_Collection);
//
// Rule 19: KeyWord ::= O r d e r e d S e t
//
keywordKind[19] = (QVTrParsersym.TK_OrderedSet);
//
// Rule 20: KeyWord ::= S t r i n g
//
keywordKind[20] = (QVTrParsersym.TK_String);
//
// Rule 21: KeyWord ::= I n t e g e r
//
keywordKind[21] = (QVTrParsersym.TK_Integer);
//
// Rule 22: KeyWord ::= U n l i m i t e d N a t u r a l
//
keywordKind[22] = (QVTrParsersym.TK_UnlimitedNatural);
//
// Rule 23: KeyWord ::= R e a l
//
keywordKind[23] = (QVTrParsersym.TK_Real);
//
// Rule 24: KeyWord ::= B o o l e a n
//
keywordKind[24] = (QVTrParsersym.TK_Boolean);
//
// Rule 25: KeyWord ::= T u p l e
//
keywordKind[25] = (QVTrParsersym.TK_Tuple);
//
// Rule 26: KeyWord ::= O c l A n y
//
keywordKind[26] = (QVTrParsersym.TK_OclAny);
//
// Rule 27: KeyWord ::= O c l V o i d
//
keywordKind[27] = (QVTrParsersym.TK_OclVoid);
//
// Rule 28: KeyWord ::= O c l I n v a l i d
//
keywordKind[28] = (QVTrParsersym.TK_OclInvalid);
//
// Rule 29: KeyWord ::= n u l l
//
keywordKind[29] = (QVTrParsersym.TK_null);
//
// Rule 30: KeyWord ::= i n v a l i d
//
keywordKind[30] = (QVTrParsersym.TK_invalid);
//
// Rule 31: KeyWord ::= c h e c k o n l y
//
keywordKind[31] = (QVTrParsersym.TK_checkonly);
//
// Rule 32: KeyWord ::= d e f a u l t _ v a l u e s
//
keywordKind[32] = (QVTrParsersym.TK_default_values);
//
// Rule 33: KeyWord ::= d o m a i n
//
keywordKind[33] = (QVTrParsersym.TK_domain);
//
// Rule 34: KeyWord ::= e n f o r c e
//
keywordKind[34] = (QVTrParsersym.TK_enforce);
//
// Rule 35: KeyWord ::= e x t e n d s
//
keywordKind[35] = (QVTrParsersym.TK_extends);
//
// Rule 36: KeyWord ::= i m p l e m e n t e d b y
//
keywordKind[36] = (QVTrParsersym.TK_implementedby);
//
// Rule 37: KeyWord ::= i m p o r t
//
keywordKind[37] = (QVTrParsersym.TK_import);
//
// Rule 38: KeyWord ::= k e y
//
keywordKind[38] = (QVTrParsersym.TK_key);
//
// Rule 39: KeyWord ::= o v e r r i d e s
//
keywordKind[39] = (QVTrParsersym.TK_overrides);
//
// Rule 40: KeyWord ::= p r i m i t i v e
//
keywordKind[40] = (QVTrParsersym.TK_primitive);
//
// Rule 41: KeyWord ::= q u e r y
//
keywordKind[41] = (QVTrParsersym.TK_query);
//
// Rule 42: KeyWord ::= r e l a t i o n
//
keywordKind[42] = (QVTrParsersym.TK_relation);
//
// Rule 43: KeyWord ::= r e p l a c e
//
keywordKind[43] = (QVTrParsersym.TK_replace);
//
// Rule 44: KeyWord ::= t o p
//
keywordKind[44] = (QVTrParsersym.TK_top);
//
// Rule 45: KeyWord ::= t r a n s f o r m a t i o n
//
keywordKind[45] = (QVTrParsersym.TK_transformation);
//
// Rule 46: KeyWord ::= w h e n
//
keywordKind[46] = (QVTrParsersym.TK_when);
//
// Rule 47: KeyWord ::= w h e r e
//
keywordKind[47] = (QVTrParsersym.TK_where);
for (int i = 0; i < keywordKind.length; i++)
{
if (keywordKind[i] == 0)
keywordKind[i] = identifierKind;
}
}
}