[06 - Top Down Parser] Add ÜB-Praxis-Abstiegsparser für X-Leer
This commit is contained in:
@@ -22,7 +22,7 @@ package de.dhbw.compiler.jflexasscanner;
|
||||
%public
|
||||
%final
|
||||
|
||||
%xstate FRAC, EXP, STR, NULL, ID, NUM
|
||||
%xstate FRAC, EXP, STR, NULL, ID, NUM, TO
|
||||
|
||||
%{
|
||||
String idValue = "";
|
||||
@@ -31,6 +31,7 @@ package de.dhbw.compiler.jflexasscanner;
|
||||
String numberString = "";
|
||||
int decimalPlace = 0;
|
||||
int exponent = 0;
|
||||
String toRangeString = "";
|
||||
|
||||
private Token numToken(String numberString, int value) {
|
||||
//return new Token(Token.NUM, String.valueOf(intValue), yyline+1, yycolumn+1-String.valueOf(intValue).length());
|
||||
@@ -44,6 +45,7 @@ CapitalChars = [A-Z]
|
||||
Numbers = [0-9]
|
||||
AllChars = [a-zA-Z0-9]
|
||||
Dot = [\.]
|
||||
//To = \d\s*[\.]*\s*\d
|
||||
Power = \^{Numbers}
|
||||
|
||||
%eofval{
|
||||
@@ -58,6 +60,7 @@ Power = \^{Numbers}
|
||||
{Numbers} { yybegin(NUM);
|
||||
intValue = yycharat(0)-'0';
|
||||
numberString = yytext(); }
|
||||
{Dot} { yybegin(TO); toRangeString = yytext(); }
|
||||
{AllChars} { yybegin(ID); System.out.println("BEGIN ID <"+yytext()+">");
|
||||
idValue = yytext(); }
|
||||
[\[] { return new Token(Token.LSBR, yytext(), yyline+1, yycolumn+1); }
|
||||
@@ -90,6 +93,7 @@ Power = \^{Numbers}
|
||||
|
||||
<FRAC> {
|
||||
{Numbers} { fracValue += (yycharat(0) - '0') * Math.pow(10, -++decimalPlace); numberString += yytext(); }
|
||||
{Dot} { yybegin(TO); toRangeString = yytext(); }
|
||||
<<EOF>> { yybegin(YYINITIAL);
|
||||
return new FracToken(Token.FRAC, numberString, yyline+1, yycolumn+1-numberString.length(), fracValue); }
|
||||
\^{Numbers} { yybegin(EXP); numberString += yytext(); exponent = yycharat(1) - '0'; System.out.println("BEGIN EXP <"+yytext()+"> / exponent: " + exponent); }
|
||||
@@ -109,6 +113,36 @@ Power = \^{Numbers}
|
||||
return new FracToken(Token.FRAC, numberString, yyline+1, yycolumn+1-numberString.length(), fracValue * Math.pow(10, exponent)); }
|
||||
}
|
||||
|
||||
<TO> {
|
||||
{Dot} { toRangeString += yytext(); System.out.println("TO DOT <"+toRangeString+"> / " + yyline + " - " + yycolumn);
|
||||
if (toRangeString.length() % 2 == 0) {
|
||||
String result = toRangeString;
|
||||
toRangeString = "";
|
||||
return new Token(Token.TO, result, yyline+1, yycolumn+1-1);
|
||||
}}
|
||||
{Numbers} { yybegin(NUM); yypushback(1);
|
||||
if (toRangeString.length() % 2 == 0) {
|
||||
toRangeString = "";
|
||||
return new Token(Token.TO, "..", yyline+1, yycolumn+1-2);
|
||||
} else {
|
||||
return new Token(Token.INVALID, toRangeString, yyline+1, yycolumn+1-toRangeString.length());
|
||||
}}
|
||||
<<EOF>> { yybegin(YYINITIAL);
|
||||
if (toRangeString.length() % 2 == 0) {
|
||||
toRangeString = "";
|
||||
return new Token(Token.TO, "..", yyline+1, yycolumn+1-2);
|
||||
} else {
|
||||
return new Token(Token.INVALID, toRangeString, yyline+1, yycolumn+1-toRangeString.length());
|
||||
}}
|
||||
[^] { yybegin(YYINITIAL); yypushback(1);
|
||||
if (toRangeString.length() % 2 == 0) {
|
||||
toRangeString = "";
|
||||
return new Token(Token.TO, "..", yyline+1, yycolumn+1-2);
|
||||
} else {
|
||||
return new Token(Token.INVALID, toRangeString, yyline+1, yycolumn+1-toRangeString.length());
|
||||
}}
|
||||
}
|
||||
|
||||
[^] { System.out.println("Illegal character <" + yytext() + ">");
|
||||
return new Token(Token.INVALID, yytext(), yyline+1, yycolumn+1); }
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ public final class JFlexASScanner {
|
||||
public static final int NULL = 8;
|
||||
public static final int ID = 10;
|
||||
public static final int NUM = 12;
|
||||
public static final int TO = 14;
|
||||
|
||||
/**
|
||||
* ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
|
||||
@@ -42,7 +43,7 @@ public final class JFlexASScanner {
|
||||
* l is of the form l = 2*k, k a non negative integer
|
||||
*/
|
||||
private static final int ZZ_LEXSTATE[] = {
|
||||
0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 5, 5
|
||||
0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 5, 5, 6, 6
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -64,12 +65,13 @@ public final class JFlexASScanner {
|
||||
private static final int [] ZZ_ACTION = zzUnpackAction();
|
||||
|
||||
private static final String ZZ_ACTION_PACKED_0 =
|
||||
"\6\0\1\1\1\2\1\3\1\4\1\3\1\5\1\6"+
|
||||
"\1\7\1\10\1\11\1\10\1\12\1\13\1\14\1\15"+
|
||||
"\1\16\1\17\1\20\1\21\1\0\1\22\1\0\1\23";
|
||||
"\7\0\1\1\1\2\1\3\1\4\1\5\1\3\1\6"+
|
||||
"\1\7\1\10\1\11\1\12\1\11\1\13\1\14\1\15"+
|
||||
"\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25"+
|
||||
"\1\0\1\26\1\0\1\27";
|
||||
|
||||
private static int [] zzUnpackAction() {
|
||||
int [] result = new int[29];
|
||||
int [] result = new int[34];
|
||||
int offset = 0;
|
||||
offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
|
||||
return result;
|
||||
@@ -94,13 +96,14 @@ public final class JFlexASScanner {
|
||||
private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
|
||||
|
||||
private static final String ZZ_ROWMAP_PACKED_0 =
|
||||
"\0\0\0\14\0\30\0\44\0\60\0\74\0\44\0\110"+
|
||||
"\0\44\0\44\0\124\0\44\0\44\0\44\0\44\0\44"+
|
||||
"\0\140\0\44\0\44\0\44\0\44\0\44\0\44\0\44"+
|
||||
"\0\44\0\154\0\44\0\170\0\44";
|
||||
"\0\0\0\14\0\30\0\44\0\60\0\74\0\110\0\44"+
|
||||
"\0\124\0\44\0\44\0\44\0\140\0\44\0\44\0\44"+
|
||||
"\0\44\0\44\0\154\0\44\0\44\0\44\0\44\0\44"+
|
||||
"\0\44\0\44\0\44\0\44\0\44\0\44\0\170\0\44"+
|
||||
"\0\204\0\44";
|
||||
|
||||
private static int [] zzUnpackRowMap() {
|
||||
int [] result = new int[29];
|
||||
int [] result = new int[34];
|
||||
int offset = 0;
|
||||
offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
|
||||
return result;
|
||||
@@ -123,15 +126,15 @@ public final class JFlexASScanner {
|
||||
private static final int [] ZZ_TRANS = zzUnpackTrans();
|
||||
|
||||
private static final String ZZ_TRANS_PACKED_0 =
|
||||
"\1\7\1\10\1\11\1\12\2\7\1\13\2\11\1\14"+
|
||||
"\1\15\1\16\3\17\1\20\1\17\1\21\6\17\3\22"+
|
||||
"\1\23\10\22\14\0\2\24\2\25\2\24\3\25\3\24"+
|
||||
"\2\26\1\27\1\30\1\31\1\26\3\27\3\26\1\0"+
|
||||
"\1\10\21\0\1\32\7\0\1\33\20\0\1\34\13\0"+
|
||||
"\1\35\3\0";
|
||||
"\1\10\1\11\1\12\1\13\1\14\1\10\1\15\2\12"+
|
||||
"\1\16\1\17\1\20\3\21\1\22\1\14\1\23\6\21"+
|
||||
"\3\24\1\25\10\24\14\0\2\26\2\27\2\26\3\27"+
|
||||
"\3\26\2\30\1\31\1\32\1\33\1\30\3\31\3\30"+
|
||||
"\3\34\1\35\1\36\7\34\1\0\1\11\21\0\1\37"+
|
||||
"\7\0\1\40\20\0\1\41\13\0\1\42\3\0";
|
||||
|
||||
private static int [] zzUnpackTrans() {
|
||||
int [] result = new int[132];
|
||||
int [] result = new int[144];
|
||||
int offset = 0;
|
||||
offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
|
||||
return result;
|
||||
@@ -169,11 +172,11 @@ public final class JFlexASScanner {
|
||||
private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
|
||||
|
||||
private static final String ZZ_ATTRIBUTE_PACKED_0 =
|
||||
"\3\0\1\10\2\0\1\11\1\1\2\11\1\1\5\11"+
|
||||
"\1\1\10\11\1\0\1\11\1\0\1\11";
|
||||
"\3\0\1\10\3\0\1\11\1\1\3\11\1\1\5\11"+
|
||||
"\1\1\13\11\1\0\1\11\1\0\1\11";
|
||||
|
||||
private static int [] zzUnpackAttribute() {
|
||||
int [] result = new int[29];
|
||||
int [] result = new int[34];
|
||||
int offset = 0;
|
||||
offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
|
||||
return result;
|
||||
@@ -255,6 +258,7 @@ public final class JFlexASScanner {
|
||||
String numberString = "";
|
||||
int decimalPlace = 0;
|
||||
int exponent = 0;
|
||||
String toRangeString = "";
|
||||
|
||||
private Token numToken(String numberString, int value) {
|
||||
//return new Token(Token.NUM, String.valueOf(intValue), yyline+1, yycolumn+1-String.valueOf(intValue).length());
|
||||
@@ -633,22 +637,32 @@ public final class JFlexASScanner {
|
||||
yybegin(YYINITIAL);
|
||||
return new FracToken(Token.FRAC, numberString, yyline+1, yycolumn+1-numberString.length(), fracValue);
|
||||
}
|
||||
case 30: break;
|
||||
case 35: break;
|
||||
case EXP: {
|
||||
yybegin(YYINITIAL);
|
||||
return new FracToken(Token.FRAC, numberString, yyline+1, yycolumn+1-numberString.length(), fracValue * Math.pow(10, exponent));
|
||||
}
|
||||
case 31: break;
|
||||
case 36: break;
|
||||
case ID: {
|
||||
yybegin(YYINITIAL);
|
||||
return new Token(Token.ID, idValue, yyline+1, yycolumn+1-idValue.length());
|
||||
}
|
||||
case 32: break;
|
||||
case 37: break;
|
||||
case NUM: {
|
||||
yybegin(YYINITIAL);
|
||||
return numToken(numberString, intValue);
|
||||
}
|
||||
case 33: break;
|
||||
case 38: break;
|
||||
case TO: {
|
||||
yybegin(YYINITIAL);
|
||||
if (toRangeString.length() % 2 == 0) {
|
||||
toRangeString = "";
|
||||
return new Token(Token.TO, "..", yyline+1, yycolumn+1-2);
|
||||
} else {
|
||||
return new Token(Token.INVALID, toRangeString, yyline+1, yycolumn+1-toRangeString.length());
|
||||
}
|
||||
}
|
||||
case 39: break;
|
||||
default:
|
||||
{ return new Token(Token.EOF, "", yyline+1, yycolumn+1);
|
||||
}
|
||||
@@ -660,95 +674,128 @@ public final class JFlexASScanner {
|
||||
{ System.out.println("Illegal character <" + yytext() + ">");
|
||||
return new Token(Token.INVALID, yytext(), yyline+1, yycolumn+1);
|
||||
}
|
||||
case 20: break;
|
||||
case 24: break;
|
||||
case 2:
|
||||
{ /* Ignore */
|
||||
}
|
||||
case 21: break;
|
||||
case 25: break;
|
||||
case 3:
|
||||
{ yybegin(ID); System.out.println("BEGIN ID <"+yytext()+">");
|
||||
idValue = yytext();
|
||||
}
|
||||
case 22: break;
|
||||
case 26: break;
|
||||
case 4:
|
||||
{ yybegin(NUM);
|
||||
intValue = yycharat(0)-'0';
|
||||
numberString = yytext();
|
||||
}
|
||||
case 23: break;
|
||||
case 27: break;
|
||||
case 5:
|
||||
{ yybegin(TO); toRangeString = yytext();
|
||||
}
|
||||
case 28: break;
|
||||
case 6:
|
||||
{ return new Token(Token.LSBR, yytext(), yyline+1, yycolumn+1);
|
||||
}
|
||||
case 24: break;
|
||||
case 6:
|
||||
case 29: break;
|
||||
case 7:
|
||||
{ return new Token(Token.RSBR, yytext(), yyline+1, yycolumn+1);
|
||||
}
|
||||
case 25: break;
|
||||
case 7:
|
||||
case 30: break;
|
||||
case 8:
|
||||
{ return new Token(Token.COMMA, yytext(), yyline+1, yycolumn+1);
|
||||
}
|
||||
case 26: break;
|
||||
case 8:
|
||||
case 31: break;
|
||||
case 9:
|
||||
{ yybegin(YYINITIAL);
|
||||
yypushback(1);
|
||||
return new FracToken(Token.FRAC, numberString, yyline+1, yycolumn+1-numberString.length(), fracValue);
|
||||
}
|
||||
case 27: break;
|
||||
case 9:
|
||||
case 32: break;
|
||||
case 10:
|
||||
{ fracValue += (yycharat(0) - '0') * Math.pow(10, -++decimalPlace); numberString += yytext();
|
||||
}
|
||||
case 28: break;
|
||||
case 10:
|
||||
case 33: break;
|
||||
case 11:
|
||||
{ yybegin(YYINITIAL);
|
||||
yypushback(1);
|
||||
System.out.println("numberString: " + numberString);
|
||||
System.out.println("fracValue: " + fracValue + " / exponent: " + exponent);
|
||||
return new FracToken(Token.FRAC, numberString, yyline+1, yycolumn+1-numberString.length(), fracValue * Math.pow(10, exponent));
|
||||
}
|
||||
case 29: break;
|
||||
case 11:
|
||||
case 34: break;
|
||||
case 12:
|
||||
{ numberString += yytext(); exponent = exponent * 10 + yycharat(0) - '0';
|
||||
}
|
||||
case 30: break;
|
||||
case 12:
|
||||
case 35: break;
|
||||
case 13:
|
||||
{ yybegin(YYINITIAL);
|
||||
yypushback(1);
|
||||
return new Token(Token.ID, idValue, yyline+1, yycolumn+1-idValue.length());
|
||||
}
|
||||
case 31: break;
|
||||
case 13:
|
||||
case 36: break;
|
||||
case 14:
|
||||
{ idValue += yytext();
|
||||
}
|
||||
case 32: break;
|
||||
case 14:
|
||||
case 37: break;
|
||||
case 15:
|
||||
{ yybegin(YYINITIAL);
|
||||
yypushback(1);
|
||||
return numToken(numberString, intValue);
|
||||
}
|
||||
case 33: break;
|
||||
case 15:
|
||||
case 38: break;
|
||||
case 16:
|
||||
{ yybegin(ID); idValue = numberString; yypushback(1);
|
||||
}
|
||||
case 34: break;
|
||||
case 16:
|
||||
case 39: break;
|
||||
case 17:
|
||||
{ intValue = intValue * 10 + yycharat(0) - '0'; numberString += yytext();
|
||||
}
|
||||
case 35: break;
|
||||
case 17:
|
||||
case 40: break;
|
||||
case 18:
|
||||
{ yybegin(FRAC);
|
||||
fracValue = intValue;
|
||||
System.out.println("BEGIN FRAC <"+yytext()+">");
|
||||
numberString += yytext();
|
||||
}
|
||||
case 36: break;
|
||||
case 18:
|
||||
case 41: break;
|
||||
case 19:
|
||||
{ yybegin(YYINITIAL); yypushback(1);
|
||||
if (toRangeString.length() % 2 == 0) {
|
||||
toRangeString = "";
|
||||
return new Token(Token.TO, "..", yyline+1, yycolumn+1-2);
|
||||
} else {
|
||||
return new Token(Token.INVALID, toRangeString, yyline+1, yycolumn+1-toRangeString.length());
|
||||
}
|
||||
}
|
||||
case 42: break;
|
||||
case 20:
|
||||
{ yybegin(NUM); yypushback(1);
|
||||
if (toRangeString.length() % 2 == 0) {
|
||||
toRangeString = "";
|
||||
return new Token(Token.TO, "..", yyline+1, yycolumn+1-2);
|
||||
} else {
|
||||
return new Token(Token.INVALID, toRangeString, yyline+1, yycolumn+1-toRangeString.length());
|
||||
}
|
||||
}
|
||||
case 43: break;
|
||||
case 21:
|
||||
{ toRangeString += yytext(); System.out.println("TO DOT <"+toRangeString+"> / " + yyline + " - " + yycolumn);
|
||||
if (toRangeString.length() % 2 == 0) {
|
||||
String result = toRangeString;
|
||||
toRangeString = "";
|
||||
return new Token(Token.TO, result, yyline+1, yycolumn+1-1);
|
||||
}
|
||||
}
|
||||
case 44: break;
|
||||
case 22:
|
||||
{ yybegin(EXP); numberString += yytext(); exponent = yycharat(1) - '0'; System.out.println("BEGIN EXP <"+yytext()+"> / exponent: " + exponent);
|
||||
}
|
||||
case 37: break;
|
||||
case 19:
|
||||
case 45: break;
|
||||
case 23:
|
||||
{ return new Token(Token.NULL, yytext(), yyline+1, yycolumn+1);
|
||||
}
|
||||
case 38: break;
|
||||
case 46: break;
|
||||
default:
|
||||
zzScanError(ZZ_NO_MATCH);
|
||||
}
|
||||
|
||||
@@ -34,6 +34,7 @@ public final class JFlexASScanner {
|
||||
public static final int NULL = 8;
|
||||
public static final int ID = 10;
|
||||
public static final int NUM = 12;
|
||||
public static final int TO = 14;
|
||||
|
||||
/**
|
||||
* ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
|
||||
@@ -42,7 +43,7 @@ public final class JFlexASScanner {
|
||||
* l is of the form l = 2*k, k a non negative integer
|
||||
*/
|
||||
private static final int ZZ_LEXSTATE[] = {
|
||||
0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 5, 5
|
||||
0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 5, 5, 6, 6
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -64,12 +65,13 @@ public final class JFlexASScanner {
|
||||
private static final int [] ZZ_ACTION = zzUnpackAction();
|
||||
|
||||
private static final String ZZ_ACTION_PACKED_0 =
|
||||
"\6\0\1\1\1\2\1\3\1\4\1\3\1\5\1\6"+
|
||||
"\1\7\1\10\1\11\1\10\1\12\1\13\1\14\1\15"+
|
||||
"\1\16\1\17\1\20\1\21\1\0\1\22\1\0\1\23";
|
||||
"\7\0\1\1\1\2\1\3\1\4\1\5\1\3\1\6"+
|
||||
"\1\7\1\10\1\11\1\12\1\11\1\13\1\14\1\15"+
|
||||
"\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25"+
|
||||
"\1\0\1\26\1\0\1\27";
|
||||
|
||||
private static int [] zzUnpackAction() {
|
||||
int [] result = new int[29];
|
||||
int [] result = new int[34];
|
||||
int offset = 0;
|
||||
offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
|
||||
return result;
|
||||
@@ -94,13 +96,14 @@ public final class JFlexASScanner {
|
||||
private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
|
||||
|
||||
private static final String ZZ_ROWMAP_PACKED_0 =
|
||||
"\0\0\0\14\0\30\0\44\0\60\0\74\0\44\0\110"+
|
||||
"\0\44\0\44\0\124\0\44\0\44\0\44\0\44\0\44"+
|
||||
"\0\140\0\44\0\44\0\44\0\44\0\44\0\44\0\44"+
|
||||
"\0\44\0\154\0\44\0\170\0\44";
|
||||
"\0\0\0\14\0\30\0\44\0\60\0\74\0\110\0\44"+
|
||||
"\0\124\0\44\0\44\0\44\0\140\0\44\0\44\0\44"+
|
||||
"\0\44\0\44\0\154\0\44\0\44\0\44\0\44\0\44"+
|
||||
"\0\44\0\44\0\44\0\44\0\44\0\44\0\170\0\44"+
|
||||
"\0\204\0\44";
|
||||
|
||||
private static int [] zzUnpackRowMap() {
|
||||
int [] result = new int[29];
|
||||
int [] result = new int[34];
|
||||
int offset = 0;
|
||||
offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
|
||||
return result;
|
||||
@@ -123,15 +126,15 @@ public final class JFlexASScanner {
|
||||
private static final int [] ZZ_TRANS = zzUnpackTrans();
|
||||
|
||||
private static final String ZZ_TRANS_PACKED_0 =
|
||||
"\1\7\1\10\1\11\1\12\2\7\1\13\2\11\1\14"+
|
||||
"\1\15\1\16\3\17\1\20\1\17\1\21\6\17\3\22"+
|
||||
"\1\23\10\22\14\0\2\24\2\25\2\24\3\25\3\24"+
|
||||
"\2\26\1\27\1\30\1\31\1\26\3\27\3\26\1\0"+
|
||||
"\1\10\21\0\1\32\7\0\1\33\20\0\1\34\13\0"+
|
||||
"\1\35\3\0";
|
||||
"\1\10\1\11\1\12\1\13\1\14\1\10\1\15\2\12"+
|
||||
"\1\16\1\17\1\20\3\21\1\22\1\14\1\23\6\21"+
|
||||
"\3\24\1\25\10\24\14\0\2\26\2\27\2\26\3\27"+
|
||||
"\3\26\2\30\1\31\1\32\1\33\1\30\3\31\3\30"+
|
||||
"\3\34\1\35\1\36\7\34\1\0\1\11\21\0\1\37"+
|
||||
"\7\0\1\40\20\0\1\41\13\0\1\42\3\0";
|
||||
|
||||
private static int [] zzUnpackTrans() {
|
||||
int [] result = new int[132];
|
||||
int [] result = new int[144];
|
||||
int offset = 0;
|
||||
offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
|
||||
return result;
|
||||
@@ -169,11 +172,11 @@ public final class JFlexASScanner {
|
||||
private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
|
||||
|
||||
private static final String ZZ_ATTRIBUTE_PACKED_0 =
|
||||
"\3\0\1\10\2\0\1\11\1\1\2\11\1\1\5\11"+
|
||||
"\1\1\10\11\1\0\1\11\1\0\1\11";
|
||||
"\3\0\1\10\3\0\1\11\1\1\3\11\1\1\5\11"+
|
||||
"\1\1\13\11\1\0\1\11\1\0\1\11";
|
||||
|
||||
private static int [] zzUnpackAttribute() {
|
||||
int [] result = new int[29];
|
||||
int [] result = new int[34];
|
||||
int offset = 0;
|
||||
offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
|
||||
return result;
|
||||
@@ -255,6 +258,7 @@ public final class JFlexASScanner {
|
||||
String numberString = "";
|
||||
int decimalPlace = 0;
|
||||
int exponent = 0;
|
||||
String toRangeString = "";
|
||||
|
||||
private Token numToken(String numberString, int value) {
|
||||
//return new Token(Token.NUM, String.valueOf(intValue), yyline+1, yycolumn+1-String.valueOf(intValue).length());
|
||||
@@ -633,22 +637,32 @@ public final class JFlexASScanner {
|
||||
yybegin(YYINITIAL);
|
||||
return new FracToken(Token.FRAC, numberString, yyline+1, yycolumn+1-numberString.length(), fracValue);
|
||||
}
|
||||
case 30: break;
|
||||
case 35: break;
|
||||
case EXP: {
|
||||
yybegin(YYINITIAL);
|
||||
return new FracToken(Token.FRAC, numberString, yyline+1, yycolumn+1-numberString.length(), fracValue * Math.pow(10, exponent));
|
||||
}
|
||||
case 31: break;
|
||||
case 36: break;
|
||||
case ID: {
|
||||
yybegin(YYINITIAL);
|
||||
return new Token(Token.ID, idValue, yyline+1, yycolumn+1-idValue.length());
|
||||
}
|
||||
case 32: break;
|
||||
case 37: break;
|
||||
case NUM: {
|
||||
yybegin(YYINITIAL);
|
||||
return numToken(numberString, intValue);
|
||||
}
|
||||
case 33: break;
|
||||
case 38: break;
|
||||
case TO: {
|
||||
yybegin(YYINITIAL);
|
||||
if (toRangeString.length() % 2 == 0) {
|
||||
toRangeString = "";
|
||||
return new Token(Token.TO, "..", yyline+1, yycolumn+1-2);
|
||||
} else {
|
||||
return new Token(Token.INVALID, toRangeString, yyline+1, yycolumn+1-toRangeString.length());
|
||||
}
|
||||
}
|
||||
case 39: break;
|
||||
default:
|
||||
{ return new Token(Token.EOF, "", yyline+1, yycolumn+1);
|
||||
}
|
||||
@@ -660,95 +674,128 @@ public final class JFlexASScanner {
|
||||
{ System.out.println("Illegal character <" + yytext() + ">");
|
||||
return new Token(Token.INVALID, yytext(), yyline+1, yycolumn+1);
|
||||
}
|
||||
case 20: break;
|
||||
case 24: break;
|
||||
case 2:
|
||||
{ /* Ignore */
|
||||
}
|
||||
case 21: break;
|
||||
case 25: break;
|
||||
case 3:
|
||||
{ yybegin(ID); System.out.println("BEGIN ID <"+yytext()+">");
|
||||
idValue = yytext();
|
||||
}
|
||||
case 22: break;
|
||||
case 26: break;
|
||||
case 4:
|
||||
{ yybegin(NUM);
|
||||
intValue = yycharat(0)-'0';
|
||||
numberString = yytext();
|
||||
}
|
||||
case 23: break;
|
||||
case 27: break;
|
||||
case 5:
|
||||
{ yybegin(TO); toRangeString = yytext();
|
||||
}
|
||||
case 28: break;
|
||||
case 6:
|
||||
{ return new Token(Token.LSBR, yytext(), yyline+1, yycolumn+1);
|
||||
}
|
||||
case 24: break;
|
||||
case 6:
|
||||
case 29: break;
|
||||
case 7:
|
||||
{ return new Token(Token.RSBR, yytext(), yyline+1, yycolumn+1);
|
||||
}
|
||||
case 25: break;
|
||||
case 7:
|
||||
case 30: break;
|
||||
case 8:
|
||||
{ return new Token(Token.COMMA, yytext(), yyline+1, yycolumn+1);
|
||||
}
|
||||
case 26: break;
|
||||
case 8:
|
||||
case 31: break;
|
||||
case 9:
|
||||
{ yybegin(YYINITIAL);
|
||||
yypushback(1);
|
||||
return new FracToken(Token.FRAC, numberString, yyline+1, yycolumn+1-numberString.length(), fracValue);
|
||||
}
|
||||
case 27: break;
|
||||
case 9:
|
||||
case 32: break;
|
||||
case 10:
|
||||
{ fracValue += (yycharat(0) - '0') * Math.pow(10, -++decimalPlace); numberString += yytext();
|
||||
}
|
||||
case 28: break;
|
||||
case 10:
|
||||
case 33: break;
|
||||
case 11:
|
||||
{ yybegin(YYINITIAL);
|
||||
yypushback(1);
|
||||
System.out.println("numberString: " + numberString);
|
||||
System.out.println("fracValue: " + fracValue + " / exponent: " + exponent);
|
||||
return new FracToken(Token.FRAC, numberString, yyline+1, yycolumn+1-numberString.length(), fracValue * Math.pow(10, exponent));
|
||||
}
|
||||
case 29: break;
|
||||
case 11:
|
||||
case 34: break;
|
||||
case 12:
|
||||
{ numberString += yytext(); exponent = exponent * 10 + yycharat(0) - '0';
|
||||
}
|
||||
case 30: break;
|
||||
case 12:
|
||||
case 35: break;
|
||||
case 13:
|
||||
{ yybegin(YYINITIAL);
|
||||
yypushback(1);
|
||||
return new Token(Token.ID, idValue, yyline+1, yycolumn+1-idValue.length());
|
||||
}
|
||||
case 31: break;
|
||||
case 13:
|
||||
case 36: break;
|
||||
case 14:
|
||||
{ idValue += yytext();
|
||||
}
|
||||
case 32: break;
|
||||
case 14:
|
||||
case 37: break;
|
||||
case 15:
|
||||
{ yybegin(YYINITIAL);
|
||||
yypushback(1);
|
||||
return numToken(numberString, intValue);
|
||||
}
|
||||
case 33: break;
|
||||
case 15:
|
||||
{ yybegin(ID); idValue = String.valueOf(intValue); yypushback(1);
|
||||
}
|
||||
case 34: break;
|
||||
case 38: break;
|
||||
case 16:
|
||||
{ yybegin(ID); idValue = numberString; yypushback(1);
|
||||
}
|
||||
case 39: break;
|
||||
case 17:
|
||||
{ intValue = intValue * 10 + yycharat(0) - '0'; numberString += yytext();
|
||||
}
|
||||
case 35: break;
|
||||
case 17:
|
||||
case 40: break;
|
||||
case 18:
|
||||
{ yybegin(FRAC);
|
||||
fracValue = intValue;
|
||||
System.out.println("BEGIN FRAC <"+yytext()+">");
|
||||
numberString += yytext();
|
||||
}
|
||||
case 36: break;
|
||||
case 18:
|
||||
case 41: break;
|
||||
case 19:
|
||||
{ yybegin(YYINITIAL); yypushback(1);
|
||||
if (toRangeString.length() % 2 == 0) {
|
||||
toRangeString = "";
|
||||
return new Token(Token.TO, "..", yyline+1, yycolumn+1-2);
|
||||
} else {
|
||||
return new Token(Token.INVALID, toRangeString, yyline+1, yycolumn+1-toRangeString.length());
|
||||
}
|
||||
}
|
||||
case 42: break;
|
||||
case 20:
|
||||
{ yybegin(NUM); yypushback(1);
|
||||
if (toRangeString.length() % 2 == 0) {
|
||||
toRangeString = "";
|
||||
return new Token(Token.TO, "..", yyline+1, yycolumn+1-2);
|
||||
} else {
|
||||
return new Token(Token.INVALID, toRangeString, yyline+1, yycolumn+1-toRangeString.length());
|
||||
}
|
||||
}
|
||||
case 43: break;
|
||||
case 21:
|
||||
{ toRangeString += yytext(); System.out.println("TO DOT <"+toRangeString+">");
|
||||
if (toRangeString.length() % 2 == 0) {
|
||||
String result = toRangeString;
|
||||
toRangeString = "";
|
||||
return new Token(Token.TO, result, yyline+1, yycolumn+1-1);
|
||||
}
|
||||
}
|
||||
case 44: break;
|
||||
case 22:
|
||||
{ yybegin(EXP); numberString += yytext(); exponent = yycharat(1) - '0'; System.out.println("BEGIN EXP <"+yytext()+"> / exponent: " + exponent);
|
||||
}
|
||||
case 37: break;
|
||||
case 19:
|
||||
case 45: break;
|
||||
case 23:
|
||||
{ return new Token(Token.NULL, yytext(), yyline+1, yycolumn+1);
|
||||
}
|
||||
case 38: break;
|
||||
case 46: break;
|
||||
default:
|
||||
zzScanError(ZZ_NO_MATCH);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user