From cc118dc9dae42acc5bba7881394333731fc863e3 Mon Sep 17 00:00:00 2001 From: apistol78 Date: Mon, 13 May 2024 11:14:44 +0200 Subject: [PATCH] Traktor: Updated LUA grammar. Also replaced lemon executable with 64-bit. --- bin/win32/lemon.exe | Bin 52224 -> 0 bytes bin/win64/lemon.exe | Bin 0 -> 73216 bytes code/Script/Editor/LuaGrammar.cpp | 2139 ++++++++++--------- code/Script/Editor/LuaGrammar.h | 8 - code/Script/Editor/LuaGrammar.out | 3203 ----------------------------- code/Script/Editor/LuaGrammar.y | 4 +- scripts/generate-parser.bat | 10 + 7 files changed, 1193 insertions(+), 4171 deletions(-) delete mode 100755 bin/win32/lemon.exe create mode 100644 bin/win64/lemon.exe delete mode 100644 code/Script/Editor/LuaGrammar.out create mode 100644 scripts/generate-parser.bat diff --git a/bin/win32/lemon.exe b/bin/win32/lemon.exe deleted file mode 100755 index de3a7f5abef32a25c0985dec0bd843aad0ca8132..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52224 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 z 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 D+ipuA diff --git a/bin/win64/lemon.exe b/bin/win64/lemon.exe new file mode 100644 index 0000000000000000000000000000000000000000..9526d89d4ae75719a653d79c37e07aab285c6de5 GIT binary patch literal 73216 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 TZ_U2eeck&g;LpGRwiftb-jRL= literal 0 HcmV?d00001 diff --git a/code/Script/Editor/LuaGrammar.cpp b/code/Script/Editor/LuaGrammar.cpp index 119873be28..4eebb83df9 100644 --- a/code/Script/Editor/LuaGrammar.cpp +++ b/code/Script/Editor/LuaGrammar.cpp @@ -1,18 +1,29 @@ /* - * TRAKTOR - * Copyright (c) 2022 Anders Pistol. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at https://mozilla.org/MPL/2.0/. - */ -/* Driver template for the LEMON parser generator. -** The author disclaims copyright to this source code. +** 2000-05-29 +** +** The author disclaims copyright to this source code. In place of +** a legal notice, here is a blessing: +** +** May you do good and not evil. +** May you find forgiveness for yourself and forgive others. +** May you share freely, never taking more than you give. +** +************************************************************************* +** Driver template for the LEMON parser generator. +** +** The "lemon" program processes an LALR(1) input grammar file, then uses +** this template to construct a parser. The "lemon" program inserts text +** at each "%%" line. Also, any "P-a-r-s-e" identifer prefix (without the +** interstitial "-" characters) contained in this template is changed into +** the value of the %name directive from the grammar. Otherwise, the content +** of this template is copied straight through into the generate parser +** source file. +** +** The following is the concatenation of all %include directives from the +** input grammar file: */ -/* First off, code is included that follows the "include" declaration -** in the input grammar file. */ #include -#line 8 "LuaGrammar.y" +/************ Begin %include sections from the grammar ************************/ #include @@ -33,12 +44,12 @@ LuaGrammarToken* copy(LuaGrammarToken* A) if (A) return new LuaGrammarToken(*A); else - return 0; + return nullptr; } bool is_node(const LuaGrammarToken* A) { - return A != 0 && A->node != 0; + return A != nullptr && A->node != nullptr; } LuaGrammarToken* merge(LuaGrammarToken* A, LuaGrammarToken* B) @@ -82,59 +93,71 @@ void dump(const LuaGrammarToken* A) log::info << L"line = " << A->line << Endl; } -#line 78 "LuaGrammar.cpp" -/* Next is all token values, in a form suitable for use by makeheaders. -** This section will be null unless lemon is run with the -m switch. -*/ -/* -** These constants (all generated automatically by the parser generator) -** specify the various kinds of tokens (terminals) that the parser -** understands. -** -** Each symbol here is a terminal symbol in the grammar. -*/ -/* Make sure the INTERFACE macro is defined. -*/ -#ifndef INTERFACE -# define INTERFACE 1 -#endif -/* The next thing included is series of defines which control +/**************** End of %include directives **********************************/ +/* These constants specify the various numeric values for terminal symbols +** in a format understandable to "makeheaders". This section is blank unless +** "lemon" is run with the "-m" command-line option. +***************** Begin makeheaders token definitions *************************/ +/**************** End makeheaders token definitions ***************************/ + +/* The next sections is a series of control #defines. ** various aspects of the generated parser. -** YYCODETYPE is the data type used for storing terminal -** and nonterminal numbers. "unsigned char" is -** used if there are fewer than 250 terminals -** and nonterminals. "int" is used otherwise. -** YYNOCODE is a number of type YYCODETYPE which corresponds -** to no legal terminal or nonterminal number. This -** number is used to fill in empty slots of the hash -** table. +** YYCODETYPE is the data type used to store the integer codes +** that represent terminal and non-terminal symbols. +** "unsigned char" is used if there are fewer than +** 256 symbols. Larger types otherwise. +** YYNOCODE is a number of type YYCODETYPE that is not used for +** any terminal or nonterminal symbol. ** YYFALLBACK If defined, this indicates that one or more tokens -** have fall-back values which should be used if the -** original value of the token will not parse. -** YYACTIONTYPE is the data type used for storing terminal -** and nonterminal numbers. "unsigned char" is -** used if there are fewer than 250 rules and -** states combined. "int" is used otherwise. -** ParseTOKENTYPE is the data type used for minor tokens given -** directly to the parser from the tokenizer. -** YYMINORTYPE is the data type used for all minor tokens. +** (also known as: "terminal symbols") have fall-back +** values which should be used if the original symbol +** would not parse. This permits keywords to sometimes +** be used as identifiers, for example. +** YYACTIONTYPE is the data type used for "action codes" - numbers +** that indicate what to do in response to the next +** token. +** ParseTOKENTYPE is the data type used for minor type for terminal +** symbols. Background: A "minor type" is a semantic +** value associated with a terminal or non-terminal +** symbols. For example, for an "ID" terminal symbol, +** the minor type might be the name of the identifier. +** Each non-terminal can have a different minor type. +** Terminal symbols all have the same minor type, though. +** This macros defines the minor type for terminal +** symbols. +** YYMINORTYPE is the data type used for all minor types. ** This is typically a union of many types, one of ** which is ParseTOKENTYPE. The entry in the union -** for base tokens is called "yy0". +** for terminal symbols is called "yy0". ** YYSTACKDEPTH is the maximum depth of the parser's stack. If ** zero the stack is dynamically sized using realloc() ** ParseARG_SDECL A static variable declaration for the %extra_argument ** ParseARG_PDECL A parameter declaration for the %extra_argument +** ParseARG_PARAM Code to pass %extra_argument as a subroutine parameter ** ParseARG_STORE Code to store %extra_argument into yypParser ** ParseARG_FETCH Code to extract %extra_argument from yypParser -** YYNSTATE the combined number of states. -** YYNRULE the number of rules in the grammar +** ParseCTX_* As ParseARG_ except for %extra_context ** YYERRORSYMBOL is the code number of the error symbol. If not ** defined, then do no error processing. +** YYNSTATE the combined number of states. +** YYNRULE the number of rules in the grammar +** YYNTOKEN Number of terminal symbols +** YY_MAX_SHIFT Maximum value for shift actions +** YY_MIN_SHIFTREDUCE Minimum value for shift-reduce actions +** YY_MAX_SHIFTREDUCE Maximum value for shift-reduce actions +** YY_ERROR_ACTION The yy_action[] code for syntax error +** YY_ACCEPT_ACTION The yy_action[] code for accept +** YY_NO_ACTION The yy_action[] code for no-op +** YY_MIN_REDUCE Minimum value for reduce actions +** YY_MAX_REDUCE Maximum value for reduce actions */ +#ifndef INTERFACE +# define INTERFACE 1 +#endif +/************* Begin control #defines *****************************************/ #define YYCODETYPE unsigned char -#define YYNOCODE 88 -#define YYACTIONTYPE unsigned char +#define YYNOCODE 86 +#define YYACTIONTYPE unsigned short int #define ParseTOKENTYPE traktor::script::LuaGrammarToken* typedef union { int yyinit; @@ -145,18 +168,27 @@ typedef union { #endif #define ParseARG_SDECL const traktor::script::ScriptOutlineLua* outline ; #define ParseARG_PDECL , const traktor::script::ScriptOutlineLua* outline -#define ParseARG_FETCH const traktor::script::ScriptOutlineLua* outline = yypParser->outline -#define ParseARG_STORE yypParser->outline = outline -#define YYNSTATE 164 -#define YYNRULE 85 +#define ParseARG_PARAM ,outline +#define ParseARG_FETCH const traktor::script::ScriptOutlineLua* outline =yypParser->outline ; +#define ParseARG_STORE yypParser->outline =outline ; +#define ParseCTX_SDECL +#define ParseCTX_PDECL +#define ParseCTX_PARAM +#define ParseCTX_FETCH +#define ParseCTX_STORE #define YYFALLBACK 1 -#define YY_NO_ACTION (YYNSTATE+YYNRULE+2) -#define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1) -#define YY_ERROR_ACTION (YYNSTATE+YYNRULE) - -/* The yyzerominor constant is used to initialize instances of -** YYMINORTYPE objects to zero. */ -static const YYMINORTYPE yyzerominor = { 0 }; +#define YYNSTATE 117 +#define YYNRULE 85 +#define YYNTOKEN 55 +#define YY_MAX_SHIFT 116 +#define YY_MIN_SHIFTREDUCE 164 +#define YY_MAX_SHIFTREDUCE 248 +#define YY_ERROR_ACTION 249 +#define YY_ACCEPT_ACTION 250 +#define YY_NO_ACTION 251 +#define YY_MIN_REDUCE 252 +#define YY_MAX_REDUCE 336 +/************* End control #defines *******************************************/ /* Define the yytestcase() macro to be a no-op if is not already defined ** otherwise. @@ -179,33 +211,35 @@ static const YYMINORTYPE yyzerominor = { 0 }; ** Suppose the action integer is N. Then the action is determined as ** follows ** -** 0 <= N < YYNSTATE Shift N. That is, push the lookahead +** 0 <= N <= YY_MAX_SHIFT Shift N. That is, push the lookahead ** token onto the stack and goto state N. ** -** YYNSTATE <= N < YYNSTATE+YYNRULE Reduce by rule N-YYNSTATE. +** N between YY_MIN_SHIFTREDUCE Shift to an arbitrary state then +** and YY_MAX_SHIFTREDUCE reduce by rule N-YY_MIN_SHIFTREDUCE. ** -** N == YYNSTATE+YYNRULE A syntax error has occurred. +** N == YY_ERROR_ACTION A syntax error has occurred. ** -** N == YYNSTATE+YYNRULE+1 The parser accepts its input. +** N == YY_ACCEPT_ACTION The parser accepts its input. ** -** N == YYNSTATE+YYNRULE+2 No such action. Denotes unused +** N == YY_NO_ACTION No such action. Denotes unused ** slots in the yy_action[] table. ** +** N between YY_MIN_REDUCE Reduce by rule N-YY_MIN_REDUCE +** and YY_MAX_REDUCE +** ** The action table is constructed as a single large table named yy_action[]. -** Given state S and lookahead X, the action is computed as +** Given state S and lookahead X, the action is computed as either: ** -** yy_action[ yy_shift_ofst[S] + X ] +** (A) N = yy_action[ yy_shift_ofst[S] + X ] +** (B) N = yy_default[S] ** -** If the index value yy_shift_ofst[S]+X is out of range or if the value -** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S] -** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table -** and that yy_default[S] should be used instead. +** The (A) formula is preferred. The B formula is used instead if +** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X. ** -** The formula above is for computing the action when the lookahead is +** The formulas above are for computing the action when the lookahead is ** a terminal symbol. If the lookahead is a non-terminal (as occurs after ** a reduce action) then the yy_reduce_ofst[] array is used in place of -** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of -** YY_SHIFT_USE_DFLT. +** the yy_shift_ofst[] array. ** ** The following are the tables generated in this section: ** @@ -217,216 +251,221 @@ static const YYMINORTYPE yyzerominor = { 0 }; ** yy_reduce_ofst[] For each state, the offset into yy_action for ** shifting non-terminals after a reduce. ** yy_default[] Default action for each state. -*/ -#define YY_ACTTAB_COUNT (760) +** +*********** Begin parsing tables **********************************************/ +#define YY_ACTTAB_COUNT (803) static const YYACTIONTYPE yy_action[] = { - /* 0 */ 47, 147, 20, 9, 250, 116, 48, 54, 32, 34, - /* 10 */ 1, 41, 16, 50, 154, 97, 27, 164, 27, 118, - /* 20 */ 8, 49, 31, 28, 27, 27, 27, 27, 26, 23, - /* 30 */ 23, 22, 22, 22, 90, 146, 21, 148, 134, 115, - /* 40 */ 27, 54, 27, 25, 24, 159, 31, 28, 27, 27, - /* 50 */ 27, 27, 26, 23, 23, 22, 22, 22, 44, 12, - /* 60 */ 21, 22, 22, 22, 158, 112, 21, 25, 24, 137, - /* 70 */ 27, 151, 27, 25, 24, 111, 31, 28, 27, 27, - /* 80 */ 27, 27, 26, 23, 23, 22, 22, 22, 21, 104, - /* 90 */ 21, 54, 102, 101, 129, 25, 24, 25, 24, 27, - /* 100 */ 109, 27, 4, 11, 149, 31, 28, 27, 27, 27, - /* 110 */ 27, 26, 23, 23, 22, 22, 22, 221, 33, 21, - /* 120 */ 114, 113, 54, 54, 43, 4, 25, 24, 27, 138, - /* 130 */ 27, 220, 221, 145, 31, 28, 27, 27, 27, 27, - /* 140 */ 26, 23, 23, 22, 22, 22, 220, 105, 21, 54, - /* 150 */ 89, 19, 27, 142, 27, 25, 24, 14, 31, 28, - /* 160 */ 27, 27, 27, 27, 26, 23, 23, 22, 22, 22, - /* 170 */ 17, 127, 21, 54, 45, 226, 27, 37, 27, 25, - /* 180 */ 24, 13, 31, 28, 27, 27, 27, 27, 26, 23, - /* 190 */ 23, 22, 22, 22, 130, 15, 21, 226, 226, 125, - /* 200 */ 27, 54, 27, 25, 24, 122, 31, 28, 27, 27, - /* 210 */ 27, 27, 26, 23, 23, 22, 22, 22, 5, 226, - /* 220 */ 21, 128, 27, 226, 27, 121, 226, 25, 24, 28, - /* 230 */ 27, 27, 27, 27, 26, 23, 23, 22, 22, 22, - /* 240 */ 148, 132, 21, 135, 27, 132, 27, 136, 16, 25, - /* 250 */ 24, 150, 27, 27, 27, 27, 26, 23, 23, 22, - /* 260 */ 22, 22, 131, 10, 21, 46, 20, 40, 147, 2, - /* 270 */ 152, 25, 24, 93, 144, 42, 86, 35, 110, 84, - /* 280 */ 26, 23, 23, 22, 22, 22, 20, 7, 21, 123, - /* 290 */ 92, 6, 39, 3, 162, 25, 24, 94, 154, 163, - /* 300 */ 29, 161, 97, 46, 29, 29, 117, 157, 157, 157, - /* 310 */ 157, 157, 157, 20, 160, 18, 83, 57, 2, 141, - /* 320 */ 46, 103, 42, 99, 77, 110, 152, 38, 120, 87, - /* 330 */ 124, 251, 156, 36, 155, 153, 251, 251, 251, 251, - /* 340 */ 251, 251, 251, 251, 251, 251, 251, 29, 251, 251, - /* 350 */ 251, 29, 29, 251, 157, 157, 157, 157, 157, 157, - /* 360 */ 20, 251, 18, 251, 251, 2, 143, 251, 65, 42, - /* 370 */ 53, 251, 154, 52, 51, 106, 100, 152, 251, 85, - /* 380 */ 251, 75, 251, 156, 36, 155, 153, 251, 35, 251, - /* 390 */ 82, 5, 251, 251, 29, 251, 251, 251, 29, 29, - /* 400 */ 251, 157, 157, 157, 157, 157, 157, 20, 251, 251, - /* 410 */ 251, 133, 2, 107, 108, 68, 42, 251, 251, 154, - /* 420 */ 251, 251, 251, 251, 152, 251, 251, 251, 251, 251, - /* 430 */ 156, 36, 155, 153, 251, 131, 251, 78, 139, 30, - /* 440 */ 251, 29, 2, 251, 251, 29, 29, 251, 157, 157, - /* 450 */ 157, 157, 157, 157, 57, 251, 251, 251, 251, 2, - /* 460 */ 251, 251, 251, 152, 251, 56, 251, 126, 251, 156, - /* 470 */ 36, 155, 153, 251, 152, 119, 65, 251, 251, 251, - /* 480 */ 156, 36, 155, 153, 98, 152, 251, 251, 65, 251, - /* 490 */ 251, 156, 36, 155, 153, 251, 96, 152, 251, 251, - /* 500 */ 251, 65, 251, 156, 36, 155, 153, 251, 251, 95, - /* 510 */ 152, 251, 65, 251, 251, 251, 156, 36, 155, 153, - /* 520 */ 91, 152, 251, 65, 251, 251, 251, 156, 36, 155, - /* 530 */ 153, 88, 152, 68, 251, 251, 251, 251, 156, 36, - /* 540 */ 155, 153, 152, 251, 61, 251, 251, 251, 156, 36, - /* 550 */ 155, 153, 251, 152, 251, 71, 140, 251, 251, 156, - /* 560 */ 36, 155, 153, 251, 152, 58, 251, 251, 251, 81, - /* 570 */ 156, 36, 155, 153, 152, 251, 251, 251, 152, 251, - /* 580 */ 156, 36, 155, 153, 156, 36, 155, 153, 251, 251, - /* 590 */ 251, 72, 251, 251, 251, 74, 251, 251, 251, 251, - /* 600 */ 152, 251, 251, 251, 152, 73, 156, 36, 155, 153, - /* 610 */ 156, 36, 155, 153, 152, 70, 251, 251, 251, 69, - /* 620 */ 156, 36, 155, 153, 152, 251, 251, 251, 152, 76, - /* 630 */ 156, 36, 155, 153, 156, 36, 155, 153, 152, 251, - /* 640 */ 251, 251, 80, 251, 156, 36, 155, 153, 251, 251, - /* 650 */ 251, 152, 251, 251, 251, 79, 251, 156, 36, 155, - /* 660 */ 153, 251, 251, 251, 152, 251, 251, 251, 60, 251, - /* 670 */ 156, 36, 155, 153, 251, 251, 251, 152, 67, 251, - /* 680 */ 251, 251, 251, 156, 36, 155, 153, 152, 59, 251, - /* 690 */ 251, 251, 66, 156, 36, 155, 153, 152, 251, 251, - /* 700 */ 251, 152, 64, 156, 36, 155, 153, 156, 36, 155, - /* 710 */ 153, 152, 251, 251, 251, 63, 251, 156, 36, 155, - /* 720 */ 153, 251, 251, 251, 152, 251, 251, 251, 55, 251, - /* 730 */ 156, 36, 155, 153, 251, 251, 251, 152, 251, 251, - /* 740 */ 251, 62, 251, 156, 36, 155, 153, 251, 251, 251, - /* 750 */ 152, 251, 251, 251, 251, 251, 156, 36, 155, 153, + /* 0 */ 57, 308, 250, 116, 103, 54, 38, 20, 35, 308, + /* 10 */ 84, 90, 87, 270, 196, 291, 36, 293, 307, 216, + /* 20 */ 5, 27, 314, 27, 310, 279, 13, 31, 28, 27, + /* 30 */ 27, 27, 27, 26, 23, 23, 22, 22, 22, 46, + /* 40 */ 194, 21, 107, 108, 196, 27, 4, 27, 25, 24, + /* 50 */ 14, 31, 28, 27, 27, 27, 27, 26, 23, 23, + /* 60 */ 22, 22, 22, 77, 227, 21, 102, 101, 30, 4, + /* 70 */ 43, 2, 25, 24, 27, 314, 27, 311, 239, 99, + /* 80 */ 31, 28, 27, 27, 27, 27, 26, 23, 23, 22, + /* 90 */ 22, 22, 83, 112, 21, 230, 16, 242, 27, 3, + /* 100 */ 27, 25, 24, 111, 31, 28, 27, 27, 27, 27, + /* 110 */ 26, 23, 23, 22, 22, 22, 265, 259, 21, 22, + /* 120 */ 22, 22, 225, 16, 21, 25, 24, 27, 217, 27, + /* 130 */ 46, 25, 24, 31, 28, 27, 27, 27, 27, 26, + /* 140 */ 23, 23, 22, 22, 22, 257, 104, 21, 54, 44, + /* 150 */ 12, 263, 21, 254, 25, 24, 27, 109, 27, 25, + /* 160 */ 24, 197, 31, 28, 27, 27, 27, 27, 26, 23, + /* 170 */ 23, 22, 22, 22, 47, 316, 21, 40, 7, 322, + /* 180 */ 93, 6, 92, 25, 24, 39, 86, 221, 94, 46, + /* 190 */ 27, 197, 27, 97, 322, 240, 31, 28, 27, 27, + /* 200 */ 27, 27, 26, 23, 23, 22, 22, 22, 10, 272, + /* 210 */ 21, 54, 15, 269, 27, 54, 27, 25, 24, 195, + /* 220 */ 31, 28, 27, 27, 27, 27, 26, 23, 23, 22, + /* 230 */ 22, 22, 193, 105, 21, 54, 27, 176, 27, 323, + /* 240 */ 174, 25, 24, 28, 27, 27, 27, 27, 26, 23, + /* 250 */ 23, 22, 22, 22, 323, 113, 21, 54, 20, 114, + /* 260 */ 115, 54, 54, 25, 24, 45, 27, 42, 27, 37, + /* 270 */ 110, 5, 9, 11, 27, 27, 27, 27, 26, 23, + /* 280 */ 23, 22, 22, 22, 97, 218, 21, 17, 33, 19, + /* 290 */ 236, 89, 29, 25, 24, 229, 29, 29, 173, 202, + /* 300 */ 202, 202, 202, 202, 202, 20, 172, 18, 252, 251, + /* 310 */ 2, 241, 20, 251, 42, 227, 48, 110, 32, 34, + /* 320 */ 1, 41, 2, 50, 216, 251, 251, 251, 251, 185, + /* 330 */ 8, 49, 251, 251, 251, 251, 251, 251, 251, 29, + /* 340 */ 251, 251, 251, 29, 29, 251, 202, 202, 202, 202, + /* 350 */ 202, 202, 20, 251, 18, 251, 251, 2, 243, 251, + /* 360 */ 251, 42, 251, 251, 216, 26, 23, 23, 22, 22, + /* 370 */ 22, 251, 251, 21, 251, 251, 251, 251, 251, 251, + /* 380 */ 25, 24, 251, 251, 251, 251, 29, 251, 251, 251, + /* 390 */ 29, 29, 251, 202, 202, 202, 202, 202, 202, 20, + /* 400 */ 251, 251, 251, 224, 2, 251, 68, 251, 42, 251, + /* 410 */ 251, 216, 251, 251, 251, 308, 251, 251, 251, 251, + /* 420 */ 251, 291, 36, 293, 307, 251, 251, 251, 78, 78, + /* 430 */ 251, 251, 251, 29, 251, 251, 251, 29, 29, 251, + /* 440 */ 202, 202, 202, 202, 202, 202, 251, 251, 251, 251, + /* 450 */ 251, 2, 53, 251, 251, 52, 51, 106, 68, 251, + /* 460 */ 251, 85, 251, 75, 251, 251, 251, 308, 251, 65, + /* 470 */ 35, 251, 82, 291, 36, 293, 307, 88, 308, 251, + /* 480 */ 251, 333, 251, 251, 291, 36, 293, 307, 251, 251, + /* 490 */ 251, 65, 251, 251, 251, 251, 65, 251, 251, 91, + /* 500 */ 308, 251, 251, 251, 95, 308, 291, 36, 293, 307, + /* 510 */ 251, 291, 36, 293, 307, 65, 251, 251, 251, 65, + /* 520 */ 251, 251, 251, 96, 308, 251, 251, 98, 308, 251, + /* 530 */ 291, 36, 293, 307, 291, 36, 293, 307, 56, 251, + /* 540 */ 251, 251, 251, 251, 251, 251, 251, 308, 320, 65, + /* 550 */ 251, 251, 251, 291, 36, 293, 307, 100, 308, 57, + /* 560 */ 251, 251, 251, 251, 291, 36, 293, 307, 308, 62, + /* 570 */ 251, 251, 271, 251, 291, 36, 293, 307, 308, 251, + /* 580 */ 251, 251, 55, 251, 291, 36, 293, 307, 251, 251, + /* 590 */ 251, 308, 251, 63, 251, 251, 251, 291, 36, 293, + /* 600 */ 307, 251, 308, 251, 251, 251, 251, 251, 291, 36, + /* 610 */ 293, 307, 64, 251, 251, 251, 66, 251, 251, 251, + /* 620 */ 251, 308, 251, 251, 251, 308, 251, 291, 36, 293, + /* 630 */ 307, 291, 36, 293, 307, 59, 251, 251, 251, 67, + /* 640 */ 251, 251, 251, 251, 308, 251, 251, 251, 308, 60, + /* 650 */ 291, 36, 293, 307, 291, 36, 293, 307, 308, 251, + /* 660 */ 79, 251, 251, 251, 291, 36, 293, 307, 251, 308, + /* 670 */ 251, 80, 251, 251, 308, 291, 36, 293, 307, 251, + /* 680 */ 308, 251, 251, 251, 76, 251, 291, 36, 293, 307, + /* 690 */ 251, 251, 251, 308, 69, 251, 308, 308, 70, 291, + /* 700 */ 36, 293, 307, 308, 251, 251, 251, 308, 251, 291, + /* 710 */ 36, 293, 307, 291, 36, 293, 307, 73, 308, 251, + /* 720 */ 251, 74, 308, 251, 251, 308, 308, 251, 251, 251, + /* 730 */ 308, 251, 291, 36, 293, 307, 291, 36, 293, 307, + /* 740 */ 72, 251, 251, 251, 251, 251, 251, 251, 251, 308, + /* 750 */ 81, 251, 251, 251, 251, 291, 36, 293, 307, 308, + /* 760 */ 251, 58, 251, 251, 251, 291, 36, 293, 307, 251, + /* 770 */ 308, 251, 71, 251, 251, 251, 291, 36, 293, 307, + /* 780 */ 251, 308, 251, 251, 61, 251, 251, 291, 36, 293, + /* 790 */ 307, 251, 251, 308, 251, 251, 251, 251, 251, 291, + /* 800 */ 36, 293, 307, }; static const YYCODETYPE yy_lookahead[] = { - /* 0 */ 5, 13, 1, 14, 56, 57, 5, 59, 7, 8, - /* 10 */ 9, 10, 26, 12, 13, 26, 21, 0, 23, 18, - /* 20 */ 19, 20, 27, 28, 29, 30, 31, 32, 33, 34, - /* 30 */ 35, 36, 37, 38, 10, 47, 41, 13, 52, 57, - /* 40 */ 21, 59, 23, 48, 49, 6, 27, 28, 29, 30, - /* 50 */ 31, 32, 33, 34, 35, 36, 37, 38, 15, 16, - /* 60 */ 41, 36, 37, 38, 6, 74, 41, 48, 49, 13, - /* 70 */ 21, 52, 23, 48, 49, 84, 27, 28, 29, 30, - /* 80 */ 31, 32, 33, 34, 35, 36, 37, 38, 41, 57, - /* 90 */ 41, 59, 24, 25, 62, 48, 49, 48, 49, 21, - /* 100 */ 51, 23, 3, 11, 6, 27, 28, 29, 30, 31, - /* 110 */ 32, 33, 34, 35, 36, 37, 38, 11, 26, 41, - /* 120 */ 57, 57, 59, 59, 17, 26, 48, 49, 21, 51, - /* 130 */ 23, 11, 26, 52, 27, 28, 29, 30, 31, 32, - /* 140 */ 33, 34, 35, 36, 37, 38, 26, 57, 41, 59, - /* 150 */ 26, 11, 21, 54, 23, 48, 49, 26, 27, 28, - /* 160 */ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - /* 170 */ 11, 57, 41, 59, 5, 2, 21, 13, 23, 48, - /* 180 */ 49, 26, 27, 28, 29, 30, 31, 32, 33, 34, - /* 190 */ 35, 36, 37, 38, 6, 4, 41, 24, 25, 57, - /* 200 */ 21, 59, 23, 48, 49, 13, 27, 28, 29, 30, - /* 210 */ 31, 32, 33, 34, 35, 36, 37, 38, 2, 46, - /* 220 */ 41, 6, 21, 50, 23, 13, 53, 48, 49, 28, - /* 230 */ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - /* 240 */ 13, 80, 41, 82, 21, 80, 23, 82, 26, 48, - /* 250 */ 49, 69, 29, 30, 31, 32, 33, 34, 35, 36, - /* 260 */ 37, 38, 46, 11, 41, 83, 1, 68, 13, 53, - /* 270 */ 72, 48, 49, 22, 47, 10, 77, 79, 13, 81, - /* 280 */ 33, 34, 35, 36, 37, 38, 1, 11, 41, 69, - /* 290 */ 23, 11, 13, 60, 58, 48, 49, 21, 13, 3, - /* 300 */ 35, 58, 26, 83, 39, 40, 69, 42, 43, 44, - /* 310 */ 45, 46, 47, 1, 58, 50, 74, 63, 53, 54, - /* 320 */ 83, 67, 10, 13, 74, 13, 72, 2, 13, 75, - /* 330 */ 76, 87, 78, 79, 80, 81, 87, 87, 87, 87, - /* 340 */ 87, 87, 87, 87, 87, 87, 87, 35, 87, 87, - /* 350 */ 87, 39, 40, 87, 42, 43, 44, 45, 46, 47, - /* 360 */ 1, 87, 50, 87, 87, 53, 54, 87, 63, 10, - /* 370 */ 61, 87, 13, 64, 65, 66, 71, 72, 87, 70, - /* 380 */ 87, 72, 87, 78, 79, 80, 81, 87, 79, 87, - /* 390 */ 81, 2, 87, 87, 35, 87, 87, 87, 39, 40, - /* 400 */ 87, 42, 43, 44, 45, 46, 47, 1, 87, 87, - /* 410 */ 87, 52, 53, 24, 25, 63, 10, 87, 87, 13, - /* 420 */ 87, 87, 87, 87, 72, 87, 87, 87, 87, 87, - /* 430 */ 78, 79, 80, 81, 87, 46, 87, 85, 86, 50, - /* 440 */ 87, 35, 53, 87, 87, 39, 40, 87, 42, 43, - /* 450 */ 44, 45, 46, 47, 63, 87, 87, 87, 87, 53, - /* 460 */ 87, 87, 87, 72, 87, 63, 87, 76, 87, 78, - /* 470 */ 79, 80, 81, 87, 72, 73, 63, 87, 87, 87, - /* 480 */ 78, 79, 80, 81, 71, 72, 87, 87, 63, 87, - /* 490 */ 87, 78, 79, 80, 81, 87, 71, 72, 87, 87, - /* 500 */ 87, 63, 87, 78, 79, 80, 81, 87, 87, 71, - /* 510 */ 72, 87, 63, 87, 87, 87, 78, 79, 80, 81, - /* 520 */ 71, 72, 87, 63, 87, 87, 87, 78, 79, 80, - /* 530 */ 81, 71, 72, 63, 87, 87, 87, 87, 78, 79, - /* 540 */ 80, 81, 72, 87, 63, 87, 87, 87, 78, 79, - /* 550 */ 80, 81, 87, 72, 87, 63, 86, 87, 87, 78, - /* 560 */ 79, 80, 81, 87, 72, 63, 87, 87, 87, 63, - /* 570 */ 78, 79, 80, 81, 72, 87, 87, 87, 72, 87, - /* 580 */ 78, 79, 80, 81, 78, 79, 80, 81, 87, 87, - /* 590 */ 87, 63, 87, 87, 87, 63, 87, 87, 87, 87, - /* 600 */ 72, 87, 87, 87, 72, 63, 78, 79, 80, 81, - /* 610 */ 78, 79, 80, 81, 72, 63, 87, 87, 87, 63, - /* 620 */ 78, 79, 80, 81, 72, 87, 87, 87, 72, 63, - /* 630 */ 78, 79, 80, 81, 78, 79, 80, 81, 72, 87, - /* 640 */ 87, 87, 63, 87, 78, 79, 80, 81, 87, 87, - /* 650 */ 87, 72, 87, 87, 87, 63, 87, 78, 79, 80, - /* 660 */ 81, 87, 87, 87, 72, 87, 87, 87, 63, 87, - /* 670 */ 78, 79, 80, 81, 87, 87, 87, 72, 63, 87, - /* 680 */ 87, 87, 87, 78, 79, 80, 81, 72, 63, 87, - /* 690 */ 87, 87, 63, 78, 79, 80, 81, 72, 87, 87, - /* 700 */ 87, 72, 63, 78, 79, 80, 81, 78, 79, 80, - /* 710 */ 81, 72, 87, 87, 87, 63, 87, 78, 79, 80, - /* 720 */ 81, 87, 87, 87, 72, 87, 87, 87, 63, 87, - /* 730 */ 78, 79, 80, 81, 87, 87, 87, 72, 87, 87, - /* 740 */ 87, 63, 87, 78, 79, 80, 81, 87, 87, 87, - /* 750 */ 72, 87, 87, 87, 87, 87, 78, 79, 80, 81, + /* 0 */ 62, 71, 55, 56, 66, 58, 2, 1, 78, 71, + /* 10 */ 80, 10, 74, 75, 13, 77, 78, 79, 80, 13, + /* 20 */ 2, 21, 79, 23, 81, 68, 26, 27, 28, 29, + /* 30 */ 30, 31, 32, 33, 34, 35, 36, 37, 38, 82, + /* 40 */ 13, 41, 24, 25, 13, 21, 3, 23, 48, 49, + /* 50 */ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + /* 60 */ 36, 37, 38, 73, 46, 41, 24, 25, 50, 26, + /* 70 */ 17, 53, 48, 49, 21, 79, 23, 81, 47, 13, + /* 80 */ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + /* 90 */ 37, 38, 73, 73, 41, 3, 26, 54, 21, 59, + /* 100 */ 23, 48, 49, 83, 27, 28, 29, 30, 31, 32, + /* 110 */ 33, 34, 35, 36, 37, 38, 68, 57, 41, 36, + /* 120 */ 37, 38, 52, 26, 41, 48, 49, 21, 51, 23, + /* 130 */ 82, 48, 49, 27, 28, 29, 30, 31, 32, 33, + /* 140 */ 34, 35, 36, 37, 38, 57, 56, 41, 58, 15, + /* 150 */ 16, 61, 41, 57, 48, 49, 21, 51, 23, 48, + /* 160 */ 49, 13, 27, 28, 29, 30, 31, 32, 33, 34, + /* 170 */ 35, 36, 37, 38, 5, 68, 41, 67, 11, 11, + /* 180 */ 22, 11, 23, 48, 49, 13, 76, 52, 21, 82, + /* 190 */ 21, 13, 23, 26, 26, 47, 27, 28, 29, 30, + /* 200 */ 31, 32, 33, 34, 35, 36, 37, 38, 11, 56, + /* 210 */ 41, 58, 4, 56, 21, 58, 23, 48, 49, 13, + /* 220 */ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + /* 230 */ 37, 38, 13, 56, 41, 58, 21, 6, 23, 11, + /* 240 */ 6, 48, 49, 28, 29, 30, 31, 32, 33, 34, + /* 250 */ 35, 36, 37, 38, 26, 56, 41, 58, 1, 56, + /* 260 */ 56, 58, 58, 48, 49, 5, 21, 10, 23, 13, + /* 270 */ 13, 2, 14, 11, 29, 30, 31, 32, 33, 34, + /* 280 */ 35, 36, 37, 38, 26, 13, 41, 11, 26, 11, + /* 290 */ 52, 26, 35, 48, 49, 6, 39, 40, 6, 42, + /* 300 */ 43, 44, 45, 46, 47, 1, 6, 50, 0, 86, + /* 310 */ 53, 54, 1, 86, 10, 46, 5, 13, 7, 8, + /* 320 */ 9, 10, 53, 12, 13, 86, 86, 86, 86, 18, + /* 330 */ 19, 20, 86, 86, 86, 86, 86, 86, 86, 35, + /* 340 */ 86, 86, 86, 39, 40, 86, 42, 43, 44, 45, + /* 350 */ 46, 47, 1, 86, 50, 86, 86, 53, 54, 86, + /* 360 */ 86, 10, 86, 86, 13, 33, 34, 35, 36, 37, + /* 370 */ 38, 86, 86, 41, 86, 86, 86, 86, 86, 86, + /* 380 */ 48, 49, 86, 86, 86, 86, 35, 86, 86, 86, + /* 390 */ 39, 40, 86, 42, 43, 44, 45, 46, 47, 1, + /* 400 */ 86, 86, 86, 52, 53, 86, 62, 86, 10, 86, + /* 410 */ 86, 13, 86, 86, 86, 71, 86, 86, 86, 86, + /* 420 */ 86, 77, 78, 79, 80, 86, 86, 86, 84, 85, + /* 430 */ 86, 86, 86, 35, 86, 86, 86, 39, 40, 86, + /* 440 */ 42, 43, 44, 45, 46, 47, 86, 86, 86, 86, + /* 450 */ 86, 53, 60, 86, 86, 63, 64, 65, 62, 86, + /* 460 */ 86, 69, 86, 71, 86, 86, 86, 71, 86, 62, + /* 470 */ 78, 86, 80, 77, 78, 79, 80, 70, 71, 86, + /* 480 */ 86, 85, 86, 86, 77, 78, 79, 80, 86, 86, + /* 490 */ 86, 62, 86, 86, 86, 86, 62, 86, 86, 70, + /* 500 */ 71, 86, 86, 86, 70, 71, 77, 78, 79, 80, + /* 510 */ 86, 77, 78, 79, 80, 62, 86, 86, 86, 62, + /* 520 */ 86, 86, 86, 70, 71, 86, 86, 70, 71, 86, + /* 530 */ 77, 78, 79, 80, 77, 78, 79, 80, 62, 86, + /* 540 */ 86, 86, 86, 86, 86, 86, 86, 71, 72, 62, + /* 550 */ 86, 86, 86, 77, 78, 79, 80, 70, 71, 62, + /* 560 */ 86, 86, 86, 86, 77, 78, 79, 80, 71, 62, + /* 570 */ 86, 86, 75, 86, 77, 78, 79, 80, 71, 86, + /* 580 */ 86, 86, 62, 86, 77, 78, 79, 80, 86, 86, + /* 590 */ 86, 71, 86, 62, 86, 86, 86, 77, 78, 79, + /* 600 */ 80, 86, 71, 86, 86, 86, 86, 86, 77, 78, + /* 610 */ 79, 80, 62, 86, 86, 86, 62, 86, 86, 86, + /* 620 */ 86, 71, 86, 86, 86, 71, 86, 77, 78, 79, + /* 630 */ 80, 77, 78, 79, 80, 62, 86, 86, 86, 62, + /* 640 */ 86, 86, 86, 86, 71, 86, 86, 86, 71, 62, + /* 650 */ 77, 78, 79, 80, 77, 78, 79, 80, 71, 86, + /* 660 */ 62, 86, 86, 86, 77, 78, 79, 80, 86, 71, + /* 670 */ 86, 62, 86, 86, 2, 77, 78, 79, 80, 86, + /* 680 */ 71, 86, 86, 86, 62, 86, 77, 78, 79, 80, + /* 690 */ 86, 86, 86, 71, 62, 86, 24, 25, 62, 77, + /* 700 */ 78, 79, 80, 71, 86, 86, 86, 71, 86, 77, + /* 710 */ 78, 79, 80, 77, 78, 79, 80, 62, 46, 86, + /* 720 */ 86, 62, 50, 86, 86, 53, 71, 86, 86, 86, + /* 730 */ 71, 86, 77, 78, 79, 80, 77, 78, 79, 80, + /* 740 */ 62, 86, 86, 86, 86, 86, 86, 86, 86, 71, + /* 750 */ 62, 86, 86, 86, 86, 77, 78, 79, 80, 71, + /* 760 */ 86, 62, 86, 86, 86, 77, 78, 79, 80, 86, + /* 770 */ 71, 86, 62, 86, 86, 86, 77, 78, 79, 80, + /* 780 */ 86, 71, 86, 86, 62, 86, 86, 77, 78, 79, + /* 790 */ 80, 86, 86, 71, 86, 86, 86, 86, 86, 77, + /* 800 */ 78, 79, 80, }; -#define YY_SHIFT_USE_DFLT (-15) -#define YY_SHIFT_COUNT (116) -#define YY_SHIFT_MIN (-14) -#define YY_SHIFT_MAX (406) -static const short yy_shift_ofst[] = { - /* 0 */ -15, 406, 312, 1, 265, 359, 406, 406, 406, 406, - /* 10 */ 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, - /* 20 */ 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, - /* 30 */ 406, 406, 406, 285, -15, 389, 389, 216, 227, 325, - /* 40 */ 325, 315, 325, -15, -15, -15, -15, -15, -15, 24, - /* 50 */ 310, 296, 296, 296, -15, 155, 131, 107, 78, 49, - /* 60 */ 19, -5, 179, 179, 179, 179, 179, 179, 179, 179, - /* 70 */ 179, 201, 223, 247, 247, 173, 25, 276, 99, 47, - /* 80 */ 47, 47, 120, -11, 106, 92, 68, 43, -14, -12, - /* 90 */ 279, 222, 280, 267, 251, 222, 222, 255, 222, 252, - /* 100 */ 222, 212, 192, 215, 191, 188, 169, 164, 56, 159, - /* 110 */ 140, 81, 124, 98, 58, 39, 17, +#define YY_SHIFT_COUNT (116) +#define YY_SHIFT_MIN (0) +#define YY_SHIFT_MAX (672) +static const unsigned short int yy_shift_ofst[] = { + /* 0 */ 803, 398, 257, 311, 304, 351, 398, 398, 398, 398, + /* 10 */ 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, + /* 20 */ 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, + /* 30 */ 398, 398, 398, 6, 803, 18, 18, 269, 31, 4, + /* 40 */ 4, 27, 4, 803, 803, 803, 803, 803, 803, 1, + /* 50 */ 66, 92, 92, 92, 803, 0, 24, 53, 77, 106, + /* 60 */ 135, 169, 193, 193, 193, 193, 193, 193, 193, 193, + /* 70 */ 193, 215, 245, 332, 332, 672, 83, 167, 43, 111, + /* 80 */ 111, 111, 168, 258, 228, 262, 42, 134, 70, 148, + /* 90 */ 172, 97, 170, 159, 158, 97, 97, 178, 97, 197, + /* 100 */ 97, 206, 219, 231, 208, 234, 260, 256, 272, 276, + /* 110 */ 278, 238, 265, 289, 292, 300, 308, }; -#define YY_REDUCE_USE_DFLT (-53) #define YY_REDUCE_COUNT (54) -#define YY_REDUCE_MIN (-52) -#define YY_REDUCE_MAX (678) +#define YY_REDUCE_MIN (-70) +#define YY_REDUCE_MAX (722) static const short yy_reduce_ofst[] = { - /* 0 */ -52, 254, 352, 309, 470, 460, 449, 438, 425, 413, - /* 10 */ 402, 305, 391, 678, 665, 652, 639, 629, 625, 615, - /* 20 */ 605, 592, 579, 566, 556, 552, 542, 532, 528, 506, - /* 30 */ 502, 492, 481, 198, 32, 165, 165, 161, -9, 237, - /* 40 */ 220, 199, 182, 142, 114, 90, 64, 63, -18, 250, - /* 50 */ 242, 256, 243, 236, 233, + /* 0 */ -53, -62, 344, 392, 396, 407, 429, 434, 453, 457, + /* 10 */ 476, 487, 497, 507, 520, 531, 550, 554, 573, 577, + /* 20 */ 587, 598, 609, 622, 632, 636, 655, 659, 678, 688, + /* 30 */ 699, 710, 722, -70, 90, -57, -57, -4, 20, -43, + /* 40 */ 48, 110, 107, 153, 157, 177, 199, 203, 204, -10, + /* 50 */ 19, 60, 88, 96, 40, }; static const YYACTIONTYPE yy_default[] = { - /* 0 */ 170, 249, 249, 167, 249, 249, 249, 249, 190, 249, + /* 0 */ 256, 249, 249, 253, 249, 249, 249, 249, 274, 249, /* 10 */ 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, /* 20 */ 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - /* 30 */ 249, 249, 249, 249, 170, 249, 208, 249, 237, 249, - /* 40 */ 249, 249, 249, 170, 170, 170, 170, 170, 170, 249, - /* 50 */ 249, 166, 166, 166, 172, 204, 249, 249, 249, 249, - /* 60 */ 249, 249, 205, 169, 203, 202, 248, 247, 246, 216, - /* 70 */ 215, 211, 212, 214, 213, 181, 217, 192, 249, 219, - /* 80 */ 218, 210, 225, 249, 225, 249, 196, 184, 249, 249, - /* 90 */ 249, 194, 249, 249, 249, 193, 191, 249, 183, 200, - /* 100 */ 180, 249, 249, 249, 249, 249, 249, 249, 249, 249, - /* 110 */ 222, 249, 238, 249, 249, 249, 249, 195, 189, 182, - /* 120 */ 198, 199, 197, 179, 186, 188, 187, 185, 178, 177, - /* 130 */ 176, 233, 232, 230, 231, 229, 228, 224, 223, 244, - /* 140 */ 245, 243, 242, 241, 239, 236, 240, 201, 200, 235, - /* 150 */ 234, 227, 226, 225, 222, 209, 207, 206, 175, 174, - /* 160 */ 173, 171, 168, 165, + /* 30 */ 249, 249, 249, 249, 256, 249, 292, 249, 325, 249, + /* 40 */ 249, 249, 249, 256, 256, 256, 256, 256, 256, 249, + /* 50 */ 249, 319, 319, 319, 258, 288, 249, 249, 249, 249, + /* 60 */ 249, 249, 289, 255, 287, 286, 336, 335, 334, 300, + /* 70 */ 299, 295, 296, 298, 297, 267, 301, 276, 249, 303, + /* 80 */ 302, 294, 307, 249, 307, 249, 280, 268, 249, 249, + /* 90 */ 249, 278, 249, 249, 249, 277, 275, 249, 321, 284, + /* 100 */ 266, 249, 249, 249, 249, 249, 249, 249, 249, 249, + /* 110 */ 304, 249, 326, 249, 249, 249, 249, }; +/********** End of lemon-generated parsing tables *****************************/ -/* The next table maps tokens into fallback tokens. If a construct -** like the following: +/* The next table maps tokens (terminal symbols) into fallback tokens. +** If a construct like the following: ** ** %fallback ID X Y Z. ** @@ -434,6 +473,10 @@ static const YYACTIONTYPE yy_default[] = { ** and Z. Whenever one of the tokens X, Y, or Z is input to the parser ** but it does not parse, the type of the token is changed to ID and ** the parse is retried before an error is thrown. +** +** This feature can be used, for example, to cause some keywords in a language +** to revert to identifiers if they keyword does not apply in the context where +** it appears. */ #ifdef YYFALLBACK static const YYCODETYPE yyFallback[] = { @@ -454,9 +497,13 @@ static const YYCODETYPE yyFallback[] = { ** + The semantic value stored at this level of the stack. This is ** the information used by the action routines in the grammar. ** It is sometimes called the "minor" token. +** +** After the "shift" half of a SHIFTREDUCE action, the stateno field +** actually contains the reduce action for the second half of the +** SHIFTREDUCE. */ struct yyStackEntry { - YYACTIONTYPE stateno; /* The state-number */ + YYACTIONTYPE stateno; /* The state-number, or reduce action in SHIFTREDUCE */ YYCODETYPE major; /* The major token value. This is the code ** number for the token at this stack level */ YYMINORTYPE minor; /* The user-supplied minor token value. This @@ -467,17 +514,22 @@ typedef struct yyStackEntry yyStackEntry; /* The state of the parser is completely contained in an instance of ** the following structure */ struct yyParser { - int yyidx; /* Index of top element in stack */ + yyStackEntry *yytos; /* Pointer to top element of the stack */ #ifdef YYTRACKMAXSTACKDEPTH - int yyidxMax; /* Maximum value of yyidx */ + int yyhwm; /* High-water mark of the stack */ #endif +#ifndef YYNOERRORRECOVERY int yyerrcnt; /* Shifts left before out of the error */ +#endif ParseARG_SDECL /* A place to hold %extra_argument */ + ParseCTX_SDECL /* A place to hold %extra_context */ #if YYSTACKDEPTH<=0 int yystksz; /* Current side of the stack */ yyStackEntry *yystack; /* The parser's stack */ + yyStackEntry yystk0; /* First stack entry */ #else yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */ + yyStackEntry *yystackEnd; /* Last entry in the stack */ #endif }; typedef struct yyParser yyParser; @@ -514,111 +566,175 @@ void ParseTrace(FILE *TraceFILE, char *zTracePrompt){ } #endif /* NDEBUG */ -#ifndef NDEBUG +#if defined(YYCOVERAGE) || !defined(NDEBUG) /* For tracing shifts, the names of all terminals and nonterminals ** are required. The following table supplies these names */ static const char *const yyTokenName[] = { - "$", "OPEN", "LEFT_PARANTHESIS", "SEMICOLON", - "UNTIL", "DO", "END", "WHILE", - "REPEAT", "IF", "FUNCTION", "EQUAL", - "FOR", "NAME", "IN", "ELSE", - "ELSEIF", "THEN", "BREAK", "RETURN", - "LOCAL", "LESS", "CONST", "GREATER", - "COLON", "DOT", "COMMA", "OR", - "AND", "LESS_EQUAL", "GREATER_EQUAL", "EQUAL_EQUAL", - "NOT_EQUAL", "DOT_DOT", "PLUS", "MINUS", - "MULTIPLY", "DIVIDE", "MODULO", "NOT", - "HASH", "RAISE", "NIL", "TRUE", - "FALSE", "NUMBER", "STRING", "DOT_DOT_DOT", - "BITWISE_OR", "BITWISE_AND", "LEFT_BRACKET", "RIGHT_BRACKET", - "RIGHT_PARANTHESIS", "LEFT_BRACE", "RIGHT_BRACE", "error", - "chunk", "block", "semi", "scope", - "statlist", "laststat", "ublock", "exp", - "binding", "stat", "repetition", "conds", - "funcname", "funcbody", "setlist", "explist1", - "functioncall", "explist23", "namelist", "condlist", - "cond", "dottedname", "function", "prefixexp", - "tableconstructor", "var", "args", "params", - "parlist", "fieldlist", "field", + /* 0 */ "$", + /* 1 */ "OPEN", + /* 2 */ "LEFT_PARANTHESIS", + /* 3 */ "SEMICOLON", + /* 4 */ "UNTIL", + /* 5 */ "DO", + /* 6 */ "END", + /* 7 */ "WHILE", + /* 8 */ "REPEAT", + /* 9 */ "IF", + /* 10 */ "FUNCTION", + /* 11 */ "EQUAL", + /* 12 */ "FOR", + /* 13 */ "NAME", + /* 14 */ "IN", + /* 15 */ "ELSE", + /* 16 */ "ELSEIF", + /* 17 */ "THEN", + /* 18 */ "BREAK", + /* 19 */ "RETURN", + /* 20 */ "LOCAL", + /* 21 */ "LESS", + /* 22 */ "CONST", + /* 23 */ "GREATER", + /* 24 */ "COLON", + /* 25 */ "DOT", + /* 26 */ "COMMA", + /* 27 */ "OR", + /* 28 */ "AND", + /* 29 */ "LESS_EQUAL", + /* 30 */ "GREATER_EQUAL", + /* 31 */ "EQUAL_EQUAL", + /* 32 */ "NOT_EQUAL", + /* 33 */ "DOT_DOT", + /* 34 */ "PLUS", + /* 35 */ "MINUS", + /* 36 */ "MULTIPLY", + /* 37 */ "DIVIDE", + /* 38 */ "MODULO", + /* 39 */ "NOT", + /* 40 */ "HASH", + /* 41 */ "RAISE", + /* 42 */ "NIL", + /* 43 */ "TRUE", + /* 44 */ "FALSE", + /* 45 */ "NUMBER", + /* 46 */ "STRING", + /* 47 */ "DOT_DOT_DOT", + /* 48 */ "BITWISE_OR", + /* 49 */ "BITWISE_AND", + /* 50 */ "LEFT_BRACKET", + /* 51 */ "RIGHT_BRACKET", + /* 52 */ "RIGHT_PARANTHESIS", + /* 53 */ "LEFT_BRACE", + /* 54 */ "RIGHT_BRACE", + /* 55 */ "chunk", + /* 56 */ "block", + /* 57 */ "semi", + /* 58 */ "scope", + /* 59 */ "statlist", + /* 60 */ "laststat", + /* 61 */ "ublock", + /* 62 */ "exp", + /* 63 */ "binding", + /* 64 */ "stat", + /* 65 */ "repetition", + /* 66 */ "conds", + /* 67 */ "funcname", + /* 68 */ "funcbody", + /* 69 */ "setlist", + /* 70 */ "explist1", + /* 71 */ "functioncall", + /* 72 */ "explist23", + /* 73 */ "namelist", + /* 74 */ "condlist", + /* 75 */ "cond", + /* 76 */ "dottedname", + /* 77 */ "function", + /* 78 */ "prefixexp", + /* 79 */ "tableconstructor", + /* 80 */ "var", + /* 81 */ "args", + /* 82 */ "params", + /* 83 */ "parlist", + /* 84 */ "fieldlist", + /* 85 */ "field", }; -#endif /* NDEBUG */ +#endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */ #ifndef NDEBUG /* For tracing reduce actions, the names of all rules are required. */ static const char *const yyRuleName[] = { /* 0 */ "chunk ::= block", - /* 1 */ "semi ::= SEMICOLON", - /* 2 */ "semi ::=", - /* 3 */ "block ::= scope statlist", - /* 4 */ "block ::= scope statlist laststat semi", - /* 5 */ "ublock ::= block UNTIL exp", - /* 6 */ "scope ::=", - /* 7 */ "scope ::= scope statlist binding semi", - /* 8 */ "statlist ::=", - /* 9 */ "statlist ::= statlist stat semi", - /* 10 */ "stat ::= DO block END", - /* 11 */ "stat ::= WHILE exp DO block END", - /* 12 */ "stat ::= repetition DO block END", - /* 13 */ "stat ::= REPEAT ublock", - /* 14 */ "stat ::= IF conds END", - /* 15 */ "stat ::= FUNCTION funcname funcbody", - /* 16 */ "stat ::= setlist EQUAL explist1", - /* 17 */ "stat ::= functioncall", - /* 18 */ "repetition ::= FOR NAME EQUAL explist23", - /* 19 */ "repetition ::= FOR namelist IN explist1", - /* 20 */ "conds ::= condlist", - /* 21 */ "conds ::= condlist ELSE block", - /* 22 */ "condlist ::= cond", - /* 23 */ "condlist ::= condlist ELSEIF cond", - /* 24 */ "cond ::= exp THEN block", - /* 25 */ "laststat ::= BREAK", - /* 26 */ "laststat ::= RETURN", - /* 27 */ "laststat ::= RETURN explist1", - /* 28 */ "binding ::= LOCAL namelist", - /* 29 */ "binding ::= LOCAL namelist EQUAL explist1", - /* 30 */ "binding ::= LOCAL namelist LESS CONST GREATER EQUAL explist1", - /* 31 */ "binding ::= LOCAL FUNCTION NAME funcbody", - /* 32 */ "funcname ::= dottedname", - /* 33 */ "funcname ::= dottedname COLON NAME", - /* 34 */ "dottedname ::= NAME", - /* 35 */ "dottedname ::= dottedname DOT NAME", - /* 36 */ "namelist ::= NAME", - /* 37 */ "namelist ::= namelist COMMA NAME", - /* 38 */ "explist1 ::= exp", - /* 39 */ "explist1 ::= explist1 COMMA exp", - /* 40 */ "explist23 ::= exp COMMA exp", - /* 41 */ "explist23 ::= exp COMMA exp COMMA exp", - /* 42 */ "exp ::= NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT", - /* 43 */ "exp ::= function", - /* 44 */ "exp ::= prefixexp", - /* 45 */ "exp ::= tableconstructor", - /* 46 */ "exp ::= NOT|HASH|MINUS exp", - /* 47 */ "exp ::= exp OR exp", - /* 48 */ "exp ::= exp AND exp", - /* 49 */ "exp ::= exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp", - /* 50 */ "exp ::= exp DOT_DOT exp", - /* 51 */ "exp ::= exp BITWISE_OR exp", - /* 52 */ "exp ::= exp BITWISE_AND exp", - /* 53 */ "exp ::= exp PLUS|MINUS exp", - /* 54 */ "exp ::= exp MULTIPLY|DIVIDE|MODULO exp", - /* 55 */ "exp ::= exp RAISE exp", - /* 56 */ "setlist ::= var", - /* 57 */ "setlist ::= setlist COMMA var", - /* 58 */ "var ::= NAME", - /* 59 */ "var ::= prefixexp LEFT_BRACKET exp RIGHT_BRACKET", - /* 60 */ "var ::= prefixexp DOT NAME", - /* 61 */ "prefixexp ::= var", - /* 62 */ "prefixexp ::= functioncall", - /* 63 */ "prefixexp ::= OPEN exp RIGHT_PARANTHESIS", - /* 64 */ "functioncall ::= prefixexp args", - /* 65 */ "functioncall ::= prefixexp COLON NAME args", - /* 66 */ "args ::= LEFT_PARANTHESIS RIGHT_PARANTHESIS", - /* 67 */ "args ::= LEFT_PARANTHESIS explist1 RIGHT_PARANTHESIS", - /* 68 */ "args ::= tableconstructor", - /* 69 */ "args ::= STRING", - /* 70 */ "function ::= FUNCTION funcbody", - /* 71 */ "funcbody ::= params block END", + /* 1 */ "block ::= scope statlist", + /* 2 */ "block ::= scope statlist laststat semi", + /* 3 */ "ublock ::= block UNTIL exp", + /* 4 */ "scope ::=", + /* 5 */ "scope ::= scope statlist binding semi", + /* 6 */ "statlist ::=", + /* 7 */ "statlist ::= statlist stat semi", + /* 8 */ "stat ::= DO block END", + /* 9 */ "stat ::= WHILE exp DO block END", + /* 10 */ "stat ::= repetition DO block END", + /* 11 */ "stat ::= REPEAT ublock", + /* 12 */ "stat ::= IF conds END", + /* 13 */ "stat ::= FUNCTION funcname funcbody", + /* 14 */ "stat ::= setlist EQUAL explist1", + /* 15 */ "stat ::= functioncall", + /* 16 */ "conds ::= condlist", + /* 17 */ "conds ::= condlist ELSE block", + /* 18 */ "condlist ::= cond", + /* 19 */ "condlist ::= condlist ELSEIF cond", + /* 20 */ "cond ::= exp THEN block", + /* 21 */ "laststat ::= BREAK", + /* 22 */ "laststat ::= RETURN", + /* 23 */ "laststat ::= RETURN explist1", + /* 24 */ "binding ::= LOCAL namelist", + /* 25 */ "binding ::= LOCAL namelist EQUAL explist1", + /* 26 */ "binding ::= LOCAL namelist LESS CONST GREATER EQUAL explist1", + /* 27 */ "binding ::= LOCAL FUNCTION NAME funcbody", + /* 28 */ "funcname ::= dottedname", + /* 29 */ "funcname ::= dottedname COLON NAME", + /* 30 */ "dottedname ::= NAME", + /* 31 */ "dottedname ::= dottedname DOT NAME", + /* 32 */ "namelist ::= NAME", + /* 33 */ "namelist ::= namelist COMMA NAME", + /* 34 */ "explist1 ::= exp", + /* 35 */ "explist1 ::= explist1 COMMA exp", + /* 36 */ "explist23 ::= exp COMMA exp", + /* 37 */ "explist23 ::= exp COMMA exp COMMA exp", + /* 38 */ "exp ::= NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT", + /* 39 */ "exp ::= function", + /* 40 */ "exp ::= prefixexp", + /* 41 */ "exp ::= tableconstructor", + /* 42 */ "exp ::= NOT|HASH|MINUS exp", + /* 43 */ "exp ::= exp OR exp", + /* 44 */ "exp ::= exp AND exp", + /* 45 */ "exp ::= exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp", + /* 46 */ "exp ::= exp DOT_DOT exp", + /* 47 */ "exp ::= exp BITWISE_OR exp", + /* 48 */ "exp ::= exp BITWISE_AND exp", + /* 49 */ "exp ::= exp PLUS|MINUS exp", + /* 50 */ "exp ::= exp MULTIPLY|DIVIDE|MODULO exp", + /* 51 */ "exp ::= exp RAISE exp", + /* 52 */ "var ::= NAME", + /* 53 */ "var ::= prefixexp LEFT_BRACKET exp RIGHT_BRACKET", + /* 54 */ "var ::= prefixexp DOT NAME", + /* 55 */ "prefixexp ::= var", + /* 56 */ "prefixexp ::= functioncall", + /* 57 */ "prefixexp ::= OPEN exp RIGHT_PARANTHESIS", + /* 58 */ "functioncall ::= prefixexp args", + /* 59 */ "functioncall ::= prefixexp COLON NAME args", + /* 60 */ "args ::= LEFT_PARANTHESIS RIGHT_PARANTHESIS", + /* 61 */ "args ::= LEFT_PARANTHESIS explist1 RIGHT_PARANTHESIS", + /* 62 */ "args ::= tableconstructor", + /* 63 */ "args ::= STRING", + /* 64 */ "function ::= FUNCTION funcbody", + /* 65 */ "funcbody ::= params block END", + /* 66 */ "semi ::= SEMICOLON", + /* 67 */ "semi ::=", + /* 68 */ "repetition ::= FOR NAME EQUAL explist23", + /* 69 */ "repetition ::= FOR namelist IN explist1", + /* 70 */ "setlist ::= var", + /* 71 */ "setlist ::= setlist COMMA var", /* 72 */ "params ::= LEFT_PARANTHESIS parlist RIGHT_PARANTHESIS", /* 73 */ "parlist ::=", /* 74 */ "parlist ::= namelist", @@ -638,27 +754,75 @@ static const char *const yyRuleName[] = { #if YYSTACKDEPTH<=0 /* -** Try to increase the size of the parser stack. +** Try to increase the size of the parser stack. Return the number +** of errors. Return 0 on success. */ -static void yyGrowStack(yyParser *p){ +static int yyGrowStack(yyParser *p){ int newSize; + int idx; yyStackEntry *pNew; newSize = p->yystksz*2 + 100; - pNew = realloc(p->yystack, newSize*sizeof(pNew[0])); + idx = p->yytos ? (int)(p->yytos - p->yystack) : 0; + if( p->yystack==&p->yystk0 ){ + pNew = malloc(newSize*sizeof(pNew[0])); + if( pNew ) pNew[0] = p->yystk0; + }else{ + pNew = realloc(p->yystack, newSize*sizeof(pNew[0])); + } if( pNew ){ p->yystack = pNew; - p->yystksz = newSize; + p->yytos = &p->yystack[idx]; #ifndef NDEBUG if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sStack grows to %d entries!\n", - yyTracePrompt, p->yystksz); + fprintf(yyTraceFILE,"%sStack grows from %d to %d entries.\n", + yyTracePrompt, p->yystksz, newSize); } #endif + p->yystksz = newSize; } + return pNew==0; } #endif +/* Datatype of the argument to the memory allocated passed as the +** second argument to ParseAlloc() below. This can be changed by +** putting an appropriate #define in the %include section of the input +** grammar. +*/ +#ifndef YYMALLOCARGTYPE +# define YYMALLOCARGTYPE size_t +#endif + +/* Initialize a new parser that has already been allocated. +*/ +void ParseInit(void *yypRawParser ParseCTX_PDECL){ + yyParser *yypParser = (yyParser*)yypRawParser; + ParseCTX_STORE +#ifdef YYTRACKMAXSTACKDEPTH + yypParser->yyhwm = 0; +#endif +#if YYSTACKDEPTH<=0 + yypParser->yytos = NULL; + yypParser->yystack = NULL; + yypParser->yystksz = 0; + if( yyGrowStack(yypParser) ){ + yypParser->yystack = &yypParser->yystk0; + yypParser->yystksz = 1; + } +#endif +#ifndef YYNOERRORRECOVERY + yypParser->yyerrcnt = -1; +#endif + yypParser->yytos = yypParser->yystack; + yypParser->yystack[0].stateno = 0; + yypParser->yystack[0].major = 0; +#if YYSTACKDEPTH>0 + yypParser->yystackEnd = &yypParser->yystack[YYSTACKDEPTH-1]; +#endif +} + +#ifndef Parse_ENGINEALWAYSONSTACK /* ** This function allocates a new parser. ** The only argument is a pointer to a function which works like @@ -671,34 +835,32 @@ static void yyGrowStack(yyParser *p){ ** A pointer to a parser. This pointer is used in subsequent calls ** to Parse and ParseFree. */ -void *ParseAlloc(void *(*mallocProc)(size_t)){ - yyParser *pParser; - pParser = (yyParser*)(*mallocProc)( (size_t)sizeof(yyParser) ); - if( pParser ){ - pParser->yyidx = -1; -#ifdef YYTRACKMAXSTACKDEPTH - pParser->yyidxMax = 0; -#endif -#if YYSTACKDEPTH<=0 - pParser->yystack = NULL; - pParser->yystksz = 0; - yyGrowStack(pParser); -#endif +void *ParseAlloc(void *(*mallocProc)(YYMALLOCARGTYPE) ParseCTX_PDECL){ + yyParser *yypParser; + yypParser = (yyParser*)(*mallocProc)( (YYMALLOCARGTYPE)sizeof(yyParser) ); + if( yypParser ){ + ParseCTX_STORE + ParseInit(yypParser ParseCTX_PARAM); } - return pParser; + return (void*)yypParser; } +#endif /* Parse_ENGINEALWAYSONSTACK */ -/* The following function deletes the value associated with a -** symbol. The symbol can be either a terminal or nonterminal. -** "yymajor" is the symbol code, and "yypminor" is a pointer to -** the value. + +/* The following function deletes the "minor type" or semantic value +** associated with a symbol. The symbol can be either a terminal +** or nonterminal. "yymajor" is the symbol code, and "yypminor" is +** a pointer to the value to be deleted. The code used to do the +** deletions is derived from the %destructor and/or %token_destructor +** directives of the input grammar. */ static void yy_destructor( yyParser *yypParser, /* The parser */ YYCODETYPE yymajor, /* Type code for object to destroy */ YYMINORTYPE *yypminor /* The object to be destroyed */ ){ - ParseARG_FETCH; + ParseARG_FETCH + ParseCTX_FETCH switch( yymajor ){ /* Here is inserted the actions which take place when a ** terminal or non-terminal is destroyed. This can happen @@ -707,9 +869,10 @@ static void yy_destructor( ** being destroyed before it is finished parsing. ** ** Note: during a reduce, the only symbols destroyed are those - ** which appear on the RHS of the rule, but which are not used + ** which appear on the RHS of the rule, but which are *not* used ** inside the C code. */ +/********* Begin destructor definitions ***************************************/ /* TERMINAL Destructor */ case 1: /* OPEN */ case 2: /* LEFT_PARANTHESIS */ @@ -766,11 +929,10 @@ static void yy_destructor( case 53: /* LEFT_BRACE */ case 54: /* RIGHT_BRACE */ { -#line 3 "LuaGrammar.y" delete (yypminor->yy0); -#line 764 "LuaGrammar.cpp" } break; +/********* End destructor definitions *****************************************/ default: break; /* If no destructor action specified: do nothing */ } } @@ -780,51 +942,53 @@ static void yy_destructor( ** ** If there is a destructor routine associated with the token which ** is popped from the stack, then call it. -** -** Return the major token number for the symbol popped. */ -static int yy_pop_parser_stack(yyParser *pParser){ - YYCODETYPE yymajor; - yyStackEntry *yytos = &pParser->yystack[pParser->yyidx]; - - if( pParser->yyidx<0 ) return 0; +static void yy_pop_parser_stack(yyParser *pParser){ + yyStackEntry *yytos; + assert( pParser->yytos!=0 ); + assert( pParser->yytos > pParser->yystack ); + yytos = pParser->yytos--; #ifndef NDEBUG - if( yyTraceFILE && pParser->yyidx>=0 ){ + if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sPopping %s\n", yyTracePrompt, yyTokenName[yytos->major]); } #endif - yymajor = yytos->major; - yy_destructor(pParser, yymajor, &yytos->minor); - pParser->yyidx--; - return yymajor; + yy_destructor(pParser, yytos->major, &yytos->minor); } +/* +** Clear all secondary memory allocations from the parser +*/ +void ParseFinalize(void *p){ + yyParser *pParser = (yyParser*)p; + while( pParser->yytos>pParser->yystack ) yy_pop_parser_stack(pParser); +#if YYSTACKDEPTH<=0 + if( pParser->yystack!=&pParser->yystk0 ) free(pParser->yystack); +#endif +} + +#ifndef Parse_ENGINEALWAYSONSTACK /* -** Deallocate and destroy a parser. Destructors are all called for +** Deallocate and destroy a parser. Destructors are called for ** all stack elements before shutting the parser down. ** -** Inputs: -**
    -**
  • A pointer to the parser. This should be a pointer -** obtained from ParseAlloc. -**
  • A pointer to a function used to reclaim memory obtained -** from malloc. -**
