/* This file was generated by SableCC (http://www.sablecc.org/). */
package org.sablecc.sablecc.lexer;
import org.sablecc.sablecc.node.*;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.PushbackReader;
@SuppressWarnings("nls")
public class Lexer {
protected Token token;
protected State state = State.NORMAL;
private IPushbackReader in;
private int line;
private int pos;
private boolean cr;
private boolean eof;
private final StringBuffer text = new StringBuffer();
@SuppressWarnings("unused")
protected void filter() throws LexerException, IOException {
// Do nothing
}
public Lexer(@SuppressWarnings("hiding") final PushbackReader in) {
this.in = new IPushbackReader() {
private PushbackReader pushbackReader = in;
@Override
public void unread(int c) throws IOException {
pushbackReader.unread(c);
}
@Override
public int read() throws IOException {
return pushbackReader.read();
}
};
}
public Lexer(@SuppressWarnings("hiding") IPushbackReader in) {
this.in = in;
}
public Token peek() throws LexerException, IOException {
while (this.token == null) {
this.token = getToken();
filter();
}
return this.token;
}
public Token next() throws LexerException, IOException {
while (this.token == null) {
this.token = getToken();
filter();
}
Token result = this.token;
this.token = null;
return result;
}
protected Token getToken() throws IOException, LexerException {
int dfa_state = 0;
int start_pos = this.pos;
int start_line = this.line;
int accept_state = -1;
int accept_token = -1;
int accept_length = -1;
int accept_pos = -1;
int accept_line = -1;
@SuppressWarnings("hiding") int[][][] gotoTable = Lexer.gotoTable[this.state.id()];
@SuppressWarnings("hiding") int[] accept = Lexer.accept[this.state.id()];
this.text.setLength(0);
while (true) {
int c = getChar();
if (c != -1) {
switch (c) {
case 10:
if (this.cr) {
this.cr = false;
} else {
this.line++;
this.pos = 0;
}
break;
case 13:
this.line++;
this.pos = 0;
this.cr = true;
break;
default:
this.pos++;
this.cr = false;
break;
}
this.text.append((char) c);
do {
int oldState = (dfa_state < -1) ? (-2 - dfa_state) : dfa_state;
dfa_state = -1;
int[][] tmp1 = gotoTable[oldState];
int low = 0;
int high = tmp1.length - 1;
while (low <= high) {
// int middle = (low + high) / 2;
int middle = (low + high) >>> 1;
int[] tmp2 = tmp1[middle];
if (c < tmp2[0]) {
high = middle - 1;
} else if (c > tmp2[1]) {
low = middle + 1;
} else {
dfa_state = tmp2[2];
break;
}
}
} while (dfa_state < -1);
} else {
dfa_state = -1;
}
if (dfa_state >= 0) {
if (accept[dfa_state] != -1) {
accept_state = dfa_state;
accept_token = accept[dfa_state];
accept_length = this.text.length();
accept_pos = this.pos;
accept_line = this.line;
}
} else {
if (accept_state != -1) {
switch (accept_token) {
case 0: {
@SuppressWarnings("hiding") Token token = new0(
getText(accept_length),
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
switch (state.id()) {
case 1:
state = State.PACKAGE;
break;
}
return token;
}
case 1: {
@SuppressWarnings("hiding") Token token = new1(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
switch (state.id()) {
case 0:
state = State.PACKAGE;
break;
}
return token;
}
case 2: {
@SuppressWarnings("hiding") Token token = new2(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 3: {
@SuppressWarnings("hiding") Token token = new3(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 4: {
@SuppressWarnings("hiding") Token token = new4(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 5: {
@SuppressWarnings("hiding") Token token = new5(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 6: {
@SuppressWarnings("hiding") Token token = new6(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 7: {
@SuppressWarnings("hiding") Token token = new7(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 8: {
@SuppressWarnings("hiding") Token token = new8(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 9: {
@SuppressWarnings("hiding") Token token = new9(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 10: {
@SuppressWarnings("hiding") Token token = new10(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 11: {
@SuppressWarnings("hiding") Token token = new11(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 12: {
@SuppressWarnings("hiding") Token token = new12(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 13: {
@SuppressWarnings("hiding") Token token = new13(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 14: {
@SuppressWarnings("hiding") Token token = new14(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 15: {
@SuppressWarnings("hiding") Token token = new15(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 16: {
@SuppressWarnings("hiding") Token token = new16(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
switch (state.id()) {
case 0:
state = State.NORMAL;
break;
case 1:
state = State.NORMAL;
break;
}
return token;
}
case 17: {
@SuppressWarnings("hiding") Token token = new17(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 18: {
@SuppressWarnings("hiding") Token token = new18(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 19: {
@SuppressWarnings("hiding") Token token = new19(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 20: {
@SuppressWarnings("hiding") Token token = new20(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 21: {
@SuppressWarnings("hiding") Token token = new21(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 22: {
@SuppressWarnings("hiding") Token token = new22(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 23: {
@SuppressWarnings("hiding") Token token = new23(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 24: {
@SuppressWarnings("hiding") Token token = new24(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 25: {
@SuppressWarnings("hiding") Token token = new25(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 26: {
@SuppressWarnings("hiding") Token token = new26(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 27: {
@SuppressWarnings("hiding") Token token = new27(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 28: {
@SuppressWarnings("hiding") Token token = new28(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 29: {
@SuppressWarnings("hiding") Token token = new29(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 30: {
@SuppressWarnings("hiding") Token token = new30(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 31: {
@SuppressWarnings("hiding") Token token = new31(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 32: {
@SuppressWarnings("hiding") Token token = new32(
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 33: {
@SuppressWarnings("hiding") Token token = new33(
getText(accept_length),
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 34: {
@SuppressWarnings("hiding") Token token = new34(
getText(accept_length),
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 35: {
@SuppressWarnings("hiding") Token token = new35(
getText(accept_length),
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 36: {
@SuppressWarnings("hiding") Token token = new36(
getText(accept_length),
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 37: {
@SuppressWarnings("hiding") Token token = new37(
getText(accept_length),
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 38: {
@SuppressWarnings("hiding") Token token = new38(
getText(accept_length),
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
case 39: {
@SuppressWarnings("hiding") Token token = new39(
getText(accept_length),
start_line + 1,
start_pos + 1);
pushBack(accept_length);
this.pos = accept_pos;
this.line = accept_line;
return token;
}
}
} else {
if (this.text.length() > 0) {
throw new LexerException(
new InvalidToken(this.text.substring(0, 1), start_line + 1, start_pos + 1),
"[" + (start_line + 1) + "," + (start_pos + 1) + "]" +
" Unknown token: " + this.text);
}
@SuppressWarnings("hiding") EOF token = new EOF(
start_line + 1,
start_pos + 1);
return token;
}
}
}
}
Token new0(@SuppressWarnings("hiding") String text, @SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TPkgId(text, line, pos);
}
Token new1(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TPackage(line, pos);
}
Token new2(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TStates(line, pos);
}
Token new3(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new THelpers(line, pos);
}
Token new4(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TTokens(line, pos);
}
Token new5(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TIgnored(line, pos);
}
Token new6(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TProductions(line, pos);
}
Token new7(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TAbstract(line, pos);
}
Token new8(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TSyntax(line, pos);
}
Token new9(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TTree(line, pos);
}
Token new10(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TNew(line, pos);
}
Token new11(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TNull(line, pos);
}
Token new12(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TTokenSpecifier(line, pos);
}
Token new13(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TProductionSpecifier(line, pos);
}
Token new14(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TDot(line, pos);
}
Token new15(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TDDot(line, pos);
}
Token new16(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TSemicolon(line, pos);
}
Token new17(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TEqual(line, pos);
}
Token new18(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TLBkt(line, pos);
}
Token new19(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TRBkt(line, pos);
}
Token new20(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TLPar(line, pos);
}
Token new21(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TRPar(line, pos);
}
Token new22(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TLBrace(line, pos);
}
Token new23(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TRBrace(line, pos);
}
Token new24(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TPlus(line, pos);
}
Token new25(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TMinus(line, pos);
}
Token new26(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TQMark(line, pos);
}
Token new27(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TStar(line, pos);
}
Token new28(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TBar(line, pos);
}
Token new29(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TComma(line, pos);
}
Token new30(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TSlash(line, pos);
}
Token new31(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TArrow(line, pos);
}
Token new32(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TColon(line, pos);
}
Token new33(@SuppressWarnings("hiding") String text, @SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TId(text, line, pos);
}
Token new34(@SuppressWarnings("hiding") String text, @SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TChar(text, line, pos);
}
Token new35(@SuppressWarnings("hiding") String text, @SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TDecChar(text, line, pos);
}
Token new36(@SuppressWarnings("hiding") String text, @SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new THexChar(text, line, pos);
}
Token new37(@SuppressWarnings("hiding") String text, @SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TString(text, line, pos);
}
Token new38(@SuppressWarnings("hiding") String text, @SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TBlank(text, line, pos);
}
Token new39(@SuppressWarnings("hiding") String text, @SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) {
return new TComment(text, line, pos);
}
private int getChar() throws IOException {
if (this.eof) {
return -1;
}
int result = this.in.read();
if (result == -1) {
this.eof = true;
}
return result;
}
private void pushBack(int acceptLength) throws IOException {
int length = this.text.length();
for (int i = length - 1; i >= acceptLength; i--) {
this.eof = false;
this.in.unread(this.text.charAt(i));
}
}
protected void unread(@SuppressWarnings("hiding") Token token) throws IOException {
@SuppressWarnings("hiding") String text = token.getText();
int length = text.length();
for (int i = length - 1; i >= 0; i--) {
this.eof = false;
this.in.unread(text.charAt(i));
}
this.pos = token.getPos() - 1;
this.line = token.getLine() - 1;
}
private String getText(int acceptLength) {
StringBuffer s = new StringBuffer(acceptLength);
for (int i = 0; i < acceptLength; i++) {
s.append(this.text.charAt(i));
}
return s.toString();
}
private static int[][][][] gotoTable;
/* {
{ // NORMAL
{{9, 9, 1}, {10, 10, 2}, {13, 13, 3}, {32, 32, 4}, {39, 39, 5}, {40, 40, 6}, {41, 41, 7}, {42, 42, 8}, {43, 43, 9}, {44, 44, 10}, {45, 45, 11}, {46, 46, 12}, {47, 47, 13}, {48, 48, 14}, {49, 57, 15}, {58, 58, 16}, {59, 59, 17}, {61, 61, 18}, {63, 63, 19}, {65, 65, 20}, {72, 72, 21}, {73, 73, 22}, {78, 78, 23}, {80, 80, 24}, {83, 83, 25}, {84, 84, 26}, {91, 91, 27}, {93, 93, 28}, {97, 122, 29}, {123, 123, 30}, {124, 124, 31}, {125, 125, 32}, },
{{9, 32, -2}, },
{{9, 32, -2}, },
{{9, 9, 1}, {10, 10, 33}, {13, 32, -2}, },
{{9, 32, -2}, },
{{0, 9, 34}, {11, 12, 34}, {14, 38, 34}, {39, 39, 35}, {40, 65535, 34}, },
{},
{},
{},
{},
{},
{{62, 62, 36}, },
{{46, 46, 37}, },
{{42, 42, 38}, {47, 47, 39}, },
{{48, 57, 15}, {88, 88, 40}, {120, 120, 41}, },
{{48, 57, 15}, },
{},
{},
{},
{},
{{98, 98, 42}, },
{{101, 101, 43}, },
{{103, 103, 44}, },
{{101, 101, 45}, {117, 117, 46}, },
{{97, 97, 47}, {114, 114, 48}, },
{{116, 116, 49}, {121, 121, 50}, },
{{111, 111, 51}, {114, 114, 52}, },
{},
{},
{{48, 57, 53}, {95, 95, 54}, {97, 122, 55}, },
{},
{},
{},
{{9, 32, -2}, },
{{0, 9, 56}, {11, 12, 56}, {14, 38, 56}, {39, 39, 57}, {40, 65535, 56}, },
{{39, 39, 58}, },
{},
{},
{{0, 41, 59}, {42, 42, 60}, {43, 65535, 59}, },
{{0, 9, 61}, {10, 10, 62}, {11, 12, 61}, {13, 13, 63}, {14, 65535, 61}, },
{{48, 57, 64}, {65, 70, 64}, {97, 102, 64}, },
{{48, 102, -42}, },
{{115, 115, 65}, },
{{108, 108, 66}, },
{{110, 110, 67}, },
{{119, 119, 68}, },
{{108, 108, 69}, },
{{99, 99, 70}, },
{{111, 111, 71}, },
{{97, 97, 72}, },
{{110, 110, 73}, },
{{107, 107, 74}, },
{{101, 101, 75}, },
{{48, 122, -31}, },
{{97, 122, 76}, },
{{48, 122, -31}, },
{{0, 38, -36}, {39, 39, 77}, {40, 65535, 56}, },
{},
{},
{{0, 65535, -40}, },
{{0, 41, 78}, {42, 42, 60}, {43, 46, 78}, {47, 47, 79}, {48, 65535, 78}, },
{{0, 65535, -41}, },
{},
{{10, 10, 80}, },
{{48, 102, -42}, },
{{116, 116, 81}, },
{{112, 112, 82}, },
{{111, 111, 83}, },
{},
{{108, 108, 84}, },
{{107, 107, 85}, },
{{100, 100, 86}, },
{{116, 116, 87}, },
{{116, 116, 88}, },
{{101, 101, 89}, },
{{101, 101, 90}, },
{{48, 57, 91}, {95, 95, 54}, {97, 122, 92}, },
{},
{{0, 41, 93}, {42, 42, 94}, {43, 65535, 93}, },
{},
{},
{{114, 114, 95}, },
{{101, 101, 96}, },
{{114, 114, 97}, },
{},
{{97, 97, 98}, },
{{117, 117, 99}, },
{{101, 101, 100}, },
{{97, 97, 101}, },
{{110, 110, 102}, },
{},
{{48, 122, -78}, },
{{48, 122, -78}, },
{{0, 65535, -80}, },
{{0, 41, 78}, {42, 42, 94}, {43, 65535, -62}, },
{{97, 97, 103}, },
{{114, 114, 104}, },
{{101, 101, 105}, },
{{103, 103, 106}, },
{{99, 99, 107}, },
{{115, 115, 108}, },
{{120, 120, 109}, },
{{115, 115, 110}, },
{{99, 99, 111}, },
{{115, 115, 112}, },
{{100, 100, 113}, },
{{101, 101, 114}, },
{{116, 116, 115}, },
{},
{},
{},
{{116, 116, 116}, },
{},
{},
{},
{{105, 105, 117}, },
{},
{{111, 111, 118}, },
{{110, 110, 119}, },
{{115, 115, 120}, },
{},
}
{ // PACKAGE
{{9, 9, 1}, {10, 10, 2}, {13, 13, 3}, {32, 32, 4}, {36, 36, 5}, {39, 39, 6}, {40, 40, 7}, {41, 41, 8}, {42, 42, 9}, {43, 43, 10}, {44, 44, 11}, {45, 45, 12}, {46, 46, 13}, {47, 47, 14}, {48, 48, 15}, {49, 57, 16}, {58, 58, 17}, {59, 59, 18}, {61, 61, 19}, {63, 63, 20}, {65, 65, 21}, {66, 71, 22}, {72, 72, 23}, {73, 73, 24}, {74, 77, 22}, {78, 78, 25}, {79, 79, 22}, {80, 80, 26}, {81, 82, 22}, {83, 83, 27}, {84, 84, 28}, {85, 90, 22}, {91, 91, 29}, {93, 93, 30}, {95, 95, 31}, {97, 122, 32}, {123, 123, 33}, {124, 124, 34}, {125, 125, 35}, },
{{9, 32, -2}, },
{{9, 32, -2}, },
{{9, 9, 1}, {10, 10, 36}, {13, 32, -2}, },
{{9, 32, -2}, },
{{36, 36, 37}, {48, 57, 38}, {65, 90, 39}, {95, 95, 40}, {97, 122, 41}, },
{{0, 9, 42}, {11, 12, 42}, {14, 38, 42}, {39, 39, 43}, {40, 65535, 42}, },
{},
{},
{},
{},
{},
{{62, 62, 44}, },
{{46, 46, 45}, },
{{42, 42, 46}, {47, 47, 47}, },
{{48, 57, 16}, {88, 88, 48}, {120, 120, 49}, },
{{48, 57, 16}, },
{},
{},
{},
{},
{{36, 95, -7}, {97, 97, 41}, {98, 98, 50}, {99, 122, 41}, },
{{36, 122, -7}, },
{{36, 95, -7}, {97, 100, 41}, {101, 101, 51}, {102, 122, 41}, },
{{36, 95, -7}, {97, 102, 41}, {103, 103, 52}, {104, 122, 41}, },
{{36, 100, -25}, {101, 101, 53}, {102, 116, 41}, {117, 117, 54}, {118, 122, 41}, },
{{36, 95, -7}, {97, 113, 41}, {114, 114, 55}, {115, 122, 41}, },
{{36, 95, -7}, {97, 115, 41}, {116, 116, 56}, {117, 120, 41}, {121, 121, 57}, {122, 122, 41}, },
{{36, 95, -7}, {97, 110, 41}, {111, 111, 58}, {112, 113, 41}, {114, 114, 59}, {115, 122, 41}, },
{},
{},
{{36, 122, -7}, },
{{36, 36, 37}, {48, 57, 60}, {65, 90, 39}, {95, 95, 61}, {97, 122, 62}, },
{},
{},
{},
{{9, 32, -2}, },
{{36, 122, -7}, },
{{36, 122, -7}, },
{{36, 122, -7}, },
{{36, 122, -7}, },
{{36, 122, -7}, },
{{0, 9, 63}, {11, 12, 63}, {14, 38, 63}, {39, 39, 64}, {40, 65535, 63}, },
{{39, 39, 65}, },
{},
{},
{{0, 41, 66}, {42, 42, 67}, {43, 65535, 66}, },
{{0, 9, 68}, {10, 10, 69}, {11, 12, 68}, {13, 13, 70}, {14, 65535, 68}, },
{{48, 57, 71}, {65, 70, 71}, {97, 102, 71}, },
{{48, 102, -50}, },
{{36, 95, -7}, {97, 114, 41}, {115, 115, 72}, {116, 122, 41}, },
{{36, 95, -7}, {97, 107, 41}, {108, 108, 73}, {109, 122, 41}, },
{{36, 95, -7}, {97, 109, 41}, {110, 110, 74}, {111, 122, 41}, },
{{36, 95, -7}, {97, 118, 41}, {119, 119, 75}, {120, 122, 41}, },
{{36, 107, -53}, {108, 108, 76}, {109, 122, 41}, },
{{36, 110, -30}, {111, 111, 77}, {112, 122, 41}, },
{{36, 95, -7}, {97, 97, 78}, {98, 122, 41}, },
{{36, 109, -54}, {110, 110, 79}, {111, 122, 41}, },
{{36, 95, -7}, {97, 106, 41}, {107, 107, 80}, {108, 122, 41}, },
{{36, 100, -25}, {101, 101, 81}, {102, 122, 41}, },
{{36, 122, -34}, },
{{36, 95, -7}, {97, 122, 82}, },
{{36, 122, -34}, },
{{0, 38, -44}, {39, 39, 83}, {40, 65535, 63}, },
{},
{},
{{0, 65535, -48}, },
{{0, 41, 84}, {42, 42, 67}, {43, 46, 84}, {47, 47, 85}, {48, 65535, 84}, },
{{0, 65535, -49}, },
{},
{{10, 10, 86}, },
{{48, 102, -50}, },
{{36, 115, -29}, {116, 116, 87}, {117, 122, 41}, },
{{36, 95, -7}, {97, 111, 41}, {112, 112, 88}, {113, 122, 41}, },
{{36, 110, -30}, {111, 111, 89}, {112, 122, 41}, },
{{36, 122, -7}, },
{{36, 107, -53}, {108, 108, 90}, {109, 122, 41}, },
{{36, 95, -7}, {97, 99, 41}, {100, 100, 91}, {101, 122, 41}, },
{{36, 115, -29}, {116, 116, 92}, {117, 122, 41}, },
{{36, 115, -29}, {116, 116, 93}, {117, 122, 41}, },
{{36, 100, -25}, {101, 101, 94}, {102, 122, 41}, },
{{36, 100, -25}, {101, 101, 95}, {102, 122, 41}, },
{{36, 36, 37}, {48, 57, 96}, {65, 95, -34}, {97, 122, 97}, },
{},
{{0, 41, 98}, {42, 42, 99}, {43, 65535, 98}, },
{},
{},
{{36, 113, -28}, {114, 114, 100}, {115, 122, 41}, },
{{36, 100, -25}, {101, 101, 101}, {102, 122, 41}, },
{{36, 113, -28}, {114, 114, 102}, {115, 122, 41}, },
{{36, 122, -7}, },
{{36, 95, -7}, {97, 116, 41}, {117, 117, 103}, {118, 122, 41}, },
{{36, 100, -25}, {101, 101, 104}, {102, 122, 41}, },
{{36, 95, -7}, {97, 97, 105}, {98, 122, 41}, },
{{36, 109, -54}, {110, 110, 106}, {111, 122, 41}, },
{{36, 122, -7}, },
{{36, 122, -84}, },
{{36, 122, -84}, },
{{0, 65535, -86}, },
{{0, 41, 84}, {42, 42, 99}, {43, 65535, -69}, },
{{36, 95, -7}, {97, 97, 107}, {98, 122, 41}, },
{{36, 113, -28}, {114, 114, 108}, {115, 122, 41}, },
{{36, 100, -25}, {101, 101, 109}, {102, 122, 41}, },
{{36, 95, -7}, {97, 98, 41}, {99, 99, 110}, {100, 122, 41}, },
{{36, 114, -52}, {115, 115, 111}, {116, 122, 41}, },
{{36, 95, -7}, {97, 119, 41}, {120, 120, 112}, {121, 122, 41}, },
{{36, 114, -52}, {115, 115, 113}, {116, 122, 41}, },
{{36, 98, -105}, {99, 99, 114}, {100, 122, 41}, },
{{36, 114, -52}, {115, 115, 115}, {116, 122, 41}, },
{{36, 99, -79}, {100, 100, 116}, {101, 122, 41}, },
{{36, 115, -29}, {116, 116, 117}, {117, 122, 41}, },
{{36, 122, -7}, },
{{36, 122, -7}, },
{{36, 122, -7}, },
{{36, 115, -29}, {116, 116, 118}, {117, 122, 41}, },
{{36, 122, -7}, },
{{36, 122, -7}, },
{{36, 95, -7}, {97, 104, 41}, {105, 105, 119}, {106, 122, 41}, },
{{36, 122, -7}, },
{{36, 110, -30}, {111, 111, 120}, {112, 122, 41}, },
{{36, 109, -54}, {110, 110, 121}, {111, 122, 41}, },
{{36, 114, -52}, {115, 115, 122}, {116, 122, 41}, },
{{36, 122, -7}, },
}
};*/
private static int[][] accept;
/* {
// NORMAL
{-1, 38, 38, 38, 38, -1, 20, 21, 27, 24, 29, 25, 14, 30, 35, 35, 32, 16, 17, 26, -1, -1, -1, -1, 13, -1, 12, 18, 19, 33, 22, 28, 23, 38, -1, -1, 31, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, -1, 33, -1, 34, 34, -1, -1, -1, 39, 39, 36, -1, -1, -1, 10, -1, -1, -1, -1, -1, -1, -1, 33, 37, -1, 39, 39, -1, -1, -1, 11, -1, -1, -1, -1, -1, 9, 33, 33, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 8, 4, -1, 3, 5, 1, -1, 7, -1, -1, -1, 6, },
// PACKAGE
{-1, 38, 38, 38, 38, 0, -1, 20, 21, 27, 24, 29, 25, 14, 30, 35, 35, 32, 16, 17, 26, 0, 0, 0, 0, 0, 0, 0, 0, 18, 19, 0, 0, 22, 28, 23, 38, 0, 0, 0, 0, 0, -1, -1, 31, 15, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 34, 34, -1, -1, -1, 39, 39, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, -1, 39, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
};*/
public static class State {
public final static State NORMAL = new State(0);
public final static State PACKAGE = new State(1);
private int id;
private State(@SuppressWarnings("hiding") int id) {
this.id = id;
}
public int id() {
return this.id;
}
}
static {
try {
DataInputStream s = new DataInputStream(
new BufferedInputStream(
Lexer.class.getResourceAsStream("lexer.dat")));
// read gotoTable
int length = s.readInt();
gotoTable = new int[length][][][];
for (int i = 0; i < gotoTable.length; i++) {
length = s.readInt();
gotoTable[i] = new int[length][][];
for (int j = 0; j < gotoTable[i].length; j++) {
length = s.readInt();
gotoTable[i][j] = new int[length][3];
for (int k = 0; k < gotoTable[i][j].length; k++) {
for (int l = 0; l < 3; l++) {
gotoTable[i][j][k][l] = s.readInt();
}
}
}
}
// read accept
length = s.readInt();
accept = new int[length][];
for (int i = 0; i < accept.length; i++) {
length = s.readInt();
accept[i] = new int[length];
for (int j = 0; j < accept[i].length; j++) {
accept[i][j] = s.readInt();
}
}
s.close();
} catch (Exception e) {
throw new RuntimeException("The file \"lexer.dat\" is either missing or corrupted.");
}
}
}