1.1 candidate

This commit is contained in:
fangyidong
2009-01-23 06:28:59 +00:00
parent af440720f8
commit 0e046d1b85
21 changed files with 1803 additions and 605 deletions

View File

@@ -28,11 +28,11 @@ class Yylex {
* Translates characters to character classes
*/
private static final String ZZ_CMAP_PACKED =
"\11\0\2\7\2\0\1\7\22\0\1\7\1\0\1\11\10\0\1\6"+
"\1\31\1\2\1\4\1\12\12\3\1\32\6\0\4\1\1\5\1\1"+
"\24\0\1\27\1\10\1\30\3\0\1\22\1\13\2\1\1\21\1\14"+
"\5\0\1\23\1\0\1\15\3\0\1\16\1\24\1\17\1\20\5\0"+
"\1\25\1\0\1\26\uff82\0";
"\11\0\1\7\1\7\2\0\1\7\22\0\1\7\1\0\1\11\10\0"+
"\1\6\1\31\1\2\1\4\1\12\12\3\1\32\6\0\4\1\1\5"+
"\1\1\24\0\1\27\1\10\1\30\3\0\1\22\1\13\2\1\1\21"+
"\1\14\5\0\1\23\1\0\1\15\3\0\1\16\1\24\1\17\1\20"+
"\5\0\1\25\1\0\1\26\uff82\0";
/**
* Translates characters to character classes
@@ -45,13 +45,14 @@ class Yylex {
private static final int [] ZZ_ACTION = zzUnpackAction();
private static final String ZZ_ACTION_PACKED_0 =
"\3\0\1\1\1\2\1\3\3\0\1\4\1\5\1\6"+
"\1\7\1\10\1\11\1\12\1\0\1\13\5\0\1\14"+
"\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\0"+
"\1\24\1\0\1\24\4\0\1\25\1\26\2\0\1\27";
"\2\0\2\1\1\2\1\3\1\4\3\1\1\5\1\6"+
"\1\7\1\10\1\11\1\12\1\13\1\14\1\15\5\0"+
"\1\14\1\16\1\17\1\20\1\21\1\22\1\23\1\24"+
"\1\0\1\25\1\0\1\25\4\0\1\26\1\27\2\0"+
"\1\30";
private static int [] zzUnpackAction() {
int [] result = new int[44];
int [] result = new int[45];
int offset = 0;
offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
return result;
@@ -70,6 +71,111 @@ class Yylex {
}
/**
* Translates a state to a row index in the transition table
*/
private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
private static final String ZZ_ROWMAP_PACKED_0 =
"\0\0\0\33\0\66\0\121\0\154\0\207\0\66\0\242"+
"\0\275\0\330\0\66\0\66\0\66\0\66\0\66\0\66"+
"\0\363\0\u010e\0\66\0\u0129\0\u0144\0\u015f\0\u017a\0\u0195"+
"\0\66\0\66\0\66\0\66\0\66\0\66\0\66\0\66"+
"\0\u01b0\0\u01cb\0\u01e6\0\u01e6\0\u0201\0\u021c\0\u0237\0\u0252"+
"\0\66\0\66\0\u026d\0\u0288\0\66";
private static int [] zzUnpackRowMap() {
int [] result = new int[45];
int offset = 0;
offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
return result;
}
private static int zzUnpackRowMap(String packed, int offset, int [] result) {
int i = 0; /* index in packed string */
int j = offset; /* index in unpacked array */
int l = packed.length();
while (i < l) {
int high = packed.charAt(i++) << 16;
result[j++] = high | packed.charAt(i++);
}
return j;
}
/**
* The transition table of the DFA
*/
private static final int ZZ_TRANS [] = {
2, 2, 3, 4, 2, 2, 2, 5, 2, 6,
2, 2, 7, 8, 2, 9, 2, 2, 2, 2,
2, 10, 11, 12, 13, 14, 15, 16, 16, 16,
16, 16, 16, 16, 16, 17, 18, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 4, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 4, 19, 20, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 20, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 5, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
21, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 22, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
23, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 16, 16, 16, 16, 16, 16, 16,
16, -1, -1, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
-1, -1, -1, -1, -1, -1, -1, -1, 24, 25,
26, 27, 28, 29, 30, 31, 32, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
33, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 34, 35, -1, -1,
34, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
36, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 37, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 38, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 39, -1, 39, -1, 39, -1, -1,
-1, -1, -1, 39, 39, -1, -1, -1, -1, 39,
39, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 33, -1, 20, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 20, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 35,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 38, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 40,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 41, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 42, -1, 42, -1, 42,
-1, -1, -1, -1, -1, 42, 42, -1, -1, -1,
-1, 42, 42, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 43, -1, 43, -1, 43, -1, -1, -1,
-1, -1, 43, 43, -1, -1, -1, -1, 43, 43,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 44,
-1, 44, -1, 44, -1, -1, -1, -1, -1, 44,
44, -1, -1, -1, -1, 44, 44, -1, -1, -1,
-1, -1, -1, -1, -1,
};
/* error codes */
private static final int ZZ_UNKNOWN_ERROR = 0;
private static final int ZZ_NO_MATCH = 1;
@@ -82,6 +188,35 @@ class Yylex {
"Error: pushback value was too large"
};
/**
* ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
*/
private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
private static final String ZZ_ATTRIBUTE_PACKED_0 =
"\2\0\1\11\3\1\1\11\3\1\6\11\2\1\1\11"+
"\5\0\10\11\1\0\1\1\1\0\1\1\4\0\2\11"+
"\2\0\1\11";
private static int [] zzUnpackAttribute() {
int [] result = new int[45];
int offset = 0;
offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
return result;
}
private static int zzUnpackAttribute(String packed, int offset, int [] result) {
int i = 0; /* index in packed string */
int j = offset; /* index in unpacked array */
int l = packed.length();
while (i < l) {
int count = packed.charAt(i++);
int value = packed.charAt(i++);
do result[j++] = value; while (--count > 0);
}
return j;
}
/** the input device */
private java.io.Reader zzReader;
@@ -131,6 +266,10 @@ class Yylex {
/* user code: */
private StringBuffer sb=new StringBuffer();
int getPosition(){
return yychar;
}
/**
@@ -163,7 +302,7 @@ private StringBuffer sb=new StringBuffer();
char [] map = new char[0x10000];
int i = 0; /* index in packed string */
int j = 0; /* index in unpacked array */
while (i < 88) {
while (i < 90) {
int count = packed.charAt(i++);
char value = packed.charAt(i++);
do map[j++] = value; while (--count > 0);
@@ -359,7 +498,7 @@ private StringBuffer sb=new StringBuffer();
* @return the next token
* @exception java.io.IOException if any I/O-Error occurs
*/
public Yytoken yylex() throws java.io.IOException {
public Yytoken yylex() throws java.io.IOException, ParseException {
int zzInput;
int zzAction;
@@ -370,10 +509,15 @@ private StringBuffer sb=new StringBuffer();
char [] zzBufferL = zzBuffer;
char [] zzCMapL = ZZ_CMAP;
int [] zzTransL = ZZ_TRANS;
int [] zzRowMapL = ZZ_ROWMAP;
int [] zzAttrL = ZZ_ATTRIBUTE;
while (true) {
zzMarkedPosL = zzMarkedPos;
yychar+= zzMarkedPosL-zzStartRead;
zzAction = -1;
zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
@@ -408,225 +552,15 @@ private StringBuffer sb=new StringBuffer();
zzInput = zzBufferL[zzCurrentPosL++];
}
}
zzInput = zzCMapL[zzInput];
int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
if (zzNext == -1) break zzForAction;
zzState = zzNext;
boolean zzIsFinal = false;
boolean zzNoLookAhead = false;
zzForNext: { switch (zzState) {
case 0:
switch (zzInput) {
case 2: zzState = 2; break zzForNext;
case 3: zzIsFinal = true; zzState = 3; break zzForNext;
case 7: zzIsFinal = true; zzState = 4; break zzForNext;
case 9: zzIsFinal = true; zzNoLookAhead = true; zzState = 5; break zzForNext;
case 12: zzState = 6; break zzForNext;
case 13: zzState = 7; break zzForNext;
case 15: zzState = 8; break zzForNext;
case 21: zzIsFinal = true; zzNoLookAhead = true; zzState = 9; break zzForNext;
case 22: zzIsFinal = true; zzNoLookAhead = true; zzState = 10; break zzForNext;
case 23: zzIsFinal = true; zzNoLookAhead = true; zzState = 11; break zzForNext;
case 24: zzIsFinal = true; zzNoLookAhead = true; zzState = 12; break zzForNext;
case 25: zzIsFinal = true; zzNoLookAhead = true; zzState = 13; break zzForNext;
case 26: zzIsFinal = true; zzNoLookAhead = true; zzState = 14; break zzForNext;
default: break zzForAction;
}
case 1:
switch (zzInput) {
case 8: zzState = 16; break zzForNext;
case 9: zzIsFinal = true; zzNoLookAhead = true; zzState = 17; break zzForNext;
default: zzIsFinal = true; zzState = 15; break zzForNext;
}
case 2:
switch (zzInput) {
case 3: zzIsFinal = true; zzState = 3; break zzForNext;
default: break zzForAction;
}
case 3:
switch (zzInput) {
case 3: zzIsFinal = true; break zzForNext;
case 4: zzState = 18; break zzForNext;
case 5:
case 17: zzState = 19; break zzForNext;
default: break zzForAction;
}
case 4:
switch (zzInput) {
case 7: zzIsFinal = true; break zzForNext;
default: break zzForAction;
}
case 6:
switch (zzInput) {
case 18: zzState = 20; break zzForNext;
default: break zzForAction;
}
case 7:
switch (zzInput) {
case 16: zzState = 21; break zzForNext;
default: break zzForAction;
}
case 8:
switch (zzInput) {
case 14: zzState = 22; break zzForNext;
default: break zzForAction;
}
case 15:
switch (zzInput) {
case 8:
case 9: break zzForAction;
default: zzIsFinal = true; break zzForNext;
}
case 16:
switch (zzInput) {
case 8: zzIsFinal = true; zzNoLookAhead = true; zzState = 23; break zzForNext;
case 9: zzIsFinal = true; zzNoLookAhead = true; zzState = 24; break zzForNext;
case 10: zzIsFinal = true; zzNoLookAhead = true; zzState = 25; break zzForNext;
case 11: zzIsFinal = true; zzNoLookAhead = true; zzState = 26; break zzForNext;
case 12: zzIsFinal = true; zzNoLookAhead = true; zzState = 27; break zzForNext;
case 13: zzIsFinal = true; zzNoLookAhead = true; zzState = 28; break zzForNext;
case 14: zzIsFinal = true; zzNoLookAhead = true; zzState = 29; break zzForNext;
case 15: zzIsFinal = true; zzNoLookAhead = true; zzState = 30; break zzForNext;
case 16: zzState = 31; break zzForNext;
default: break zzForAction;
}
case 18:
switch (zzInput) {
case 3: zzIsFinal = true; zzState = 32; break zzForNext;
default: break zzForAction;
}
case 19:
switch (zzInput) {
case 2:
case 6: zzState = 33; break zzForNext;
case 3: zzIsFinal = true; zzState = 34; break zzForNext;
default: break zzForAction;
}
case 20:
switch (zzInput) {
case 19: zzState = 35; break zzForNext;
default: break zzForAction;
}
case 21:
switch (zzInput) {
case 19: zzState = 36; break zzForNext;
default: break zzForAction;
}
case 22:
switch (zzInput) {
case 16: zzState = 37; break zzForNext;
default: break zzForAction;
}
case 31:
switch (zzInput) {
case 1:
case 3:
case 5:
case 11:
case 12:
case 17:
case 18: zzState = 38; break zzForNext;
default: break zzForAction;
}
case 32:
switch (zzInput) {
case 5:
case 17: zzState = 19; break zzForNext;
case 3: zzIsFinal = true; break zzForNext;
default: break zzForAction;
}
case 33:
switch (zzInput) {
case 3: zzIsFinal = true; zzState = 34; break zzForNext;
default: break zzForAction;
}
case 34:
switch (zzInput) {
case 3: zzIsFinal = true; break zzForNext;
default: break zzForAction;
}
case 35:
switch (zzInput) {
case 20: zzState = 37; break zzForNext;
default: break zzForAction;
}
case 36:
switch (zzInput) {
case 19: zzIsFinal = true; zzNoLookAhead = true; zzState = 39; break zzForNext;
default: break zzForAction;
}
case 37:
switch (zzInput) {
case 17: zzIsFinal = true; zzNoLookAhead = true; zzState = 40; break zzForNext;
default: break zzForAction;
}
case 38:
switch (zzInput) {
case 1:
case 3:
case 5:
case 11:
case 12:
case 17:
case 18: zzState = 41; break zzForNext;
default: break zzForAction;
}
case 41:
switch (zzInput) {
case 1:
case 3:
case 5:
case 11:
case 12:
case 17:
case 18: zzState = 42; break zzForNext;
default: break zzForAction;
}
case 42:
switch (zzInput) {
case 1:
case 3:
case 5:
case 11:
case 12:
case 17:
case 18: zzIsFinal = true; zzNoLookAhead = true; zzState = 43; break zzForNext;
default: break zzForAction;
}
default:
// if this is ever reached, there is a serious bug in JFlex
zzScanError(ZZ_UNKNOWN_ERROR);
break;
} }
if ( zzIsFinal ) {
int zzAttributes = zzAttrL[zzState];
if ( (zzAttributes & 1) == 1 ) {
zzAction = zzState;
zzMarkedPosL = zzCurrentPosL;
if ( zzNoLookAhead ) break zzForAction;
if ( (zzAttributes & 8) == 8 ) break zzForAction;
}
}
@@ -636,99 +570,108 @@ private StringBuffer sb=new StringBuffer();
zzMarkedPos = zzMarkedPosL;
switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
case 10:
case 11:
{ sb.append(yytext());
}
case 24: break;
case 3:
case 25: break;
case 4:
{ sb.delete(0, sb.length());yybegin(STRING_BEGIN);
}
case 25: break;
case 15:
case 26: break;
case 16:
{ sb.append('\b');
}
case 26: break;
case 5:
case 27: break;
case 6:
{ return new Yytoken(Yytoken.TYPE_RIGHT_BRACE,null);
}
case 27: break;
case 28: break;
case 23:
{ Boolean val=Boolean.valueOf(yytext()); return new Yytoken(Yytoken.TYPE_VALUE, val);
}
case 29: break;
case 22:
{ return new Yytoken(Yytoken.TYPE_VALUE, null);
}
case 30: break;
case 13:
{ yybegin(YYINITIAL);return new Yytoken(Yytoken.TYPE_VALUE, sb.toString());
}
case 31: break;
case 12:
{ sb.append('\\');
}
case 28: break;
case 20:
{ Double val=Double.valueOf(yytext()); return new Yytoken(Yytoken.TYPE_VALUE,val);
}
case 29: break;
case 1:
{ Long val=Long.valueOf(yytext()); return new Yytoken(Yytoken.TYPE_VALUE,val);
}
case 30: break;
case 7:
{ return new Yytoken(Yytoken.TYPE_RIGHT_SQUARE,null);
}
case 31: break;
case 18:
{ sb.append('\r');
}
case 32: break;
case 21:
{ return new Yytoken(Yytoken.TYPE_VALUE,null);
{ Double val=Double.valueOf(yytext()); return new Yytoken(Yytoken.TYPE_VALUE, val);
}
case 33: break;
case 14:
{ sb.append('/');
case 1:
{ throw new ParseException(yychar, ParseException.ERROR_UNEXPECTED_CHAR, new Character(yycharat(0)));
}
case 34: break;
case 9:
{ return new Yytoken(Yytoken.TYPE_COLON,null);
case 8:
{ return new Yytoken(Yytoken.TYPE_RIGHT_SQUARE,null);
}
case 35: break;
case 11:
{ yybegin(YYINITIAL);return new Yytoken(Yytoken.TYPE_VALUE,sb.toString());
case 19:
{ sb.append('\r');
}
case 36: break;
case 13:
{ sb.append('"');
case 15:
{ sb.append('/');
}
case 37: break;
case 4:
{ return new Yytoken(Yytoken.TYPE_LEFT_BRACE,null);
case 10:
{ return new Yytoken(Yytoken.TYPE_COLON,null);
}
case 38: break;
case 16:
{ sb.append('\f');
case 14:
{ sb.append('"');
}
case 39: break;
case 19:
{ sb.append('\t');
case 5:
{ return new Yytoken(Yytoken.TYPE_LEFT_BRACE,null);
}
case 40: break;
case 6:
{ return new Yytoken(Yytoken.TYPE_LEFT_SQUARE,null);
case 17:
{ sb.append('\f');
}
case 41: break;
case 23:
{ int ch=Integer.parseInt(yytext().substring(2),16);
sb.append((char)ch);
case 24:
{ try{
int ch=Integer.parseInt(yytext().substring(2),16);
sb.append((char)ch);
}
catch(Exception e){
throw new ParseException(yychar, ParseException.ERROR_UNEXPECTED_EXCEPTION, e);
}
}
case 42: break;
case 22:
{ Boolean val=Boolean.valueOf(yytext()); return new Yytoken(Yytoken.TYPE_VALUE,val);
case 20:
{ sb.append('\t');
}
case 43: break;
case 17:
{ sb.append('\n');
case 7:
{ return new Yytoken(Yytoken.TYPE_LEFT_SQUARE,null);
}
case 44: break;
case 8:
{ return new Yytoken(Yytoken.TYPE_COMMA,null);
case 2:
{ Long val=Long.valueOf(yytext()); return new Yytoken(Yytoken.TYPE_VALUE, val);
}
case 45: break;
case 2:
{
case 18:
{ sb.append('\n');
}
case 46: break;
case 9:
{ return new Yytoken(Yytoken.TYPE_COMMA,null);
}
case 47: break;
case 3:
{
}
case 48: break;
default:
if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
zzAtEOF = true;