+** If the YYPARSEFREENEVERNULL macro exists (for example because it +** is defined in a %include section of the input grammar) then it is +** assumed that the input pointer is never NULL. */ void ParseFree( void *p, /* The parser to be deleted */ void (*freeProc)(void*) /* Function used to reclaim memory */ ){ - yyParser *pParser = (yyParser*)p; - if( pParser==0 ) return; - while( pParser->yyidx>=0 ) yy_pop_parser_stack(pParser); -#if YYSTACKDEPTH<=0 - free(pParser->yystack); +#ifndef YYPARSEFREENEVERNULL + if( p==0 ) return; #endif - (*freeProc)((void*)pParser); + ParseFinalize(p); + (*freeProc)(p); } +#endif /* Parse_ENGINEALWAYSONSTACK */ /* ** Return the peak depth of the stack for a parser. @@ -832,33 +996,70 @@ void ParseFree( #ifdef YYTRACKMAXSTACKDEPTH int ParseStackPeak(void *p){ yyParser *pParser = (yyParser*)p; - return pParser->yyidxMax; + return pParser->yyhwm; +} +#endif + +/* This array of booleans keeps track of the parser statement +** coverage. The element yycoverage[X][Y] is set when the parser +** is in state X and has a lookahead token Y. In a well-tested +** systems, every element of this matrix should end up being set. +*/ +#if defined(YYCOVERAGE) +static unsigned char yycoverage[YYNSTATE][YYNTOKEN]; +#endif + +/* +** Write into out a description of every state/lookahead combination that +** +** (1) has not been used by the parser, and +** (2) is not a syntax error. +** +** Return the number of missed state/lookahead combinations. +*/ +#if defined(YYCOVERAGE) +int ParseCoverage(FILE *out){ + int stateno, iLookAhead, i; + int nMissed = 0; + for(stateno=0; statenoyystack[pParser->yyidx].stateno; - - if( stateno>YY_SHIFT_COUNT - || (i = yy_shift_ofst[stateno])==YY_SHIFT_USE_DFLT ){ - return yy_default[stateno]; - } - assert( iLookAhead!=YYNOCODE ); - i += iLookAhead; - if( i<0 || i>=YY_ACTTAB_COUNT || yy_lookahead[i]!=iLookAhead ){ - if( iLookAhead>0 ){ + + if( stateno>YY_MAX_SHIFT ) return stateno; + assert( stateno <= YY_SHIFT_COUNT ); +#if defined(YYCOVERAGE) + yycoverage[stateno][iLookAhead] = 1; +#endif + do{ + i = yy_shift_ofst[stateno]; + assert( i>=0 ); + assert( i+YYNTOKEN<=(int)sizeof(yy_lookahead)/sizeof(yy_lookahead[0]) ); + assert( iLookAhead!=YYNOCODE ); + assert( iLookAhead < YYNTOKEN ); + i += iLookAhead; + if( yy_lookahead[i]!=iLookAhead ){ #ifdef YYFALLBACK YYCODETYPE iFallback; /* Fallback token */ if( iLookAhead=YY_ACTTAB_COUNT j0 ){ #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE, "%sWILDCARD %s => %s\n", - yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[YYWILDCARD]); + yyTracePrompt, yyTokenName[iLookAhead], + yyTokenName[YYWILDCARD]); } #endif /* NDEBUG */ return yy_action[j]; } } #endif /* YYWILDCARD */ + return yy_default[stateno]; + }else{ + return yy_action[i]; } - return yy_default[stateno]; - }else{ - return yy_action[i]; - } + }while(1); } /* ** Find the appropriate action for a parser given the non-terminal ** look-ahead token iLookAhead. -** -** If the look-ahead token is YYNOCODE, then check to see if the action is -** independent of the look-ahead. If it is, return the action, otherwise -** return YY_NO_ACTION. */ static int yy_find_reduce_action( - int stateno, /* Current state number */ + YYACTIONTYPE stateno, /* Current state number */ YYCODETYPE iLookAhead /* The look-ahead token */ ){ int i; @@ -922,7 +1122,6 @@ static int yy_find_reduce_action( assert( stateno<=YY_REDUCE_COUNT ); #endif i = yy_reduce_ofst[stateno]; - assert( i!=YY_REDUCE_USE_DFLT ); assert( iLookAhead!=YYNOCODE ); i += iLookAhead; #ifdef YYERRORSYMBOL @@ -939,158 +1138,178 @@ static int yy_find_reduce_action( /* ** The following routine is called if the stack overflows. */ -static void yyStackOverflow(yyParser *yypParser, YYMINORTYPE *yypMinor){ - ParseARG_FETCH; - yypParser->yyidx--; +static void yyStackOverflow(yyParser *yypParser){ + ParseARG_FETCH + ParseCTX_FETCH #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt); } #endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); + while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser); /* Here code is inserted which will execute if the parser ** stack every overflows */ - ParseARG_STORE; /* Suppress warning about unused %extra_argument var */ +/******** Begin %stack_overflow code ******************************************/ +/******** End %stack_overflow code ********************************************/ + ParseARG_STORE /* Suppress warning about unused %extra_argument var */ + ParseCTX_STORE } +/* +** Print tracing information for a SHIFT action +*/ +#ifndef NDEBUG +static void yyTraceShift(yyParser *yypParser, int yyNewState, const char *zTag){ + if( yyTraceFILE ){ + if( yyNewStateyytos->major], + yyNewState); + }else{ + fprintf(yyTraceFILE,"%s%s '%s', pending reduce %d\n", + yyTracePrompt, zTag, yyTokenName[yypParser->yytos->major], + yyNewState - YY_MIN_REDUCE); + } + } +} +#else +# define yyTraceShift(X,Y,Z) +#endif + /* ** Perform a shift action. */ static void yy_shift( yyParser *yypParser, /* The parser to be shifted */ - int yyNewState, /* The new state to shift in */ - int yyMajor, /* The major token to shift in */ - YYMINORTYPE *yypMinor /* Pointer to the minor token to shift in */ + YYACTIONTYPE yyNewState, /* The new state to shift in */ + YYCODETYPE yyMajor, /* The major token to shift in */ + ParseTOKENTYPE yyMinor /* The minor token to shift in */ ){ yyStackEntry *yytos; - yypParser->yyidx++; + yypParser->yytos++; #ifdef YYTRACKMAXSTACKDEPTH - if( yypParser->yyidx>yypParser->yyidxMax ){ - yypParser->yyidxMax = yypParser->yyidx; + if( (int)(yypParser->yytos - yypParser->yystack)>yypParser->yyhwm ){ + yypParser->yyhwm++; + assert( yypParser->yyhwm == (int)(yypParser->yytos - yypParser->yystack) ); } #endif #if YYSTACKDEPTH>0 - if( yypParser->yyidx>=YYSTACKDEPTH ){ - yyStackOverflow(yypParser, yypMinor); + if( yypParser->yytos>yypParser->yystackEnd ){ + yypParser->yytos--; + yyStackOverflow(yypParser); return; } #else - if( yypParser->yyidx>=yypParser->yystksz ){ - yyGrowStack(yypParser); - if( yypParser->yyidx>=yypParser->yystksz ){ - yyStackOverflow(yypParser, yypMinor); + if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz] ){ + if( yyGrowStack(yypParser) ){ + yypParser->yytos--; + yyStackOverflow(yypParser); return; } } #endif - yytos = &yypParser->yystack[yypParser->yyidx]; - yytos->stateno = (YYACTIONTYPE)yyNewState; - yytos->major = (YYCODETYPE)yyMajor; - yytos->minor = *yypMinor; -#ifndef NDEBUG - if( yyTraceFILE && yypParser->yyidx>0 ){ - int i; - fprintf(yyTraceFILE,"%sShift %d\n",yyTracePrompt,yyNewState); - fprintf(yyTraceFILE,"%sStack:",yyTracePrompt); - for(i=1; i<=yypParser->yyidx; i++) - fprintf(yyTraceFILE," %s",yyTokenName[yypParser->yystack[i].major]); - fprintf(yyTraceFILE,"\n"); + if( yyNewState > YY_MAX_SHIFT ){ + yyNewState += YY_MIN_REDUCE - YY_MIN_SHIFTREDUCE; } -#endif + yytos = yypParser->yytos; + yytos->stateno = yyNewState; + yytos->major = yyMajor; + yytos->minor.yy0 = yyMinor; + yyTraceShift(yypParser, yyNewState, "Shift"); } /* The following table contains information about every rule that ** is used during the reduce. */ static const struct { - YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ - unsigned char nrhs; /* Number of right-hand side symbols in the rule */ + YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ + signed char nrhs; /* Negative of the number of RHS symbols in the rule */ } yyRuleInfo[] = { - { 56, 1 }, - { 58, 1 }, - { 58, 0 }, - { 57, 2 }, - { 57, 4 }, - { 62, 3 }, - { 59, 0 }, - { 59, 4 }, - { 60, 0 }, - { 60, 3 }, - { 65, 3 }, - { 65, 5 }, - { 65, 4 }, - { 65, 2 }, - { 65, 3 }, - { 65, 3 }, - { 65, 3 }, - { 65, 1 }, - { 66, 4 }, - { 66, 4 }, - { 67, 1 }, - { 67, 3 }, - { 75, 1 }, - { 75, 3 }, - { 76, 3 }, - { 61, 1 }, - { 61, 1 }, - { 61, 2 }, - { 64, 2 }, - { 64, 4 }, - { 64, 7 }, - { 64, 4 }, - { 68, 1 }, - { 68, 3 }, - { 77, 1 }, - { 77, 3 }, - { 74, 1 }, - { 74, 3 }, - { 71, 1 }, - { 71, 3 }, - { 73, 3 }, - { 73, 5 }, - { 63, 1 }, - { 63, 1 }, - { 63, 1 }, - { 63, 1 }, - { 63, 2 }, - { 63, 3 }, - { 63, 3 }, - { 63, 3 }, - { 63, 3 }, - { 63, 3 }, - { 63, 3 }, - { 63, 3 }, - { 63, 3 }, - { 63, 3 }, - { 70, 1 }, - { 70, 3 }, - { 81, 1 }, - { 81, 4 }, - { 81, 3 }, - { 79, 1 }, - { 79, 1 }, - { 79, 3 }, - { 72, 2 }, - { 72, 4 }, - { 82, 2 }, - { 82, 3 }, - { 82, 1 }, - { 82, 1 }, - { 78, 2 }, - { 69, 3 }, - { 83, 3 }, - { 84, 0 }, - { 84, 1 }, - { 84, 1 }, - { 84, 3 }, - { 80, 2 }, - { 80, 3 }, - { 80, 4 }, - { 85, 1 }, - { 85, 3 }, - { 86, 1 }, - { 86, 3 }, - { 86, 5 }, + { 55, -1 }, /* (0) chunk ::= block */ + { 56, -2 }, /* (1) block ::= scope statlist */ + { 56, -4 }, /* (2) block ::= scope statlist laststat semi */ + { 61, -3 }, /* (3) ublock ::= block UNTIL exp */ + { 58, 0 }, /* (4) scope ::= */ + { 58, -4 }, /* (5) scope ::= scope statlist binding semi */ + { 59, 0 }, /* (6) statlist ::= */ + { 59, -3 }, /* (7) statlist ::= statlist stat semi */ + { 64, -3 }, /* (8) stat ::= DO block END */ + { 64, -5 }, /* (9) stat ::= WHILE exp DO block END */ + { 64, -4 }, /* (10) stat ::= repetition DO block END */ + { 64, -2 }, /* (11) stat ::= REPEAT ublock */ + { 64, -3 }, /* (12) stat ::= IF conds END */ + { 64, -3 }, /* (13) stat ::= FUNCTION funcname funcbody */ + { 64, -3 }, /* (14) stat ::= setlist EQUAL explist1 */ + { 64, -1 }, /* (15) stat ::= functioncall */ + { 66, -1 }, /* (16) conds ::= condlist */ + { 66, -3 }, /* (17) conds ::= condlist ELSE block */ + { 74, -1 }, /* (18) condlist ::= cond */ + { 74, -3 }, /* (19) condlist ::= condlist ELSEIF cond */ + { 75, -3 }, /* (20) cond ::= exp THEN block */ + { 60, -1 }, /* (21) laststat ::= BREAK */ + { 60, -1 }, /* (22) laststat ::= RETURN */ + { 60, -2 }, /* (23) laststat ::= RETURN explist1 */ + { 63, -2 }, /* (24) binding ::= LOCAL namelist */ + { 63, -4 }, /* (25) binding ::= LOCAL namelist EQUAL explist1 */ + { 63, -7 }, /* (26) binding ::= LOCAL namelist LESS CONST GREATER EQUAL explist1 */ + { 63, -4 }, /* (27) binding ::= LOCAL FUNCTION NAME funcbody */ + { 67, -1 }, /* (28) funcname ::= dottedname */ + { 67, -3 }, /* (29) funcname ::= dottedname COLON NAME */ + { 76, -1 }, /* (30) dottedname ::= NAME */ + { 76, -3 }, /* (31) dottedname ::= dottedname DOT NAME */ + { 73, -1 }, /* (32) namelist ::= NAME */ + { 73, -3 }, /* (33) namelist ::= namelist COMMA NAME */ + { 70, -1 }, /* (34) explist1 ::= exp */ + { 70, -3 }, /* (35) explist1 ::= explist1 COMMA exp */ + { 72, -3 }, /* (36) explist23 ::= exp COMMA exp */ + { 72, -5 }, /* (37) explist23 ::= exp COMMA exp COMMA exp */ + { 62, -1 }, /* (38) exp ::= NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT */ + { 62, -1 }, /* (39) exp ::= function */ + { 62, -1 }, /* (40) exp ::= prefixexp */ + { 62, -1 }, /* (41) exp ::= tableconstructor */ + { 62, -2 }, /* (42) exp ::= NOT|HASH|MINUS exp */ + { 62, -3 }, /* (43) exp ::= exp OR exp */ + { 62, -3 }, /* (44) exp ::= exp AND exp */ + { 62, -3 }, /* (45) exp ::= exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp */ + { 62, -3 }, /* (46) exp ::= exp DOT_DOT exp */ + { 62, -3 }, /* (47) exp ::= exp BITWISE_OR exp */ + { 62, -3 }, /* (48) exp ::= exp BITWISE_AND exp */ + { 62, -3 }, /* (49) exp ::= exp PLUS|MINUS exp */ + { 62, -3 }, /* (50) exp ::= exp MULTIPLY|DIVIDE|MODULO exp */ + { 62, -3 }, /* (51) exp ::= exp RAISE exp */ + { 80, -1 }, /* (52) var ::= NAME */ + { 80, -4 }, /* (53) var ::= prefixexp LEFT_BRACKET exp RIGHT_BRACKET */ + { 80, -3 }, /* (54) var ::= prefixexp DOT NAME */ + { 78, -1 }, /* (55) prefixexp ::= var */ + { 78, -1 }, /* (56) prefixexp ::= functioncall */ + { 78, -3 }, /* (57) prefixexp ::= OPEN exp RIGHT_PARANTHESIS */ + { 71, -2 }, /* (58) functioncall ::= prefixexp args */ + { 71, -4 }, /* (59) functioncall ::= prefixexp COLON NAME args */ + { 81, -2 }, /* (60) args ::= LEFT_PARANTHESIS RIGHT_PARANTHESIS */ + { 81, -3 }, /* (61) args ::= LEFT_PARANTHESIS explist1 RIGHT_PARANTHESIS */ + { 81, -1 }, /* (62) args ::= tableconstructor */ + { 81, -1 }, /* (63) args ::= STRING */ + { 77, -2 }, /* (64) function ::= FUNCTION funcbody */ + { 68, -3 }, /* (65) funcbody ::= params block END */ + { 57, -1 }, /* (66) semi ::= SEMICOLON */ + { 57, 0 }, /* (67) semi ::= */ + { 65, -4 }, /* (68) repetition ::= FOR NAME EQUAL explist23 */ + { 65, -4 }, /* (69) repetition ::= FOR namelist IN explist1 */ + { 69, -1 }, /* (70) setlist ::= var */ + { 69, -3 }, /* (71) setlist ::= setlist COMMA var */ + { 82, -3 }, /* (72) params ::= LEFT_PARANTHESIS parlist RIGHT_PARANTHESIS */ + { 83, 0 }, /* (73) parlist ::= */ + { 83, -1 }, /* (74) parlist ::= namelist */ + { 83, -1 }, /* (75) parlist ::= DOT_DOT_DOT */ + { 83, -3 }, /* (76) parlist ::= namelist COMMA DOT_DOT_DOT */ + { 79, -2 }, /* (77) tableconstructor ::= LEFT_BRACE RIGHT_BRACE */ + { 79, -3 }, /* (78) tableconstructor ::= LEFT_BRACE fieldlist RIGHT_BRACE */ + { 79, -4 }, /* (79) tableconstructor ::= LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE */ + { 84, -1 }, /* (80) fieldlist ::= field */ + { 84, -3 }, /* (81) fieldlist ::= fieldlist COMMA|SEMICOLON field */ + { 85, -1 }, /* (82) field ::= exp */ + { 85, -3 }, /* (83) field ::= NAME EQUAL exp */ + { 85, -5 }, /* (84) field ::= LEFT_BRACKET exp RIGHT_BRACKET EQUAL exp */ }; static void yy_accept(yyParser*); /* Forward Declaration */ @@ -1098,43 +1317,73 @@ static void yy_accept(yyParser*); /* Forward Declaration */ /* ** Perform a reduce action and the shift that must immediately ** follow the reduce. +** +** The yyLookahead and yyLookaheadToken parameters provide reduce actions +** access to the lookahead token (if any). The yyLookahead will be YYNOCODE +** if the lookahead token has already been consumed. As this procedure is +** only called from one place, optimizing compilers will in-line it, which +** means that the extra parameters have no performance impact. */ -static void yy_reduce( +static YYACTIONTYPE yy_reduce( yyParser *yypParser, /* The parser */ - int yyruleno /* Number of the rule by which to reduce */ + unsigned int yyruleno, /* Number of the rule by which to reduce */ + int yyLookahead, /* Lookahead token, or YYNOCODE if none */ + ParseTOKENTYPE yyLookaheadToken /* Value of the lookahead token */ + ParseCTX_PDECL /* %extra_context */ ){ int yygoto; /* The next state */ int yyact; /* The next action */ - YYMINORTYPE yygotominor; /* The LHS of the rule reduced */ yyStackEntry *yymsp; /* The top of the parser's stack */ int yysize; /* Amount to pop the stack */ - ParseARG_FETCH; - yymsp = &yypParser->yystack[yypParser->yyidx]; + ParseARG_FETCH + (void)yyLookahead; + (void)yyLookaheadToken; + yymsp = yypParser->yytos; #ifndef NDEBUG - if( yyTraceFILE && yyruleno>=0 - && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){ - fprintf(yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt, - yyRuleName[yyruleno]); + if( yyTraceFILE && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){ + yysize = yyRuleInfo[yyruleno].nrhs; + if( yysize ){ + fprintf(yyTraceFILE, "%sReduce %d [%s], go to state %d.\n", + yyTracePrompt, + yyruleno, yyRuleName[yyruleno], yymsp[yysize].stateno); + }else{ + fprintf(yyTraceFILE, "%sReduce %d [%s].\n", + yyTracePrompt, yyruleno, yyRuleName[yyruleno]); + } } #endif /* NDEBUG */ - /* Silence complaints from purify about yygotominor being uninitialized - ** in some cases when it is copied into the stack after the following - ** switch. yygotominor is uninitialized when a rule reduces that does - ** not set the value of its left-hand side nonterminal. Leaving the - ** value of the nonterminal uninitialized is utterly harmless as long - ** as the value is never used. So really the only thing this code - ** accomplishes is to quieten purify. - ** - ** 2007-01-16: The wireshark project (www.wireshark.org) reports that - ** without this code, their parser segfaults. I'm not sure what there - ** parser is doing to make this happen. This is the second bug report - ** from wireshark this week. Clearly they are stressing Lemon in ways - ** that it has not been previously stressed... (SQLite ticket #2172) - */ - /*memset(&yygotominor, 0, sizeof(yygotominor));*/ - yygotominor = yyzerominor; - + /* Check that the stack is large enough to grow by a single entry + ** if the RHS of the rule is empty. This ensures that there is room + ** enough on the stack to push the LHS value */ + if( yyRuleInfo[yyruleno].nrhs==0 ){ +#ifdef YYTRACKMAXSTACKDEPTH + if( (int)(yypParser->yytos - yypParser->yystack)>yypParser->yyhwm ){ + yypParser->yyhwm++; + assert( yypParser->yyhwm == (int)(yypParser->yytos - yypParser->yystack)); + } +#endif +#if YYSTACKDEPTH>0 + if( yypParser->yytos>=yypParser->yystackEnd ){ + yyStackOverflow(yypParser); + /* The call to yyStackOverflow() above pops the stack until it is + ** empty, causing the main parser loop to exit. So the return value + ** is never used and does not matter. */ + return 0; + } +#else + if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz-1] ){ + if( yyGrowStack(yypParser) ){ + yyStackOverflow(yypParser); + /* The call to yyStackOverflow() above pops the stack until it is + ** empty, causing the main parser loop to exit. So the return value + ** is never used and does not matter. */ + return 0; + } + yymsp = yypParser->yytos; + } +#endif + } switch( yyruleno ){ /* Beginning here are the reduction cases. A typical example @@ -1145,434 +1394,375 @@ static void yy_reduce( ** #line ** break; */ +/********** Begin reduce actions **********************************************/ + YYMINORTYPE yylhsminor; case 0: /* chunk ::= block */ -#line 86 "LuaGrammar.y" { outline->parseResult(yymsp[0].minor.yy0->node); } -#line 1144 "LuaGrammar.cpp" break; - case 1: /* semi ::= SEMICOLON */ -#line 88 "LuaGrammar.y" -{ - yy_destructor(yypParser,3,&yymsp[0].minor); -} -#line 1151 "LuaGrammar.cpp" - break; - case 3: /* block ::= scope statlist */ -#line 91 "LuaGrammar.y" -{ yygotominor.yy0 = merge(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); } -#line 1156 "LuaGrammar.cpp" + case 1: /* block ::= scope statlist */ +{ yylhsminor.yy0 = merge(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); } + yymsp[-1].minor.yy0 = yylhsminor.yy0; break; - case 4: /* block ::= scope statlist laststat semi */ - case 7: /* scope ::= scope statlist binding semi */ yytestcase(yyruleno==7); -#line 92 "LuaGrammar.y" -{ yygotominor.yy0 = merge(merge(yymsp[-3].minor.yy0, yymsp[-2].minor.yy0), yymsp[-1].minor.yy0); } -#line 1162 "LuaGrammar.cpp" + case 2: /* block ::= scope statlist laststat semi */ + case 5: /* scope ::= scope statlist binding semi */ yytestcase(yyruleno==5); +{ yylhsminor.yy0 = merge(merge(yymsp[-3].minor.yy0, yymsp[-2].minor.yy0), yymsp[-1].minor.yy0); } + yymsp[-3].minor.yy0 = yylhsminor.yy0; break; - case 5: /* ublock ::= block UNTIL exp */ -#line 93 "LuaGrammar.y" -{ yygotominor.yy0 = merge(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); yy_destructor(yypParser,4,&yymsp[-1].minor); -} -#line 1168 "LuaGrammar.cpp" + case 3: /* ublock ::= block UNTIL exp */ +{ yylhsminor.yy0 = merge(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); } + yy_destructor(yypParser,4,&yymsp[-1].minor); + yymsp[-2].minor.yy0 = yylhsminor.yy0; break; - case 6: /* scope ::= */ - case 8: /* statlist ::= */ yytestcase(yyruleno==8); - case 42: /* exp ::= NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT */ yytestcase(yyruleno==42); - case 45: /* exp ::= tableconstructor */ yytestcase(yyruleno==45); - case 68: /* args ::= tableconstructor */ yytestcase(yyruleno==68); -#line 95 "LuaGrammar.y" -{ yygotominor.yy0 = null(); } -#line 1177 "LuaGrammar.cpp" + case 4: /* scope ::= */ + case 6: /* statlist ::= */ yytestcase(yyruleno==6); +{ yymsp[1].minor.yy0 = null(); } break; - case 9: /* statlist ::= statlist stat semi */ -#line 99 "LuaGrammar.y" -{ yygotominor.yy0 = merge(yymsp[-2].minor.yy0, yymsp[-1].minor.yy0); } -#line 1182 "LuaGrammar.cpp" + case 7: /* statlist ::= statlist stat semi */ +{ yylhsminor.yy0 = merge(yymsp[-2].minor.yy0, yymsp[-1].minor.yy0); } + yymsp[-2].minor.yy0 = yylhsminor.yy0; break; - case 10: /* stat ::= DO block END */ - case 12: /* stat ::= repetition DO block END */ yytestcase(yyruleno==12); -#line 101 "LuaGrammar.y" -{ yygotominor.yy0 = copy(yymsp[-1].minor.yy0); yy_destructor(yypParser,5,&yymsp[-2].minor); + case 8: /* stat ::= DO block END */ +{ yy_destructor(yypParser,5,&yymsp[-2].minor); +{ yymsp[-2].minor.yy0 = copy(yymsp[-1].minor.yy0); } yy_destructor(yypParser,6,&yymsp[0].minor); } -#line 1190 "LuaGrammar.cpp" break; - case 11: /* stat ::= WHILE exp DO block END */ -#line 102 "LuaGrammar.y" -{ yygotominor.yy0 = copy(yymsp[-1].minor.yy0); yy_destructor(yypParser,7,&yymsp[-4].minor); + case 9: /* stat ::= WHILE exp DO block END */ +{ yy_destructor(yypParser,7,&yymsp[-4].minor); +{ yymsp[-4].minor.yy0 = copy(yymsp[-1].minor.yy0); } yy_destructor(yypParser,5,&yymsp[-2].minor); yy_destructor(yypParser,6,&yymsp[0].minor); } -#line 1198 "LuaGrammar.cpp" break; - case 13: /* stat ::= REPEAT ublock */ -#line 104 "LuaGrammar.y" -{ yygotominor.yy0 = copy(yymsp[0].minor.yy0); yy_destructor(yypParser,8,&yymsp[-1].minor); -} -#line 1204 "LuaGrammar.cpp" - break; - case 14: /* stat ::= IF conds END */ -#line 105 "LuaGrammar.y" -{ yygotominor.yy0 = copy(yymsp[-1].minor.yy0); yy_destructor(yypParser,9,&yymsp[-2].minor); + case 10: /* stat ::= repetition DO block END */ +{ yymsp[-3].minor.yy0 = copy(yymsp[-1].minor.yy0); } + yy_destructor(yypParser,5,&yymsp[-2].minor); yy_destructor(yypParser,6,&yymsp[0].minor); -} -#line 1211 "LuaGrammar.cpp" break; - case 15: /* stat ::= FUNCTION funcname funcbody */ -#line 106 "LuaGrammar.y" -{ yygotominor.yy0 = new LuaGrammarToken(new IScriptOutline::FunctionNode(yymsp[-1].minor.yy0->line, yymsp[-1].minor.yy0->text, false, yymsp[0].minor.yy0->node), yymsp[-1].minor.yy0->line); yy_destructor(yypParser,10,&yymsp[-2].minor); + case 11: /* stat ::= REPEAT ublock */ +{ yy_destructor(yypParser,8,&yymsp[-1].minor); +{ yymsp[-1].minor.yy0 = copy(yymsp[0].minor.yy0); } } -#line 1217 "LuaGrammar.cpp" break; - case 16: /* stat ::= setlist EQUAL explist1 */ -#line 107 "LuaGrammar.y" -{ yygotominor.yy0 = null(); yy_destructor(yypParser,11,&yymsp[-1].minor); + case 12: /* stat ::= IF conds END */ +{ yy_destructor(yypParser,9,&yymsp[-2].minor); +{ yymsp[-2].minor.yy0 = copy(yymsp[-1].minor.yy0); } + yy_destructor(yypParser,6,&yymsp[0].minor); } -#line 1223 "LuaGrammar.cpp" break; - case 17: /* stat ::= functioncall */ - case 20: /* conds ::= condlist */ yytestcase(yyruleno==20); - case 22: /* condlist ::= cond */ yytestcase(yyruleno==22); - case 32: /* funcname ::= dottedname */ yytestcase(yyruleno==32); - case 34: /* dottedname ::= NAME */ yytestcase(yyruleno==34); - case 36: /* namelist ::= NAME */ yytestcase(yyruleno==36); - case 38: /* explist1 ::= exp */ yytestcase(yyruleno==38); - case 43: /* exp ::= function */ yytestcase(yyruleno==43); - case 44: /* exp ::= prefixexp */ yytestcase(yyruleno==44); - case 46: /* exp ::= NOT|HASH|MINUS exp */ yytestcase(yyruleno==46); - case 58: /* var ::= NAME */ yytestcase(yyruleno==58); - case 61: /* prefixexp ::= var */ yytestcase(yyruleno==61); - case 62: /* prefixexp ::= functioncall */ yytestcase(yyruleno==62); -#line 108 "LuaGrammar.y" -{ yygotominor.yy0 = copy(yymsp[0].minor.yy0); } -#line 1240 "LuaGrammar.cpp" + case 13: /* stat ::= FUNCTION funcname funcbody */ +{ yy_destructor(yypParser,10,&yymsp[-2].minor); +{ yymsp[-2].minor.yy0 = new LuaGrammarToken(new IScriptOutline::FunctionNode(yymsp[-1].minor.yy0->line, yymsp[-1].minor.yy0->text, false, yymsp[0].minor.yy0->node), yymsp[-1].minor.yy0->line); } +} break; - case 18: /* repetition ::= FOR NAME EQUAL explist23 */ -#line 110 "LuaGrammar.y" -{ - yy_destructor(yypParser,12,&yymsp[-3].minor); - yy_destructor(yypParser,13,&yymsp[-2].minor); + case 14: /* stat ::= setlist EQUAL explist1 */ +{ yymsp[-2].minor.yy0 = null(); } yy_destructor(yypParser,11,&yymsp[-1].minor); -} -#line 1249 "LuaGrammar.cpp" break; - case 19: /* repetition ::= FOR namelist IN explist1 */ -#line 111 "LuaGrammar.y" -{ - yy_destructor(yypParser,12,&yymsp[-3].minor); - yy_destructor(yypParser,14,&yymsp[-1].minor); -} -#line 1257 "LuaGrammar.cpp" + case 15: /* stat ::= functioncall */ + case 16: /* conds ::= condlist */ yytestcase(yyruleno==16); + case 18: /* condlist ::= cond */ yytestcase(yyruleno==18); + case 28: /* funcname ::= dottedname */ yytestcase(yyruleno==28); + case 30: /* dottedname ::= NAME */ yytestcase(yyruleno==30); + case 32: /* namelist ::= NAME */ yytestcase(yyruleno==32); + case 34: /* explist1 ::= exp */ yytestcase(yyruleno==34); + case 39: /* exp ::= function */ yytestcase(yyruleno==39); + case 40: /* exp ::= prefixexp */ yytestcase(yyruleno==40); + case 52: /* var ::= NAME */ yytestcase(yyruleno==52); + case 55: /* prefixexp ::= var */ yytestcase(yyruleno==55); + case 56: /* prefixexp ::= functioncall */ yytestcase(yyruleno==56); +{ yylhsminor.yy0 = copy(yymsp[0].minor.yy0); } + yymsp[0].minor.yy0 = yylhsminor.yy0; break; - case 21: /* conds ::= condlist ELSE block */ -#line 114 "LuaGrammar.y" -{ yygotominor.yy0 = merge(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); yy_destructor(yypParser,15,&yymsp[-1].minor); -} -#line 1263 "LuaGrammar.cpp" + case 17: /* conds ::= condlist ELSE block */ +{ yylhsminor.yy0 = merge(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); } + yy_destructor(yypParser,15,&yymsp[-1].minor); + yymsp[-2].minor.yy0 = yylhsminor.yy0; break; - case 23: /* condlist ::= condlist ELSEIF cond */ -#line 116 "LuaGrammar.y" -{ yygotominor.yy0 = merge(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); yy_destructor(yypParser,16,&yymsp[-1].minor); -} -#line 1269 "LuaGrammar.cpp" + case 19: /* condlist ::= condlist ELSEIF cond */ +{ yylhsminor.yy0 = merge(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); } + yy_destructor(yypParser,16,&yymsp[-1].minor); + yymsp[-2].minor.yy0 = yylhsminor.yy0; break; - case 24: /* cond ::= exp THEN block */ -#line 117 "LuaGrammar.y" -{ yygotominor.yy0 = merge(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); yy_destructor(yypParser,17,&yymsp[-1].minor); -} -#line 1275 "LuaGrammar.cpp" + case 20: /* cond ::= exp THEN block */ +{ yylhsminor.yy0 = merge(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); } + yy_destructor(yypParser,17,&yymsp[-1].minor); + yymsp[-2].minor.yy0 = yylhsminor.yy0; break; - case 25: /* laststat ::= BREAK */ -#line 119 "LuaGrammar.y" -{ yygotominor.yy0 = null(); yy_destructor(yypParser,18,&yymsp[0].minor); + case 21: /* laststat ::= BREAK */ +{ yy_destructor(yypParser,18,&yymsp[0].minor); +{ yymsp[0].minor.yy0 = null(); } } -#line 1281 "LuaGrammar.cpp" break; - case 26: /* laststat ::= RETURN */ -#line 120 "LuaGrammar.y" -{ yygotominor.yy0 = null(); yy_destructor(yypParser,19,&yymsp[0].minor); + case 22: /* laststat ::= RETURN */ +{ yy_destructor(yypParser,19,&yymsp[0].minor); +{ yymsp[0].minor.yy0 = null(); } } -#line 1287 "LuaGrammar.cpp" break; - case 27: /* laststat ::= RETURN explist1 */ -#line 121 "LuaGrammar.y" -{ yygotominor.yy0 = copy(yymsp[0].minor.yy0); yy_destructor(yypParser,19,&yymsp[-1].minor); + case 23: /* laststat ::= RETURN explist1 */ +{ yy_destructor(yypParser,19,&yymsp[-1].minor); +{ yymsp[-1].minor.yy0 = copy(yymsp[0].minor.yy0); } } -#line 1293 "LuaGrammar.cpp" break; - case 28: /* binding ::= LOCAL namelist */ -#line 123 "LuaGrammar.y" -{ yygotominor.yy0 = null(); yy_destructor(yypParser,20,&yymsp[-1].minor); + case 24: /* binding ::= LOCAL namelist */ +{ yy_destructor(yypParser,20,&yymsp[-1].minor); +{ yymsp[-1].minor.yy0 = null(); } } -#line 1299 "LuaGrammar.cpp" break; - case 29: /* binding ::= LOCAL namelist EQUAL explist1 */ -#line 124 "LuaGrammar.y" -{ yygotominor.yy0 = copy(yymsp[0].minor.yy0); yy_destructor(yypParser,20,&yymsp[-3].minor); + case 25: /* binding ::= LOCAL namelist EQUAL explist1 */ +{ yy_destructor(yypParser,20,&yymsp[-3].minor); +{ yymsp[-3].minor.yy0 = copy(yymsp[0].minor.yy0); } yy_destructor(yypParser,11,&yymsp[-1].minor); } -#line 1306 "LuaGrammar.cpp" break; - case 30: /* binding ::= LOCAL namelist LESS CONST GREATER EQUAL explist1 */ -#line 125 "LuaGrammar.y" -{ yygotominor.yy0 = copy(yymsp[0].minor.yy0); yy_destructor(yypParser,20,&yymsp[-6].minor); + case 26: /* binding ::= LOCAL namelist LESS CONST GREATER EQUAL explist1 */ +{ yy_destructor(yypParser,20,&yymsp[-6].minor); +{ yymsp[-6].minor.yy0 = copy(yymsp[0].minor.yy0); } yy_destructor(yypParser,21,&yymsp[-4].minor); yy_destructor(yypParser,22,&yymsp[-3].minor); yy_destructor(yypParser,23,&yymsp[-2].minor); yy_destructor(yypParser,11,&yymsp[-1].minor); } -#line 1316 "LuaGrammar.cpp" break; - case 31: /* binding ::= LOCAL FUNCTION NAME funcbody */ -#line 126 "LuaGrammar.y" -{ yygotominor.yy0 = new LuaGrammarToken(new IScriptOutline::FunctionNode(yymsp[-1].minor.yy0->line, yymsp[-1].minor.yy0->text, true, yymsp[0].minor.yy0->node), yymsp[-1].minor.yy0->line); yy_destructor(yypParser,20,&yymsp[-3].minor); + case 27: /* binding ::= LOCAL FUNCTION NAME funcbody */ +{ yy_destructor(yypParser,20,&yymsp[-3].minor); +{ yymsp[-3].minor.yy0 = new LuaGrammarToken(new IScriptOutline::FunctionNode(yymsp[-1].minor.yy0->line, yymsp[-1].minor.yy0->text, true, yymsp[0].minor.yy0->node), yymsp[-1].minor.yy0->line); } yy_destructor(yypParser,10,&yymsp[-2].minor); } -#line 1323 "LuaGrammar.cpp" break; - case 33: /* funcname ::= dottedname COLON NAME */ -#line 129 "LuaGrammar.y" -{ yygotominor.yy0 = new LuaGrammarToken(yymsp[-2].minor.yy0->text + L":" + yymsp[0].minor.yy0->text, yymsp[0].minor.yy0->line); yy_destructor(yypParser,24,&yymsp[-1].minor); -} -#line 1329 "LuaGrammar.cpp" + case 29: /* funcname ::= dottedname COLON NAME */ +{ yylhsminor.yy0 = new LuaGrammarToken(yymsp[-2].minor.yy0->text + L":" + yymsp[0].minor.yy0->text, yymsp[0].minor.yy0->line); } + yy_destructor(yypParser,24,&yymsp[-1].minor); + yymsp[-2].minor.yy0 = yylhsminor.yy0; break; - case 35: /* dottedname ::= dottedname DOT NAME */ -#line 132 "LuaGrammar.y" -{ yygotominor.yy0 = new LuaGrammarToken(yymsp[-2].minor.yy0->text + L"." + yymsp[0].minor.yy0->text, yymsp[0].minor.yy0->line); yy_destructor(yypParser,25,&yymsp[-1].minor); -} -#line 1335 "LuaGrammar.cpp" + case 31: /* dottedname ::= dottedname DOT NAME */ +{ yylhsminor.yy0 = new LuaGrammarToken(yymsp[-2].minor.yy0->text + L"." + yymsp[0].minor.yy0->text, yymsp[0].minor.yy0->line); } + yy_destructor(yypParser,25,&yymsp[-1].minor); + yymsp[-2].minor.yy0 = yylhsminor.yy0; break; - case 37: /* namelist ::= namelist COMMA NAME */ -#line 135 "LuaGrammar.y" -{ yygotominor.yy0 = new LuaGrammarToken(yymsp[-2].minor.yy0->text + L"," + yymsp[0].minor.yy0->text, yymsp[0].minor.yy0->line); yy_destructor(yypParser,26,&yymsp[-1].minor); -} -#line 1341 "LuaGrammar.cpp" + case 33: /* namelist ::= namelist COMMA NAME */ +{ yylhsminor.yy0 = new LuaGrammarToken(yymsp[-2].minor.yy0->text + L"," + yymsp[0].minor.yy0->text, yymsp[0].minor.yy0->line); } + yy_destructor(yypParser,26,&yymsp[-1].minor); + yymsp[-2].minor.yy0 = yylhsminor.yy0; break; - case 39: /* explist1 ::= explist1 COMMA exp */ - case 40: /* explist23 ::= exp COMMA exp */ yytestcase(yyruleno==40); -#line 138 "LuaGrammar.y" -{ yygotominor.yy0 = merge(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); yy_destructor(yypParser,26,&yymsp[-1].minor); -} -#line 1348 "LuaGrammar.cpp" + case 35: /* explist1 ::= explist1 COMMA exp */ + case 36: /* explist23 ::= exp COMMA exp */ yytestcase(yyruleno==36); +{ yylhsminor.yy0 = merge(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); } + yy_destructor(yypParser,26,&yymsp[-1].minor); + yymsp[-2].minor.yy0 = yylhsminor.yy0; break; - case 41: /* explist23 ::= exp COMMA exp COMMA exp */ -#line 140 "LuaGrammar.y" -{ yygotominor.yy0 = merge(merge(yymsp[-4].minor.yy0, yymsp[-2].minor.yy0), yymsp[0].minor.yy0); yy_destructor(yypParser,26,&yymsp[-3].minor); + case 37: /* explist23 ::= exp COMMA exp COMMA exp */ +{ yylhsminor.yy0 = merge(merge(yymsp[-4].minor.yy0, yymsp[-2].minor.yy0), yymsp[0].minor.yy0); } + yy_destructor(yypParser,26,&yymsp[-3].minor); yy_destructor(yypParser,26,&yymsp[-1].minor); -} -#line 1355 "LuaGrammar.cpp" + yymsp[-4].minor.yy0 = yylhsminor.yy0; break; - case 47: /* exp ::= exp OR exp */ -#line 156 "LuaGrammar.y" -{ yygotominor.yy0 = merge(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); yy_destructor(yypParser,27,&yymsp[-1].minor); -} -#line 1361 "LuaGrammar.cpp" + case 38: /* exp ::= NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT */ + case 41: /* exp ::= tableconstructor */ yytestcase(yyruleno==41); + case 62: /* args ::= tableconstructor */ yytestcase(yyruleno==62); +{ yymsp[0].minor.yy0 = null(); } break; - case 48: /* exp ::= exp AND exp */ -#line 157 "LuaGrammar.y" -{ yygotominor.yy0 = merge(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); yy_destructor(yypParser,28,&yymsp[-1].minor); -} -#line 1367 "LuaGrammar.cpp" + case 42: /* exp ::= NOT|HASH|MINUS exp */ +{ yymsp[-1].minor.yy0 = copy(yymsp[0].minor.yy0); } break; - case 49: /* exp ::= exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp */ - case 53: /* exp ::= exp PLUS|MINUS exp */ yytestcase(yyruleno==53); - case 54: /* exp ::= exp MULTIPLY|DIVIDE|MODULO exp */ yytestcase(yyruleno==54); -#line 158 "LuaGrammar.y" -{ yygotominor.yy0 = merge(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); } -#line 1374 "LuaGrammar.cpp" + case 43: /* exp ::= exp OR exp */ +{ yylhsminor.yy0 = merge(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); } + yy_destructor(yypParser,27,&yymsp[-1].minor); + yymsp[-2].minor.yy0 = yylhsminor.yy0; break; - case 50: /* exp ::= exp DOT_DOT exp */ -#line 159 "LuaGrammar.y" -{ yygotominor.yy0 = merge(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); yy_destructor(yypParser,33,&yymsp[-1].minor); -} -#line 1380 "LuaGrammar.cpp" + case 44: /* exp ::= exp AND exp */ +{ yylhsminor.yy0 = merge(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); } + yy_destructor(yypParser,28,&yymsp[-1].minor); + yymsp[-2].minor.yy0 = yylhsminor.yy0; break; - case 51: /* exp ::= exp BITWISE_OR exp */ -#line 160 "LuaGrammar.y" -{ yygotominor.yy0 = merge(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); yy_destructor(yypParser,48,&yymsp[-1].minor); -} -#line 1386 "LuaGrammar.cpp" + case 45: /* exp ::= exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp */ + case 49: /* exp ::= exp PLUS|MINUS exp */ yytestcase(yyruleno==49); + case 50: /* exp ::= exp MULTIPLY|DIVIDE|MODULO exp */ yytestcase(yyruleno==50); +{ yylhsminor.yy0 = merge(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); } + yymsp[-2].minor.yy0 = yylhsminor.yy0; break; - case 52: /* exp ::= exp BITWISE_AND exp */ -#line 161 "LuaGrammar.y" -{ yygotominor.yy0 = merge(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); yy_destructor(yypParser,49,&yymsp[-1].minor); -} -#line 1392 "LuaGrammar.cpp" + case 46: /* exp ::= exp DOT_DOT exp */ +{ yylhsminor.yy0 = merge(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); } + yy_destructor(yypParser,33,&yymsp[-1].minor); + yymsp[-2].minor.yy0 = yylhsminor.yy0; break; - case 55: /* exp ::= exp RAISE exp */ -#line 164 "LuaGrammar.y" -{ yygotominor.yy0 = merge(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); yy_destructor(yypParser,41,&yymsp[-1].minor); -} -#line 1398 "LuaGrammar.cpp" + case 47: /* exp ::= exp BITWISE_OR exp */ +{ yylhsminor.yy0 = merge(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); } + yy_destructor(yypParser,48,&yymsp[-1].minor); + yymsp[-2].minor.yy0 = yylhsminor.yy0; break; - case 57: /* setlist ::= setlist COMMA var */ -#line 167 "LuaGrammar.y" -{ - yy_destructor(yypParser,26,&yymsp[-1].minor); -} -#line 1405 "LuaGrammar.cpp" + case 48: /* exp ::= exp BITWISE_AND exp */ +{ yylhsminor.yy0 = merge(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); } + yy_destructor(yypParser,49,&yymsp[-1].minor); + yymsp[-2].minor.yy0 = yylhsminor.yy0; break; - case 59: /* var ::= prefixexp LEFT_BRACKET exp RIGHT_BRACKET */ -#line 170 "LuaGrammar.y" -{ yygotominor.yy0 = merge(yymsp[-3].minor.yy0, yymsp[-1].minor.yy0); yy_destructor(yypParser,50,&yymsp[-2].minor); + case 51: /* exp ::= exp RAISE exp */ +{ yylhsminor.yy0 = merge(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); } + yy_destructor(yypParser,41,&yymsp[-1].minor); + yymsp[-2].minor.yy0 = yylhsminor.yy0; + break; + case 53: /* var ::= prefixexp LEFT_BRACKET exp RIGHT_BRACKET */ +{ yylhsminor.yy0 = merge(yymsp[-3].minor.yy0, yymsp[-1].minor.yy0); } + yy_destructor(yypParser,50,&yymsp[-2].minor); yy_destructor(yypParser,51,&yymsp[0].minor); -} -#line 1412 "LuaGrammar.cpp" + yymsp[-3].minor.yy0 = yylhsminor.yy0; break; - case 60: /* var ::= prefixexp DOT NAME */ -#line 171 "LuaGrammar.y" -{ yygotominor.yy0 = new LuaGrammarToken(as_string(yymsp[-2].minor.yy0) + L"." + yymsp[0].minor.yy0->text, yymsp[0].minor.yy0->line); yy_destructor(yypParser,25,&yymsp[-1].minor); -} -#line 1418 "LuaGrammar.cpp" + case 54: /* var ::= prefixexp DOT NAME */ +{ yylhsminor.yy0 = new LuaGrammarToken(as_string(yymsp[-2].minor.yy0) + L"." + yymsp[0].minor.yy0->text, yymsp[0].minor.yy0->line); } + yy_destructor(yypParser,25,&yymsp[-1].minor); + yymsp[-2].minor.yy0 = yylhsminor.yy0; break; - case 63: /* prefixexp ::= OPEN exp RIGHT_PARANTHESIS */ -#line 175 "LuaGrammar.y" -{ yygotominor.yy0 = copy(yymsp[-1].minor.yy0); yy_destructor(yypParser,1,&yymsp[-2].minor); + case 57: /* prefixexp ::= OPEN exp RIGHT_PARANTHESIS */ +{ yy_destructor(yypParser,1,&yymsp[-2].minor); +{ yymsp[-2].minor.yy0 = copy(yymsp[-1].minor.yy0); } yy_destructor(yypParser,52,&yymsp[0].minor); } -#line 1425 "LuaGrammar.cpp" break; - case 64: /* functioncall ::= prefixexp args */ -#line 177 "LuaGrammar.y" -{ yygotominor.yy0 = merge(new LuaGrammarToken(new IScriptOutline::FunctionReferenceNode(yymsp[-1].minor.yy0->line, as_string(yymsp[-1].minor.yy0)), yymsp[-1].minor.yy0->line), yymsp[0].minor.yy0); } -#line 1430 "LuaGrammar.cpp" + case 58: /* functioncall ::= prefixexp args */ +{ yylhsminor.yy0 = merge(new LuaGrammarToken(new IScriptOutline::FunctionReferenceNode(yymsp[-1].minor.yy0->line, as_string(yymsp[-1].minor.yy0)), yymsp[-1].minor.yy0->line), yymsp[0].minor.yy0); } + yymsp[-1].minor.yy0 = yylhsminor.yy0; break; - case 65: /* functioncall ::= prefixexp COLON NAME args */ -#line 178 "LuaGrammar.y" -{ yygotominor.yy0 = merge(new LuaGrammarToken(new IScriptOutline::FunctionReferenceNode(yymsp[-1].minor.yy0->line, as_string(yymsp[-3].minor.yy0) + L":" + yymsp[-1].minor.yy0->text), yymsp[-1].minor.yy0->line), yymsp[0].minor.yy0); yy_destructor(yypParser,24,&yymsp[-2].minor); -} -#line 1436 "LuaGrammar.cpp" + case 59: /* functioncall ::= prefixexp COLON NAME args */ +{ yylhsminor.yy0 = merge(new LuaGrammarToken(new IScriptOutline::FunctionReferenceNode(yymsp[-1].minor.yy0->line, as_string(yymsp[-3].minor.yy0) + L":" + yymsp[-1].minor.yy0->text), yymsp[-1].minor.yy0->line), yymsp[0].minor.yy0); } + yy_destructor(yypParser,24,&yymsp[-2].minor); + yymsp[-3].minor.yy0 = yylhsminor.yy0; break; - case 66: /* args ::= LEFT_PARANTHESIS RIGHT_PARANTHESIS */ -#line 180 "LuaGrammar.y" -{ yygotominor.yy0 = null(); yy_destructor(yypParser,2,&yymsp[-1].minor); + case 60: /* args ::= LEFT_PARANTHESIS RIGHT_PARANTHESIS */ +{ yy_destructor(yypParser,2,&yymsp[-1].minor); +{ yymsp[-1].minor.yy0 = null(); } yy_destructor(yypParser,52,&yymsp[0].minor); } -#line 1443 "LuaGrammar.cpp" break; - case 67: /* args ::= LEFT_PARANTHESIS explist1 RIGHT_PARANTHESIS */ -#line 181 "LuaGrammar.y" -{ yygotominor.yy0 = copy(yymsp[-1].minor.yy0); yy_destructor(yypParser,2,&yymsp[-2].minor); + case 61: /* args ::= LEFT_PARANTHESIS explist1 RIGHT_PARANTHESIS */ +{ yy_destructor(yypParser,2,&yymsp[-2].minor); +{ yymsp[-2].minor.yy0 = copy(yymsp[-1].minor.yy0); } yy_destructor(yypParser,52,&yymsp[0].minor); } -#line 1450 "LuaGrammar.cpp" break; - case 69: /* args ::= STRING */ -#line 183 "LuaGrammar.y" -{ yygotominor.yy0 = null(); yy_destructor(yypParser,46,&yymsp[0].minor); + case 63: /* args ::= STRING */ +{ yy_destructor(yypParser,46,&yymsp[0].minor); +{ yymsp[0].minor.yy0 = null(); } } -#line 1456 "LuaGrammar.cpp" break; - case 70: /* function ::= FUNCTION funcbody */ -#line 185 "LuaGrammar.y" -{ yygotominor.yy0 = copy(yymsp[0].minor.yy0); yy_destructor(yypParser,10,&yymsp[-1].minor); + case 64: /* function ::= FUNCTION funcbody */ +{ yy_destructor(yypParser,10,&yymsp[-1].minor); +{ yymsp[-1].minor.yy0 = copy(yymsp[0].minor.yy0); } } -#line 1462 "LuaGrammar.cpp" break; - case 71: /* funcbody ::= params block END */ -#line 187 "LuaGrammar.y" -{ yygotominor.yy0 = copy(yymsp[-1].minor.yy0); yy_destructor(yypParser,6,&yymsp[0].minor); + case 65: /* funcbody ::= params block END */ +{ yymsp[-2].minor.yy0 = copy(yymsp[-1].minor.yy0); } + yy_destructor(yypParser,6,&yymsp[0].minor); + break; + case 66: /* semi ::= SEMICOLON */ +{ yy_destructor(yypParser,3,&yymsp[0].minor); +{ +} } -#line 1468 "LuaGrammar.cpp" + break; + case 68: /* repetition ::= FOR NAME EQUAL explist23 */ +{ yy_destructor(yypParser,12,&yymsp[-3].minor); +{ +} + yy_destructor(yypParser,13,&yymsp[-2].minor); + yy_destructor(yypParser,11,&yymsp[-1].minor); +} + break; + case 69: /* repetition ::= FOR namelist IN explist1 */ +{ yy_destructor(yypParser,12,&yymsp[-3].minor); +{ +} + yy_destructor(yypParser,14,&yymsp[-1].minor); +} + break; + case 71: /* setlist ::= setlist COMMA var */ +{ +} + yy_destructor(yypParser,26,&yymsp[-1].minor); break; case 72: /* params ::= LEFT_PARANTHESIS parlist RIGHT_PARANTHESIS */ -#line 189 "LuaGrammar.y" +{ yy_destructor(yypParser,2,&yymsp[-2].minor); { - yy_destructor(yypParser,2,&yymsp[-2].minor); +} yy_destructor(yypParser,52,&yymsp[0].minor); } -#line 1476 "LuaGrammar.cpp" break; case 75: /* parlist ::= DOT_DOT_DOT */ -#line 193 "LuaGrammar.y" +{ yy_destructor(yypParser,47,&yymsp[0].minor); { - yy_destructor(yypParser,47,&yymsp[0].minor); } -#line 1483 "LuaGrammar.cpp" +} break; case 76: /* parlist ::= namelist COMMA DOT_DOT_DOT */ -#line 194 "LuaGrammar.y" { +} yy_destructor(yypParser,26,&yymsp[-1].minor); yy_destructor(yypParser,47,&yymsp[0].minor); -} -#line 1491 "LuaGrammar.cpp" break; case 77: /* tableconstructor ::= LEFT_BRACE RIGHT_BRACE */ -#line 196 "LuaGrammar.y" +{ yy_destructor(yypParser,53,&yymsp[-1].minor); { - yy_destructor(yypParser,53,&yymsp[-1].minor); +} yy_destructor(yypParser,54,&yymsp[0].minor); } -#line 1499 "LuaGrammar.cpp" break; case 78: /* tableconstructor ::= LEFT_BRACE fieldlist RIGHT_BRACE */ -#line 197 "LuaGrammar.y" +{ yy_destructor(yypParser,53,&yymsp[-2].minor); { - yy_destructor(yypParser,53,&yymsp[-2].minor); +} yy_destructor(yypParser,54,&yymsp[0].minor); } -#line 1507 "LuaGrammar.cpp" break; case 79: /* tableconstructor ::= LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE */ -#line 198 "LuaGrammar.y" +{ yy_destructor(yypParser,53,&yymsp[-3].minor); { - yy_destructor(yypParser,53,&yymsp[-3].minor); +} yy_destructor(yypParser,54,&yymsp[0].minor); } -#line 1515 "LuaGrammar.cpp" break; case 83: /* field ::= NAME EQUAL exp */ -#line 204 "LuaGrammar.y" +{ yy_destructor(yypParser,13,&yymsp[-2].minor); { - yy_destructor(yypParser,13,&yymsp[-2].minor); +} yy_destructor(yypParser,11,&yymsp[-1].minor); } -#line 1523 "LuaGrammar.cpp" break; case 84: /* field ::= LEFT_BRACKET exp RIGHT_BRACKET EQUAL exp */ -#line 205 "LuaGrammar.y" +{ yy_destructor(yypParser,50,&yymsp[-4].minor); { - yy_destructor(yypParser,50,&yymsp[-4].minor); +} yy_destructor(yypParser,51,&yymsp[-2].minor); yy_destructor(yypParser,11,&yymsp[-1].minor); } -#line 1532 "LuaGrammar.cpp" break; default: - /* (2) semi ::= */ yytestcase(yyruleno==2); - /* (56) setlist ::= var */ yytestcase(yyruleno==56); + /* (67) semi ::= */ yytestcase(yyruleno==67); + /* (70) setlist ::= var */ yytestcase(yyruleno==70); /* (73) parlist ::= */ yytestcase(yyruleno==73); /* (74) parlist ::= namelist */ yytestcase(yyruleno==74); - /* (80) fieldlist ::= field */ yytestcase(yyruleno==80); + /* (80) fieldlist ::= field (OPTIMIZED OUT) */ assert(yyruleno!=80); /* (81) fieldlist ::= fieldlist COMMA|SEMICOLON field */ yytestcase(yyruleno==81); /* (82) field ::= exp */ yytestcase(yyruleno==82); break; +/********** End reduce actions ************************************************/ }; + assert( yyrulenoyyidx -= yysize; - yyact = yy_find_reduce_action(yymsp[-yysize].stateno,(YYCODETYPE)yygoto); - if( yyact < YYNSTATE ){ -#ifdef NDEBUG - /* If we are not debugging and the reduce action popped at least - ** one element off the stack, then we can push the new element back - ** onto the stack here, and skip the stack overflow test in yy_shift(). - ** That gives a significant speed improvement. */ - if( yysize ){ - yypParser->yyidx++; - yymsp -= yysize-1; - yymsp->stateno = (YYACTIONTYPE)yyact; - yymsp->major = (YYCODETYPE)yygoto; - yymsp->minor = yygotominor; - }else -#endif - { - yy_shift(yypParser,yyact,yygoto,&yygotominor); - } - }else{ - assert( yyact == YYNSTATE + YYNRULE + 1 ); - yy_accept(yypParser); - } + yyact = yy_find_reduce_action(yymsp[yysize].stateno,(YYCODETYPE)yygoto); + + /* There are no SHIFTREDUCE actions on nonterminals because the table + ** generator has simplified them to pure REDUCE actions. */ + assert( !(yyact>YY_MAX_SHIFT && yyact<=YY_MAX_SHIFTREDUCE) ); + + /* It is not possible for a REDUCE to be followed by an error */ + assert( yyact!=YY_ERROR_ACTION ); + + yymsp += yysize+1; + yypParser->yytos = yymsp; + yymsp->stateno = (YYACTIONTYPE)yyact; + yymsp->major = (YYCODETYPE)yygoto; + yyTraceShift(yypParser, yyact, "... then shift"); + return yyact; } /* @@ -1582,16 +1772,20 @@ static void yy_reduce( static void yy_parse_failed( yyParser *yypParser /* The parser */ ){ - ParseARG_FETCH; + ParseARG_FETCH + ParseCTX_FETCH #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt); } #endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); + while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser); /* Here code is inserted which will be executed whenever the ** parser fails */ - ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ +/************ Begin %parse_failure code ***************************************/ +/************ End %parse_failure code *****************************************/ + ParseARG_STORE /* Suppress warning about unused %extra_argument variable */ + ParseCTX_STORE } #endif /* YYNOERRORRECOVERY */ @@ -1601,17 +1795,19 @@ static void yy_parse_failed( static void yy_syntax_error( yyParser *yypParser, /* The parser */ int yymajor, /* The major type of the error token */ - YYMINORTYPE yyminor /* The minor type of the error token */ + ParseTOKENTYPE yyminor /* The minor type of the error token */ ){ - ParseARG_FETCH; -#define TOKEN (yyminor.yy0) -#line 80 "LuaGrammar.y" + ParseARG_FETCH + ParseCTX_FETCH +#define TOKEN yyminor +/************ Begin %syntax_error code ****************************************/ outline->syntaxError(); -#line 1606 "LuaGrammar.cpp" - ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ +/************ End %syntax_error code ******************************************/ + ParseARG_STORE /* Suppress warning about unused %extra_argument variable */ + ParseCTX_STORE } /* @@ -1620,16 +1816,23 @@ outline->syntaxError(); static void yy_accept( yyParser *yypParser /* The parser */ ){ - ParseARG_FETCH; + ParseARG_FETCH + ParseCTX_FETCH #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt); } #endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); +#ifndef YYNOERRORRECOVERY + yypParser->yyerrcnt = -1; +#endif + assert( yypParser->yytos==yypParser->yystack ); /* Here code is inserted which will be executed whenever the ** parser accepts */ - ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ +/*********** Begin %parse_accept code *****************************************/ +/*********** End %parse_accept code *******************************************/ + ParseARG_STORE /* Suppress warning about unused %extra_argument variable */ + ParseCTX_STORE } /* The main parser program. @@ -1658,50 +1861,54 @@ void Parse( ParseARG_PDECL /* Optional %extra_argument parameter */ ){ YYMINORTYPE yyminorunion; - int yyact; /* The parser action. */ + YYACTIONTYPE yyact; /* The parser action. */ +#if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY) int yyendofinput; /* True if we are at the end of input */ +#endif #ifdef YYERRORSYMBOL int yyerrorhit = 0; /* True if yymajor has invoked an error */ #endif - yyParser *yypParser; /* The parser */ + yyParser *yypParser = (yyParser*)yyp; /* The parser */ + ParseCTX_FETCH + ParseARG_STORE - /* (re)initialize the parser, if necessary */ - yypParser = (yyParser*)yyp; - if( yypParser->yyidx<0 ){ -#if YYSTACKDEPTH<=0 - if( yypParser->yystksz <=0 ){ - /*memset(&yyminorunion, 0, sizeof(yyminorunion));*/ - yyminorunion = yyzerominor; - yyStackOverflow(yypParser, &yyminorunion); - return; - } -#endif - yypParser->yyidx = 0; - yypParser->yyerrcnt = -1; - yypParser->yystack[0].stateno = 0; - yypParser->yystack[0].major = 0; - } - yyminorunion.yy0 = yyminor; + assert( yypParser->yytos!=0 ); +#if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY) yyendofinput = (yymajor==0); - ParseARG_STORE; +#endif + yyact = yypParser->yytos->stateno; #ifndef NDEBUG if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sInput %s\n",yyTracePrompt,yyTokenName[yymajor]); + if( yyact < YY_MIN_REDUCE ){ + fprintf(yyTraceFILE,"%sInput '%s' in state %d\n", + yyTracePrompt,yyTokenName[yymajor],yyact); + }else{ + fprintf(yyTraceFILE,"%sInput '%s' with pending reduce %d\n", + yyTracePrompt,yyTokenName[yymajor],yyact-YY_MIN_REDUCE); + } } #endif do{ - yyact = yy_find_shift_action(yypParser,(YYCODETYPE)yymajor); - if( yyactyytos->stateno ); + yyact = yy_find_shift_action(yymajor,yyact); + if( yyact >= YY_MIN_REDUCE ){ + yyact = yy_reduce(yypParser,yyact-YY_MIN_REDUCE,yymajor, + yyminor ParseCTX_PARAM); + }else if( yyact <= YY_MAX_SHIFTREDUCE ){ + yy_shift(yypParser,yyact,yymajor,yyminor); +#ifndef YYNOERRORRECOVERY yypParser->yyerrcnt--; - yymajor = YYNOCODE; - }else if( yyact < YYNSTATE + YYNRULE ){ - yy_reduce(yypParser,yyact-YYNSTATE); +#endif + break; + }else if( yyact==YY_ACCEPT_ACTION ){ + yypParser->yytos--; + yy_accept(yypParser); + return; }else{ assert( yyact == YY_ERROR_ACTION ); + yyminorunion.yy0 = yyminor; #ifdef YYERRORSYMBOL int yymx; #endif @@ -1731,9 +1938,9 @@ void Parse( ** */ if( yypParser->yyerrcnt<0 ){ - yy_syntax_error(yypParser,yymajor,yyminorunion); + yy_syntax_error(yypParser,yymajor,yyminor); } - yymx = yypParser->yystack[yypParser->yyidx].major; + yymx = yypParser->yytos->major; if( yymx==YYERRORSYMBOL || yyerrorhit ){ #ifndef NDEBUG if( yyTraceFILE ){ @@ -1741,30 +1948,32 @@ void Parse( yyTracePrompt,yyTokenName[yymajor]); } #endif - yy_destructor(yypParser, (YYCODETYPE)yymajor,&yyminorunion); + yy_destructor(yypParser, (YYCODETYPE)yymajor, &yyminorunion); yymajor = YYNOCODE; }else{ - while( - yypParser->yyidx >= 0 && - yymx != YYERRORSYMBOL && - (yyact = yy_find_reduce_action( - yypParser->yystack[yypParser->yyidx].stateno, - YYERRORSYMBOL)) >= YYNSTATE + while( yypParser->yytos >= yypParser->yystack + && yymx != YYERRORSYMBOL + && (yyact = yy_find_reduce_action( + yypParser->yytos->stateno, + YYERRORSYMBOL)) >= YY_MIN_REDUCE ){ yy_pop_parser_stack(yypParser); } - if( yypParser->yyidx < 0 || yymajor==0 ){ + if( yypParser->yytos < yypParser->yystack || yymajor==0 ){ yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); yy_parse_failed(yypParser); +#ifndef YYNOERRORRECOVERY + yypParser->yyerrcnt = -1; +#endif yymajor = YYNOCODE; }else if( yymx!=YYERRORSYMBOL ){ - YYMINORTYPE u2; - u2.YYERRSYMDT = 0; - yy_shift(yypParser,yyact,YYERRORSYMBOL,&u2); + yy_shift(yypParser,yyact,YYERRORSYMBOL,yyminor); } } yypParser->yyerrcnt = 3; yyerrorhit = 1; + if( yymajor==YYNOCODE ) break; + yyact = yypParser->yytos->stateno; #elif defined(YYNOERRORRECOVERY) /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to ** do any kind of error recovery. Instead, simply invoke the syntax @@ -1773,10 +1982,9 @@ void Parse( ** Applications can set this macro (for example inside %include) if ** they intend to abandon the parse upon the first syntax error seen. */ - yy_syntax_error(yypParser,yymajor,yyminorunion); + yy_syntax_error(yypParser,yymajor, yyminor); yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); - yymajor = YYNOCODE; - + break; #else /* YYERRORSYMBOL is not defined */ /* This is what we do if the grammar does not define ERROR: ** @@ -1788,16 +1996,31 @@ void Parse( ** three input tokens have been successfully shifted. */ if( yypParser->yyerrcnt<=0 ){ - yy_syntax_error(yypParser,yymajor,yyminorunion); + yy_syntax_error(yypParser,yymajor, yyminor); } yypParser->yyerrcnt = 3; yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); if( yyendofinput ){ yy_parse_failed(yypParser); +#ifndef YYNOERRORRECOVERY + yypParser->yyerrcnt = -1; +#endif } - yymajor = YYNOCODE; + break; #endif } - }while( yymajor!=YYNOCODE && yypParser->yyidx>=0 ); + }while( yypParser->yytos>yypParser->yystack ); +#ifndef NDEBUG + if( yyTraceFILE ){ + yyStackEntry *i; + char cDiv = '['; + fprintf(yyTraceFILE,"%sReturn. Stack=",yyTracePrompt); + for(i=&yypParser->yystack[1]; i<=yypParser->yytos; i++){ + fprintf(yyTraceFILE,"%c%s", cDiv, yyTokenName[i->major]); + cDiv = ' '; + } + fprintf(yyTraceFILE,"]\n"); + } +#endif return; -} \ No newline at end of file +} diff --git a/code/Script/Editor/LuaGrammar.h b/code/Script/Editor/LuaGrammar.h index 1364fe8a97..b862792047 100644 --- a/code/Script/Editor/LuaGrammar.h +++ b/code/Script/Editor/LuaGrammar.h @@ -1,11 +1,3 @@ -/* - * TRAKTOR - * Copyright (c) 2022 Anders Pistol. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at https://mozilla.org/MPL/2.0/. - */ #define TOKEN_OPEN 1 #define TOKEN_LEFT_PARANTHESIS 2 #define TOKEN_SEMICOLON 3 diff --git a/code/Script/Editor/LuaGrammar.out b/code/Script/Editor/LuaGrammar.out deleted file mode 100644 index 168434fdff..0000000000 --- a/code/Script/Editor/LuaGrammar.out +++ /dev/null @@ -1,3203 +0,0 @@ -State 0: - chunk ::= * block - block ::= * scope statlist - block ::= * scope statlist laststat semi - (6) scope ::= * - scope ::= * scope statlist binding semi - - chunk accept - block shift 116 - scope shift 54 - {default} reduce 6 - -State 1: - stat ::= IF * conds END - conds ::= * condlist - conds ::= * condlist ELSE block - condlist ::= * cond - condlist ::= * condlist ELSEIF cond - cond ::= * exp THEN block - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 154 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACE shift 2 - exp shift 57 - conds shift 103 - functioncall shift 152 - condlist shift 87 - cond shift 124 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - -State 2: - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= LEFT_BRACE * RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= LEFT_BRACE * fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - tableconstructor ::= LEFT_BRACE * fieldlist COMMA|SEMICOLON RIGHT_BRACE - fieldlist ::= * field - fieldlist ::= * fieldlist COMMA|SEMICOLON field - field ::= * exp - field ::= * NAME EQUAL exp - field ::= * LEFT_BRACKET exp RIGHT_BRACKET EQUAL exp - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 110 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACKET shift 18 - LEFT_BRACE shift 2 - RIGHT_BRACE shift 143 - exp shift 68 - functioncall shift 152 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - fieldlist shift 78 - field shift 139 - -State 3: - (3) block ::= scope statlist * - block ::= scope statlist * laststat semi - scope ::= scope statlist * binding semi - statlist ::= statlist * stat semi - stat ::= * DO block END - stat ::= * WHILE exp DO block END - stat ::= * repetition DO block END - stat ::= * REPEAT ublock - stat ::= * IF conds END - stat ::= * FUNCTION funcname funcbody - stat ::= * setlist EQUAL explist1 - stat ::= * functioncall - repetition ::= * FOR NAME EQUAL explist23 - repetition ::= * FOR namelist IN explist1 - laststat ::= * BREAK - laststat ::= * RETURN - laststat ::= * RETURN explist1 - binding ::= * LOCAL namelist - binding ::= * LOCAL namelist EQUAL explist1 - binding ::= * LOCAL namelist LESS CONST GREATER EQUAL explist1 - binding ::= * LOCAL FUNCTION NAME funcbody - setlist ::= * var - setlist ::= * setlist COMMA var - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - - OPEN shift 20 - DO shift 48 - WHILE shift 32 - REPEAT shift 34 - IF shift 1 - FUNCTION shift 41 - FOR shift 50 - NAME shift 154 - BREAK shift 118 - RETURN shift 8 - LOCAL shift 49 - laststat shift 53 - binding shift 52 - stat shift 51 - repetition shift 106 - setlist shift 85 - functioncall shift 75 - prefixexp shift 35 - var shift 82 - {default} reduce 3 - -State 4: - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - tableconstructor ::= LEFT_BRACE fieldlist COMMA|SEMICOLON * RIGHT_BRACE - fieldlist ::= fieldlist COMMA|SEMICOLON * field - field ::= * exp - field ::= * NAME EQUAL exp - field ::= * LEFT_BRACKET exp RIGHT_BRACKET EQUAL exp - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 110 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACKET shift 18 - LEFT_BRACE shift 2 - RIGHT_BRACE shift 141 - exp shift 68 - functioncall shift 152 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - field shift 140 - -State 5: - explist1 ::= * exp - explist1 ::= * explist1 COMMA exp - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - args ::= LEFT_PARANTHESIS * RIGHT_PARANTHESIS - args ::= LEFT_PARANTHESIS * explist1 RIGHT_PARANTHESIS - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 154 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - RIGHT_PARANTHESIS shift 133 - LEFT_BRACE shift 2 - exp shift 65 - explist1 shift 88 - functioncall shift 152 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - -State 6: - binding ::= LOCAL namelist LESS CONST GREATER EQUAL * explist1 - explist1 ::= * exp - explist1 ::= * explist1 COMMA exp - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 154 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACE shift 2 - exp shift 65 - explist1 shift 91 - functioncall shift 152 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - -State 7: - binding ::= LOCAL namelist EQUAL * explist1 - explist1 ::= * exp - explist1 ::= * explist1 COMMA exp - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 154 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACE shift 2 - exp shift 65 - explist1 shift 95 - functioncall shift 152 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - -State 8: - (26) laststat ::= RETURN * - laststat ::= RETURN * explist1 - explist1 ::= * exp - explist1 ::= * explist1 COMMA exp - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 154 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACE shift 2 - exp shift 65 - explist1 shift 96 - functioncall shift 152 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - {default} reduce 26 - -State 9: - repetition ::= FOR namelist IN * explist1 - explist1 ::= * exp - explist1 ::= * explist1 COMMA exp - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 154 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACE shift 2 - exp shift 65 - explist1 shift 98 - functioncall shift 152 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - -State 10: - repetition ::= FOR NAME EQUAL * explist23 - explist23 ::= * exp COMMA exp - explist23 ::= * exp COMMA exp COMMA exp - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 154 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACE shift 2 - exp shift 56 - functioncall shift 152 - explist23 shift 119 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - -State 11: - stat ::= setlist EQUAL * explist1 - explist1 ::= * exp - explist1 ::= * explist1 COMMA exp - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 154 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACE shift 2 - exp shift 65 - explist1 shift 100 - functioncall shift 152 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - -State 12: - condlist ::= condlist ELSEIF * cond - cond ::= * exp THEN block - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 154 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACE shift 2 - exp shift 57 - functioncall shift 152 - cond shift 126 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - -State 13: - explist23 ::= exp COMMA exp COMMA * exp - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 154 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACE shift 2 - exp shift 62 - functioncall shift 152 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - -State 14: - explist23 ::= exp COMMA * exp - explist23 ::= exp COMMA * exp COMMA exp - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 154 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACE shift 2 - exp shift 55 - functioncall shift 152 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - -State 15: - ublock ::= block UNTIL * exp - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 154 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACE shift 2 - exp shift 63 - functioncall shift 152 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - -State 16: - explist1 ::= explist1 COMMA * exp - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 154 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACE shift 2 - exp shift 64 - functioncall shift 152 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - -State 17: - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - field ::= LEFT_BRACKET exp RIGHT_BRACKET EQUAL * exp - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 154 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACE shift 2 - exp shift 66 - functioncall shift 152 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - -State 18: - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - field ::= LEFT_BRACKET * exp RIGHT_BRACKET EQUAL exp - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 154 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACE shift 2 - exp shift 59 - functioncall shift 152 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - -State 19: - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - field ::= NAME EQUAL * exp - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 154 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACE shift 2 - exp shift 67 - functioncall shift 152 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - -State 20: - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - prefixexp ::= OPEN * exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 154 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACE shift 2 - exp shift 60 - functioncall shift 152 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - -State 21: - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - exp ::= exp RAISE * exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 154 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACE shift 2 - exp shift 79 - functioncall shift 152 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - -State 22: - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= exp MULTIPLY|DIVIDE|MODULO * exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 154 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACE shift 2 - exp shift 80 - functioncall shift 152 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - -State 23: - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= exp PLUS|MINUS * exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 154 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACE shift 2 - exp shift 76 - functioncall shift 152 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - -State 24: - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= exp BITWISE_AND * exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 154 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACE shift 2 - exp shift 69 - functioncall shift 152 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - -State 25: - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= exp BITWISE_OR * exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 154 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACE shift 2 - exp shift 70 - functioncall shift 152 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - -State 26: - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= exp DOT_DOT * exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 154 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACE shift 2 - exp shift 73 - functioncall shift 152 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - -State 27: - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL * exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 154 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACE shift 2 - exp shift 74 - functioncall shift 152 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - -State 28: - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= exp AND * exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 154 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACE shift 2 - exp shift 72 - functioncall shift 152 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - -State 29: - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= NOT|HASH|MINUS * exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 154 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACE shift 2 - exp shift 81 - functioncall shift 152 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - -State 30: - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= prefixexp LEFT_BRACKET * exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 154 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACE shift 2 - exp shift 58 - functioncall shift 152 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - -State 31: - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= exp OR * exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 154 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACE shift 2 - exp shift 71 - functioncall shift 152 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - -State 32: - stat ::= WHILE * exp DO block END - exp ::= * NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT - exp ::= * function - exp ::= * prefixexp - exp ::= * tableconstructor - exp ::= * NOT|HASH|MINUS exp - exp ::= * exp OR exp - exp ::= * exp AND exp - exp ::= * exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= * exp DOT_DOT exp - exp ::= * exp BITWISE_OR exp - exp ::= * exp BITWISE_AND exp - exp ::= * exp PLUS|MINUS exp - exp ::= * exp MULTIPLY|DIVIDE|MODULO exp - exp ::= * exp RAISE exp - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - function ::= * FUNCTION funcbody - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - - OPEN shift 20 - FUNCTION shift 42 - NAME shift 154 - MINUS shift 29 - NOT shift 29 - HASH shift 29 - NIL shift 157 - TRUE shift 157 - FALSE shift 157 - NUMBER shift 157 - STRING shift 157 - DOT_DOT_DOT shift 157 - LEFT_BRACE shift 2 - exp shift 61 - functioncall shift 152 - function shift 156 - prefixexp shift 36 - tableconstructor shift 155 - var shift 153 - -State 33: - setlist ::= setlist COMMA * var - var ::= * NAME - var ::= * prefixexp LEFT_BRACKET exp RIGHT_BRACKET - var ::= * prefixexp DOT NAME - prefixexp ::= * var - prefixexp ::= * functioncall - prefixexp ::= * OPEN exp RIGHT_PARANTHESIS - functioncall ::= * prefixexp args - functioncall ::= * prefixexp COLON NAME args - - OPEN shift 20 - NAME shift 154 - functioncall shift 152 - prefixexp shift 35 - var shift 84 - -State 34: - block ::= * scope statlist - block ::= * scope statlist laststat semi - ublock ::= * block UNTIL exp - (6) scope ::= * - scope ::= * scope statlist binding semi - stat ::= REPEAT * ublock - - block shift 104 - scope shift 54 - ublock shift 129 - {default} reduce 6 - -State 35: - var ::= prefixexp * LEFT_BRACKET exp RIGHT_BRACKET - var ::= prefixexp * DOT NAME - functioncall ::= prefixexp * args - functioncall ::= prefixexp * COLON NAME args - args ::= * LEFT_PARANTHESIS RIGHT_PARANTHESIS - args ::= * LEFT_PARANTHESIS explist1 RIGHT_PARANTHESIS - args ::= * tableconstructor - args ::= * STRING - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - - LEFT_PARANTHESIS shift 5 - COLON shift 107 - DOT shift 108 - STRING shift 131 - LEFT_BRACKET shift 30 - LEFT_BRACE shift 2 - tableconstructor shift 132 - args shift 136 - -State 36: - (44) exp ::= prefixexp * - var ::= prefixexp * LEFT_BRACKET exp RIGHT_BRACKET - var ::= prefixexp * DOT NAME - functioncall ::= prefixexp * args - functioncall ::= prefixexp * COLON NAME args - args ::= * LEFT_PARANTHESIS RIGHT_PARANTHESIS - args ::= * LEFT_PARANTHESIS explist1 RIGHT_PARANTHESIS - args ::= * tableconstructor - args ::= * STRING - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - - LEFT_PARANTHESIS shift 5 - COLON shift 107 - DOT shift 108 - STRING shift 131 - LEFT_BRACKET shift 30 - LEFT_BRACE shift 2 - tableconstructor shift 132 - args shift 136 - {default} reduce 44 - -State 37: - functioncall ::= prefixexp COLON NAME * args - args ::= * LEFT_PARANTHESIS RIGHT_PARANTHESIS - args ::= * LEFT_PARANTHESIS explist1 RIGHT_PARANTHESIS - args ::= * tableconstructor - args ::= * STRING - tableconstructor ::= * LEFT_BRACE RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist RIGHT_BRACE - tableconstructor ::= * LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE - - LEFT_PARANTHESIS shift 5 - STRING shift 131 - LEFT_BRACE shift 2 - tableconstructor shift 132 - args shift 135 - -State 38: - namelist ::= * NAME - namelist ::= * namelist COMMA NAME - params ::= LEFT_PARANTHESIS * parlist RIGHT_PARANTHESIS - (73) parlist ::= * - parlist ::= * namelist - parlist ::= * DOT_DOT_DOT - parlist ::= * namelist COMMA DOT_DOT_DOT - - NAME shift 148 - DOT_DOT_DOT shift 144 - namelist shift 112 - parlist shift 111 - {default} reduce 73 - -State 39: - binding ::= LOCAL FUNCTION NAME * funcbody - funcbody ::= * params block END - params ::= * LEFT_PARANTHESIS parlist RIGHT_PARANTHESIS - - LEFT_PARANTHESIS shift 38 - funcbody shift 117 - params shift 46 - -State 40: - stat ::= FUNCTION funcname * funcbody - funcbody ::= * params block END - params ::= * LEFT_PARANTHESIS parlist RIGHT_PARANTHESIS - - LEFT_PARANTHESIS shift 38 - funcbody shift 123 - params shift 46 - -State 41: - stat ::= FUNCTION * funcname funcbody - funcname ::= * dottedname - funcname ::= * dottedname COLON NAME - dottedname ::= * NAME - dottedname ::= * dottedname DOT NAME - - NAME shift 120 - funcname shift 40 - dottedname shift 86 - -State 42: - function ::= FUNCTION * funcbody - funcbody ::= * params block END - params ::= * LEFT_PARANTHESIS parlist RIGHT_PARANTHESIS - - LEFT_PARANTHESIS shift 38 - funcbody shift 150 - params shift 46 - -State 43: - block ::= * scope statlist - block ::= * scope statlist laststat semi - (6) scope ::= * - scope ::= * scope statlist binding semi - cond ::= exp THEN * block - - block shift 125 - scope shift 54 - {default} reduce 6 - -State 44: - block ::= * scope statlist - block ::= * scope statlist laststat semi - (6) scope ::= * - scope ::= * scope statlist binding semi - conds ::= condlist ELSE * block - - block shift 127 - scope shift 54 - {default} reduce 6 - -State 45: - block ::= * scope statlist - block ::= * scope statlist laststat semi - (6) scope ::= * - scope ::= * scope statlist binding semi - stat ::= repetition DO * block END - - block shift 105 - scope shift 54 - {default} reduce 6 - -State 46: - block ::= * scope statlist - block ::= * scope statlist laststat semi - (6) scope ::= * - scope ::= * scope statlist binding semi - funcbody ::= params * block END - - block shift 113 - scope shift 54 - {default} reduce 6 - -State 47: - block ::= * scope statlist - block ::= * scope statlist laststat semi - (6) scope ::= * - scope ::= * scope statlist binding semi - stat ::= WHILE exp DO * block END - - block shift 114 - scope shift 54 - {default} reduce 6 - -State 48: - block ::= * scope statlist - block ::= * scope statlist laststat semi - (6) scope ::= * - scope ::= * scope statlist binding semi - stat ::= DO * block END - - block shift 115 - scope shift 54 - {default} reduce 6 - -State 49: - binding ::= LOCAL * namelist - binding ::= LOCAL * namelist EQUAL explist1 - binding ::= LOCAL * namelist LESS CONST GREATER EQUAL explist1 - binding ::= LOCAL * FUNCTION NAME funcbody - namelist ::= * NAME - namelist ::= * namelist COMMA NAME - - FUNCTION shift 90 - NAME shift 148 - namelist shift 77 - -State 50: - repetition ::= FOR * NAME EQUAL explist23 - repetition ::= FOR * namelist IN explist1 - namelist ::= * NAME - namelist ::= * namelist COMMA NAME - - NAME shift 99 - namelist shift 83 - -State 51: - semi ::= * SEMICOLON - (2) semi ::= * - statlist ::= statlist stat * semi - - SEMICOLON shift 163 - semi shift 160 - {default} reduce 2 - -State 52: - semi ::= * SEMICOLON - (2) semi ::= * - scope ::= scope statlist binding * semi - - SEMICOLON shift 163 - semi shift 161 - {default} reduce 2 - -State 53: - semi ::= * SEMICOLON - (2) semi ::= * - block ::= scope statlist laststat * semi - - SEMICOLON shift 163 - semi shift 162 - {default} reduce 2 - -State 54: - block ::= scope * statlist - block ::= scope * statlist laststat semi - scope ::= scope * statlist binding semi - (8) statlist ::= * - statlist ::= * statlist stat semi - - statlist shift 3 - {default} reduce 8 - -State 55: - (40) explist23 ::= exp COMMA exp * - explist23 ::= exp COMMA exp * COMMA exp - exp ::= exp * OR exp - exp ::= exp * AND exp - exp ::= exp * LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= exp * DOT_DOT exp - exp ::= exp * BITWISE_OR exp - exp ::= exp * BITWISE_AND exp - exp ::= exp * PLUS|MINUS exp - exp ::= exp * MULTIPLY|DIVIDE|MODULO exp - exp ::= exp * RAISE exp - - LESS shift 27 - GREATER shift 27 - COMMA shift 13 - OR shift 31 - AND shift 28 - LESS_EQUAL shift 27 - GREATER_EQUAL shift 27 - EQUAL_EQUAL shift 27 - NOT_EQUAL shift 27 - DOT_DOT shift 26 - PLUS shift 23 - MINUS shift 23 - MULTIPLY shift 22 - DIVIDE shift 22 - MODULO shift 22 - RAISE shift 21 - BITWISE_OR shift 25 - BITWISE_AND shift 24 - {default} reduce 40 - -State 56: - explist23 ::= exp * COMMA exp - explist23 ::= exp * COMMA exp COMMA exp - exp ::= exp * OR exp - exp ::= exp * AND exp - exp ::= exp * LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= exp * DOT_DOT exp - exp ::= exp * BITWISE_OR exp - exp ::= exp * BITWISE_AND exp - exp ::= exp * PLUS|MINUS exp - exp ::= exp * MULTIPLY|DIVIDE|MODULO exp - exp ::= exp * RAISE exp - - LESS shift 27 - GREATER shift 27 - COMMA shift 14 - OR shift 31 - AND shift 28 - LESS_EQUAL shift 27 - GREATER_EQUAL shift 27 - EQUAL_EQUAL shift 27 - NOT_EQUAL shift 27 - DOT_DOT shift 26 - PLUS shift 23 - MINUS shift 23 - MULTIPLY shift 22 - DIVIDE shift 22 - MODULO shift 22 - RAISE shift 21 - BITWISE_OR shift 25 - BITWISE_AND shift 24 - -State 57: - cond ::= exp * THEN block - exp ::= exp * OR exp - exp ::= exp * AND exp - exp ::= exp * LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= exp * DOT_DOT exp - exp ::= exp * BITWISE_OR exp - exp ::= exp * BITWISE_AND exp - exp ::= exp * PLUS|MINUS exp - exp ::= exp * MULTIPLY|DIVIDE|MODULO exp - exp ::= exp * RAISE exp - - THEN shift 43 - LESS shift 27 - GREATER shift 27 - OR shift 31 - AND shift 28 - LESS_EQUAL shift 27 - GREATER_EQUAL shift 27 - EQUAL_EQUAL shift 27 - NOT_EQUAL shift 27 - DOT_DOT shift 26 - PLUS shift 23 - MINUS shift 23 - MULTIPLY shift 22 - DIVIDE shift 22 - MODULO shift 22 - RAISE shift 21 - BITWISE_OR shift 25 - BITWISE_AND shift 24 - -State 58: - exp ::= exp * OR exp - exp ::= exp * AND exp - exp ::= exp * LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= exp * DOT_DOT exp - exp ::= exp * BITWISE_OR exp - exp ::= exp * BITWISE_AND exp - exp ::= exp * PLUS|MINUS exp - exp ::= exp * MULTIPLY|DIVIDE|MODULO exp - exp ::= exp * RAISE exp - var ::= prefixexp LEFT_BRACKET exp * RIGHT_BRACKET - - LESS shift 27 - GREATER shift 27 - OR shift 31 - AND shift 28 - LESS_EQUAL shift 27 - GREATER_EQUAL shift 27 - EQUAL_EQUAL shift 27 - NOT_EQUAL shift 27 - DOT_DOT shift 26 - PLUS shift 23 - MINUS shift 23 - MULTIPLY shift 22 - DIVIDE shift 22 - MODULO shift 22 - RAISE shift 21 - BITWISE_OR shift 25 - BITWISE_AND shift 24 - RIGHT_BRACKET shift 138 - -State 59: - exp ::= exp * OR exp - exp ::= exp * AND exp - exp ::= exp * LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= exp * DOT_DOT exp - exp ::= exp * BITWISE_OR exp - exp ::= exp * BITWISE_AND exp - exp ::= exp * PLUS|MINUS exp - exp ::= exp * MULTIPLY|DIVIDE|MODULO exp - exp ::= exp * RAISE exp - field ::= LEFT_BRACKET exp * RIGHT_BRACKET EQUAL exp - - LESS shift 27 - GREATER shift 27 - OR shift 31 - AND shift 28 - LESS_EQUAL shift 27 - GREATER_EQUAL shift 27 - EQUAL_EQUAL shift 27 - NOT_EQUAL shift 27 - DOT_DOT shift 26 - PLUS shift 23 - MINUS shift 23 - MULTIPLY shift 22 - DIVIDE shift 22 - MODULO shift 22 - RAISE shift 21 - BITWISE_OR shift 25 - BITWISE_AND shift 24 - RIGHT_BRACKET shift 109 - -State 60: - exp ::= exp * OR exp - exp ::= exp * AND exp - exp ::= exp * LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= exp * DOT_DOT exp - exp ::= exp * BITWISE_OR exp - exp ::= exp * BITWISE_AND exp - exp ::= exp * PLUS|MINUS exp - exp ::= exp * MULTIPLY|DIVIDE|MODULO exp - exp ::= exp * RAISE exp - prefixexp ::= OPEN exp * RIGHT_PARANTHESIS - - LESS shift 27 - GREATER shift 27 - OR shift 31 - AND shift 28 - LESS_EQUAL shift 27 - GREATER_EQUAL shift 27 - EQUAL_EQUAL shift 27 - NOT_EQUAL shift 27 - DOT_DOT shift 26 - PLUS shift 23 - MINUS shift 23 - MULTIPLY shift 22 - DIVIDE shift 22 - MODULO shift 22 - RAISE shift 21 - BITWISE_OR shift 25 - BITWISE_AND shift 24 - RIGHT_PARANTHESIS shift 151 - -State 61: - stat ::= WHILE exp * DO block END - exp ::= exp * OR exp - exp ::= exp * AND exp - exp ::= exp * LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= exp * DOT_DOT exp - exp ::= exp * BITWISE_OR exp - exp ::= exp * BITWISE_AND exp - exp ::= exp * PLUS|MINUS exp - exp ::= exp * MULTIPLY|DIVIDE|MODULO exp - exp ::= exp * RAISE exp - - DO shift 47 - LESS shift 27 - GREATER shift 27 - OR shift 31 - AND shift 28 - LESS_EQUAL shift 27 - GREATER_EQUAL shift 27 - EQUAL_EQUAL shift 27 - NOT_EQUAL shift 27 - DOT_DOT shift 26 - PLUS shift 23 - MINUS shift 23 - MULTIPLY shift 22 - DIVIDE shift 22 - MODULO shift 22 - RAISE shift 21 - BITWISE_OR shift 25 - BITWISE_AND shift 24 - -State 62: - (41) explist23 ::= exp COMMA exp COMMA exp * - exp ::= exp * OR exp - exp ::= exp * AND exp - exp ::= exp * LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= exp * DOT_DOT exp - exp ::= exp * BITWISE_OR exp - exp ::= exp * BITWISE_AND exp - exp ::= exp * PLUS|MINUS exp - exp ::= exp * MULTIPLY|DIVIDE|MODULO exp - exp ::= exp * RAISE exp - - LESS shift 27 - GREATER shift 27 - OR shift 31 - AND shift 28 - LESS_EQUAL shift 27 - GREATER_EQUAL shift 27 - EQUAL_EQUAL shift 27 - NOT_EQUAL shift 27 - DOT_DOT shift 26 - PLUS shift 23 - MINUS shift 23 - MULTIPLY shift 22 - DIVIDE shift 22 - MODULO shift 22 - RAISE shift 21 - BITWISE_OR shift 25 - BITWISE_AND shift 24 - {default} reduce 41 - -State 63: - (5) ublock ::= block UNTIL exp * - exp ::= exp * OR exp - exp ::= exp * AND exp - exp ::= exp * LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= exp * DOT_DOT exp - exp ::= exp * BITWISE_OR exp - exp ::= exp * BITWISE_AND exp - exp ::= exp * PLUS|MINUS exp - exp ::= exp * MULTIPLY|DIVIDE|MODULO exp - exp ::= exp * RAISE exp - - LESS shift 27 - GREATER shift 27 - OR shift 31 - AND shift 28 - LESS_EQUAL shift 27 - GREATER_EQUAL shift 27 - EQUAL_EQUAL shift 27 - NOT_EQUAL shift 27 - DOT_DOT shift 26 - PLUS shift 23 - MINUS shift 23 - MULTIPLY shift 22 - DIVIDE shift 22 - MODULO shift 22 - RAISE shift 21 - BITWISE_OR shift 25 - BITWISE_AND shift 24 - {default} reduce 5 - -State 64: - (39) explist1 ::= explist1 COMMA exp * - exp ::= exp * OR exp - exp ::= exp * AND exp - exp ::= exp * LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= exp * DOT_DOT exp - exp ::= exp * BITWISE_OR exp - exp ::= exp * BITWISE_AND exp - exp ::= exp * PLUS|MINUS exp - exp ::= exp * MULTIPLY|DIVIDE|MODULO exp - exp ::= exp * RAISE exp - - LESS shift 27 - GREATER shift 27 - OR shift 31 - AND shift 28 - LESS_EQUAL shift 27 - GREATER_EQUAL shift 27 - EQUAL_EQUAL shift 27 - NOT_EQUAL shift 27 - DOT_DOT shift 26 - PLUS shift 23 - MINUS shift 23 - MULTIPLY shift 22 - DIVIDE shift 22 - MODULO shift 22 - RAISE shift 21 - BITWISE_OR shift 25 - BITWISE_AND shift 24 - {default} reduce 39 - -State 65: - (38) explist1 ::= exp * - exp ::= exp * OR exp - exp ::= exp * AND exp - exp ::= exp * LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= exp * DOT_DOT exp - exp ::= exp * BITWISE_OR exp - exp ::= exp * BITWISE_AND exp - exp ::= exp * PLUS|MINUS exp - exp ::= exp * MULTIPLY|DIVIDE|MODULO exp - exp ::= exp * RAISE exp - - LESS shift 27 - GREATER shift 27 - OR shift 31 - AND shift 28 - LESS_EQUAL shift 27 - GREATER_EQUAL shift 27 - EQUAL_EQUAL shift 27 - NOT_EQUAL shift 27 - DOT_DOT shift 26 - PLUS shift 23 - MINUS shift 23 - MULTIPLY shift 22 - DIVIDE shift 22 - MODULO shift 22 - RAISE shift 21 - BITWISE_OR shift 25 - BITWISE_AND shift 24 - {default} reduce 38 - -State 66: - exp ::= exp * OR exp - exp ::= exp * AND exp - exp ::= exp * LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= exp * DOT_DOT exp - exp ::= exp * BITWISE_OR exp - exp ::= exp * BITWISE_AND exp - exp ::= exp * PLUS|MINUS exp - exp ::= exp * MULTIPLY|DIVIDE|MODULO exp - exp ::= exp * RAISE exp - (84) field ::= LEFT_BRACKET exp RIGHT_BRACKET EQUAL exp * - - LESS shift 27 - GREATER shift 27 - OR shift 31 - AND shift 28 - LESS_EQUAL shift 27 - GREATER_EQUAL shift 27 - EQUAL_EQUAL shift 27 - NOT_EQUAL shift 27 - DOT_DOT shift 26 - PLUS shift 23 - MINUS shift 23 - MULTIPLY shift 22 - DIVIDE shift 22 - MODULO shift 22 - RAISE shift 21 - BITWISE_OR shift 25 - BITWISE_AND shift 24 - {default} reduce 84 - -State 67: - exp ::= exp * OR exp - exp ::= exp * AND exp - exp ::= exp * LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= exp * DOT_DOT exp - exp ::= exp * BITWISE_OR exp - exp ::= exp * BITWISE_AND exp - exp ::= exp * PLUS|MINUS exp - exp ::= exp * MULTIPLY|DIVIDE|MODULO exp - exp ::= exp * RAISE exp - (83) field ::= NAME EQUAL exp * - - LESS shift 27 - GREATER shift 27 - OR shift 31 - AND shift 28 - LESS_EQUAL shift 27 - GREATER_EQUAL shift 27 - EQUAL_EQUAL shift 27 - NOT_EQUAL shift 27 - DOT_DOT shift 26 - PLUS shift 23 - MINUS shift 23 - MULTIPLY shift 22 - DIVIDE shift 22 - MODULO shift 22 - RAISE shift 21 - BITWISE_OR shift 25 - BITWISE_AND shift 24 - {default} reduce 83 - -State 68: - exp ::= exp * OR exp - exp ::= exp * AND exp - exp ::= exp * LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= exp * DOT_DOT exp - exp ::= exp * BITWISE_OR exp - exp ::= exp * BITWISE_AND exp - exp ::= exp * PLUS|MINUS exp - exp ::= exp * MULTIPLY|DIVIDE|MODULO exp - exp ::= exp * RAISE exp - (82) field ::= exp * - - LESS shift 27 - GREATER shift 27 - OR shift 31 - AND shift 28 - LESS_EQUAL shift 27 - GREATER_EQUAL shift 27 - EQUAL_EQUAL shift 27 - NOT_EQUAL shift 27 - DOT_DOT shift 26 - PLUS shift 23 - MINUS shift 23 - MULTIPLY shift 22 - DIVIDE shift 22 - MODULO shift 22 - RAISE shift 21 - BITWISE_OR shift 25 - BITWISE_AND shift 24 - {default} reduce 82 - -State 69: - exp ::= exp * OR exp - exp ::= exp * AND exp - exp ::= exp * LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= exp * DOT_DOT exp - exp ::= exp * BITWISE_OR exp - exp ::= exp * BITWISE_AND exp - (52) exp ::= exp BITWISE_AND exp * - exp ::= exp * PLUS|MINUS exp - exp ::= exp * MULTIPLY|DIVIDE|MODULO exp - exp ::= exp * RAISE exp - - LESS shift 27 - LESS reduce 52 ** Parsing conflict ** - GREATER shift 27 - GREATER reduce 52 ** Parsing conflict ** - OR shift 31 - OR reduce 52 ** Parsing conflict ** - AND shift 28 - AND reduce 52 ** Parsing conflict ** - LESS_EQUAL shift 27 - LESS_EQUAL reduce 52 ** Parsing conflict ** - GREATER_EQUAL shift 27 - GREATER_EQUAL reduce 52 ** Parsing conflict ** - EQUAL_EQUAL shift 27 - EQUAL_EQUAL reduce 52 ** Parsing conflict ** - NOT_EQUAL shift 27 - NOT_EQUAL reduce 52 ** Parsing conflict ** - DOT_DOT shift 26 - DOT_DOT reduce 52 ** Parsing conflict ** - PLUS shift 23 - PLUS reduce 52 ** Parsing conflict ** - MINUS shift 23 - MINUS reduce 52 ** Parsing conflict ** - MULTIPLY shift 22 - MULTIPLY reduce 52 ** Parsing conflict ** - DIVIDE shift 22 - DIVIDE reduce 52 ** Parsing conflict ** - MODULO shift 22 - MODULO reduce 52 ** Parsing conflict ** - RAISE shift 21 - RAISE reduce 52 ** Parsing conflict ** - BITWISE_OR shift 25 - BITWISE_OR reduce 52 ** Parsing conflict ** - BITWISE_AND shift 24 - BITWISE_AND reduce 52 ** Parsing conflict ** - {default} reduce 52 - -State 70: - exp ::= exp * OR exp - exp ::= exp * AND exp - exp ::= exp * LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= exp * DOT_DOT exp - exp ::= exp * BITWISE_OR exp - (51) exp ::= exp BITWISE_OR exp * - exp ::= exp * BITWISE_AND exp - exp ::= exp * PLUS|MINUS exp - exp ::= exp * MULTIPLY|DIVIDE|MODULO exp - exp ::= exp * RAISE exp - - LESS shift 27 - LESS reduce 51 ** Parsing conflict ** - GREATER shift 27 - GREATER reduce 51 ** Parsing conflict ** - OR shift 31 - OR reduce 51 ** Parsing conflict ** - AND shift 28 - AND reduce 51 ** Parsing conflict ** - LESS_EQUAL shift 27 - LESS_EQUAL reduce 51 ** Parsing conflict ** - GREATER_EQUAL shift 27 - GREATER_EQUAL reduce 51 ** Parsing conflict ** - EQUAL_EQUAL shift 27 - EQUAL_EQUAL reduce 51 ** Parsing conflict ** - NOT_EQUAL shift 27 - NOT_EQUAL reduce 51 ** Parsing conflict ** - DOT_DOT shift 26 - DOT_DOT reduce 51 ** Parsing conflict ** - PLUS shift 23 - PLUS reduce 51 ** Parsing conflict ** - MINUS shift 23 - MINUS reduce 51 ** Parsing conflict ** - MULTIPLY shift 22 - MULTIPLY reduce 51 ** Parsing conflict ** - DIVIDE shift 22 - DIVIDE reduce 51 ** Parsing conflict ** - MODULO shift 22 - MODULO reduce 51 ** Parsing conflict ** - RAISE shift 21 - RAISE reduce 51 ** Parsing conflict ** - BITWISE_OR shift 25 - BITWISE_OR reduce 51 ** Parsing conflict ** - BITWISE_AND shift 24 - BITWISE_AND reduce 51 ** Parsing conflict ** - {default} reduce 51 - -State 71: - exp ::= exp * OR exp - (47) exp ::= exp OR exp * - exp ::= exp * AND exp - exp ::= exp * LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= exp * DOT_DOT exp - exp ::= exp * BITWISE_OR exp - exp ::= exp * BITWISE_AND exp - exp ::= exp * PLUS|MINUS exp - exp ::= exp * MULTIPLY|DIVIDE|MODULO exp - exp ::= exp * RAISE exp - - LESS shift 27 - GREATER shift 27 - AND shift 28 - LESS_EQUAL shift 27 - GREATER_EQUAL shift 27 - EQUAL_EQUAL shift 27 - NOT_EQUAL shift 27 - DOT_DOT shift 26 - PLUS shift 23 - MINUS shift 23 - MULTIPLY shift 22 - DIVIDE shift 22 - MODULO shift 22 - RAISE shift 21 - BITWISE_OR shift 25 - BITWISE_OR reduce 47 ** Parsing conflict ** - BITWISE_AND shift 24 - BITWISE_AND reduce 47 ** Parsing conflict ** - {default} reduce 47 - -State 72: - exp ::= exp * OR exp - exp ::= exp * AND exp - (48) exp ::= exp AND exp * - exp ::= exp * LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= exp * DOT_DOT exp - exp ::= exp * BITWISE_OR exp - exp ::= exp * BITWISE_AND exp - exp ::= exp * PLUS|MINUS exp - exp ::= exp * MULTIPLY|DIVIDE|MODULO exp - exp ::= exp * RAISE exp - - LESS shift 27 - GREATER shift 27 - LESS_EQUAL shift 27 - GREATER_EQUAL shift 27 - EQUAL_EQUAL shift 27 - NOT_EQUAL shift 27 - DOT_DOT shift 26 - PLUS shift 23 - MINUS shift 23 - MULTIPLY shift 22 - DIVIDE shift 22 - MODULO shift 22 - RAISE shift 21 - BITWISE_OR shift 25 - BITWISE_OR reduce 48 ** Parsing conflict ** - BITWISE_AND shift 24 - BITWISE_AND reduce 48 ** Parsing conflict ** - {default} reduce 48 - -State 73: - exp ::= exp * OR exp - exp ::= exp * AND exp - exp ::= exp * LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= exp * DOT_DOT exp - (50) exp ::= exp DOT_DOT exp * - exp ::= exp * BITWISE_OR exp - exp ::= exp * BITWISE_AND exp - exp ::= exp * PLUS|MINUS exp - exp ::= exp * MULTIPLY|DIVIDE|MODULO exp - exp ::= exp * RAISE exp - - DOT_DOT shift 26 - PLUS shift 23 - MINUS shift 23 - MULTIPLY shift 22 - DIVIDE shift 22 - MODULO shift 22 - RAISE shift 21 - BITWISE_OR shift 25 - BITWISE_OR reduce 50 ** Parsing conflict ** - BITWISE_AND shift 24 - BITWISE_AND reduce 50 ** Parsing conflict ** - {default} reduce 50 - -State 74: - exp ::= exp * OR exp - exp ::= exp * AND exp - exp ::= exp * LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - (49) exp ::= exp LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp * - exp ::= exp * DOT_DOT exp - exp ::= exp * BITWISE_OR exp - exp ::= exp * BITWISE_AND exp - exp ::= exp * PLUS|MINUS exp - exp ::= exp * MULTIPLY|DIVIDE|MODULO exp - exp ::= exp * RAISE exp - - DOT_DOT shift 26 - PLUS shift 23 - MINUS shift 23 - MULTIPLY shift 22 - DIVIDE shift 22 - MODULO shift 22 - RAISE shift 21 - BITWISE_OR shift 25 - BITWISE_OR reduce 49 ** Parsing conflict ** - BITWISE_AND shift 24 - BITWISE_AND reduce 49 ** Parsing conflict ** - {default} reduce 49 - -State 75: - (17) stat ::= functioncall * - (62) prefixexp ::= functioncall * - - LEFT_PARANTHESIS reduce 62 - COLON reduce 62 - DOT reduce 62 - STRING reduce 62 - LEFT_BRACKET reduce 62 - LEFT_BRACE reduce 62 - {default} reduce 17 - -State 76: - exp ::= exp * OR exp - exp ::= exp * AND exp - exp ::= exp * LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= exp * DOT_DOT exp - exp ::= exp * BITWISE_OR exp - exp ::= exp * BITWISE_AND exp - exp ::= exp * PLUS|MINUS exp - (53) exp ::= exp PLUS|MINUS exp * - exp ::= exp * MULTIPLY|DIVIDE|MODULO exp - exp ::= exp * RAISE exp - - MULTIPLY shift 22 - DIVIDE shift 22 - MODULO shift 22 - RAISE shift 21 - BITWISE_OR shift 25 - BITWISE_OR reduce 53 ** Parsing conflict ** - BITWISE_AND shift 24 - BITWISE_AND reduce 53 ** Parsing conflict ** - {default} reduce 53 - -State 77: - (28) binding ::= LOCAL namelist * - binding ::= LOCAL namelist * EQUAL explist1 - binding ::= LOCAL namelist * LESS CONST GREATER EQUAL explist1 - namelist ::= namelist * COMMA NAME - - EQUAL shift 7 - LESS shift 94 - COMMA shift 97 - {default} reduce 28 - -State 78: - tableconstructor ::= LEFT_BRACE fieldlist * RIGHT_BRACE - tableconstructor ::= LEFT_BRACE fieldlist * COMMA|SEMICOLON RIGHT_BRACE - fieldlist ::= fieldlist * COMMA|SEMICOLON field - - SEMICOLON shift 4 - COMMA shift 4 - RIGHT_BRACE shift 142 - -State 79: - exp ::= exp * OR exp - exp ::= exp * AND exp - exp ::= exp * LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= exp * DOT_DOT exp - exp ::= exp * BITWISE_OR exp - exp ::= exp * BITWISE_AND exp - exp ::= exp * PLUS|MINUS exp - exp ::= exp * MULTIPLY|DIVIDE|MODULO exp - exp ::= exp * RAISE exp - (55) exp ::= exp RAISE exp * - - RAISE shift 21 - BITWISE_OR shift 25 - BITWISE_OR reduce 55 ** Parsing conflict ** - BITWISE_AND shift 24 - BITWISE_AND reduce 55 ** Parsing conflict ** - {default} reduce 55 - -State 80: - exp ::= exp * OR exp - exp ::= exp * AND exp - exp ::= exp * LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= exp * DOT_DOT exp - exp ::= exp * BITWISE_OR exp - exp ::= exp * BITWISE_AND exp - exp ::= exp * PLUS|MINUS exp - exp ::= exp * MULTIPLY|DIVIDE|MODULO exp - (54) exp ::= exp MULTIPLY|DIVIDE|MODULO exp * - exp ::= exp * RAISE exp - - RAISE shift 21 - BITWISE_OR shift 25 - BITWISE_OR reduce 54 ** Parsing conflict ** - BITWISE_AND shift 24 - BITWISE_AND reduce 54 ** Parsing conflict ** - {default} reduce 54 - -State 81: - (46) exp ::= NOT|HASH|MINUS exp * - exp ::= exp * OR exp - exp ::= exp * AND exp - exp ::= exp * LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|EQUAL_EQUAL|NOT_EQUAL exp - exp ::= exp * DOT_DOT exp - exp ::= exp * BITWISE_OR exp - exp ::= exp * BITWISE_AND exp - exp ::= exp * PLUS|MINUS exp - exp ::= exp * MULTIPLY|DIVIDE|MODULO exp - exp ::= exp * RAISE exp - - RAISE shift 21 - BITWISE_OR shift 25 - BITWISE_OR reduce 46 ** Parsing conflict ** - BITWISE_AND shift 24 - BITWISE_AND reduce 46 ** Parsing conflict ** - {default} reduce 46 - -State 82: - (56) setlist ::= var * - (61) prefixexp ::= var * - - EQUAL reduce 56 - COMMA reduce 56 - {default} reduce 61 - -State 83: - repetition ::= FOR namelist * IN explist1 - namelist ::= namelist * COMMA NAME - - IN shift 9 - COMMA shift 97 - -State 84: - (57) setlist ::= setlist COMMA var * - (61) prefixexp ::= var * - - EQUAL reduce 57 - COMMA reduce 57 - {default} reduce 61 - -State 85: - stat ::= setlist * EQUAL explist1 - setlist ::= setlist * COMMA var - - EQUAL shift 11 - COMMA shift 33 - -State 86: - (32) funcname ::= dottedname * - funcname ::= dottedname * COLON NAME - dottedname ::= dottedname * DOT NAME - - COLON shift 102 - DOT shift 101 - {default} reduce 32 - -State 87: - (20) conds ::= condlist * - conds ::= condlist * ELSE block - condlist ::= condlist * ELSEIF cond - - ELSE shift 44 - ELSEIF shift 12 - {default} reduce 20 - -State 88: - explist1 ::= explist1 * COMMA exp - args ::= LEFT_PARANTHESIS explist1 * RIGHT_PARANTHESIS - - COMMA shift 16 - RIGHT_PARANTHESIS shift 134 - -State 89: - namelist ::= namelist COMMA * NAME - parlist ::= namelist COMMA * DOT_DOT_DOT - - NAME shift 147 - DOT_DOT_DOT shift 146 - -State 90: - binding ::= LOCAL FUNCTION * NAME funcbody - - NAME shift 39 - -State 91: - (30) binding ::= LOCAL namelist LESS CONST GREATER EQUAL explist1 * - explist1 ::= explist1 * COMMA exp - - COMMA shift 16 - {default} reduce 30 - -State 92: - binding ::= LOCAL namelist LESS CONST GREATER * EQUAL explist1 - - EQUAL shift 6 - -State 93: - binding ::= LOCAL namelist LESS CONST * GREATER EQUAL explist1 - - GREATER shift 92 - -State 94: - binding ::= LOCAL namelist LESS * CONST GREATER EQUAL explist1 - - CONST shift 93 - -State 95: - (29) binding ::= LOCAL namelist EQUAL explist1 * - explist1 ::= explist1 * COMMA exp - - COMMA shift 16 - {default} reduce 29 - -State 96: - (27) laststat ::= RETURN explist1 * - explist1 ::= explist1 * COMMA exp - - COMMA shift 16 - {default} reduce 27 - -State 97: - namelist ::= namelist COMMA * NAME - - NAME shift 147 - -State 98: - (19) repetition ::= FOR namelist IN explist1 * - explist1 ::= explist1 * COMMA exp - - COMMA shift 16 - {default} reduce 19 - -State 99: - repetition ::= FOR NAME * EQUAL explist23 - (36) namelist ::= NAME * - - EQUAL shift 10 - {default} reduce 36 - -State 100: - (16) stat ::= setlist EQUAL explist1 * - explist1 ::= explist1 * COMMA exp - - COMMA shift 16 - {default} reduce 16 - -State 101: - dottedname ::= dottedname DOT * NAME - - NAME shift 121 - -State 102: - funcname ::= dottedname COLON * NAME - - NAME shift 122 - -State 103: - stat ::= IF conds * END - - END shift 128 - -State 104: - ublock ::= block * UNTIL exp - - UNTIL shift 15 - -State 105: - stat ::= repetition DO block * END - - END shift 130 - -State 106: - stat ::= repetition * DO block END - - DO shift 45 - -State 107: - functioncall ::= prefixexp COLON * NAME args - - NAME shift 37 - -State 108: - var ::= prefixexp DOT * NAME - - NAME shift 137 - -State 109: - field ::= LEFT_BRACKET exp RIGHT_BRACKET * EQUAL exp - - EQUAL shift 17 - -State 110: - (58) var ::= NAME * - field ::= NAME * EQUAL exp - - EQUAL shift 19 - {default} reduce 58 - -State 111: - params ::= LEFT_PARANTHESIS parlist * RIGHT_PARANTHESIS - - RIGHT_PARANTHESIS shift 145 - -State 112: - namelist ::= namelist * COMMA NAME - (74) parlist ::= namelist * - parlist ::= namelist * COMMA DOT_DOT_DOT - - COMMA shift 89 - {default} reduce 74 - -State 113: - funcbody ::= params block * END - - END shift 149 - -State 114: - stat ::= WHILE exp DO block * END - - END shift 158 - -State 115: - stat ::= DO block * END - - END shift 159 - -State 116: - (0) chunk ::= block * - - $ reduce 0 - -State 117: - (31) binding ::= LOCAL FUNCTION NAME funcbody * - - {default} reduce 31 - -State 118: - (25) laststat ::= BREAK * - - {default} reduce 25 - -State 119: - (18) repetition ::= FOR NAME EQUAL explist23 * - - {default} reduce 18 - -State 120: - (34) dottedname ::= NAME * - - {default} reduce 34 - -State 121: - (35) dottedname ::= dottedname DOT NAME * - - {default} reduce 35 - -State 122: - (33) funcname ::= dottedname COLON NAME * - - {default} reduce 33 - -State 123: - (15) stat ::= FUNCTION funcname funcbody * - - {default} reduce 15 - -State 124: - (22) condlist ::= cond * - - {default} reduce 22 - -State 125: - (24) cond ::= exp THEN block * - - {default} reduce 24 - -State 126: - (23) condlist ::= condlist ELSEIF cond * - - {default} reduce 23 - -State 127: - (21) conds ::= condlist ELSE block * - - {default} reduce 21 - -State 128: - (14) stat ::= IF conds END * - - {default} reduce 14 - -State 129: - (13) stat ::= REPEAT ublock * - - {default} reduce 13 - -State 130: - (12) stat ::= repetition DO block END * - - {default} reduce 12 - -State 131: - (69) args ::= STRING * - - {default} reduce 69 - -State 132: - (68) args ::= tableconstructor * - - {default} reduce 68 - -State 133: - (66) args ::= LEFT_PARANTHESIS RIGHT_PARANTHESIS * - - {default} reduce 66 - -State 134: - (67) args ::= LEFT_PARANTHESIS explist1 RIGHT_PARANTHESIS * - - {default} reduce 67 - -State 135: - (65) functioncall ::= prefixexp COLON NAME args * - - {default} reduce 65 - -State 136: - (64) functioncall ::= prefixexp args * - - {default} reduce 64 - -State 137: - (60) var ::= prefixexp DOT NAME * - - {default} reduce 60 - -State 138: - (59) var ::= prefixexp LEFT_BRACKET exp RIGHT_BRACKET * - - {default} reduce 59 - -State 139: - (80) fieldlist ::= field * - - {default} reduce 80 - -State 140: - (81) fieldlist ::= fieldlist COMMA|SEMICOLON field * - - {default} reduce 81 - -State 141: - (79) tableconstructor ::= LEFT_BRACE fieldlist COMMA|SEMICOLON RIGHT_BRACE * - - {default} reduce 79 - -State 142: - (78) tableconstructor ::= LEFT_BRACE fieldlist RIGHT_BRACE * - - {default} reduce 78 - -State 143: - (77) tableconstructor ::= LEFT_BRACE RIGHT_BRACE * - - {default} reduce 77 - -State 144: - (75) parlist ::= DOT_DOT_DOT * - - {default} reduce 75 - -State 145: - (72) params ::= LEFT_PARANTHESIS parlist RIGHT_PARANTHESIS * - - {default} reduce 72 - -State 146: - (76) parlist ::= namelist COMMA DOT_DOT_DOT * - - {default} reduce 76 - -State 147: - (37) namelist ::= namelist COMMA NAME * - - {default} reduce 37 - -State 148: - (36) namelist ::= NAME * - - {default} reduce 36 - -State 149: - (71) funcbody ::= params block END * - - {default} reduce 71 - -State 150: - (70) function ::= FUNCTION funcbody * - - {default} reduce 70 - -State 151: - (63) prefixexp ::= OPEN exp RIGHT_PARANTHESIS * - - {default} reduce 63 - -State 152: - (62) prefixexp ::= functioncall * - - {default} reduce 62 - -State 153: - (61) prefixexp ::= var * - - {default} reduce 61 - -State 154: - (58) var ::= NAME * - - {default} reduce 58 - -State 155: - (45) exp ::= tableconstructor * - - {default} reduce 45 - -State 156: - (43) exp ::= function * - - {default} reduce 43 - -State 157: - (42) exp ::= NIL|TRUE|FALSE|NUMBER|STRING|DOT_DOT_DOT * - - {default} reduce 42 - -State 158: - (11) stat ::= WHILE exp DO block END * - - {default} reduce 11 - -State 159: - (10) stat ::= DO block END * - - {default} reduce 10 - -State 160: - (9) statlist ::= statlist stat semi * - - {default} reduce 9 - -State 161: - (7) scope ::= scope statlist binding semi * - - {default} reduce 7 - -State 162: - (4) block ::= scope statlist laststat semi * - - {default} reduce 4 - -State 163: - (1) semi ::= SEMICOLON * - - {default} reduce 1 - ----------------------------------------------------- -Symbols: - 0: $: - 1: OPEN - 2: LEFT_PARANTHESIS - 3: SEMICOLON - 4: UNTIL - 5: DO - 6: END - 7: WHILE - 8: REPEAT - 9: IF - 10: FUNCTION - 11: EQUAL - 12: FOR - 13: NAME - 14: IN - 15: ELSE - 16: ELSEIF - 17: THEN - 18: BREAK - 19: RETURN - 20: LOCAL - 21: LESS - 22: CONST - 23: GREATER - 24: COLON - 25: DOT - 26: COMMA - 27: OR - 28: AND - 29: LESS_EQUAL - 30: GREATER_EQUAL - 31: EQUAL_EQUAL - 32: NOT_EQUAL - 33: DOT_DOT - 34: PLUS - 35: MINUS - 36: MULTIPLY - 37: DIVIDE - 38: MODULO - 39: NOT - 40: HASH - 41: RAISE - 42: NIL - 43: TRUE - 44: FALSE - 45: NUMBER - 46: STRING - 47: DOT_DOT_DOT - 48: BITWISE_OR - 49: BITWISE_AND - 50: LEFT_BRACKET - 51: RIGHT_BRACKET - 52: RIGHT_PARANTHESIS - 53: LEFT_BRACE - 54: RIGHT_BRACE - 55: error: - 56: chunk: OPEN DO WHILE REPEAT IF FUNCTION FOR NAME BREAK RETURN LOCAL - 57: block: OPEN DO WHILE REPEAT IF FUNCTION FOR NAME BREAK RETURN LOCAL - 58: semi: SEMICOLON - 59: scope: OPEN DO WHILE REPEAT IF FUNCTION FOR NAME LOCAL - 60: statlist: OPEN DO WHILE REPEAT IF FUNCTION FOR NAME - 61: laststat: BREAK RETURN - 62: ublock: OPEN UNTIL DO WHILE REPEAT IF FUNCTION FOR NAME BREAK RETURN LOCAL - 63: exp: OPEN FUNCTION NAME MINUS NOT HASH NIL TRUE FALSE NUMBER STRING DOT_DOT_DOT LEFT_BRACE - 64: binding: LOCAL - 65: stat: OPEN DO WHILE REPEAT IF FUNCTION FOR NAME - 66: repetition: FOR - 67: conds: OPEN FUNCTION NAME MINUS NOT HASH NIL TRUE FALSE NUMBER STRING DOT_DOT_DOT LEFT_BRACE - 68: funcname: NAME - 69: funcbody: LEFT_PARANTHESIS - 70: setlist: OPEN NAME - 71: explist1: OPEN FUNCTION NAME MINUS NOT HASH NIL TRUE FALSE NUMBER STRING DOT_DOT_DOT LEFT_BRACE - 72: functioncall: OPEN NAME - 73: explist23: OPEN FUNCTION NAME MINUS NOT HASH NIL TRUE FALSE NUMBER STRING DOT_DOT_DOT LEFT_BRACE - 74: namelist: NAME - 75: condlist: OPEN FUNCTION NAME MINUS NOT HASH NIL TRUE FALSE NUMBER STRING DOT_DOT_DOT LEFT_BRACE - 76: cond: OPEN FUNCTION NAME MINUS NOT HASH NIL TRUE FALSE NUMBER STRING DOT_DOT_DOT LEFT_BRACE - 77: dottedname: NAME - 78: function: FUNCTION - 79: prefixexp: OPEN NAME - 80: tableconstructor: LEFT_BRACE - 81: var: OPEN NAME - 82: args: LEFT_PARANTHESIS STRING LEFT_BRACE - 83: params: LEFT_PARANTHESIS - 84: parlist: NAME DOT_DOT_DOT - 85: fieldlist: OPEN FUNCTION NAME MINUS NOT HASH NIL TRUE FALSE NUMBER STRING DOT_DOT_DOT LEFT_BRACKET LEFT_BRACE - 86: field: OPEN FUNCTION NAME MINUS NOT HASH NIL TRUE FALSE NUMBER STRING DOT_DOT_DOT LEFT_BRACKET LEFT_BRACE diff --git a/code/Script/Editor/LuaGrammar.y b/code/Script/Editor/LuaGrammar.y index f970d1713e..9cc3ef9b15 100644 --- a/code/Script/Editor/LuaGrammar.y +++ b/code/Script/Editor/LuaGrammar.y @@ -25,12 +25,12 @@ LuaGrammarToken* copy(LuaGrammarToken* A) if (A) return new LuaGrammarToken(*A); else - return 0; + return nullptr; } bool is_node(const LuaGrammarToken* A) { - return A != 0 && A->node != 0; + return A != nullptr && A->node != nullptr; } LuaGrammarToken* merge(LuaGrammarToken* A, LuaGrammarToken* B) diff --git a/scripts/generate-parser.bat b/scripts/generate-parser.bat new file mode 100644 index 0000000000..b2a1693021 --- /dev/null +++ b/scripts/generate-parser.bat @@ -0,0 +1,10 @@ +@echo off + +call %~dp0config.bat + +:: Generate parser C file. +%TRAKTOR_HOME%/bin/win64/lemon -T%TRAKTOR_HOME%/3rdp/lemon/lempar.c -l -q %TRAKTOR_HOME%/code/Script/Editor/LuaGrammar.y + +:: Replace output with CPP file. +del %TRAKTOR_HOME%\code\Script\Editor\LuaGrammar.cpp +rename %TRAKTOR_HOME%\code\Script\Editor\LuaGrammar.c LuaGrammar.cpp \ No newline at end of file