Esempio n. 1
0
	public static Token Scan() {
		while (ignore[ch]) NextCh();
		if (ch == '/' && Comment0()  || ch == '/' && Comment1() ) return Scan();
		t = new Token();
		t.pos = pos; t.col = pos - lineStart + 1; t.line = line; t.filename = Filename;
		int state = start[ch];
		StringBuilder buf = new StringBuilder(16);
		buf.Append(ch); NextCh();
		
		switch (state) {
			case 0: {t.kind = noSym; goto done;} // NextCh already done
			case 1:
				if ((ch >= '0' && ch <= '9' || ch >= 'A' && ch <= 'Z' || ch >= '_' && ch <= 'z')) {buf.Append(ch); NextCh(); goto case 1;}
				else {t.kind = 1; t.val = buf.ToString(); CheckLiteral(); return t;}
			case 2:
				if ((ch >= '0' && ch <= '9')) {buf.Append(ch); NextCh(); goto case 2;}
				else {t.kind = 2; goto done;}
			case 3:
				if ((ch == '"')) {buf.Append(ch); NextCh(); goto case 4;}
				else if ((ch >= 9 && ch <= 10 || ch == 13 || ch >= ' ' && ch <= '!' || ch >= '#' && ch <= '[' || ch >= ']' && ch <= '~')) {buf.Append(ch); NextCh(); goto case 3;}
				else {t.kind = noSym; goto done;}
			case 4:
				{t.kind = 3; goto done;}
			case 5:
				if ((ch == 39)) {buf.Append(ch); NextCh(); goto case 8;}
				else {t.kind = noSym; goto done;}
			case 6:
				if ((ch >= '0' && ch <= '9')) {buf.Append(ch); NextCh(); goto case 7;}
				else {t.kind = noSym; goto done;}
			case 7:
				if ((ch == 39)) {buf.Append(ch); NextCh(); goto case 8;}
				else if ((ch >= '0' && ch <= '9')) {buf.Append(ch); NextCh(); goto case 7;}
				else {t.kind = noSym; goto done;}
			case 8:
				{t.kind = 4; goto done;}
			case 9:
				{t.kind = 5; goto done;}
			case 10:
				if (!(ch == 92)) {buf.Append(ch); NextCh(); goto case 5;}
				else if ((ch == 92)) {buf.Append(ch); NextCh(); goto case 11;}
				else {t.kind = noSym; goto done;}
			case 11:
				if ((ch == 39)) {buf.Append(ch); NextCh(); goto case 8;}
				else if (ch == 'u') {buf.Append(ch); NextCh(); goto case 6;}
				else {t.kind = noSym; goto done;}
			case 12:
				if (ch == '|') {buf.Append(ch); NextCh(); goto case 173;}
				else {t.kind = 22; goto done;}
			case 13:
				{t.kind = 23; goto done;}
			case 14:
				{t.kind = 24; goto done;}
			case 15:
				if (ch == 't') {buf.Append(ch); NextCh(); goto case 16;}
				else if (ch == 'm') {buf.Append(ch); NextCh(); goto case 25;}
				else if (ch == 'w') {buf.Append(ch); NextCh(); goto case 48;}
				else if (ch == 'c') {buf.Append(ch); NextCh(); goto case 60;}
				else if (ch == 'i') {buf.Append(ch); NextCh(); goto case 80;}
				else if (ch == 'b') {buf.Append(ch); NextCh(); goto case 83;}
				else if (ch == 'u') {buf.Append(ch); NextCh(); goto case 86;}
				else if (ch == 'r') {buf.Append(ch); NextCh(); goto case 91;}
				else if (ch == 'A') {buf.Append(ch); NextCh(); goto case 95;}
				else if (ch == 'D') {buf.Append(ch); NextCh(); goto case 106;}
				else if (ch == 'I') {buf.Append(ch); NextCh(); goto case 111;}
				else if (ch == '_') {buf.Append(ch); NextCh(); goto case 135;}
				else if (ch == 'd') {buf.Append(ch); NextCh(); goto case 197;}
				else if (ch == 'C') {buf.Append(ch); NextCh(); goto case 212;}
				else if (ch == 'L') {buf.Append(ch); NextCh(); goto case 227;}
				else {t.kind = 55; goto done;}
			case 16:
				if (ch == 'y') {buf.Append(ch); NextCh(); goto case 17;}
				else {t.kind = noSym; goto done;}
			case 17:
				if (ch == 'p') {buf.Append(ch); NextCh(); goto case 18;}
				else {t.kind = noSym; goto done;}
			case 18:
				if (ch == 'e') {buf.Append(ch); NextCh(); goto case 19;}
				else {t.kind = noSym; goto done;}
			case 19:
				if (ch == 'P') {buf.Append(ch); NextCh(); goto case 20;}
				else if (ch == 't') {buf.Append(ch); NextCh(); goto case 66;}
				else if (ch == 'o') {buf.Append(ch); NextCh(); goto case 78;}
				else {t.kind = noSym; goto done;}
			case 20:
				if (ch == 'a') {buf.Append(ch); NextCh(); goto case 21;}
				else {t.kind = noSym; goto done;}
			case 21:
				if (ch == 'r') {buf.Append(ch); NextCh(); goto case 22;}
				else {t.kind = noSym; goto done;}
			case 22:
				if (ch == 'a') {buf.Append(ch); NextCh(); goto case 23;}
				else {t.kind = noSym; goto done;}
			case 23:
				if (ch == 'm') {buf.Append(ch); NextCh(); goto case 24;}
				else {t.kind = noSym; goto done;}
			case 24:
				{t.kind = 25; goto done;}
			case 25:
				if (ch == 'e') {buf.Append(ch); NextCh(); goto case 26;}
				else {t.kind = noSym; goto done;}
			case 26:
				if (ch == 't') {buf.Append(ch); NextCh(); goto case 27;}
				else {t.kind = noSym; goto done;}
			case 27:
				if (ch == 'h') {buf.Append(ch); NextCh(); goto case 28;}
				else {t.kind = noSym; goto done;}
			case 28:
				if (ch == 'o') {buf.Append(ch); NextCh(); goto case 29;}
				else {t.kind = noSym; goto done;}
			case 29:
				if (ch == 'd') {buf.Append(ch); NextCh(); goto case 30;}
				else {t.kind = noSym; goto done;}
			case 30:
				if (ch == 'T') {buf.Append(ch); NextCh(); goto case 31;}
				else {t.kind = noSym; goto done;}
			case 31:
				if (ch == 'y') {buf.Append(ch); NextCh(); goto case 32;}
				else {t.kind = noSym; goto done;}
			case 32:
				if (ch == 'p') {buf.Append(ch); NextCh(); goto case 33;}
				else {t.kind = noSym; goto done;}
			case 33:
				if (ch == 'e') {buf.Append(ch); NextCh(); goto case 34;}
				else {t.kind = noSym; goto done;}
			case 34:
				if (ch == 'P') {buf.Append(ch); NextCh(); goto case 35;}
				else {t.kind = noSym; goto done;}
			case 35:
				if (ch == 'a') {buf.Append(ch); NextCh(); goto case 36;}
				else {t.kind = noSym; goto done;}
			case 36:
				if (ch == 'r') {buf.Append(ch); NextCh(); goto case 37;}
				else {t.kind = noSym; goto done;}
			case 37:
				if (ch == 'a') {buf.Append(ch); NextCh(); goto case 38;}
				else {t.kind = noSym; goto done;}
			case 38:
				if (ch == 'm') {buf.Append(ch); NextCh(); goto case 39;}
				else {t.kind = noSym; goto done;}
			case 39:
				{t.kind = 26; goto done;}
			case 40:
				if (ch == '&') {buf.Append(ch); NextCh(); goto case 183;}
				else {t.kind = 27; goto done;}
			case 41:
				{t.kind = 28; goto done;}
			case 42:
				{t.kind = 29; goto done;}
			case 43:
				{t.kind = 30; goto done;}
			case 44:
				if (ch == '=') {buf.Append(ch); NextCh(); goto case 176;}
				else if (ch == '<') {buf.Append(ch); NextCh(); goto case 192;}
				else {t.kind = 31; goto done;}
			case 45:
				if (ch == '=') {buf.Append(ch); NextCh(); goto case 177;}
				else {t.kind = 32; goto done;}
			case 46:
				if (ch == 'c') {buf.Append(ch); NextCh(); goto case 131;}
				else {t.kind = 33; goto done;}
			case 47:
				if (ch == ':') {buf.Append(ch); NextCh(); goto case 94;}
				else {t.kind = 34; goto done;}
			case 48:
				if (ch == 'e') {buf.Append(ch); NextCh(); goto case 49;}
				else {t.kind = noSym; goto done;}
			case 49:
				if (ch == 'i') {buf.Append(ch); NextCh(); goto case 50;}
				else {t.kind = noSym; goto done;}
			case 50:
				if (ch == 'r') {buf.Append(ch); NextCh(); goto case 51;}
				else {t.kind = noSym; goto done;}
			case 51:
				if (ch == 'd') {buf.Append(ch); NextCh(); goto case 52;}
				else {t.kind = noSym; goto done;}
			case 52:
				if (ch == 'I') {buf.Append(ch); NextCh(); goto case 53;}
				else {t.kind = noSym; goto done;}
			case 53:
				if (ch == 'd') {buf.Append(ch); NextCh(); goto case 54;}
				else {t.kind = noSym; goto done;}
			case 54:
				if (ch == 'e') {buf.Append(ch); NextCh(); goto case 55;}
				else {t.kind = noSym; goto done;}
			case 55:
				if (ch == 'n') {buf.Append(ch); NextCh(); goto case 56;}
				else {t.kind = noSym; goto done;}
			case 56:
				if (ch == 't') {buf.Append(ch); NextCh(); goto case 57;}
				else {t.kind = noSym; goto done;}
			case 57:
				{t.kind = 35; goto done;}
			case 58:
				{t.kind = 36; goto done;}
			case 59:
				{t.kind = 37; goto done;}
			case 60:
				if (ch == 'o') {buf.Append(ch); NextCh(); goto case 61;}
				else if (ch == 'a') {buf.Append(ch); NextCh(); goto case 70;}
				else {t.kind = noSym; goto done;}
			case 61:
				if (ch == 'e') {buf.Append(ch); NextCh(); goto case 62;}
				else {t.kind = noSym; goto done;}
			case 62:
				if (ch == 'r') {buf.Append(ch); NextCh(); goto case 63;}
				else {t.kind = noSym; goto done;}
			case 63:
				if (ch == 'c') {buf.Append(ch); NextCh(); goto case 64;}
				else {t.kind = noSym; goto done;}
			case 64:
				if (ch == 'e') {buf.Append(ch); NextCh(); goto case 65;}
				else {t.kind = noSym; goto done;}
			case 65:
				{t.kind = 39; goto done;}
			case 66:
				if (ch == 'e') {buf.Append(ch); NextCh(); goto case 67;}
				else {t.kind = noSym; goto done;}
			case 67:
				if (ch == 's') {buf.Append(ch); NextCh(); goto case 68;}
				else {t.kind = noSym; goto done;}
			case 68:
				if (ch == 't') {buf.Append(ch); NextCh(); goto case 69;}
				else {t.kind = noSym; goto done;}
			case 69:
				{t.kind = 40; goto done;}
			case 70:
				if (ch == 's') {buf.Append(ch); NextCh(); goto case 71;}
				else {t.kind = noSym; goto done;}
			case 71:
				if (ch == 't') {buf.Append(ch); NextCh(); goto case 72;}
				else {t.kind = noSym; goto done;}
			case 72:
				if (ch == 'c') {buf.Append(ch); NextCh(); goto case 73;}
				else {t.kind = noSym; goto done;}
			case 73:
				if (ch == 'l') {buf.Append(ch); NextCh(); goto case 74;}
				else {t.kind = noSym; goto done;}
			case 74:
				if (ch == 'a') {buf.Append(ch); NextCh(); goto case 75;}
				else {t.kind = noSym; goto done;}
			case 75:
				if (ch == 's') {buf.Append(ch); NextCh(); goto case 76;}
				else {t.kind = noSym; goto done;}
			case 76:
				if (ch == 's') {buf.Append(ch); NextCh(); goto case 77;}
				else {t.kind = noSym; goto done;}
			case 77:
				{t.kind = 41; goto done;}
			case 78:
				if (ch == 'f') {buf.Append(ch); NextCh(); goto case 79;}
				else {t.kind = noSym; goto done;}
			case 79:
				{t.kind = 42; goto done;}
			case 80:
				if (ch == 't') {buf.Append(ch); NextCh(); goto case 81;}
				else {t.kind = noSym; goto done;}
			case 81:
				if (ch == 'e') {buf.Append(ch); NextCh(); goto case 82;}
				else {t.kind = noSym; goto done;}
			case 82:
				{t.kind = 43; goto done;}
			case 83:
				if (ch == 'o') {buf.Append(ch); NextCh(); goto case 84;}
				else if (ch == 'l') {buf.Append(ch); NextCh(); goto case 124;}
				else {t.kind = noSym; goto done;}
			case 84:
				if (ch == 'x') {buf.Append(ch); NextCh(); goto case 85;}
				else {t.kind = noSym; goto done;}
			case 85:
				{t.kind = 44; goto done;}
			case 86:
				if (ch == 'n') {buf.Append(ch); NextCh(); goto case 87;}
				else {t.kind = noSym; goto done;}
			case 87:
				if (ch == 'b') {buf.Append(ch); NextCh(); goto case 88;}
				else {t.kind = noSym; goto done;}
			case 88:
				if (ch == 'o') {buf.Append(ch); NextCh(); goto case 89;}
				else {t.kind = noSym; goto done;}
			case 89:
				if (ch == 'x') {buf.Append(ch); NextCh(); goto case 90;}
				else {t.kind = noSym; goto done;}
			case 90:
				if (ch == 'A') {buf.Append(ch); NextCh(); goto case 209;}
				else {t.kind = 45; goto done;}
			case 91:
				if (ch == 'e') {buf.Append(ch); NextCh(); goto case 92;}
				else {t.kind = noSym; goto done;}
			case 92:
				if (ch == 'f') {buf.Append(ch); NextCh(); goto case 93;}
				else {t.kind = noSym; goto done;}
			case 93:
				{t.kind = 46; goto done;}
			case 94:
				{t.kind = 47; goto done;}
			case 95:
				if (ch == 'd') {buf.Append(ch); NextCh(); goto case 96;}
				else {t.kind = noSym; goto done;}
			case 96:
				if (ch == 'd') {buf.Append(ch); NextCh(); goto case 97;}
				else {t.kind = noSym; goto done;}
			case 97:
				if (ch == 'r') {buf.Append(ch); NextCh(); goto case 98;}
				else {t.kind = noSym; goto done;}
			case 98:
				if (ch == 'e') {buf.Append(ch); NextCh(); goto case 99;}
				else {t.kind = noSym; goto done;}
			case 99:
				if (ch == 's') {buf.Append(ch); NextCh(); goto case 100;}
				else {t.kind = noSym; goto done;}
			case 100:
				if (ch == 's') {buf.Append(ch); NextCh(); goto case 101;}
				else {t.kind = noSym; goto done;}
			case 101:
				if (ch == 'O') {buf.Append(ch); NextCh(); goto case 102;}
				else {t.kind = noSym; goto done;}
			case 102:
				if (ch == 'f') {buf.Append(ch); NextCh(); goto case 103;}
				else {t.kind = noSym; goto done;}
			case 103:
				{t.kind = 48; goto done;}
			case 104:
				if (ch == '|') {buf.Append(ch); NextCh(); goto case 169;}
				else {t.kind = 49; goto done;}
			case 105:
				{t.kind = 50; goto done;}
			case 106:
				if (ch == 'e') {buf.Append(ch); NextCh(); goto case 107;}
				else {t.kind = noSym; goto done;}
			case 107:
				if (ch == 'r') {buf.Append(ch); NextCh(); goto case 108;}
				else {t.kind = noSym; goto done;}
			case 108:
				if (ch == 'e') {buf.Append(ch); NextCh(); goto case 109;}
				else {t.kind = noSym; goto done;}
			case 109:
				if (ch == 'f') {buf.Append(ch); NextCh(); goto case 110;}
				else {t.kind = noSym; goto done;}
			case 110:
				{t.kind = 51; goto done;}
			case 111:
				if (ch == 's') {buf.Append(ch); NextCh(); goto case 112;}
				else {t.kind = noSym; goto done;}
			case 112:
				if (ch == 'i') {buf.Append(ch); NextCh(); goto case 113;}
				else {t.kind = noSym; goto done;}
			case 113:
				if (ch == 'n') {buf.Append(ch); NextCh(); goto case 114;}
				else {t.kind = noSym; goto done;}
			case 114:
				if (ch == 's') {buf.Append(ch); NextCh(); goto case 115;}
				else {t.kind = noSym; goto done;}
			case 115:
				if (ch == 't') {buf.Append(ch); NextCh(); goto case 116;}
				else {t.kind = noSym; goto done;}
			case 116:
				{t.kind = 52; goto done;}
			case 117:
				if (ch == 'I') {buf.Append(ch); NextCh(); goto case 118;}
				else {t.kind = 89; goto done;}
			case 118:
				if (ch == 's') {buf.Append(ch); NextCh(); goto case 119;}
				else {t.kind = noSym; goto done;}
			case 119:
				if (ch == 'i') {buf.Append(ch); NextCh(); goto case 120;}
				else {t.kind = noSym; goto done;}
			case 120:
				if (ch == 'n') {buf.Append(ch); NextCh(); goto case 121;}
				else {t.kind = noSym; goto done;}
			case 121:
				if (ch == 's') {buf.Append(ch); NextCh(); goto case 122;}
				else {t.kind = noSym; goto done;}
			case 122:
				if (ch == 't') {buf.Append(ch); NextCh(); goto case 123;}
				else {t.kind = noSym; goto done;}
			case 123:
				{t.kind = 53; goto done;}
			case 124:
				if (ch == 'o') {buf.Append(ch); NextCh(); goto case 125;}
				else {t.kind = noSym; goto done;}
			case 125:
				if (ch == 'c') {buf.Append(ch); NextCh(); goto case 126;}
				else {t.kind = noSym; goto done;}
			case 126:
				if (ch == 'k') {buf.Append(ch); NextCh(); goto case 127;}
				else {t.kind = noSym; goto done;}
			case 127:
				if (ch == 'V') {buf.Append(ch); NextCh(); goto case 128;}
				else {t.kind = noSym; goto done;}
			case 128:
				if (ch == 'a') {buf.Append(ch); NextCh(); goto case 129;}
				else {t.kind = noSym; goto done;}
			case 129:
				if (ch == 'r') {buf.Append(ch); NextCh(); goto case 130;}
				else {t.kind = noSym; goto done;}
			case 130:
				{t.kind = 54; goto done;}
			case 131:
				if (ch == 't') {buf.Append(ch); NextCh(); goto case 132;}
				else {t.kind = noSym; goto done;}
			case 132:
				if (ch == 'o') {buf.Append(ch); NextCh(); goto case 133;}
				else {t.kind = noSym; goto done;}
			case 133:
				if (ch == 'r') {buf.Append(ch); NextCh(); goto case 134;}
				else {t.kind = noSym; goto done;}
			case 134:
				{t.kind = 56; goto done;}
			case 135:
				if (ch == 'f') {buf.Append(ch); NextCh(); goto case 136;}
				else if (ch == 'e') {buf.Append(ch); NextCh(); goto case 142;}
				else if (ch == 'c') {buf.Append(ch); NextCh(); goto case 149;}
				else if (ch == 'm') {buf.Append(ch); NextCh(); goto case 154;}
				else if (ch == 'p') {buf.Append(ch); NextCh(); goto case 159;}
				else if (ch == 's') {buf.Append(ch); NextCh(); goto case 166;}
				else {t.kind = noSym; goto done;}
			case 136:
				if (ch == 'o') {buf.Append(ch); NextCh(); goto case 137;}
				else {t.kind = noSym; goto done;}
			case 137:
				if (ch == 'r') {buf.Append(ch); NextCh(); goto case 138;}
				else {t.kind = noSym; goto done;}
			case 138:
				if (ch == 'a') {buf.Append(ch); NextCh(); goto case 139;}
				else {t.kind = noSym; goto done;}
			case 139:
				if (ch == 'l') {buf.Append(ch); NextCh(); goto case 140;}
				else {t.kind = noSym; goto done;}
			case 140:
				if (ch == 'l') {buf.Append(ch); NextCh(); goto case 141;}
				else {t.kind = noSym; goto done;}
			case 141:
				{t.kind = 57; goto done;}
			case 142:
				if (ch == 'x') {buf.Append(ch); NextCh(); goto case 143;}
				else {t.kind = noSym; goto done;}
			case 143:
				if (ch == 'i') {buf.Append(ch); NextCh(); goto case 144;}
				else {t.kind = noSym; goto done;}
			case 144:
				if (ch == 's') {buf.Append(ch); NextCh(); goto case 145;}
				else {t.kind = noSym; goto done;}
			case 145:
				if (ch == 't') {buf.Append(ch); NextCh(); goto case 146;}
				else {t.kind = noSym; goto done;}
			case 146:
				if (ch == 's') {buf.Append(ch); NextCh(); goto case 147;}
				else {t.kind = noSym; goto done;}
			case 147:
				if (ch == '1') {buf.Append(ch); NextCh(); goto case 148;}
				else {t.kind = 58; goto done;}
			case 148:
				{t.kind = 59; goto done;}
			case 149:
				if (ch == 'o') {buf.Append(ch); NextCh(); goto case 150;}
				else {t.kind = noSym; goto done;}
			case 150:
				if (ch == 'u') {buf.Append(ch); NextCh(); goto case 151;}
				else {t.kind = noSym; goto done;}
			case 151:
				if (ch == 'n') {buf.Append(ch); NextCh(); goto case 152;}
				else {t.kind = noSym; goto done;}
			case 152:
				if (ch == 't') {buf.Append(ch); NextCh(); goto case 153;}
				else {t.kind = noSym; goto done;}
			case 153:
				{t.kind = 60; goto done;}
			case 154:
				if (ch == 'a') {buf.Append(ch); NextCh(); goto case 155;}
				else if (ch == 'i') {buf.Append(ch); NextCh(); goto case 157;}
				else {t.kind = noSym; goto done;}
			case 155:
				if (ch == 'x') {buf.Append(ch); NextCh(); goto case 156;}
				else {t.kind = noSym; goto done;}
			case 156:
				{t.kind = 61; goto done;}
			case 157:
				if (ch == 'n') {buf.Append(ch); NextCh(); goto case 158;}
				else {t.kind = noSym; goto done;}
			case 158:
				{t.kind = 62; goto done;}
			case 159:
				if (ch == 'r') {buf.Append(ch); NextCh(); goto case 160;}
				else {t.kind = noSym; goto done;}
			case 160:
				if (ch == 'o') {buf.Append(ch); NextCh(); goto case 161;}
				else {t.kind = noSym; goto done;}
			case 161:
				if (ch == 'd') {buf.Append(ch); NextCh(); goto case 162;}
				else {t.kind = noSym; goto done;}
			case 162:
				if (ch == 'u') {buf.Append(ch); NextCh(); goto case 163;}
				else {t.kind = noSym; goto done;}
			case 163:
				if (ch == 'c') {buf.Append(ch); NextCh(); goto case 164;}
				else {t.kind = noSym; goto done;}
			case 164:
				if (ch == 't') {buf.Append(ch); NextCh(); goto case 165;}
				else {t.kind = noSym; goto done;}
			case 165:
				{t.kind = 63; goto done;}
			case 166:
				if (ch == 'u') {buf.Append(ch); NextCh(); goto case 167;}
				else {t.kind = noSym; goto done;}
			case 167:
				if (ch == 'm') {buf.Append(ch); NextCh(); goto case 168;}
				else {t.kind = noSym; goto done;}
			case 168:
				{t.kind = 64; goto done;}
			case 169:
				{t.kind = 65; goto done;}
			case 170:
				{t.kind = 66; goto done;}
			case 171:
				if (ch == '}') {buf.Append(ch); NextCh(); goto case 172;}
				else if (ch == ')') {buf.Append(ch); NextCh(); goto case 174;}
				else if (ch == '|') {buf.Append(ch); NextCh(); goto case 182;}
				else {t.kind = 85; goto done;}
			case 172:
				{t.kind = 67; goto done;}
			case 173:
				{t.kind = 68; goto done;}
			case 174:
				{t.kind = 69; goto done;}
			case 175:
				{t.kind = 70; goto done;}
			case 176:
				if (ch == '=') {buf.Append(ch); NextCh(); goto case 185;}
				else {t.kind = 76; goto done;}
			case 177:
				{t.kind = 77; goto done;}
			case 178:
				if (ch == '=') {buf.Append(ch); NextCh(); goto case 179;}
				else {t.kind = noSym; goto done;}
			case 179:
				if (ch == '>') {buf.Append(ch); NextCh(); goto case 184;}
				else {t.kind = 78; goto done;}
			case 180:
				if (ch == '=') {buf.Append(ch); NextCh(); goto case 181;}
				else {t.kind = 82; goto done;}
			case 181:
				{t.kind = 79; goto done;}
			case 182:
				{t.kind = 80; goto done;}
			case 183:
				{t.kind = 81; goto done;}
			case 184:
				{t.kind = 83; goto done;}
			case 185:
				if (ch == '>') {buf.Append(ch); NextCh(); goto case 186;}
				else {t.kind = noSym; goto done;}
			case 186:
				{t.kind = 84; goto done;}
			case 187:
				{t.kind = 86; goto done;}
			case 188:
				{t.kind = 87; goto done;}
			case 189:
				{t.kind = 88; goto done;}
			case 190:
				{t.kind = 90; goto done;}
			case 191:
				{t.kind = 91; goto done;}
			case 192:
				{t.kind = 92; goto done;}
			case 193:
				if (ch == '>') {buf.Append(ch); NextCh(); goto case 194;}
				else {t.kind = noSym; goto done;}
			case 194:
				{t.kind = 93; goto done;}
			case 195:
				if (ch == '>') {buf.Append(ch); NextCh(); goto case 196;}
				else {t.kind = noSym; goto done;}
			case 196:
				{t.kind = 94; goto done;}
			case 197:
				if (ch == 'e') {buf.Append(ch); NextCh(); goto case 198;}
				else {t.kind = noSym; goto done;}
			case 198:
				if (ch == 'f') {buf.Append(ch); NextCh(); goto case 199;}
				else {t.kind = noSym; goto done;}
			case 199:
				if (ch == 'a') {buf.Append(ch); NextCh(); goto case 200;}
				else {t.kind = noSym; goto done;}
			case 200:
				if (ch == 'u') {buf.Append(ch); NextCh(); goto case 201;}
				else {t.kind = noSym; goto done;}
			case 201:
				if (ch == 'l') {buf.Append(ch); NextCh(); goto case 202;}
				else {t.kind = noSym; goto done;}
			case 202:
				if (ch == 't') {buf.Append(ch); NextCh(); goto case 203;}
				else {t.kind = noSym; goto done;}
			case 203:
				if (ch == 'V') {buf.Append(ch); NextCh(); goto case 204;}
				else {t.kind = noSym; goto done;}
			case 204:
				if (ch == 'a') {buf.Append(ch); NextCh(); goto case 205;}
				else {t.kind = noSym; goto done;}
			case 205:
				if (ch == 'l') {buf.Append(ch); NextCh(); goto case 206;}
				else {t.kind = noSym; goto done;}
			case 206:
				if (ch == 'u') {buf.Append(ch); NextCh(); goto case 207;}
				else {t.kind = noSym; goto done;}
			case 207:
				if (ch == 'e') {buf.Append(ch); NextCh(); goto case 208;}
				else {t.kind = noSym; goto done;}
			case 208:
				{t.kind = 95; goto done;}
			case 209:
				if (ch == 'n') {buf.Append(ch); NextCh(); goto case 210;}
				else {t.kind = noSym; goto done;}
			case 210:
				if (ch == 'y') {buf.Append(ch); NextCh(); goto case 211;}
				else {t.kind = noSym; goto done;}
			case 211:
				{t.kind = 96; goto done;}
			case 212:
				if (ch == 'o') {buf.Append(ch); NextCh(); goto case 213;}
				else {t.kind = noSym; goto done;}
			case 213:
				if (ch == 'n') {buf.Append(ch); NextCh(); goto case 214;}
				else {t.kind = noSym; goto done;}
			case 214:
				if (ch == 'v') {buf.Append(ch); NextCh(); goto case 215;}
				else {t.kind = noSym; goto done;}
			case 215:
				if (ch == '_') {buf.Append(ch); NextCh(); goto case 216;}
				else {t.kind = noSym; goto done;}
			case 216:
				if (ch == 'I') {buf.Append(ch); NextCh(); goto case 217;}
				else if (ch == 'U') {buf.Append(ch); NextCh(); goto case 222;}
				else {t.kind = noSym; goto done;}
			case 217:
				if (ch == '1') {buf.Append(ch); NextCh(); goto case 218;}
				else if (ch == '2') {buf.Append(ch); NextCh(); goto case 219;}
				else if (ch == '4') {buf.Append(ch); NextCh(); goto case 220;}
				else if (ch == '8') {buf.Append(ch); NextCh(); goto case 221;}
				else {t.kind = 101; goto done;}
			case 218:
				{t.kind = 97; goto done;}
			case 219:
				{t.kind = 98; goto done;}
			case 220:
				{t.kind = 99; goto done;}
			case 221:
				{t.kind = 100; goto done;}
			case 222:
				if (ch == '1') {buf.Append(ch); NextCh(); goto case 223;}
				else if (ch == '2') {buf.Append(ch); NextCh(); goto case 224;}
				else if (ch == '4') {buf.Append(ch); NextCh(); goto case 225;}
				else if (ch == '8') {buf.Append(ch); NextCh(); goto case 226;}
				else {t.kind = 106; goto done;}
			case 223:
				{t.kind = 102; goto done;}
			case 224:
				{t.kind = 103; goto done;}
			case 225:
				{t.kind = 104; goto done;}
			case 226:
				{t.kind = 105; goto done;}
			case 227:
				if (ch == 'd') {buf.Append(ch); NextCh(); goto case 228;}
				else {t.kind = noSym; goto done;}
			case 228:
				if (ch == 'l') {buf.Append(ch); NextCh(); goto case 229;}
				else {t.kind = noSym; goto done;}
			case 229:
				if (ch == 'e') {buf.Append(ch); NextCh(); goto case 230;}
				else {t.kind = noSym; goto done;}
			case 230:
				if (ch == 'n') {buf.Append(ch); NextCh(); goto case 231;}
				else {t.kind = noSym; goto done;}
			case 231:
				{t.kind = 107; goto done;}
			case 232:
				if ((ch >= '0' && ch <= '9')) {buf.Append(ch); NextCh(); goto case 2;}
				else if (ch == '-') {buf.Append(ch); NextCh(); goto case 190;}
				else if (ch == '+') {buf.Append(ch); NextCh(); goto case 191;}
				else if (ch == '>') {buf.Append(ch); NextCh(); goto case 195;}
				else {t.kind = 2; goto done;}
			case 233:
				if ((ch >= '0' && ch <= '9')) {buf.Append(ch); NextCh(); goto case 2;}
				else if (ch == '>') {buf.Append(ch); NextCh(); goto case 193;}
				else {t.kind = 2; goto done;}
			case 234: {t.kind = 0; goto done;}
		}
		done:
		t.val = buf.ToString();
		return t;
	}
internal static int ParseContract (Module assem, string text, out Expression expression)
{
  Debug.Assert(assem != null);
  currentAssembly = assem;

  Scanner.Init(text);

  Errors.SynErr = new ErrorProc(SynErr);
  t = new Token();
  Get();
  Expr(out expression);

  currentMethodContract = null;
  currentMethod = null;
  currentAssembly = null;
  
  return Errors.count;
}
	static void Get() {
		for (;;) {
			token = t;
			t = Scanner.Scan();
			if (t.kind<=maxT) {errDist++; return;}

			t = token;
		}
	}
	public static void Parse() {
		Errors.SynErr = new ErrorProc(SynErr);
		t = new Token();
		Get();
		Omni();

	}