diff options
Diffstat (limited to 'src/parser.c')
-rw-r--r-- | src/parser.c | 2253 |
1 files changed, 1117 insertions, 1136 deletions
diff --git a/src/parser.c b/src/parser.c index 1cbb3c17..c91ee00e 100644 --- a/src/parser.c +++ b/src/parser.c @@ -1,22 +1,20 @@ -#if defined (__cplusplus) || defined (c_plusplus) -#include <c_varieties.h> -#ifdef __EXTERN_C__ - EXTERN_FUNCTION ( extern int luaY_lex, ()); -#else - extern int luaY_lex(); -#endif - extern void luaY_error(char *); - extern int luaY_parse(); +#ifndef lint +static char luaY_sccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; #endif +#define YYBYACC 1 +#define YYMAJOR 1 +#define YYMINOR 9 +#define luaY_clearin (luaY_char=(-1)) +#define luaY_errok (luaY_errflag=0) +#define YYRECOVERING (luaY_errflag!=0) +#define YYPREFIX "luaY_" +#line 2 "lua.stx" -#include <stdlib.h> - -# line 2 "lua.stx" - -char *rcs_luastx = "$Id: parser.c,v 1.1 1996/05/14 19:44:57 lhf Exp $"; +char *rcs_luastx = "$Id: parser.c,v 1.1 1996/11/21 16:11:40 lhf Exp $"; #include <stdio.h> #include <stdlib.h> +#include <string.h> #include "luadebug.h" #include "mem.h" @@ -71,58 +69,48 @@ int lua_debug = 0; static void luaY_error (char *s) { - char msg[256]; - char *token = lua_lasttext(); - if (token[0] == 0) - token = "<eof>"; - sprintf (msg,"%s; last token read: \"%s\" at line %d in file `%s'", - s, token, lua_linenumber, lua_parsedfile); - lua_error (msg); + luaI_syntaxerror(s); +} + +static void check_space (int i) +{ + if (pc+i>maxcurr-1) /* 1 byte free to code HALT of main code */ + maxcurr = growvector(&basepc, maxcurr, Byte, codeEM, MAX_INT); } static void code_byte (Byte c) { - if (pc>maxcurr-2) /* 1 byte free to code HALT of main code */ - maxcurr = growvector(&basepc, maxcurr, Byte, codeEM, MAX_INT); + check_space(1); basepc[pc++] = c; } static void code_word (Word n) { - CodeWord code; - code.w = n; - code_byte(code.m.c1); - code_byte(code.m.c2); + check_space(sizeof(Word)); + memcpy(basepc+pc, &n, sizeof(Word)); + pc += sizeof(Word); } -static void code_float (float n) +static void code_float (real n) { - CodeFloat code; - code.f = n; - code_byte(code.m.c1); - code_byte(code.m.c2); - code_byte(code.m.c3); - code_byte(code.m.c4); + check_space(sizeof(real)); + memcpy(basepc+pc, &n, sizeof(real)); + pc += sizeof(real); } static void code_code (TFunc *tf) { - CodeCode code; - code.tf = tf; - code_byte(code.m.c1); - code_byte(code.m.c2); - code_byte(code.m.c3); - code_byte(code.m.c4); + check_space(sizeof(TFunc *)); + memcpy(basepc+pc, &tf, sizeof(TFunc *)); + pc += sizeof(TFunc *); } static void code_word_at (Byte *p, int n) { - CodeWord code; - if ((Word)n != n) - luaY_error("block too big"); - code.w = (Word)n; - *p++ = code.m.c1; - *p++ = code.m.c2; + Word w = n; + if (w != n) + luaY_error("block too big"); + memcpy(p, &w, sizeof(Word)); } static void push_field (Word name) @@ -335,6 +323,19 @@ static void adjust_mult_assign (int vars, Long exps, int temps) lua_codeadjust(temps); } +static int close_parlist (int dots) +{ + if (!dots) + lua_codeadjust(0); + else + { + code_byte(VARARGS); + code_byte(nlocalvar); + add_localvar(luaI_createfixedstring("arg")); + } + return lua_linenumber; +} + static void storesinglevar (Long v) { if (v > 0) /* global var */ @@ -417,9 +418,8 @@ void lua_parse (TFunc *tf) } - -# line 410 "lua.stx" -typedef union +#line 414 "lua.stx" +typedef union { int vInt; float vFloat; @@ -429,901 +429,739 @@ typedef union TFunc *pFunc; TaggedString *pTStr; } YYSTYPE; -# define WRONGTOKEN 257 -# define NIL 258 -# define IF 259 -# define THEN 260 -# define ELSE 261 -# define ELSEIF 262 -# define WHILE 263 -# define DO 264 -# define REPEAT 265 -# define UNTIL 266 -# define END 267 -# define RETURN 268 -# define LOCAL 269 -# define FUNCTION 270 -# define NUMBER 271 -# define STRING 272 -# define NAME 273 -# define DEBUG 274 -# define AND 275 -# define OR 276 -# define EQ 277 -# define NE 278 -# define LE 279 -# define GE 280 -# define CONC 281 -# define UNARY 282 -# define NOT 283 -#define luaY_clearin luaY_char = -1 -#define luaY_errok luaY_errflag = 0 -extern int luaY_char; -extern int luaY_errflag; -#ifndef YYMAXDEPTH -#define YYMAXDEPTH 150 -#endif -YYSTYPE luaY_lval, luaY_val; -# define YYERRCODE 256 - -# line 788 "lua.stx" - -int luaY_exca[] ={ --1, 1, - 0, -1, - -2, 0, --1, 14, - 61, 88, - 44, 88, - -2, 94, --1, 22, - 40, 7, - -2, 94, --1, 29, - 40, 59, - 123, 59, - -2, 46, --1, 44, - 123, 56, - -2, 63, --1, 71, - 123, 56, - -2, 84, --1, 76, - 275, 30, - 276, 30, - 277, 30, - 278, 30, - 62, 30, - 60, 30, - 279, 30, - 280, 30, - 281, 30, - 43, 30, - 45, 30, - 42, 30, - 47, 30, - 94, 30, - -2, 65, --1, 77, - 91, 94, - 46, 94, - -2, 89, --1, 132, - 123, 56, - -2, 78, --1, 138, - 123, 56, - -2, 63, --1, 155, - 275, 30, - 276, 30, - 277, 30, - 278, 30, - 62, 30, - 60, 30, - 279, 30, - 280, 30, - 281, 30, - 43, 30, - 45, 30, - 42, 30, - 47, 30, - 94, 30, - -2, 67, - }; -# define YYNPROD 100 -# define YYLAST 311 -int luaY_act[]={ - - 61, 59, 148, 60, 141, 62, 118, 61, 59, 90, - 60, 89, 62, 86, 84, 18, 42, 168, 54, 164, - 55, 61, 59, 156, 60, 54, 62, 55, 61, 59, - 115, 60, 73, 62, 157, 61, 59, 19, 60, 54, - 62, 55, 61, 59, 82, 60, 54, 62, 55, 158, - 159, 129, 63, 54, 91, 55, 111, 25, 121, 63, - 54, 109, 55, 127, 26, 61, 59, 26, 60, 27, - 62, 7, 27, 63, 71, 8, 33, 9, 11, 63, - 63, 12, 6, 80, 67, 18, 13, 63, 68, 7, - 48, 40, 4, 8, 63, 9, 24, 76, 138, 12, - 81, 133, 76, 18, 61, 59, 61, 60, 39, 62, - 20, 62, 146, 130, 117, 132, 69, 63, 123, 48, - 104, 105, 122, 70, 124, 120, 72, 106, 48, 50, - 29, 46, 17, 44, 128, 47, 85, 23, 83, 76, - 51, 28, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 88, 140, 63, 45, 63, 36, - 112, 14, 131, 139, 47, 35, 22, 151, 126, 134, - 125, 78, 137, 47, 153, 74, 38, 37, 75, 142, - 116, 5, 3, 154, 2, 49, 21, 147, 16, 87, - 152, 165, 163, 11, 110, 108, 76, 155, 145, 160, - 77, 79, 41, 171, 135, 107, 162, 173, 161, 136, - 15, 43, 10, 167, 143, 144, 1, 0, 169, 0, - 119, 149, 150, 0, 170, 0, 172, 0, 0, 0, - 0, 0, 0, 65, 66, 53, 56, 57, 58, 64, - 65, 66, 53, 56, 57, 58, 64, 17, 166, 0, - 114, 0, 0, 52, 65, 66, 53, 56, 57, 58, - 64, 65, 66, 53, 56, 57, 58, 64, 65, 66, - 53, 56, 57, 58, 64, 0, 14, 53, 56, 57, - 58, 64, 32, 0, 0, 32, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 30, 31, 18, 30, 31, - 113, 0, 0, 0, 64, 0, 0, 34, 0, 0, - 34 }; -int luaY_pact[]={ - - -1000, -188, -1000, -1000, 51, -1000, -258, 24, -1000, -1000, - 47, -1000, -257, -1000, -1000, 93, -1000, 73, -1000, -1000, - -1000, 89, -1000, 82, -7, -1000, 24, 24, -1000, 73, - -1000, -1000, -1000, -1000, 24, -49, -1000, 24, -1000, 24, - -258, 39, -1000, -1000, 24, -1000, -259, 24, -260, -1000, - -262, -264, -1000, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 24, 24, 24, -1000, -1000, 86, -21, -15, - -15, 27, -14, -236, -1000, 70, -1000, -1000, 44, -1000, - -267, 24, 84, 70, -1000, -35, -1000, 81, 74, -1000, - -1000, -1000, 23, 23, 23, 23, 23, 23, 64, 64, - -15, -15, -15, 62, -1000, -1000, -1000, -62, -1000, 69, - 71, -1000, -21, 40, -1000, 24, -170, -1000, -1000, 70, - -1000, -1000, -1000, -269, -1000, 24, 24, -1000, 53, -1000, - -271, -1000, 24, 24, -1000, -21, 51, -1000, 24, 24, - -244, -1000, -212, 0, 0, -1000, -271, -1000, 40, -21, - -21, -1000, -1000, -1000, 51, -1000, -1000, -248, -1000, 24, - -1000, 69, -250, -1000, -1000, -1000, -42, -1000, -1000, -1000, - -1000, -1000, -212, -1000 }; -int luaY_pgo[]={ - - 0, 216, 54, 44, 138, 76, 57, 212, 211, 210, - 205, 202, 201, 199, 61, 198, 195, 194, 189, 159, - 188, 186, 185, 184, 182, 92, 37, 181, 130, 32, - 180, 88, 34, 177, 176, 175, 172, 141, 170, 168, - 165, 163, 154, 134, 51, 56 }; -int luaY_r1[]={ - - 0, 1, 1, 1, 23, 23, 24, 21, 21, 22, - 30, 30, 26, 26, 25, 33, 25, 34, 25, 25, - 25, 25, 32, 32, 32, 35, 29, 36, 36, 2, - 31, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 38, 6, 39, 6, 40, 37, 5, 9, - 9, 8, 8, 3, 3, 4, 41, 4, 18, 18, - 42, 42, 43, 10, 10, 15, 15, 44, 44, 13, - 13, 14, 14, 45, 16, 16, 17, 17, 7, 7, - 19, 19, 19, 20, 28, 11, 11, 12, 12, 27 }; -int luaY_r2[]={ - - 0, 0, 4, 4, 4, 2, 7, 3, 7, 11, - 0, 6, 0, 2, 17, 1, 17, 1, 13, 7, - 2, 7, 0, 4, 15, 1, 7, 0, 7, 1, - 3, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 5, 3, 3, 3, 3, 3, - 3, 5, 1, 11, 1, 11, 1, 9, 5, 3, - 7, 7, 3, 1, 3, 3, 1, 9, 1, 3, - 3, 7, 1, 7, 5, 1, 5, 0, 2, 1, - 5, 3, 7, 7, 1, 5, 3, 7, 3, 7, - 3, 9, 7, 3, 3, 3, 7, 1, 5, 3 }; -int luaY_chk[]={ - - -1000, -1, -23, -24, -25, -27, 270, 259, 263, 265, - -7, -5, 269, 274, -19, -9, -20, -28, 273, -26, - 59, -21, -19, -28, -31, -6, 40, 45, -37, -28, - 271, 272, 258, -5, 283, -40, -19, -33, -34, 61, - 44, -11, 273, -8, 40, -37, 58, 91, 46, -22, - 40, 58, 260, 277, 60, 62, 278, 279, 280, 43, - 45, 42, 47, 94, 281, 275, 276, -6, -31, -31, - -31, 123, -31, -29, -35, -4, -6, -19, -28, -12, - 44, 61, -3, -4, 273, -31, 273, -18, -42, 273, - 273, -2, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -2, -2, 41, -10, -16, -14, - -17, -45, -31, 273, 264, 266, -30, 44, 273, -4, - 41, 93, 41, 44, -29, -38, -39, 125, -43, -44, - 44, -44, 44, 61, -2, -31, -25, -36, 268, -41, - -29, 273, -2, -31, -31, -15, 59, -45, 273, -31, - -31, -29, -2, -26, -3, -6, 267, -32, 261, 262, - -13, -14, -2, -26, 267, -29, -31, -44, 267, 260, - -2, -29, -2, -32 }; -int luaY_def[]={ - - 1, -2, 2, 3, 12, 5, 0, 56, 15, 17, - 0, 20, 0, 99, -2, 56, 90, 59, 93, 4, - 13, 0, -2, 0, 0, 30, 56, 56, 45, -2, - 47, 48, 49, 50, 56, 0, 94, 56, 25, 56, - 0, 97, 95, 58, -2, 62, 0, 56, 0, 6, - 68, 0, 29, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 29, 29, 30, 0, 44, - 51, -2, 0, 0, 10, 19, -2, -2, 0, 21, - 0, 56, 0, 64, 60, 0, 92, 0, 69, 70, - 8, 25, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 52, 54, 31, 0, 72, 77, - 77, 81, 86, 93, 29, 56, 27, 66, 96, 98, - 61, 91, 25, 0, 29, 56, 56, 57, 75, 74, - 78, 85, -2, 56, 25, 29, 12, 26, -2, 56, - 0, 71, 22, 53, 55, 73, 79, 82, 0, 87, - 83, 29, 18, 11, 12, -2, 9, 0, 25, 56, - 76, 77, 0, 28, 14, 23, 0, 80, 16, 29, - 25, 29, 22, 24 }; -typedef struct { char *t_name; int t_val; } luaY_toktype; +#line 433 "y.tab.c" +#define WRONGTOKEN 257 +#define NIL 258 +#define IF 259 +#define THEN 260 +#define ELSE 261 +#define ELSEIF 262 +#define WHILE 263 +#define DO 264 +#define REPEAT 265 +#define UNTIL 266 +#define END 267 +#define RETURN 268 +#define LOCAL 269 +#define FUNCTION 270 +#define DOTS 271 +#define NUMBER 272 +#define STRING 273 +#define NAME 274 +#define AND 275 +#define OR 276 +#define EQ 277 +#define NE 278 +#define LE 279 +#define GE 280 +#define CONC 281 +#define UNARY 282 +#define NOT 283 +#define YYERRCODE 256 +short luaY_lhs[] = { -1, + 0, 24, 24, 24, 28, 22, 22, 23, 31, 31, + 27, 27, 26, 34, 26, 35, 26, 26, 26, 26, + 33, 33, 33, 36, 30, 25, 25, 1, 32, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 38, 5, 39, 5, 40, 37, 4, 8, 8, 7, + 7, 2, 2, 3, 41, 3, 17, 17, 18, 18, + 19, 19, 42, 9, 9, 14, 14, 43, 43, 12, + 12, 13, 13, 44, 15, 15, 16, 16, 6, 6, + 20, 20, 20, 21, 29, 10, 10, 11, 11, +}; +short luaY_len[] = { 2, + 2, 0, 3, 2, 3, 1, 3, 5, 0, 3, + 0, 1, 8, 0, 8, 0, 6, 3, 1, 3, + 0, 2, 7, 0, 3, 0, 3, 0, 1, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 2, 1, 1, 1, 1, 1, 1, 2, + 0, 5, 0, 5, 0, 4, 2, 1, 3, 3, + 1, 0, 1, 1, 0, 4, 0, 1, 1, 3, + 1, 1, 0, 3, 2, 0, 2, 0, 1, 0, + 2, 1, 3, 3, 0, 2, 1, 3, 1, 3, + 1, 4, 3, 1, 1, 1, 3, 0, 2, +}; +short luaY_defred[] = { 2, + 0, 0, 0, 14, 16, 0, 0, 0, 94, 19, + 0, 0, 0, 91, 1, 0, 4, 0, 48, 46, + 47, 0, 0, 0, 49, 29, 95, 0, 0, 44, + 0, 0, 24, 0, 0, 0, 0, 96, 0, 0, + 0, 0, 0, 0, 0, 57, 61, 12, 3, 0, + 0, 0, 0, 0, 0, 28, 28, 28, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 9, 27, 65, 0, 0, 20, 0, + 5, 0, 0, 0, 0, 0, 59, 0, 93, 30, + 24, 51, 53, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, + 0, 82, 28, 0, 0, 0, 0, 97, 72, 71, + 0, 0, 69, 7, 60, 92, 28, 0, 0, 0, + 56, 0, 75, 0, 0, 86, 24, 0, 25, 0, + 0, 24, 0, 0, 0, 0, 0, 0, 83, 0, + 74, 0, 28, 17, 10, 0, 70, 24, 0, 0, + 77, 0, 0, 8, 22, 0, 13, 81, 15, 28, + 24, 28, 0, 23, +}; +short luaY_dgoto[] = { 1, + 91, 34, 35, 25, 26, 11, 46, 12, 107, 39, + 79, 161, 108, 151, 109, 110, 121, 122, 123, 27, + 14, 41, 81, 2, 15, 16, 49, 17, 28, 73, + 115, 37, 160, 32, 33, 74, 30, 128, 129, 31, + 116, 134, 133, 112, +}; +short luaY_sindex[] = { 0, + 0, 332, -38, 0, 0, -38, -239, -223, 0, 0, + -23, 17, 0, 0, 0, 3, 0, 137, 0, 0, + 0, -38, -38, -38, 0, 0, 0, 137, 547, 0, + -25, -38, 0, 3, 45, 0, 212, 0, -22, 0, + 52, 140, -38, -223, -38, 0, 0, 0, 0, -166, + -38, -154, 40, 40, 102, 0, 0, 0, -38, -38, + -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, + -34, 481, -130, 0, 0, 0, -38, -129, 0, -194, + 0, -123, 45, 0, -17, 103, 0, 753, 0, 0, + 0, 0, 0, -30, -30, -30, -30, -30, -30, 95, + 11, 11, 40, 40, 40, 97, 41, 123, 0, 124, + 212, 0, 0, -38, -59, -38, 45, 0, 0, 0, + 128, 131, 0, 0, 0, 0, 0, -38, -38, -38, + 0, -97, 0, 120, -38, 0, 0, 212, 0, 3, + 0, 0, -194, -183, 118, 118, 212, 97, 0, -97, + 0, 212, 0, 0, 0, -85, 0, 0, -38, -82, + 0, 123, -80, 0, 0, 1105, 0, 0, 0, 0, + 0, 0, -183, 0, +}; +short luaY_rindex[] = { 0, + 0, 191, 69, 0, 0, 173, 0, 0, 0, 0, + 0, 69, 150, 0, 0, 146, 0, -36, 0, 0, + 0, 69, 69, 69, 0, 0, 0, 1, 0, 0, + 0, 69, 0, 47, 461, 436, 0, 0, 197, 130, + 0, 0, 69, 0, -33, 0, 0, 0, 0, 0, + 69, 0, 24, 59, 1181, 0, 0, 0, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + -50, 0, 0, 0, 0, 0, 69, 0, 0, 152, + 0, 0, 311, -21, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 746, 776, 799, 821, 844, 866, 505, + 383, 410, 88, 112, 359, 1174, 0, 74, 0, -40, + -26, 0, 0, 69, -230, 69, 921, 0, 0, 0, + 0, 160, 0, 0, 0, 0, 0, 69, 69, 69, + 0, 77, 0, 78, -9, 0, 0, 939, 0, 289, + 474, 0, 0, -60, 894, 1137, -16, 0, 0, 89, + 0, -10, 0, 0, 0, 0, 0, 0, 69, 0, + 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -60, 0, +}; +short luaY_gindex[] = { 0, + -31, 171, 85, -2, 48, 0, 0, 0, 0, 0, + 0, 0, 67, 0, 0, 0, 0, 0, 75, 8, + 0, 0, 0, 0, 104, 107, -29, 0, 12, -61, + 0, 1260, 50, 0, 0, 0, 213, 0, 0, 0, + 0, 0, -107, 94, +}; +#define YYTABLESIZE 1462 +short luaY_table[] = { 10, + 45, 24, 136, 58, 75, 24, 22, 62, 85, 13, + 22, 68, 66, 18, 67, 40, 69, 87, 78, 42, + 44, 78, 90, 43, 95, 92, 93, 84, 52, 127, + 26, 26, 87, 88, 38, 26, 26, 43, 77, 90, + 58, 45, 45, 45, 45, 45, 11, 45, 88, 79, + 9, 84, 68, 36, 168, 85, 45, 69, 50, 45, + 45, 48, 45, 70, 43, 43, 43, 43, 43, 95, + 43, 55, 55, 51, 85, 153, 119, 158, 159, 120, + 156, 137, 43, 43, 78, 43, 58, 39, 76, 55, + 36, 80, 36, 45, 45, 144, 165, 71, 87, 50, + 50, 50, 50, 50, 70, 50, 154, 87, 84, 172, + 155, 40, 10, 55, 88, 79, 43, 50, 50, 89, + 50, 163, 13, 58, 36, 45, 18, 83, 39, 39, + 39, 39, 39, 70, 39, 114, 68, 66, 171, 67, + 173, 69, 90, 125, 118, 11, 39, 39, 43, 39, + 124, 50, 40, 40, 40, 40, 40, 130, 40, 68, + 66, 117, 67, 141, 69, 131, 132, 135, 142, 6, + 40, 40, 62, 40, 143, 95, 148, 62, 150, 61, + 39, 164, 52, 50, 167, 52, 169, 95, 70, 95, + 26, 55, 67, 89, 50, 95, 98, 82, 78, 3, + 68, 79, 76, 4, 40, 5, 21, 95, 6, 7, + 89, 70, 39, 80, 9, 86, 162, 157, 139, 19, + 95, 140, 174, 19, 47, 149, 0, 51, 0, 0, + 51, 62, 0, 20, 21, 9, 40, 20, 21, 106, + 95, 0, 0, 0, 23, 0, 0, 0, 23, 0, + 65, 0, 0, 68, 66, 98, 67, 0, 69, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 62, 95, 61, 45, 45, 45, 45, 45, 45, + 45, 45, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 0, 55, 0, 43, 43, 43, + 43, 43, 43, 43, 43, 70, 0, 11, 11, 0, + 18, 0, 11, 11, 0, 0, 0, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, + 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, + 0, 0, 0, 0, 0, 0, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 41, 0, + 0, 39, 39, 39, 39, 39, 39, 39, 39, 18, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 37, 0, 0, 40, 40, 40, 40, 40, + 40, 40, 40, 0, 59, 60, 63, 64, 65, 41, + 41, 41, 41, 41, 11, 41, 0, 0, 11, 38, + 11, 0, 0, 11, 11, 11, 0, 41, 41, 11, + 41, 0, 0, 37, 0, 37, 37, 37, 0, 0, + 0, 0, 0, 62, 62, 64, 0, 0, 62, 62, + 0, 37, 37, 0, 37, 0, 0, 0, 0, 0, + 38, 41, 38, 38, 38, 98, 0, 98, 98, 98, + 63, 98, 98, 98, 98, 98, 98, 0, 38, 38, + 98, 38, 0, 66, 0, 37, 64, 29, 29, 64, + 29, 0, 29, 41, 0, 0, 57, 58, 59, 60, + 63, 64, 65, 0, 64, 29, 0, 29, 0, 0, + 0, 63, 38, 0, 42, 0, 0, 37, 0, 0, + 0, 0, 0, 0, 66, 29, 29, 66, 29, 63, + 29, 0, 68, 66, 0, 67, 0, 69, 0, 29, + 0, 0, 66, 29, 38, 29, 0, 0, 0, 0, + 62, 0, 61, 0, 0, 42, 0, 11, 42, 11, + 11, 11, 0, 11, 11, 11, 11, 11, 0, 0, + 0, 0, 11, 42, 42, 0, 42, 29, 0, 18, + 0, 18, 18, 18, 70, 18, 18, 18, 18, 18, + 18, 0, 0, 0, 18, 0, 0, 0, 68, 66, + 3, 67, 0, 69, 4, 0, 5, 42, 0, 6, + 7, 8, 0, 0, 0, 9, 62, 0, 61, 0, + 0, 0, 0, 0, 0, 0, 0, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, + 0, 0, 41, 41, 41, 41, 41, 41, 41, 41, + 70, 37, 37, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 0, 0, 0, 37, 37, 37, 37, + 37, 37, 37, 37, 0, 0, 0, 0, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 0, 0, 0, 38, 38, 38, 38, 38, 38, 38, + 38, 0, 0, 0, 64, 0, 64, 64, 64, 0, + 64, 64, 64, 64, 64, 64, 0, 0, 0, 64, + 29, 29, 29, 29, 29, 29, 29, 0, 0, 0, + 0, 63, 63, 0, 0, 0, 63, 63, 0, 0, + 0, 0, 66, 0, 66, 66, 66, 0, 66, 66, + 66, 66, 66, 66, 113, 31, 0, 66, 29, 29, + 29, 29, 29, 29, 29, 57, 58, 59, 60, 63, + 64, 65, 0, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 34, 0, 0, 42, 42, + 42, 42, 42, 42, 42, 42, 31, 0, 0, 31, + 0, 0, 0, 0, 68, 66, 0, 67, 33, 69, + 0, 0, 0, 0, 31, 31, 56, 31, 0, 0, + 0, 0, 62, 0, 61, 0, 34, 0, 0, 34, + 32, 57, 58, 59, 60, 63, 64, 65, 0, 0, + 0, 0, 0, 0, 34, 34, 0, 34, 31, 33, + 0, 0, 33, 35, 0, 126, 70, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 33, 33, 0, + 33, 32, 0, 0, 32, 36, 0, 0, 34, 0, + 31, 0, 0, 0, 0, 0, 0, 0, 0, 32, + 32, 0, 32, 0, 35, 0, 0, 35, 0, 0, + 0, 33, 0, 52, 0, 0, 0, 0, 0, 0, + 34, 0, 35, 35, 0, 35, 36, 0, 0, 36, + 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, + 99, 0, 0, 33, 36, 36, 0, 36, 0, 0, + 0, 0, 0, 0, 52, 0, 35, 52, 28, 0, + 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, + 0, 0, 52, 0, 0, 0, 0, 0, 36, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, + 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 28, 0, 0, + 0, 0, 0, 0, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 0, 0, 52, 31, + 31, 31, 31, 31, 31, 31, 0, 57, 58, 59, + 60, 63, 64, 65, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 0, 0, 0, 34, + 34, 34, 34, 34, 34, 34, 0, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 0, + 0, 0, 33, 33, 33, 33, 33, 33, 33, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 0, 0, 0, 32, 32, 32, 32, 32, 32, + 32, 0, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 0, 0, 0, 35, 35, 35, + 35, 35, 35, 35, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 54, 0, 0, 36, + 36, 36, 36, 36, 36, 36, 68, 66, 0, 67, + 0, 69, 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 62, 0, 61, 52, 52, 52, + 0, 0, 0, 0, 0, 0, 0, 54, 0, 99, + 54, 99, 99, 99, 0, 99, 99, 99, 99, 99, + 99, 0, 0, 0, 99, 54, 0, 28, 70, 28, + 28, 28, 0, 28, 28, 28, 28, 28, 28, 0, + 0, 0, 28, 94, 0, 94, 94, 94, 94, 94, + 94, 0, 29, 29, 0, 29, 0, 29, 0, 54, + 0, 94, 94, 94, 0, 94, 0, 0, 0, 0, + 29, 0, 29, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 54, 29, 0, 94, 0, 0, 94, 0, 0, + 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, + 0, 53, 54, 0, 0, 0, 0, 0, 0, 0, + 0, 72, 0, 0, 0, 0, 94, 0, 94, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88, 0, 0, 0, 0, 0, 0, 0, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, + 0, 0, 0, 138, 0, 0, 0, 0, 0, 57, + 58, 59, 60, 63, 64, 65, 0, 145, 146, 147, + 0, 0, 0, 0, 152, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 0, 0, 0, + 54, 54, 54, 0, 0, 0, 0, 0, 166, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 94, 94, + 94, 94, 94, 94, 94, 29, 29, 29, 29, 29, + 29, 29, +}; +short luaY_check[] = { 2, + 0, 40, 110, 40, 34, 40, 45, 41, 59, 2, + 45, 42, 43, 2, 45, 8, 47, 44, 59, 8, + 44, 44, 44, 0, 46, 57, 58, 44, 46, 91, + 261, 262, 59, 44, 274, 266, 267, 61, 61, 61, + 40, 41, 42, 43, 44, 45, 0, 47, 59, 59, + 274, 44, 42, 6, 162, 44, 40, 47, 0, 59, + 60, 59, 62, 94, 41, 42, 43, 44, 45, 91, + 47, 24, 123, 91, 125, 137, 271, 261, 262, 274, + 142, 113, 59, 60, 125, 62, 123, 0, 44, 123, + 43, 40, 45, 93, 94, 127, 158, 123, 125, 41, + 42, 43, 44, 45, 94, 47, 138, 274, 125, 171, + 140, 0, 115, 123, 125, 125, 93, 59, 60, 274, + 62, 153, 115, 123, 77, 125, 115, 43, 41, 42, + 43, 44, 45, 94, 47, 266, 42, 43, 170, 45, + 172, 47, 41, 41, 274, 0, 59, 60, 125, 62, + 274, 93, 41, 42, 43, 44, 45, 61, 47, 42, + 43, 77, 45, 116, 47, 125, 44, 44, 41, 40, + 59, 60, 0, 62, 44, 46, 274, 60, 59, 62, + 93, 267, 46, 125, 267, 46, 267, 58, 94, 40, + 0, 123, 41, 44, 58, 46, 0, 58, 125, 259, + 41, 125, 125, 263, 93, 265, 267, 58, 268, 269, + 61, 94, 125, 125, 274, 45, 150, 143, 115, 258, + 91, 115, 173, 258, 12, 132, -1, 91, -1, -1, + 91, 59, -1, 272, 273, 274, 125, 272, 273, 274, + 91, -1, -1, -1, 283, -1, -1, -1, 283, -1, + 281, -1, -1, 42, 43, 59, 45, -1, 47, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 60, 123, 62, 274, 275, 276, 277, 278, 279, + 280, 281, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, -1, 123, -1, 274, 275, 276, + 277, 278, 279, 280, 281, 94, -1, 261, 262, -1, + 0, -1, 266, 267, -1, -1, -1, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, -1, + -1, -1, 274, 275, 276, 277, 278, 279, 280, 281, + -1, -1, -1, -1, -1, -1, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 0, -1, + -1, 274, 275, 276, 277, 278, 279, 280, 281, 59, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 0, -1, -1, 274, 275, 276, 277, 278, + 279, 280, 281, -1, 277, 278, 279, 280, 281, 41, + 42, 43, 44, 45, 259, 47, -1, -1, 263, 0, + 265, -1, -1, 268, 269, 270, -1, 59, 60, 274, + 62, -1, -1, 41, -1, 43, 44, 45, -1, -1, + -1, -1, -1, 261, 262, 0, -1, -1, 266, 267, + -1, 59, 60, -1, 62, -1, -1, -1, -1, -1, + 41, 93, 43, 44, 45, 259, -1, 261, 262, 263, + 0, 265, 266, 267, 268, 269, 270, -1, 59, 60, + 274, 62, -1, 0, -1, 93, 41, 42, 43, 44, + 45, -1, 47, 125, -1, -1, 275, 276, 277, 278, + 279, 280, 281, -1, 59, 60, -1, 62, -1, -1, + -1, 41, 93, -1, 0, -1, -1, 125, -1, -1, + -1, -1, -1, -1, 41, 42, 43, 44, 45, 59, + 47, -1, 42, 43, -1, 45, -1, 47, -1, 94, + -1, -1, 59, 60, 125, 62, -1, -1, -1, -1, + 60, -1, 62, -1, -1, 41, -1, 259, 44, 261, + 262, 263, -1, 265, 266, 267, 268, 269, -1, -1, + -1, -1, 274, 59, 60, -1, 62, 94, -1, 259, + -1, 261, 262, 263, 94, 265, 266, 267, 268, 269, + 270, -1, -1, -1, 274, -1, -1, -1, 42, 43, + 259, 45, -1, 47, 263, -1, 265, 93, -1, 268, + 269, 270, -1, -1, -1, 274, 60, -1, 62, -1, + -1, -1, -1, -1, -1, -1, -1, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 125, + -1, -1, 274, 275, 276, 277, 278, 279, 280, 281, + 94, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, -1, -1, -1, 274, 275, 276, 277, + 278, 279, 280, 281, -1, -1, -1, -1, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + -1, -1, -1, 274, 275, 276, 277, 278, 279, 280, + 281, -1, -1, -1, 259, -1, 261, 262, 263, -1, + 265, 266, 267, 268, 269, 270, -1, -1, -1, 274, + 275, 276, 277, 278, 279, 280, 281, -1, -1, -1, + -1, 261, 262, -1, -1, -1, 266, 267, -1, -1, + -1, -1, 259, -1, 261, 262, 263, -1, 265, 266, + 267, 268, 269, 270, 264, 0, -1, 274, 275, 276, + 277, 278, 279, 280, 281, 275, 276, 277, 278, 279, + 280, 281, -1, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 0, -1, -1, 274, 275, + 276, 277, 278, 279, 280, 281, 41, -1, -1, 44, + -1, -1, -1, -1, 42, 43, -1, 45, 0, 47, + -1, -1, -1, -1, 59, 60, 260, 62, -1, -1, + -1, -1, 60, -1, 62, -1, 41, -1, -1, 44, + 0, 275, 276, 277, 278, 279, 280, 281, -1, -1, + -1, -1, -1, -1, 59, 60, -1, 62, 93, 41, + -1, -1, 44, 0, -1, 93, 94, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 59, 60, -1, + 62, 41, -1, -1, 44, 0, -1, -1, 93, -1, + 125, -1, -1, -1, -1, -1, -1, -1, -1, 59, + 60, -1, 62, -1, 41, -1, -1, 44, -1, -1, + -1, 93, -1, 0, -1, -1, -1, -1, -1, -1, + 125, -1, 59, 60, -1, 62, 41, -1, -1, 44, + -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, + 0, -1, -1, 125, 59, 60, -1, 62, -1, -1, + -1, -1, -1, -1, 41, -1, 93, 44, 0, -1, + -1, -1, -1, -1, -1, 125, -1, -1, -1, -1, + -1, -1, 59, -1, -1, -1, -1, -1, 93, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 125, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, + -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, + 125, -1, -1, -1, -1, -1, -1, 59, -1, -1, + -1, -1, -1, -1, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, -1, -1, 125, 274, + 275, 276, 277, 278, 279, 280, -1, 275, 276, 277, + 278, 279, 280, 281, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, -1, -1, -1, 274, + 275, 276, 277, 278, 279, 280, -1, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, -1, + -1, -1, 274, 275, 276, 277, 278, 279, 280, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, -1, -1, -1, 274, 275, 276, 277, 278, 279, + 280, -1, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, -1, -1, -1, 274, 275, 276, + 277, 278, 279, 280, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 0, -1, -1, 274, + 275, 276, 277, 278, 279, 280, 42, 43, -1, 45, + -1, 47, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 60, -1, 62, 274, 275, 276, + -1, -1, -1, -1, -1, -1, -1, 41, -1, 259, + 44, 261, 262, 263, -1, 265, 266, 267, 268, 269, + 270, -1, -1, -1, 274, 59, -1, 259, 94, 261, + 262, 263, -1, 265, 266, 267, 268, 269, 270, -1, + -1, -1, 274, 40, -1, 42, 43, 44, 45, 46, + 47, -1, 42, 43, -1, 45, -1, 47, -1, 93, + -1, 58, 59, 60, -1, 62, -1, -1, -1, -1, + 60, -1, 62, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 125, 3, -1, 91, -1, -1, 94, -1, -1, + -1, -1, -1, -1, 94, -1, -1, -1, -1, -1, + -1, 22, 23, -1, -1, -1, -1, -1, -1, -1, + -1, 32, -1, -1, -1, -1, 123, -1, 125, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 51, -1, -1, -1, -1, -1, -1, -1, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, -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, 260, -1, -1, -1, -1, -1, + -1, -1, -1, 114, -1, -1, -1, -1, -1, 275, + 276, 277, 278, 279, 280, 281, -1, 128, 129, 130, + -1, -1, -1, -1, 135, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, -1, -1, -1, + 274, 275, 276, -1, -1, -1, -1, -1, 159, -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, 275, 276, + 277, 278, 279, 280, 281, 275, 276, 277, 278, 279, + 280, 281, +}; +#define YYFINAL 1 #ifndef YYDEBUG -# define YYDEBUG 0 /* don't allow debugging */ +#define YYDEBUG 0 #endif - +#define YYMAXTOKEN 283 #if YYDEBUG - -luaY_toktype luaY_toks[] = -{ - "WRONGTOKEN", 257, - "NIL", 258, - "IF", 259, - "THEN", 260, - "ELSE", 261, - "ELSEIF", 262, - "WHILE", 263, - "DO", 264, - "REPEAT", 265, - "UNTIL", 266, - "END", 267, - "RETURN", 268, - "LOCAL", 269, - "FUNCTION", 270, - "NUMBER", 271, - "STRING", 272, - "NAME", 273, - "DEBUG", 274, - "AND", 275, - "OR", 276, - "EQ", 277, - "NE", 278, - ">", 62, - "<", 60, - "LE", 279, - "GE", 280, - "CONC", 281, - "+", 43, - "-", 45, - "*", 42, - "/", 47, - "UNARY", 282, - "NOT", 283, - "^", 94, - "-unknown-", -1 /* ends search */ +char *luaY_name[] = { +"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,"'('","')'","'*'","'+'","','","'-'","'.'","'/'",0,0,0,0,0,0,0,0,0,0, +"':'","';'","'<'","'='","'>'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,"'['",0,"']'","'^'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,"'{'",0,"'}'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"WRONGTOKEN","NIL","IF","THEN","ELSE", +"ELSEIF","WHILE","DO","REPEAT","UNTIL","END","RETURN","LOCAL","FUNCTION","DOTS", +"NUMBER","STRING","NAME","AND","OR","EQ","NE","LE","GE","CONC","UNARY","NOT", }; - -char * luaY_reds[] = -{ - "-no such reduction-", - "functionlist : /* empty */", - "functionlist : functionlist globalstat", - "functionlist : functionlist function", - "globalstat : stat sc", - "globalstat : setdebug", - "function : FUNCTION funcname body", - "funcname : var", - "funcname : varexp ':' NAME", - "body : '(' parlist ')' block END", - "statlist : /* empty */", - "statlist : statlist stat sc", - "sc : /* empty */", - "sc : ';'", - "stat : IF expr1 THEN PrepJump block PrepJump elsepart END", - "stat : WHILE", - "stat : WHILE expr1 DO PrepJump block PrepJump END", - "stat : REPEAT", - "stat : REPEAT block UNTIL expr1 PrepJump", - "stat : varlist1 '=' exprlist1", - "stat : functioncall", - "stat : LOCAL localdeclist decinit", - "elsepart : /* empty */", - "elsepart : ELSE block", - "elsepart : ELSEIF expr1 THEN PrepJump block PrepJump elsepart", - "block : /* empty */", - "block : statlist ret", - "ret : /* empty */", - "ret : RETURN exprlist sc", - "PrepJump : /* empty */", - "expr1 : expr", - "expr : '(' expr ')'", - "expr : expr1 EQ expr1", - "expr : expr1 '<' expr1", - "expr : expr1 '>' expr1", - "expr : expr1 NE expr1", - "expr : expr1 LE expr1", - "expr : expr1 GE expr1", - "expr : expr1 '+' expr1", - "expr : expr1 '-' expr1", - "expr : expr1 '*' expr1", - "expr : expr1 '/' expr1", - "expr : expr1 '^' expr1", - "expr : expr1 CONC expr1", - "expr : '-' expr1", - "expr : table", - "expr : varexp", - "expr : NUMBER", - "expr : STRING", - "expr : NIL", - "expr : functioncall", - "expr : NOT expr1", - "expr : expr1 AND PrepJump", - "expr : expr1 AND PrepJump expr1", - "expr : expr1 OR PrepJump", - "expr : expr1 OR PrepJump expr1", - "table : /* empty */", - "table : '{' fieldlist '}'", - "functioncall : funcvalue funcParams", - "funcvalue : varexp", - "funcvalue : varexp ':' NAME", - "funcParams : '(' exprlist ')'", - "funcParams : table", - "exprlist : /* empty */", - "exprlist : exprlist1", - "exprlist1 : expr", - "exprlist1 : exprlist1 ','", - "exprlist1 : exprlist1 ',' expr", - "parlist : /* empty */", - "parlist : parlist1", - "parlist1 : NAME", - "parlist1 : parlist1 ',' NAME", - "fieldlist : lfieldlist", - "fieldlist : lfieldlist semicolonpart", - "fieldlist : ffieldlist1 lastcomma", - "semicolonpart : /* empty */", - "semicolonpart : ';' ffieldlist", - "lastcomma : /* empty */", - "lastcomma : ','", - "ffieldlist : /* empty */", - "ffieldlist : ffieldlist1 lastcomma", - "ffieldlist1 : ffield", - "ffieldlist1 : ffieldlist1 ',' ffield", - "ffield : NAME '=' expr1", - "lfieldlist : /* empty */", - "lfieldlist : lfieldlist1 lastcomma", - "lfieldlist1 : expr1", - "lfieldlist1 : lfieldlist1 ',' expr1", - "varlist1 : var", - "varlist1 : varlist1 ',' var", - "var : singlevar", - "var : varexp '[' expr1 ']'", - "var : varexp '.' NAME", - "singlevar : NAME", - "varexp : var", - "localdeclist : NAME", - "localdeclist : localdeclist ',' NAME", - "decinit : /* empty */", - "decinit : '=' exprlist1", - "setdebug : DEBUG", +char *luaY_rule[] = { +"$accept : chunk", +"chunk : chunklist ret", +"chunklist :", +"chunklist : chunklist stat sc", +"chunklist : chunklist function", +"function : FUNCTION funcname body", +"funcname : var", +"funcname : varexp ':' NAME", +"body : '(' parlist ')' block END", +"statlist :", +"statlist : statlist stat sc", +"sc :", +"sc : ';'", +"stat : IF expr1 THEN PrepJump block PrepJump elsepart END", +"$$1 :", +"stat : WHILE $$1 expr1 DO PrepJump block PrepJump END", +"$$2 :", +"stat : REPEAT $$2 block UNTIL expr1 PrepJump", +"stat : varlist1 '=' exprlist1", +"stat : functioncall", +"stat : LOCAL localdeclist decinit", +"elsepart :", +"elsepart : ELSE block", +"elsepart : ELSEIF expr1 THEN PrepJump block PrepJump elsepart", +"$$3 :", +"block : $$3 statlist ret", +"ret :", +"ret : RETURN exprlist sc", +"PrepJump :", +"expr1 : expr", +"expr : '(' expr ')'", +"expr : expr1 EQ expr1", +"expr : expr1 '<' expr1", +"expr : expr1 '>' expr1", +"expr : expr1 NE expr1", +"expr : expr1 LE expr1", +"expr : expr1 GE expr1", +"expr : expr1 '+' expr1", +"expr : expr1 '-' expr1", +"expr : expr1 '*' expr1", +"expr : expr1 '/' expr1", +"expr : expr1 '^' expr1", +"expr : expr1 CONC expr1", +"expr : '-' expr1", +"expr : table", +"expr : varexp", +"expr : NUMBER", +"expr : STRING", +"expr : NIL", +"expr : functioncall", +"expr : NOT expr1", +"$$4 :", +"expr : expr1 AND PrepJump $$4 expr1", +"$$5 :", +"expr : expr1 OR PrepJump $$5 expr1", +"$$6 :", +"table : $$6 '{' fieldlist '}'", +"functioncall : funcvalue funcParams", +"funcvalue : varexp", +"funcvalue : varexp ':' NAME", +"funcParams : '(' exprlist ')'", +"funcParams : table", +"exprlist :", +"exprlist : exprlist1", +"exprlist1 : expr", +"$$7 :", +"exprlist1 : exprlist1 ',' $$7 expr", +"parlist :", +"parlist : parlist1", +"parlist1 : par", +"parlist1 : parlist1 ',' par", +"par : NAME", +"par : DOTS", +"$$8 :", +"fieldlist : lfieldlist $$8 semicolonpart", +"fieldlist : ffieldlist1 lastcomma", +"semicolonpart :", +"semicolonpart : ';' ffieldlist", +"lastcomma :", +"lastcomma : ','", +"ffieldlist :", +"ffieldlist : ffieldlist1 lastcomma", +"ffieldlist1 : ffield", +"ffieldlist1 : ffieldlist1 ',' ffield", +"ffield : NAME '=' expr1", +"lfieldlist :", +"lfieldlist : lfieldlist1 lastcomma", +"lfieldlist1 : expr1", +"lfieldlist1 : lfieldlist1 ',' expr1", +"varlist1 : var", +"varlist1 : varlist1 ',' var", +"var : singlevar", +"var : varexp '[' expr1 ']'", +"var : varexp '.' NAME", +"singlevar : NAME", +"varexp : var", +"localdeclist : NAME", +"localdeclist : localdeclist ',' NAME", +"decinit :", +"decinit : '=' exprlist1", }; -#endif /* YYDEBUG */ -#line 1 "/usr/lang/SC1.0/yaccpar" -/* @(#)yaccpar 1.10 89/04/04 SMI; from S5R3 1.10 */ - -/* -** Skeleton parser driver for yacc output -*/ -/* - @(#)RELEASE SC1.0 C++ 2.1 1Mar1991 -*/ - -/* -** yacc user known macros and defines -*/ -#define YYERROR goto luaY_errlab -#define YYACCEPT return(0) -#define YYABORT return(1) -#define YYBACKUP( newtoken, newvalue )\ -{\ - if ( luaY_char >= 0 || ( luaY_r2[ luaY_tmp ] >> 1 ) != 1 )\ - {\ - luaY_error( "syntax error - cannot backup" );\ - goto luaY_errlab;\ - }\ - luaY_char = newtoken;\ - luaY_state = *luaY_ps;\ - luaY_lval = newvalue;\ - goto luaY_newstate;\ -} -#define YYRECOVERING() (!!luaY_errflag) -#define YYCOPY(to, from, type) \ - (type *) memcpy(to, (char *) from, luaY_newmax * sizeof(type)) -#ifndef YYDEBUG -# define YYDEBUG 1 /* make debugging available */ #endif - - -/* -** extern declarations for C++ - check your own code for correctness -** if you have function redefined error messages here. -*/ - -#ifdef __cplusplus -EXTERN_FUNCTION ( extern int printf, (const char*, DOTDOTDOT) ); -EXTERN_FUNCTION ( extern void *memcpy, (void *, const void *, int) ); +#ifdef YYSTACKSIZE +#undef YYMAXDEPTH +#define YYMAXDEPTH YYSTACKSIZE +#else +#ifdef YYMAXDEPTH +#define YYSTACKSIZE YYMAXDEPTH +#else +#define YYSTACKSIZE 500 +#define YYMAXDEPTH 500 #endif - - -/* -** user known globals -*/ -int luaY_debug; /* set to 1 to get debugging */ - -/* -** driver internal defines -*/ -#define YYFLAG (-1000) - -/* -** static variables used by the parser -*/ -static YYSTYPE luaY__luaY_v[YYMAXDEPTH], *luaY_v = luaY__luaY_v; /* value stack */ -static int luaY__luaY_s[YYMAXDEPTH], *luaY_s = luaY__luaY_s; /* state stack */ - -static YYSTYPE *luaY_pv; /* top of value stack */ -static int *luaY_ps; /* top of state stack */ - -static int luaY_state; /* current state */ -static int luaY_tmp; /* extra var (lasts between blocks) */ - -#if defined(__cplusplus) || defined(__STDC__) || defined(lint) -static int __yaccpar_lint_hack__ = 0; - /* if you change the value from 0 to - something else, make sure you know - what to do with luaY_errlab reference. - This is a hack - to make sure C++ and - lint are happy with the 4.1 yacc code. */ #endif - -int luaY_nerrs; /* number of errors */ - -int luaY_errflag; /* error recovery flag */ -int luaY_char; /* current input token number */ -static unsigned luaY_maxdepth = YYMAXDEPTH; - - -/* -** luaY_parse - return 0 if worked, 1 if syntax error not recovered from -*/ +int luaY_debug; +int luaY_nerrs; +int luaY_errflag; +int luaY_char; +short *luaY_ssp; +YYSTYPE *luaY_vsp; +YYSTYPE luaY_val; +YYSTYPE luaY_lval; +short luaY_ss[YYSTACKSIZE]; +YYSTYPE luaY_vs[YYSTACKSIZE]; +#define luaY_stacksize YYSTACKSIZE +#define YYABORT goto luaY_abort +#define YYREJECT goto luaY_abort +#define YYACCEPT goto luaY_accept +#define YYERROR goto luaY_errlab int luaY_parse() { - register YYSTYPE *luaY_pvt = (YYSTYPE*)0 ; /* top of value stack for -$vars */ - - /* - ** Initialize externals - luaY_parse may be called more than once - */ - luaY_pv = &luaY_v[-1]; - luaY_ps = &luaY_s[-1]; - luaY_state = 0; - luaY_tmp = 0; - luaY_nerrs = 0; - luaY_errflag = 0; - luaY_char = -1; - -#if defined(__cplusplus) || defined(__STDC__) || defined(lint) -/* - Note that the following can never be executed but simply to please - lint and C++ - */ - switch (__yaccpar_lint_hack__) - { - case 1: goto luaY_errlab; - case 2: goto luaY_newstate; - } -#endif - - { - register YYSTYPE *luaY__pv; /* top of value stack */ - register int *luaY__ps; /* top of state stack */ - register int luaY__state; /* current state */ - register int luaY__n; /* internal state number info */ - - goto luaY_stack; - - /* - ** get globals into registers. - ** branch to here only if YYBACKUP was called. - */ - luaY_newstate: - luaY__pv = luaY_pv; - luaY__ps = luaY_ps; - luaY__state = luaY_state; - goto luaY__newstate; - - /* - ** get globals into registers. - ** either we just started, or we just finished a reduction - */ - luaY_stack: - luaY__pv = luaY_pv; - luaY__ps = luaY_ps; - luaY__state = luaY_state; - - /* - ** top of for (;;) loop while no reductions done - */ - luaY__stack: - /* - ** put a state and value onto the stacks - */ + register int luaY_m, luaY_n, luaY_state; #if YYDEBUG - /* - ** if debugging, look up token value in list of value vs. - ** name pairs. 0 and negative (-1) are special values. - ** Note: linear search is used since time is not a real - ** consideration while debugging. - */ - if ( luaY_debug ) - { - register int luaY__i; + register char *luaY_s; + extern char *getenv(); - (void)printf( "State %d, token ", luaY__state ); - if ( luaY_char == 0 ) - (void)printf( "end-of-file\n" ); - else if ( luaY_char < 0 ) - (void)printf( "-none-\n" ); - else - { - for ( luaY__i = 0; luaY_toks[luaY__i].t_val >= 0; - luaY__i++ ) - { - if ( luaY_toks[luaY__i].t_val == luaY_char ) - break; - } - (void)printf( "%s\n", luaY_toks[luaY__i].t_name ); - } - } -#endif /* YYDEBUG */ - if ( ++luaY__ps >= &luaY_s[ luaY_maxdepth ] ) /* room on stack? */ - { - /* - ** reallocate and recover. Note that pointers - ** have to be reset, or bad things will happen - */ - int luaY_ps_index = (luaY__ps - luaY_s); - int luaY_pv_index = (luaY__pv - luaY_v); - int luaY_pvt_index = (luaY_pvt - luaY_v); - int luaY_newmax; + if (luaY_s = getenv("YYDEBUG")) + { + luaY_n = *luaY_s; + if (luaY_n >= '0' && luaY_n <= '9') + luaY_debug = luaY_n - '0'; + } +#endif - luaY_newmax = luaY_maxdepth + YYMAXDEPTH; - if (luaY_maxdepth == YYMAXDEPTH) /* first time growth */ - { - YYSTYPE *newluaY_v = (YYSTYPE*)malloc(luaY_newmax*sizeof(YYSTYPE)); - int *newluaY_s = (int*)malloc(luaY_newmax*sizeof(int)); - if (newluaY_s != 0 && newluaY_v != 0) - { - luaY_s = YYCOPY(newluaY_s, luaY_s, int); - luaY_v = YYCOPY(newluaY_v, luaY_v, YYSTYPE); - } - else - luaY_newmax = 0; /* failed */ - } - else /* not first time */ - { - luaY_v = (YYSTYPE*)realloc((char*)luaY_v, - luaY_newmax * sizeof(YYSTYPE)); - luaY_s = (int*)realloc((char*)luaY_s, - luaY_newmax * sizeof(int)); - if (luaY_s == 0 || luaY_v == 0) - luaY_newmax = 0; /* failed */ - } - if (luaY_newmax <= luaY_maxdepth) /* tables not expanded */ - { - luaY_error( "yacc stack overflow" ); - YYABORT; - } - luaY_maxdepth = luaY_newmax; + luaY_nerrs = 0; + luaY_errflag = 0; + luaY_char = (-1); - luaY__ps = luaY_s + luaY_ps_index; - luaY__pv = luaY_v + luaY_pv_index; - luaY_pvt = luaY_v + luaY_pvt_index; - } - *luaY__ps = luaY__state; - *++luaY__pv = luaY_val; + luaY_ssp = luaY_ss; + luaY_vsp = luaY_vs; + *luaY_ssp = luaY_state = 0; - /* - ** we have a new state - find out what to do - */ - luaY__newstate: - if ( ( luaY__n = luaY_pact[ luaY__state ] ) <= YYFLAG ) - goto luaY_default; /* simple state */ +luaY_loop: + if (luaY_n = luaY_defred[luaY_state]) goto luaY_reduce; + if (luaY_char < 0) + { + if ((luaY_char = luaY_lex()) < 0) luaY_char = 0; #if YYDEBUG - /* - ** if debugging, need to mark whether new token grabbed - */ - luaY_tmp = luaY_char < 0; + if (luaY_debug) + { + luaY_s = 0; + if (luaY_char <= YYMAXTOKEN) luaY_s = luaY_name[luaY_char]; + if (!luaY_s) luaY_s = "illegal-symbol"; + printf("%sdebug: state %d, reading %d (%s)\n", + YYPREFIX, luaY_state, luaY_char, luaY_s); + } #endif - if ( ( luaY_char < 0 ) && ( ( luaY_char = luaY_lex() ) < 0 ) ) - luaY_char = 0; /* reached EOF */ -#if YYDEBUG - if ( luaY_debug && luaY_tmp ) - { - register int luaY__i; - - (void)printf( "Received token " ); - if ( luaY_char == 0 ) - (void)printf( "end-of-file\n" ); - else if ( luaY_char < 0 ) - (void)printf( "-none-\n" ); - else - { - for ( luaY__i = 0; luaY_toks[luaY__i].t_val >= 0; - luaY__i++ ) - { - if ( luaY_toks[luaY__i].t_val == luaY_char ) - break; - } - (void)printf( "%s\n", luaY_toks[luaY__i].t_name ); - } - } -#endif /* YYDEBUG */ - if ( ( ( luaY__n += luaY_char ) < 0 ) || ( luaY__n >= YYLAST ) ) - goto luaY_default; - if ( luaY_chk[ luaY__n = luaY_act[ luaY__n ] ] == luaY_char ) /*valid shift*/ - { - luaY_char = -1; - luaY_val = luaY_lval; - luaY__state = luaY__n; - if ( luaY_errflag > 0 ) - luaY_errflag--; - goto luaY__stack; - } - - luaY_default: - if ( ( luaY__n = luaY_def[ luaY__state ] ) == -2 ) - { + } + if ((luaY_n = luaY_sindex[luaY_state]) && (luaY_n += luaY_char) >= 0 && + luaY_n <= YYTABLESIZE && luaY_check[luaY_n] == luaY_char) + { #if YYDEBUG - luaY_tmp = luaY_char < 0; + if (luaY_debug) + printf("%sdebug: state %d, shifting to state %d\n", + YYPREFIX, luaY_state, luaY_table[luaY_n]); +#endif + if (luaY_ssp >= luaY_ss + luaY_stacksize - 1) + { + goto luaY_overflow; + } + *++luaY_ssp = luaY_state = luaY_table[luaY_n]; + *++luaY_vsp = luaY_lval; + luaY_char = (-1); + if (luaY_errflag > 0) --luaY_errflag; + goto luaY_loop; + } + if ((luaY_n = luaY_rindex[luaY_state]) && (luaY_n += luaY_char) >= 0 && + luaY_n <= YYTABLESIZE && luaY_check[luaY_n] == luaY_char) + { + luaY_n = luaY_table[luaY_n]; + goto luaY_reduce; + } + if (luaY_errflag) goto luaY_inrecovery; +#ifdef lint + goto luaY_newerror; +#endif +luaY_newerror: + luaY_error("syntax error"); +#ifdef lint + goto luaY_errlab; #endif - if ( ( luaY_char < 0 ) && ( ( luaY_char = luaY_lex() ) < 0 ) ) - luaY_char = 0; /* reached EOF */ +luaY_errlab: + ++luaY_nerrs; +luaY_inrecovery: + if (luaY_errflag < 3) + { + luaY_errflag = 3; + for (;;) + { + if ((luaY_n = luaY_sindex[*luaY_ssp]) && (luaY_n += YYERRCODE) >= 0 && + luaY_n <= YYTABLESIZE && luaY_check[luaY_n] == YYERRCODE) + { #if YYDEBUG - if ( luaY_debug && luaY_tmp ) - { - register int luaY__i; - - (void)printf( "Received token " ); - if ( luaY_char == 0 ) - (void)printf( "end-of-file\n" ); - else if ( luaY_char < 0 ) - (void)printf( "-none-\n" ); - else - { - for ( luaY__i = 0; - luaY_toks[luaY__i].t_val >= 0; - luaY__i++ ) - { - if ( luaY_toks[luaY__i].t_val - == luaY_char ) - { - break; - } - } - (void)printf( "%s\n", luaY_toks[luaY__i].t_name ); - } - } -#endif /* YYDEBUG */ - /* - ** look through exception table - */ - { - register int *luaY_xi = luaY_exca; - - while ( ( *luaY_xi != -1 ) || - ( luaY_xi[1] != luaY__state ) ) - { - luaY_xi += 2; - } - while ( ( *(luaY_xi += 2) >= 0 ) && - ( *luaY_xi != luaY_char ) ) - ; - if ( ( luaY__n = luaY_xi[1] ) < 0 ) - YYACCEPT; - } - } - - /* - ** check for syntax error - */ - if ( luaY__n == 0 ) /* have an error */ - { - /* no worry about speed here! */ - switch ( luaY_errflag ) - { - case 0: /* new error */ - luaY_error( "syntax error" ); - goto skip_init; - luaY_errlab: - /* - ** get globals into registers. - ** we have a user generated syntax type error - */ - luaY__pv = luaY_pv; - luaY__ps = luaY_ps; - luaY__state = luaY_state; - luaY_nerrs++; - skip_init: - case 1: - case 2: /* incompletely recovered error */ - /* try again... */ - luaY_errflag = 3; - /* - ** find state where "error" is a legal - ** shift action - */ - while ( luaY__ps >= luaY_s ) - { - luaY__n = luaY_pact[ *luaY__ps ] + YYERRCODE; - if ( luaY__n >= 0 && luaY__n < YYLAST && - luaY_chk[luaY_act[luaY__n]] == YYERRCODE) { - /* - ** simulate shift of "error" - */ - luaY__state = luaY_act[ luaY__n ]; - goto luaY__stack; - } - /* - ** current state has no shift on - ** "error", pop stack - */ + if (luaY_debug) + printf("%sdebug: state %d, error recovery shifting\ + to state %d\n", YYPREFIX, *luaY_ssp, luaY_table[luaY_n]); +#endif + if (luaY_ssp >= luaY_ss + luaY_stacksize - 1) + { + goto luaY_overflow; + } + *++luaY_ssp = luaY_state = luaY_table[luaY_n]; + *++luaY_vsp = luaY_lval; + goto luaY_loop; + } + else + { #if YYDEBUG -# define _POP_ "Error recovery pops state %d, uncovers state %d\n" - if ( luaY_debug ) - (void)printf( _POP_, *luaY__ps, - luaY__ps[-1] ); -# undef _POP_ + if (luaY_debug) + printf("%sdebug: error recovery discarding state %d\n", + YYPREFIX, *luaY_ssp); #endif - luaY__ps--; - luaY__pv--; - } - /* - ** there is no state on stack with "error" as - ** a valid shift. give up. - */ - YYABORT; - case 3: /* no shift yet; eat a token */ + if (luaY_ssp <= luaY_ss) goto luaY_abort; + --luaY_ssp; + --luaY_vsp; + } + } + } + else + { + if (luaY_char == 0) goto luaY_abort; #if YYDEBUG - /* - ** if debugging, look up token in list of - ** pairs. 0 and negative shouldn't occur, - ** but since timing doesn't matter when - ** debugging, it doesn't hurt to leave the - ** tests here. - */ - if ( luaY_debug ) - { - register int luaY__i; - - (void)printf( "Error recovery discards " ); - if ( luaY_char == 0 ) - (void)printf( "token end-of-file\n" ); - else if ( luaY_char < 0 ) - (void)printf( "token -none-\n" ); - else - { - for ( luaY__i = 0; - luaY_toks[luaY__i].t_val >= 0; - luaY__i++ ) - { - if ( luaY_toks[luaY__i].t_val - == luaY_char ) - { - break; - } - } - (void)printf( "token %s\n", - luaY_toks[luaY__i].t_name ); - } - } -#endif /* YYDEBUG */ - if ( luaY_char == 0 ) /* reached EOF. quit */ - YYABORT; - luaY_char = -1; - goto luaY__newstate; - } - }/* end if ( luaY__n == 0 ) */ - /* - ** reduction by production luaY__n - ** put stack tops, etc. so things right after switch - */ + if (luaY_debug) + { + luaY_s = 0; + if (luaY_char <= YYMAXTOKEN) luaY_s = luaY_name[luaY_char]; + if (!luaY_s) luaY_s = "illegal-symbol"; + printf("%sdebug: state %d, error recovery discards token %d (%s)\n", + YYPREFIX, luaY_state, luaY_char, luaY_s); + } +#endif + luaY_char = (-1); + goto luaY_loop; + } +luaY_reduce: #if YYDEBUG - /* - ** if debugging, print the string that is the user's - ** specification of the reduction which is just about - ** to be done. - */ - if ( luaY_debug ) - (void)printf( "Reduce by (%d) \"%s\"\n", - luaY__n, luaY_reds[ luaY__n ] ); + if (luaY_debug) + printf("%sdebug: state %d, reducing by rule %d (%s)\n", + YYPREFIX, luaY_state, luaY_n, luaY_rule[luaY_n]); #endif - luaY_tmp = luaY__n; /* value to switch over */ - luaY_pvt = luaY__pv; /* $vars top of value stack */ - /* - ** Look in goto table for next state - ** Sorry about using luaY__state here as temporary - ** register variable, but why not, if it works... - ** If luaY_r2[ luaY__n ] doesn't have the low order bit - ** set, then there is no action to be done for - ** this reduction. So, no saving & unsaving of - ** registers done. The only difference between the - ** code just after the if and the body of the if is - ** the goto luaY__stack in the body. This way the test - ** can be made before the choice of what to do is needed. - */ - { - /* length of production doubled with extra bit */ - register int luaY__len = luaY_r2[ luaY__n ]; - - if ( !( luaY__len & 01 ) ) - { - luaY__len >>= 1; - luaY_val = ( luaY__pv -= luaY__len )[1]; /* $$ = $1 */ - luaY__state = luaY_pgo[ luaY__n = luaY_r1[ luaY__n ] ] + - *( luaY__ps -= luaY__len ) + 1; - if ( luaY__state >= YYLAST || - luaY_chk[ luaY__state = - luaY_act[ luaY__state ] ] != -luaY__n ) - { - luaY__state = luaY_act[ luaY_pgo[ luaY__n ] ]; - } - goto luaY__stack; - } - luaY__len >>= 1; - luaY_val = ( luaY__pv -= luaY__len )[1]; /* $$ = $1 */ - luaY__state = luaY_pgo[ luaY__n = luaY_r1[ luaY__n ] ] + - *( luaY__ps -= luaY__len ) + 1; - if ( luaY__state >= YYLAST || - luaY_chk[ luaY__state = luaY_act[ luaY__state ] ] != -luaY__n ) - { - luaY__state = luaY_act[ luaY_pgo[ luaY__n ] ]; - } - } - /* save until reenter driver code */ - luaY_state = luaY__state; - luaY_ps = luaY__ps; - luaY_pv = luaY__pv; - } - /* - ** code supplied by user is placed in this switch - */ - switch( luaY_tmp ) - { - -case 6: -# line 469 "lua.stx" + luaY_m = luaY_len[luaY_n]; + luaY_val = luaY_vsp[1-luaY_m]; + switch (luaY_n) + { +case 5: +#line 470 "lua.stx" { code_byte(PUSHFUNCTION); - code_code(luaY_pvt[-0].pFunc); - storesinglevar(luaY_pvt[-1].vLong); - } break; + code_code(luaY_vsp[0].pFunc); + storesinglevar(luaY_vsp[-1].vLong); + } +break; +case 6: +#line 477 "lua.stx" +{ luaY_val.vLong =luaY_vsp[0].vLong; init_func(); } +break; case 7: -# line 476 "lua.stx" -{ luaY_val.vLong =luaY_pvt[-0].vLong; init_func(); } break; -case 8: -# line 478 "lua.stx" +#line 479 "lua.stx" { code_byte(PUSHSTRING); - code_word(luaI_findconstant(luaY_pvt[-0].pTStr)); + code_word(luaI_findconstant(luaY_vsp[0].pTStr)); luaY_val.vLong = 0; /* indexed variable */ init_func(); add_localvar(luaI_createfixedstring("self")); - } break; -case 9: -# line 488 "lua.stx" + } +break; +case 8: +#line 489 "lua.stx" { codereturn(); luaY_val.pFunc = new(TFunc); @@ -1331,7 +1169,7 @@ case 9: luaY_val.pFunc->size = pc; luaY_val.pFunc->code = newvector(pc, Byte); luaY_val.pFunc->fileName = lua_parsedfile; - luaY_val.pFunc->lineDefined = luaY_pvt[-3].vInt; + luaY_val.pFunc->lineDefined = luaY_vsp[-3].vInt; memcpy(luaY_val.pFunc->code, basepc, pc*sizeof(Byte)); if (lua_debug) luaI_closelocalvars(luaY_val.pFunc); @@ -1341,347 +1179,490 @@ case 9: PrintCode(funcCode,funcCode+pc); #endif change2main(); /* change back to main code */ - } break; + } +break; +case 13: +#line 516 "lua.stx" +{ codeIf(luaY_vsp[-4].vLong, luaY_vsp[-2].vLong); } +break; case 14: -# line 515 "lua.stx" -{ codeIf(luaY_pvt[-4].vLong, luaY_pvt[-2].vLong); } break; +#line 518 "lua.stx" +{luaY_val.vLong=pc;} +break; case 15: -# line 517 "lua.stx" -{luaY_val.vLong=pc;} break; -case 16: -# line 518 "lua.stx" +#line 519 "lua.stx" { - basepc[luaY_pvt[-3].vLong] = IFFJMP; - code_word_at(basepc+luaY_pvt[-3].vLong+1, pc - (luaY_pvt[-3].vLong + sizeof(Word)+1)); - basepc[luaY_pvt[-1].vLong] = UPJMP; - code_word_at(basepc+luaY_pvt[-1].vLong+1, pc - (luaY_pvt[-6].vLong)); - } break; + basepc[luaY_vsp[-3].vLong] = IFFJMP; + code_word_at(basepc+luaY_vsp[-3].vLong+1, pc - (luaY_vsp[-3].vLong + sizeof(Word)+1)); + basepc[luaY_vsp[-1].vLong] = UPJMP; + code_word_at(basepc+luaY_vsp[-1].vLong+1, pc - (luaY_vsp[-6].vLong)); + } +break; +case 16: +#line 526 "lua.stx" +{luaY_val.vLong=pc;} +break; case 17: -# line 525 "lua.stx" -{luaY_val.vLong=pc;} break; -case 18: -# line 526 "lua.stx" +#line 527 "lua.stx" { - basepc[luaY_pvt[-0].vLong] = IFFUPJMP; - code_word_at(basepc+luaY_pvt[-0].vLong+1, pc - (luaY_pvt[-4].vLong)); - } break; -case 19: -# line 532 "lua.stx" + basepc[luaY_vsp[0].vLong] = IFFUPJMP; + code_word_at(basepc+luaY_vsp[0].vLong+1, pc - (luaY_vsp[-4].vLong)); + } +break; +case 18: +#line 533 "lua.stx" { { int i; - adjust_mult_assign(nvarbuffer, luaY_pvt[-0].vLong, luaY_pvt[-2].vInt * 2 + nvarbuffer); + adjust_mult_assign(nvarbuffer, luaY_vsp[0].vLong, luaY_vsp[-2].vInt * 2 + nvarbuffer); for (i=nvarbuffer-1; i>=0; i--) lua_codestore (i); - if (luaY_pvt[-2].vInt > 1 || (luaY_pvt[-2].vInt == 1 && varbuffer[0] != 0)) + if (luaY_vsp[-2].vInt > 1 || (luaY_vsp[-2].vInt == 1 && varbuffer[0] != 0)) lua_codeadjust (0); } - } break; -case 21: -# line 544 "lua.stx" -{ nlocalvar += luaY_pvt[-1].vInt; - adjust_mult_assign(luaY_pvt[-1].vInt, luaY_pvt[-0].vInt, 0); - } break; + } +break; +case 20: +#line 545 "lua.stx" +{ nlocalvar += luaY_vsp[-1].vInt; + adjust_mult_assign(luaY_vsp[-1].vInt, luaY_vsp[0].vInt, 0); + } +break; +case 23: +#line 553 "lua.stx" +{ codeIf(luaY_vsp[-3].vLong, luaY_vsp[-1].vLong); } +break; case 24: -# line 552 "lua.stx" -{ codeIf(luaY_pvt[-3].vLong, luaY_pvt[-1].vLong); } break; +#line 556 "lua.stx" +{luaY_val.vInt = nlocalvar;} +break; case 25: -# line 555 "lua.stx" -{luaY_val.vInt = nlocalvar;} break; -case 26: -# line 556 "lua.stx" +#line 557 "lua.stx" { - if (nlocalvar != luaY_pvt[-2].vInt) + if (nlocalvar != luaY_vsp[-2].vInt) { if (lua_debug) - for (; nlocalvar > luaY_pvt[-2].vInt; nlocalvar--) + for (; nlocalvar > luaY_vsp[-2].vInt; nlocalvar--) luaI_unregisterlocalvar(lua_linenumber); else - nlocalvar = luaY_pvt[-2].vInt; + nlocalvar = luaY_vsp[-2].vInt; lua_codeadjust (0); } - } break; -case 28: -# line 571 "lua.stx" + } +break; +case 27: +#line 572 "lua.stx" { - adjust_functioncall(luaY_pvt[-1].vLong, MULT_RET); + adjust_functioncall(luaY_vsp[-1].vLong, MULT_RET); codereturn(); - } break; -case 29: -# line 578 "lua.stx" + } +break; +case 28: +#line 579 "lua.stx" { luaY_val.vLong = pc; code_byte(0); /* open space */ code_word (0); - } break; + } +break; +case 29: +#line 586 "lua.stx" +{ adjust_functioncall(luaY_vsp[0].vLong, 1); } +break; case 30: -# line 584 "lua.stx" -{ adjust_functioncall(luaY_pvt[-0].vLong, 1); } break; +#line 589 "lua.stx" +{ luaY_val.vLong = luaY_vsp[-1].vLong; } +break; case 31: -# line 587 "lua.stx" -{ luaY_val.vLong = luaY_pvt[-1].vLong; } break; +#line 590 "lua.stx" +{ code_byte(EQOP); luaY_val.vLong = 0; } +break; case 32: -# line 588 "lua.stx" -{ code_byte(EQOP); luaY_val.vLong = 0; } break; +#line 591 "lua.stx" +{ code_byte(LTOP); luaY_val.vLong = 0; } +break; case 33: -# line 589 "lua.stx" -{ code_byte(LTOP); luaY_val.vLong = 0; } break; +#line 592 "lua.stx" +{ code_byte(GTOP); luaY_val.vLong = 0; } +break; case 34: -# line 590 "lua.stx" -{ code_byte(GTOP); luaY_val.vLong = 0; } break; +#line 593 "lua.stx" +{ code_byte(EQOP); code_byte(NOTOP); luaY_val.vLong = 0; } +break; case 35: -# line 591 "lua.stx" -{ code_byte(EQOP); code_byte(NOTOP); luaY_val.vLong = 0; } break; +#line 594 "lua.stx" +{ code_byte(LEOP); luaY_val.vLong = 0; } +break; case 36: -# line 592 "lua.stx" -{ code_byte(LEOP); luaY_val.vLong = 0; } break; +#line 595 "lua.stx" +{ code_byte(GEOP); luaY_val.vLong = 0; } +break; case 37: -# line 593 "lua.stx" -{ code_byte(GEOP); luaY_val.vLong = 0; } break; +#line 596 "lua.stx" +{ code_byte(ADDOP); luaY_val.vLong = 0; } +break; case 38: -# line 594 "lua.stx" -{ code_byte(ADDOP); luaY_val.vLong = 0; } break; +#line 597 "lua.stx" +{ code_byte(SUBOP); luaY_val.vLong = 0; } +break; case 39: -# line 595 "lua.stx" -{ code_byte(SUBOP); luaY_val.vLong = 0; } break; +#line 598 "lua.stx" +{ code_byte(MULTOP); luaY_val.vLong = 0; } +break; case 40: -# line 596 "lua.stx" -{ code_byte(MULTOP); luaY_val.vLong = 0; } break; +#line 599 "lua.stx" +{ code_byte(DIVOP); luaY_val.vLong = 0; } +break; case 41: -# line 597 "lua.stx" -{ code_byte(DIVOP); luaY_val.vLong = 0; } break; +#line 600 "lua.stx" +{ code_byte(POWOP); luaY_val.vLong = 0; } +break; case 42: -# line 598 "lua.stx" -{ code_byte(POWOP); luaY_val.vLong = 0; } break; +#line 601 "lua.stx" +{ code_byte(CONCOP); luaY_val.vLong = 0; } +break; case 43: -# line 599 "lua.stx" -{ code_byte(CONCOP); luaY_val.vLong = 0; } break; +#line 602 "lua.stx" +{ code_byte(MINUSOP); luaY_val.vLong = 0;} +break; case 44: -# line 600 "lua.stx" -{ code_byte(MINUSOP); luaY_val.vLong = 0;} break; +#line 603 "lua.stx" +{ luaY_val.vLong = 0; } +break; case 45: -# line 601 "lua.stx" -{ luaY_val.vLong = 0; } break; +#line 604 "lua.stx" +{ luaY_val.vLong = 0;} +break; case 46: -# line 602 "lua.stx" -{ luaY_val.vLong = 0;} break; +#line 605 "lua.stx" +{ code_number(luaY_vsp[0].vFloat); luaY_val.vLong = 0; } +break; case 47: -# line 603 "lua.stx" -{ code_number(luaY_pvt[-0].vFloat); luaY_val.vLong = 0; } break; -case 48: -# line 605 "lua.stx" +#line 607 "lua.stx" { code_byte(PUSHSTRING); - code_word(luaY_pvt[-0].vWord); + code_word(luaY_vsp[0].vWord); luaY_val.vLong = 0; - } break; + } +break; +case 48: +#line 612 "lua.stx" +{code_byte(PUSHNIL); luaY_val.vLong = 0; } +break; case 49: -# line 610 "lua.stx" -{code_byte(PUSHNIL); luaY_val.vLong = 0; } break; +#line 613 "lua.stx" +{ luaY_val.vLong = luaY_vsp[0].vLong; } +break; case 50: -# line 611 "lua.stx" -{ luaY_val.vLong = luaY_pvt[-0].vLong; } break; +#line 614 "lua.stx" +{ code_byte(NOTOP); luaY_val.vLong = 0;} +break; case 51: -# line 612 "lua.stx" -{ code_byte(NOTOP); luaY_val.vLong = 0;} break; +#line 615 "lua.stx" +{code_byte(POP); } +break; case 52: -# line 613 "lua.stx" -{code_byte(POP); } break; -case 53: -# line 614 "lua.stx" +#line 616 "lua.stx" { - basepc[luaY_pvt[-2].vLong] = ONFJMP; - code_word_at(basepc+luaY_pvt[-2].vLong+1, pc - (luaY_pvt[-2].vLong + sizeof(Word)+1)); + basepc[luaY_vsp[-2].vLong] = ONFJMP; + code_word_at(basepc+luaY_vsp[-2].vLong+1, pc - (luaY_vsp[-2].vLong + sizeof(Word)+1)); luaY_val.vLong = 0; - } break; + } +break; +case 53: +#line 621 "lua.stx" +{code_byte(POP); } +break; case 54: -# line 619 "lua.stx" -{code_byte(POP); } break; -case 55: -# line 620 "lua.stx" +#line 622 "lua.stx" { - basepc[luaY_pvt[-2].vLong] = ONTJMP; - code_word_at(basepc+luaY_pvt[-2].vLong+1, pc - (luaY_pvt[-2].vLong + sizeof(Word)+1)); + basepc[luaY_vsp[-2].vLong] = ONTJMP; + code_word_at(basepc+luaY_vsp[-2].vLong+1, pc - (luaY_vsp[-2].vLong + sizeof(Word)+1)); luaY_val.vLong = 0; - } break; -case 56: -# line 628 "lua.stx" + } +break; +case 55: +#line 630 "lua.stx" { code_byte(CREATEARRAY); luaY_val.vLong = pc; code_word(0); - } break; -case 57: -# line 633 "lua.stx" + } +break; +case 56: +#line 635 "lua.stx" { - code_word_at(basepc+luaY_pvt[-3].vLong, luaY_pvt[-1].vInt); - } break; -case 58: -# line 639 "lua.stx" + code_word_at(basepc+luaY_vsp[-3].vLong, luaY_vsp[-1].vInt); + } +break; +case 57: +#line 641 "lua.stx" { code_byte(CALLFUNC); - code_byte(luaY_pvt[-1].vInt+luaY_pvt[-0].vInt); + code_byte(luaY_vsp[-1].vInt+luaY_vsp[0].vInt); luaY_val.vLong = pc; code_byte(0); /* may be modified by other rules */ - } break; + } +break; +case 58: +#line 649 "lua.stx" +{ luaY_val.vInt = 0; } +break; case 59: -# line 647 "lua.stx" -{ luaY_val.vInt = 0; } break; -case 60: -# line 649 "lua.stx" +#line 651 "lua.stx" { code_byte(PUSHSELF); - code_word(luaI_findconstant(luaY_pvt[-0].pTStr)); + code_word(luaI_findconstant(luaY_vsp[0].pTStr)); luaY_val.vInt = 1; - } break; + } +break; +case 60: +#line 659 "lua.stx" +{ luaY_val.vInt = adjust_functioncall(luaY_vsp[-1].vLong, 1); } +break; case 61: -# line 657 "lua.stx" -{ luaY_val.vInt = adjust_functioncall(luaY_pvt[-1].vLong, 1); } break; +#line 660 "lua.stx" +{ luaY_val.vInt = 1; } +break; case 62: -# line 658 "lua.stx" -{ luaY_val.vInt = 1; } break; +#line 663 "lua.stx" +{ luaY_val.vLong = 0; } +break; case 63: -# line 661 "lua.stx" -{ luaY_val.vLong = 0; } break; +#line 664 "lua.stx" +{ luaY_val.vLong = luaY_vsp[0].vLong; } +break; case 64: -# line 662 "lua.stx" -{ luaY_val.vLong = luaY_pvt[-0].vLong; } break; +#line 667 "lua.stx" +{ if (luaY_vsp[0].vLong != 0) luaY_val.vLong = luaY_vsp[0].vLong; else luaY_val.vLong = -1; } +break; case 65: -# line 665 "lua.stx" -{ if (luaY_pvt[-0].vLong != 0) luaY_val.vLong = luaY_pvt[-0].vLong; else luaY_val.vLong = -1; } break; +#line 668 "lua.stx" +{ luaY_val.vLong = adjust_functioncall(luaY_vsp[-1].vLong, 1); } +break; case 66: -# line 666 "lua.stx" -{ luaY_val.vLong = adjust_functioncall(luaY_pvt[-1].vLong, 1); } break; -case 67: -# line 667 "lua.stx" +#line 669 "lua.stx" { - if (luaY_pvt[-0].vLong == 0) luaY_val.vLong = -(luaY_pvt[-1].vLong + 1); /* -length */ + if (luaY_vsp[0].vLong == 0) luaY_val.vLong = -(luaY_vsp[-1].vLong + 1); /* -length */ else { - adjust_functioncall(luaY_pvt[-0].vLong, luaY_pvt[-1].vLong); - luaY_val.vLong = luaY_pvt[-0].vLong; + adjust_functioncall(luaY_vsp[0].vLong, luaY_vsp[-1].vLong); + luaY_val.vLong = luaY_vsp[0].vLong; } - } break; + } +break; +case 67: +#line 679 "lua.stx" +{ luaY_val.vInt = close_parlist(0); } +break; case 68: -# line 677 "lua.stx" -{ lua_codeadjust(0); luaY_val.vInt = lua_linenumber; } break; +#line 680 "lua.stx" +{ luaY_val.vInt = close_parlist(luaY_vsp[0].vInt); } +break; case 69: -# line 678 "lua.stx" -{ lua_codeadjust(0); luaY_val.vInt = lua_linenumber; } break; +#line 683 "lua.stx" +{ luaY_val.vInt = luaY_vsp[0].vInt; } +break; case 70: -# line 681 "lua.stx" -{ add_localvar(luaY_pvt[-0].pTStr); } break; +#line 685 "lua.stx" +{ + if (luaY_vsp[-2].vInt) + lua_error("invalid parameter list"); + luaY_val.vInt = luaY_vsp[0].vInt; + } +break; case 71: -# line 682 "lua.stx" -{ add_localvar(luaY_pvt[-0].pTStr); } break; +#line 692 "lua.stx" +{ add_localvar(luaY_vsp[0].pTStr); luaY_val.vInt = 0; } +break; case 72: -# line 686 "lua.stx" -{ flush_list(luaY_pvt[-0].vInt/FIELDS_PER_FLUSH, luaY_pvt[-0].vInt%FIELDS_PER_FLUSH); } break; +#line 693 "lua.stx" +{ luaY_val.vInt = 1; } +break; case 73: -# line 688 "lua.stx" -{ luaY_val.vInt = luaY_pvt[-2].vInt+luaY_pvt[-0].vInt; } break; +#line 697 "lua.stx" +{ flush_list(luaY_vsp[0].vInt/FIELDS_PER_FLUSH, luaY_vsp[0].vInt%FIELDS_PER_FLUSH); } +break; case 74: -# line 690 "lua.stx" -{ luaY_val.vInt = luaY_pvt[-1].vInt; flush_record(luaY_pvt[-1].vInt%FIELDS_PER_FLUSH); } break; +#line 699 "lua.stx" +{ luaY_val.vInt = luaY_vsp[-2].vInt+luaY_vsp[0].vInt; } +break; case 75: -# line 694 "lua.stx" -{ luaY_val.vInt = 0; } break; +#line 701 "lua.stx" +{ luaY_val.vInt = luaY_vsp[-1].vInt; flush_record(luaY_vsp[-1].vInt%FIELDS_PER_FLUSH); } +break; case 76: -# line 696 "lua.stx" -{ luaY_val.vInt = luaY_pvt[-0].vInt; flush_record(luaY_pvt[-0].vInt%FIELDS_PER_FLUSH); } break; -case 79: -# line 703 "lua.stx" -{ luaY_val.vInt = 0; } break; +#line 705 "lua.stx" +{ luaY_val.vInt = 0; } +break; +case 77: +#line 707 "lua.stx" +{ luaY_val.vInt = luaY_vsp[0].vInt; flush_record(luaY_vsp[0].vInt%FIELDS_PER_FLUSH); } +break; case 80: -# line 704 "lua.stx" -{ luaY_val.vInt = luaY_pvt[-1].vInt; } break; +#line 714 "lua.stx" +{ luaY_val.vInt = 0; } +break; case 81: -# line 707 "lua.stx" -{luaY_val.vInt=1;} break; +#line 715 "lua.stx" +{ luaY_val.vInt = luaY_vsp[-1].vInt; } +break; case 82: -# line 709 "lua.stx" +#line 718 "lua.stx" +{luaY_val.vInt=1;} +break; +case 83: +#line 720 "lua.stx" { - luaY_val.vInt=luaY_pvt[-2].vInt+1; + luaY_val.vInt=luaY_vsp[-2].vInt+1; if (luaY_val.vInt%FIELDS_PER_FLUSH == 0) flush_record(FIELDS_PER_FLUSH); - } break; -case 83: -# line 716 "lua.stx" -{ - push_field(luaI_findconstant(luaY_pvt[-2].pTStr)); - } break; + } +break; case 84: -# line 721 "lua.stx" -{ luaY_val.vInt = 0; } break; +#line 727 "lua.stx" +{ + push_field(luaI_findconstant(luaY_vsp[-2].pTStr)); + } +break; case 85: -# line 722 "lua.stx" -{ luaY_val.vInt = luaY_pvt[-1].vInt; } break; +#line 732 "lua.stx" +{ luaY_val.vInt = 0; } +break; case 86: -# line 725 "lua.stx" -{luaY_val.vInt=1;} break; +#line 733 "lua.stx" +{ luaY_val.vInt = luaY_vsp[-1].vInt; } +break; case 87: -# line 727 "lua.stx" +#line 736 "lua.stx" +{luaY_val.vInt=1;} +break; +case 88: +#line 738 "lua.stx" { - luaY_val.vInt=luaY_pvt[-2].vInt+1; + luaY_val.vInt=luaY_vsp[-2].vInt+1; if (luaY_val.vInt%FIELDS_PER_FLUSH == 0) flush_list(luaY_val.vInt/FIELDS_PER_FLUSH - 1, FIELDS_PER_FLUSH); - } break; -case 88: -# line 735 "lua.stx" + } +break; +case 89: +#line 746 "lua.stx" { nvarbuffer = 0; - add_varbuffer(luaY_pvt[-0].vLong); - luaY_val.vInt = (luaY_pvt[-0].vLong == 0) ? 1 : 0; - } break; -case 89: -# line 741 "lua.stx" -{ - add_varbuffer(luaY_pvt[-0].vLong); - luaY_val.vInt = (luaY_pvt[-0].vLong == 0) ? luaY_pvt[-2].vInt + 1 : luaY_pvt[-2].vInt; - } break; + add_varbuffer(luaY_vsp[0].vLong); + luaY_val.vInt = (luaY_vsp[0].vLong == 0) ? 1 : 0; + } +break; case 90: -# line 747 "lua.stx" -{ luaY_val.vLong = luaY_pvt[-0].vLong; } break; +#line 752 "lua.stx" +{ + add_varbuffer(luaY_vsp[0].vLong); + luaY_val.vInt = (luaY_vsp[0].vLong == 0) ? luaY_vsp[-2].vInt + 1 : luaY_vsp[-2].vInt; + } +break; case 91: -# line 749 "lua.stx" +#line 758 "lua.stx" +{ luaY_val.vLong = luaY_vsp[0].vLong; } +break; +case 92: +#line 760 "lua.stx" { luaY_val.vLong = 0; /* indexed variable */ - } break; -case 92: -# line 753 "lua.stx" + } +break; +case 93: +#line 764 "lua.stx" { code_byte(PUSHSTRING); - code_word(luaI_findconstant(luaY_pvt[-0].pTStr)); + code_word(luaI_findconstant(luaY_vsp[0].pTStr)); luaY_val.vLong = 0; /* indexed variable */ - } break; -case 93: -# line 761 "lua.stx" + } +break; +case 94: +#line 772 "lua.stx" { - int local = lua_localname(luaY_pvt[-0].pTStr); + int local = lua_localname(luaY_vsp[0].pTStr); if (local == -1) /* global var */ - luaY_val.vLong = luaI_findsymbol(luaY_pvt[-0].pTStr)+1; /* return positive value */ + luaY_val.vLong = luaI_findsymbol(luaY_vsp[0].pTStr)+1; /* return positive value */ else luaY_val.vLong = -(local+1); /* return negative value */ - } break; -case 94: -# line 770 "lua.stx" -{ lua_pushvar(luaY_pvt[-0].vLong); } break; + } +break; case 95: -# line 773 "lua.stx" -{store_localvar(luaY_pvt[-0].pTStr, 0); luaY_val.vInt = 1;} break; +#line 781 "lua.stx" +{ lua_pushvar(luaY_vsp[0].vLong); } +break; case 96: -# line 775 "lua.stx" -{ - store_localvar(luaY_pvt[-0].pTStr, luaY_pvt[-2].vInt); - luaY_val.vInt = luaY_pvt[-2].vInt+1; - } break; +#line 784 "lua.stx" +{store_localvar(luaY_vsp[0].pTStr, 0); luaY_val.vInt = 1;} +break; case 97: -# line 781 "lua.stx" -{ luaY_val.vInt = 0; } break; +#line 786 "lua.stx" +{ + store_localvar(luaY_vsp[0].pTStr, luaY_vsp[-2].vInt); + luaY_val.vInt = luaY_vsp[-2].vInt+1; + } +break; case 98: -# line 782 "lua.stx" -{ luaY_val.vInt = luaY_pvt[-0].vLong; } break; +#line 792 "lua.stx" +{ luaY_val.vInt = 0; } +break; case 99: -# line 785 "lua.stx" -{ lua_debug = luaY_pvt[-0].vInt; } break; - } - goto luaY_stack; /* reset registers in driver code */ +#line 793 "lua.stx" +{ luaY_val.vInt = luaY_vsp[0].vLong; } +break; +#line 1613 "y.tab.c" + } + luaY_ssp -= luaY_m; + luaY_state = *luaY_ssp; + luaY_vsp -= luaY_m; + luaY_m = luaY_lhs[luaY_n]; + if (luaY_state == 0 && luaY_m == 0) + { +#if YYDEBUG + if (luaY_debug) + printf("%sdebug: after reduction, shifting from state 0 to\ + state %d\n", YYPREFIX, YYFINAL); +#endif + luaY_state = YYFINAL; + *++luaY_ssp = YYFINAL; + *++luaY_vsp = luaY_val; + if (luaY_char < 0) + { + if ((luaY_char = luaY_lex()) < 0) luaY_char = 0; +#if YYDEBUG + if (luaY_debug) + { + luaY_s = 0; + if (luaY_char <= YYMAXTOKEN) luaY_s = luaY_name[luaY_char]; + if (!luaY_s) luaY_s = "illegal-symbol"; + printf("%sdebug: state %d, reading %d (%s)\n", + YYPREFIX, YYFINAL, luaY_char, luaY_s); + } +#endif + } + if (luaY_char == 0) goto luaY_accept; + goto luaY_loop; + } + if ((luaY_n = luaY_gindex[luaY_m]) && (luaY_n += luaY_state) >= 0 && + luaY_n <= YYTABLESIZE && luaY_check[luaY_n] == luaY_state) + luaY_state = luaY_table[luaY_n]; + else + luaY_state = luaY_dgoto[luaY_m]; +#if YYDEBUG + if (luaY_debug) + printf("%sdebug: after reduction, shifting from state %d \ +to state %d\n", YYPREFIX, *luaY_ssp, luaY_state); +#endif + if (luaY_ssp >= luaY_ss + luaY_stacksize - 1) + { + goto luaY_overflow; + } + *++luaY_ssp = luaY_state; + *++luaY_vsp = luaY_val; + goto luaY_loop; +luaY_overflow: + luaY_error("yacc stack overflow"); +luaY_abort: + return (1); +luaY_accept: + return (0); } |