/* Generated by re2c 0.5 on Mon Sep 2 21:18:06 2002 */ #line 1 "LexLua.c" /* ============================================================================== LexLua.c ============================================================================== */ #include "lua.h" #include "lauxlib.h" const char *name = ""; const char *number = ""; const char *literal = ""; #define YYCTYPE char #define YYCURSOR cursor #define YYMARKER marker #define YYLIMIT limit #define YYFILL(n) #define save_state(i,s,c,m,l) {\ (s)->cursor = (c)-(i); \ (s)->marker = (m)-(i); \ (s)->limit = (l)-(i); \ } typedef struct Scanner { int cursor, marker, limit; } Scanner; static Scanner *check_Scanner(lua_State *L, int index) { luaL_check_type(L, index, LUA_TUSERDATA); return (Scanner*)lua_touserdata(L,index); } static int scan (lua_State *L) { const char *input = luaL_check_string(L, lua_upvalueindex(1)); Scanner *state = check_Scanner(L,lua_upvalueindex(2)); char *cursor = (char*)input + state->cursor; char *marker = (char*)input + state->marker; char *limit = (char*)input + state->limit; char *white_space, *token; const char *ret = 0; int nest_count = 0; #line 68 Begin: white_space = cursor; /* start of white space */ Space: token = cursor; /* start of token */ { YYCTYPE yych; unsigned int yyaccept; goto yy0; yy1: ++YYCURSOR; yy0: if((YYLIMIT - YYCURSOR) < 9) YYFILL(9); yych = *YYCURSOR; switch(yych){ case '\000': goto yy35; case '\t': case '\n': case '\v': case '\f': case ' ': goto yy2; case '"': goto yy33; case '#': goto yy6; case '\'': goto yy32; case '-': goto yy4; case '.': goto yy23; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy30; case '<': goto yy26; case '=': goto yy24; case '>': goto yy25; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'c': case 'h': case 'j': case 'k': case 'm': case 'p': case 'q': case 's': case 'v': case 'x': case 'y': case 'z': goto yy29; case '[': goto yy28; case 'a': goto yy8; case 'b': goto yy10; case 'd': goto yy11; case 'e': goto yy12; case 'f': goto yy13; case 'g': goto yy14; case 'i': goto yy15; case 'l': goto yy16; case 'n': goto yy17; case 'o': goto yy18; case 'r': goto yy19; case 't': goto yy20; case 'u': goto yy21; case 'w': goto yy22; case '~': goto yy27; default: goto yy34; } yy2: yych = *++YYCURSOR; goto yy167; yy3: #line 80 { goto Space; } yy4: yych = *++YYCURSOR; if(yych == '-') goto yy162; yy5: #line 118 { goto Return; } yy6: yych = *++YYCURSOR; yy7: #line 82 { goto Comment; } yy8: yych = *++YYCURSOR; if(yych == 'n') goto yy159; goto yy57; yy9: #line 113 { ret = name; goto Return; } yy10: yych = *++YYCURSOR; if(yych == 'r') goto yy154; goto yy57; yy11: yych = *++YYCURSOR; if(yych == 'o') goto yy152; goto yy57; yy12: yych = *++YYCURSOR; if(yych == 'l') goto yy142; if(yych == 'n') goto yy143; goto yy57; yy13: yych = *++YYCURSOR; if(yych <= 'n'){ if(yych == 'a') goto yy126; goto yy57; } else { if(yych <= 'o') goto yy127; if(yych == 'u') goto yy128; goto yy57; } yy14: yych = *++YYCURSOR; if(yych == 'l') goto yy120; goto yy57; yy15: yych = *++YYCURSOR; if(yych == 'f') goto yy116; if(yych == 'n') goto yy118; goto yy57; yy16: yych = *++YYCURSOR; if(yych == 'o') goto yy111; goto yy57; yy17: yych = *++YYCURSOR; if(yych == 'i') goto yy105; if(yych == 'o') goto yy106; goto yy57; yy18: yych = *++YYCURSOR; if(yych == 'r') goto yy103; goto yy57; yy19: yych = *++YYCURSOR; if(yych == 'e') goto yy92; goto yy57; yy20: yych = *++YYCURSOR; if(yych == 'h') goto yy84; if(yych == 'r') goto yy85; goto yy57; yy21: yych = *++YYCURSOR; if(yych == 'n') goto yy79; goto yy57; yy22: yych = *++YYCURSOR; if(yych == 'h') goto yy74; goto yy57; yy23: yych = *++YYCURSOR; if(yych == '.') goto yy70; if(yych <= '/') goto yy5; if(yych <= '9') goto yy68; goto yy5; yy24: yych = *++YYCURSOR; if(yych == '=') goto yy66; goto yy5; yy25: yych = *++YYCURSOR; if(yych == '=') goto yy64; goto yy5; yy26: yych = *++YYCURSOR; if(yych == '=') goto yy62; goto yy5; yy27: yych = *++YYCURSOR; if(yych == '=') goto yy60; goto yy5; yy28: yych = *++YYCURSOR; if(yych == '[') goto yy58; goto yy5; yy29: yych = *++YYCURSOR; goto yy57; yy30: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if(yych == '.') goto yy48; if(yych <= '/') goto yy49; if(yych <= '9') goto yy50; goto yy49; yy31: #line 114 { ret = number; goto Return; } yy32: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if(yych <= '\000') goto yy5; goto yy44; yy33: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if(yych <= '\000') goto yy5; goto yy38; yy34: yych = *++YYCURSOR; goto yy5; yy35: yych = *++YYCURSOR; yy36: #line 119 { goto TheEnd; } yy37: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy38: if(yych <= '"'){ if(yych <= '\000') goto yy39; if(yych <= '!') goto yy37; goto yy41; } else { if(yych == '\\') goto yy40; goto yy37; } yy39: YYCURSOR = YYMARKER; switch(yyaccept){ case 2: goto yy7; case 0: goto yy31; case 1: goto yy5; } yy40: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; if(yych <= '\000') goto yy39; goto yy37; yy41: yych = *++YYCURSOR; yy42: #line 116 { ret = literal; goto Return; } yy43: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy44: if(yych <= '\''){ if(yych <= '\000') goto yy39; if(yych <= '&') goto yy43; goto yy46; } else { if(yych != '\\') goto yy43; } yy45: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; if(yych <= '\000') goto yy39; goto yy43; yy46: yych = *++YYCURSOR; yy47: #line 115 { ret = literal; goto Return; } yy48: yyaccept = 0; YYMARKER = ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy49: if(yych <= 'D'){ if(yych <= '/') goto yy31; if(yych <= '9') goto yy48; goto yy31; } else { if(yych <= 'E') goto yy52; if(yych == 'e') goto yy52; goto yy31; } yy50: yyaccept = 0; YYMARKER = ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy51: if(yych <= '9'){ if(yych == '.') goto yy48; if(yych <= '/') goto yy31; goto yy50; } else { if(yych <= 'E'){ if(yych <= 'D') goto yy31; } else { if(yych != 'e') goto yy31; } } yy52: yych = *++YYCURSOR; if(yych <= ','){ if(yych != '+') goto yy39; } else { if(yych <= '-') goto yy53; if(yych <= '/') goto yy39; if(yych <= '9') goto yy54; goto yy39; } yy53: yych = *++YYCURSOR; if(yych <= '/') goto yy39; if(yych >= ':') goto yy39; yy54: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy55: if(yych <= '/') goto yy31; if(yych <= '9') goto yy54; goto yy31; yy56: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy57: if(yych <= 'Z'){ if(yych <= '/') goto yy9; if(yych <= '9') goto yy56; if(yych <= '@') goto yy9; goto yy56; } else { if(yych <= '_'){ if(yych <= '^') goto yy9; goto yy56; } else { if(yych <= '`') goto yy9; if(yych <= 'z') goto yy56; goto yy9; } } yy58: yych = *++YYCURSOR; yy59: #line 111 { nest_count=0; goto LongString; } yy60: yych = *++YYCURSOR; yy61: #line 110 { goto Return; } yy62: yych = *++YYCURSOR; yy63: #line 109 { goto Return; } yy64: yych = *++YYCURSOR; yy65: #line 108 { goto Return; } yy66: yych = *++YYCURSOR; yy67: #line 107 { goto Return; } yy68: yyaccept = 0; YYMARKER = ++YYCURSOR; if((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; yy69: if(yych <= 'D'){ if(yych <= '/') goto yy31; if(yych <= '9') goto yy68; goto yy31; } else { if(yych <= 'E') goto yy52; if(yych == 'e') goto yy52; goto yy31; } yy70: yych = *++YYCURSOR; if(yych == '.') goto yy72; yy71: #line 106 { goto Return; } yy72: yych = *++YYCURSOR; yy73: #line 105 { goto Return; } yy74: yych = *++YYCURSOR; if(yych != 'i') goto yy57; yy75: yych = *++YYCURSOR; if(yych != 'l') goto yy57; yy76: yych = *++YYCURSOR; if(yych != 'e') goto yy57; yy77: yych = *++YYCURSOR; if(yych <= 'Z'){ if(yych <= '/') goto yy78; if(yych <= '9') goto yy56; if(yych >= 'A') goto yy56; } else { if(yych <= '_'){ if(yych >= '_') goto yy56; } else { if(yych <= '`') goto yy78; if(yych <= 'z') goto yy56; } } yy78: #line 104 { goto Return; } yy79: yych = *++YYCURSOR; if(yych != 't') goto yy57; yy80: yych = *++YYCURSOR; if(yych != 'i') goto yy57; yy81: yych = *++YYCURSOR; if(yych != 'l') goto yy57; yy82: yych = *++YYCURSOR; if(yych <= 'Z'){ if(yych <= '/') goto yy83; if(yych <= '9') goto yy56; if(yych >= 'A') goto yy56; } else { if(yych <= '_'){ if(yych >= '_') goto yy56; } else { if(yych <= '`') goto yy83; if(yych <= 'z') goto yy56; } } yy83: #line 103 { goto Return; } yy84: yych = *++YYCURSOR; if(yych == 'e') goto yy89; goto yy57; yy85: yych = *++YYCURSOR; if(yych != 'u') goto yy57; yy86: yych = *++YYCURSOR; if(yych != 'e') goto yy57; yy87: yych = *++YYCURSOR; if(yych <= 'Z'){ if(yych <= '/') goto yy88; if(yych <= '9') goto yy56; if(yych >= 'A') goto yy56; } else { if(yych <= '_'){ if(yych >= '_') goto yy56; } else { if(yych <= '`') goto yy88; if(yych <= 'z') goto yy56; } } yy88: #line 102 { goto Return; } yy89: yych = *++YYCURSOR; if(yych != 'n') goto yy57; yy90: yych = *++YYCURSOR; if(yych <= 'Z'){ if(yych <= '/') goto yy91; if(yych <= '9') goto yy56; if(yych >= 'A') goto yy56; } else { if(yych <= '_'){ if(yych >= '_') goto yy56; } else { if(yych <= '`') goto yy91; if(yych <= 'z') goto yy56; } } yy91: #line 101 { goto Return; } yy92: yych = *++YYCURSOR; if(yych == 'p') goto yy93; if(yych == 't') goto yy94; goto yy57; yy93: yych = *++YYCURSOR; if(yych == 'e') goto yy99; goto yy57; yy94: yych = *++YYCURSOR; if(yych != 'u') goto yy57; yy95: yych = *++YYCURSOR; if(yych != 'r') goto yy57; yy96: yych = *++YYCURSOR; if(yych != 'n') goto yy57; yy97: yych = *++YYCURSOR; if(yych <= 'Z'){ if(yych <= '/') goto yy98; if(yych <= '9') goto yy56; if(yych >= 'A') goto yy56; } else { if(yych <= '_'){ if(yych >= '_') goto yy56; } else { if(yych <= '`') goto yy98; if(yych <= 'z') goto yy56; } } yy98: #line 100 { goto Return; } yy99: yych = *++YYCURSOR; if(yych != 'a') goto yy57; yy100: yych = *++YYCURSOR; if(yych != 't') goto yy57; yy101: yych = *++YYCURSOR; if(yych <= 'Z'){ if(yych <= '/') goto yy102; if(yych <= '9') goto yy56; if(yych >= 'A') goto yy56; } else { if(yych <= '_'){ if(yych >= '_') goto yy56; } else { if(yych <= '`') goto yy102; if(yych <= 'z') goto yy56; } } yy102: #line 99 { goto Return; } yy103: yych = *++YYCURSOR; if(yych <= 'Z'){ if(yych <= '/') goto yy104; if(yych <= '9') goto yy56; if(yych >= 'A') goto yy56; } else { if(yych <= '_'){ if(yych >= '_') goto yy56; } else { if(yych <= '`') goto yy104; if(yych <= 'z') goto yy56; } } yy104: #line 98 { goto Return; } yy105: yych = *++YYCURSOR; if(yych == 'l') goto yy109; goto yy57; yy106: yych = *++YYCURSOR; if(yych != 't') goto yy57; yy107: yych = *++YYCURSOR; if(yych <= 'Z'){ if(yych <= '/') goto yy108; if(yych <= '9') goto yy56; if(yych >= 'A') goto yy56; } else { if(yych <= '_'){ if(yych >= '_') goto yy56; } else { if(yych <= '`') goto yy108; if(yych <= 'z') goto yy56; } } yy108: #line 97 { goto Return; } yy109: yych = *++YYCURSOR; if(yych <= 'Z'){ if(yych <= '/') goto yy110; if(yych <= '9') goto yy56; if(yych >= 'A') goto yy56; } else { if(yych <= '_'){ if(yych >= '_') goto yy56; } else { if(yych <= '`') goto yy110; if(yych <= 'z') goto yy56; } } yy110: #line 96 { goto Return; } yy111: yych = *++YYCURSOR; if(yych != 'c') goto yy57; yy112: yych = *++YYCURSOR; if(yych != 'a') goto yy57; yy113: yych = *++YYCURSOR; if(yych != 'l') goto yy57; yy114: yych = *++YYCURSOR; if(yych <= 'Z'){ if(yych <= '/') goto yy115; if(yych <= '9') goto yy56; if(yych >= 'A') goto yy56; } else { if(yych <= '_'){ if(yych >= '_') goto yy56; } else { if(yych <= '`') goto yy115; if(yych <= 'z') goto yy56; } } yy115: #line 95 { goto Return; } yy116: yych = *++YYCURSOR; if(yych <= 'Z'){ if(yych <= '/') goto yy117; if(yych <= '9') goto yy56; if(yych >= 'A') goto yy56; } else { if(yych <= '_'){ if(yych >= '_') goto yy56; } else { if(yych <= '`') goto yy117; if(yych <= 'z') goto yy56; } } yy117: #line 93 { goto Return; } yy118: yych = *++YYCURSOR; if(yych <= 'Z'){ if(yych <= '/') goto yy119; if(yych <= '9') goto yy56; if(yych >= 'A') goto yy56; } else { if(yych <= '_'){ if(yych >= '_') goto yy56; } else { if(yych <= '`') goto yy119; if(yych <= 'z') goto yy56; } } yy119: #line 94 { goto Return; } yy120: yych = *++YYCURSOR; if(yych != 'o') goto yy57; yy121: yych = *++YYCURSOR; if(yych != 'b') goto yy57; yy122: yych = *++YYCURSOR; if(yych != 'a') goto yy57; yy123: yych = *++YYCURSOR; if(yych != 'l') goto yy57; yy124: yych = *++YYCURSOR; if(yych <= 'Z'){ if(yych <= '/') goto yy125; if(yych <= '9') goto yy56; if(yych >= 'A') goto yy56; } else { if(yych <= '_'){ if(yych >= '_') goto yy56; } else { if(yych <= '`') goto yy125; if(yych <= 'z') goto yy56; } } yy125: #line 92 { goto Return; } yy126: yych = *++YYCURSOR; if(yych == 'l') goto yy138; goto yy57; yy127: yych = *++YYCURSOR; if(yych == 'r') goto yy136; goto yy57; yy128: yych = *++YYCURSOR; if(yych != 'n') goto yy57; yy129: yych = *++YYCURSOR; if(yych != 'c') goto yy57; yy130: yych = *++YYCURSOR; if(yych != 't') goto yy57; yy131: yych = *++YYCURSOR; if(yych != 'i') goto yy57; yy132: yych = *++YYCURSOR; if(yych != 'o') goto yy57; yy133: yych = *++YYCURSOR; if(yych != 'n') goto yy57; yy134: yych = *++YYCURSOR; if(yych <= 'Z'){ if(yych <= '/') goto yy135; if(yych <= '9') goto yy56; if(yych >= 'A') goto yy56; } else { if(yych <= '_'){ if(yych >= '_') goto yy56; } else { if(yych <= '`') goto yy135; if(yych <= 'z') goto yy56; } } yy135: #line 91 { goto Return; } yy136: yych = *++YYCURSOR; if(yych <= 'Z'){ if(yych <= '/') goto yy137; if(yych <= '9') goto yy56; if(yych >= 'A') goto yy56; } else { if(yych <= '_'){ if(yych >= '_') goto yy56; } else { if(yych <= '`') goto yy137; if(yych <= 'z') goto yy56; } } yy137: #line 90 { goto Return; } yy138: yych = *++YYCURSOR; if(yych != 's') goto yy57; yy139: yych = *++YYCURSOR; if(yych != 'e') goto yy57; yy140: yych = *++YYCURSOR; if(yych <= 'Z'){ if(yych <= '/') goto yy141; if(yych <= '9') goto yy56; if(yych >= 'A') goto yy56; } else { if(yych <= '_'){ if(yych >= '_') goto yy56; } else { if(yych <= '`') goto yy141; if(yych <= 'z') goto yy56; } } yy141: #line 89 { goto Return; } yy142: yych = *++YYCURSOR; if(yych == 's') goto yy146; goto yy57; yy143: yych = *++YYCURSOR; if(yych != 'd') goto yy57; yy144: yych = *++YYCURSOR; if(yych <= 'Z'){ if(yych <= '/') goto yy145; if(yych <= '9') goto yy56; if(yych >= 'A') goto yy56; } else { if(yych <= '_'){ if(yych >= '_') goto yy56; } else { if(yych <= '`') goto yy145; if(yych <= 'z') goto yy56; } } yy145: #line 88 { goto Return; } yy146: yych = *++YYCURSOR; if(yych != 'e') goto yy57; yy147: yych = *++YYCURSOR; if(yych <= '^'){ if(yych <= '9'){ if(yych >= '0') goto yy56; } else { if(yych <= '@') goto yy148; if(yych <= 'Z') goto yy56; } } else { if(yych <= 'h'){ if(yych != '`') goto yy56; } else { if(yych <= 'i') goto yy149; if(yych <= 'z') goto yy56; } } yy148: #line 86 { goto Return; } yy149: yych = *++YYCURSOR; if(yych != 'f') goto yy57; yy150: yych = *++YYCURSOR; if(yych <= 'Z'){ if(yych <= '/') goto yy151; if(yych <= '9') goto yy56; if(yych >= 'A') goto yy56; } else { if(yych <= '_'){ if(yych >= '_') goto yy56; } else { if(yych <= '`') goto yy151; if(yych <= 'z') goto yy56; } } yy151: #line 87 { goto Return; } yy152: yych = *++YYCURSOR; if(yych <= 'Z'){ if(yych <= '/') goto yy153; if(yych <= '9') goto yy56; if(yych >= 'A') goto yy56; } else { if(yych <= '_'){ if(yych >= '_') goto yy56; } else { if(yych <= '`') goto yy153; if(yych <= 'z') goto yy56; } } yy153: #line 85 { goto Return; } yy154: yych = *++YYCURSOR; if(yych != 'e') goto yy57; yy155: yych = *++YYCURSOR; if(yych != 'a') goto yy57; yy156: yych = *++YYCURSOR; if(yych != 'k') goto yy57; yy157: yych = *++YYCURSOR; if(yych <= 'Z'){ if(yych <= '/') goto yy158; if(yych <= '9') goto yy56; if(yych >= 'A') goto yy56; } else { if(yych <= '_'){ if(yych >= '_') goto yy56; } else { if(yych <= '`') goto yy158; if(yych <= 'z') goto yy56; } } yy158: #line 84 { goto Return; } yy159: yych = *++YYCURSOR; if(yych != 'd') goto yy57; yy160: yych = *++YYCURSOR; if(yych <= 'Z'){ if(yych <= '/') goto yy161; if(yych <= '9') goto yy56; if(yych >= 'A') goto yy56; } else { if(yych <= '_'){ if(yych >= '_') goto yy56; } else { if(yych <= '`') goto yy161; if(yych <= 'z') goto yy56; } } yy161: #line 83 { goto Return; } yy162: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); if(yych != '[') goto yy7; yy163: yych = *++YYCURSOR; if(yych != '[') goto yy39; yy164: yych = *++YYCURSOR; yy165: #line 81 { nest_count=0; goto LongComment; } yy166: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy167: if(yych <= '\b') goto yy3; if(yych <= '\f') goto yy166; if(yych == ' ') goto yy166; goto yy3; } #line 121 LongString: { YYCTYPE yych; unsigned int yyaccept; goto yy168; yy169: ++YYCURSOR; yy168: if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if(yych <= '['){ if(yych <= '\000') goto yy174; if(yych <= 'Z') goto yy173; } else { if(yych == ']') goto yy172; goto yy173; } yy170: yych = *++YYCURSOR; if(yych == '[') goto yy178; yy171: #line 131 { goto LongString; } yy172: yych = *++YYCURSOR; if(yych == ']') goto yy176; goto yy171; yy173: yych = *++YYCURSOR; goto yy171; yy174: yych = *++YYCURSOR; yy175: #line 132 { luaL_error(L,"unfinished long string"); } yy176: yych = *++YYCURSOR; yy177: #line 128 { if( nest_count == 0 ) { ret = literal; goto Return; } nest_count--; goto LongString; } yy178: yych = *++YYCURSOR; yy179: #line 127 { nest_count++; goto LongString; } } #line 134 Comment: { YYCTYPE yych; unsigned int yyaccept; goto yy180; yy181: ++YYCURSOR; yy180: if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; if(yych <= '\000') goto yy185; if(yych != '\n') goto yy183; yy182: #line 140 { goto Space; } yy183: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy184: if(yych <= '\000') goto yy182; if(yych == '\n') goto yy182; goto yy183; yy185: yych = *++YYCURSOR; yy186: #line 141 { goto TheEnd; } } #line 143 LongComment: { YYCTYPE yych; unsigned int yyaccept; goto yy187; yy188: ++YYCURSOR; yy187: if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if(yych <= '['){ if(yych <= '\000') goto yy193; if(yych <= 'Z') goto yy192; } else { if(yych == ']') goto yy191; goto yy192; } yy189: yych = *++YYCURSOR; if(yych == '[') goto yy197; yy190: #line 153 { goto LongComment; } yy191: yych = *++YYCURSOR; if(yych == ']') goto yy195; goto yy190; yy192: yych = *++YYCURSOR; goto yy190; yy193: yych = *++YYCURSOR; yy194: #line 154 { luaL_error(L,"unfinished long comment"); } yy195: yych = *++YYCURSOR; yy196: #line 150 { if( nest_count == 0 ) goto Space; nest_count--; goto LongComment; } yy197: yych = *++YYCURSOR; yy198: #line 149 { nest_count++; goto LongComment; } } #line 156 luaL_error(L,"impossible"); /* die */ TheEnd: if( --cursor != limit ) luaL_error(L,"didn't reach end of input"); /* die */ lua_pushnil(L); lua_pushnil(L); lua_pushlstring(L, white_space, token - white_space ); save_state(input,state,cursor,marker,limit); return 3; /* nil, nil, ws */ Return: lua_pushlstring(L, token, cursor - token ); if( ret ) lua_pushstring(L, ret ); else lua_pushnil(L); lua_pushlstring(L, white_space, token - white_space ); save_state(input,state,cursor,marker,limit); return 3; /* token, type, ws */ } static int scanner (lua_State *L) { Scanner *s; int len; const char *input = luaL_check_lstr(L, 1, &len); s = (Scanner*)lua_newuserdata(L, sizeof(Scanner)); s->cursor = 0; s->marker = 0; s->limit = len; lua_pushcclosure(L, scan, 2); /* string, userdata */ return 1; } int openLexLua (lua_State *L) { lua_register(L, "LexLua", scanner); return 0; }