From 8ced7a8c850ac1a5012d3316ab36cfecc9ad7e28 Mon Sep 17 00:00:00 2001 From: xensik Date: Mon, 13 Sep 2021 19:20:36 +0200 Subject: [PATCH] support html colors, hex/octal/bin integers --- gen/h1/lexer.lpp | 16 +- gen/h1/parser.ypp | 32 +- gen/h2/lexer.lpp | 16 +- gen/h2/parser.ypp | 32 +- gen/iw5/lexer.lpp | 16 +- gen/iw5/parser.ypp | 32 +- gen/iw6/lexer.lpp | 16 +- gen/iw6/parser.ypp | 32 +- gen/iw7/lexer.lpp | 16 +- gen/iw7/parser.ypp | 32 +- gen/s1/lexer.lpp | 16 +- gen/s1/parser.ypp | 32 +- gen/s2/lexer.lpp | 16 +- gen/s2/parser.ypp | 32 +- src/h1/xsk/compiler.cpp | 25 + src/h1/xsk/compiler.hpp | 1 + src/h1/xsk/lexer.cpp | 760 +++++----- src/h1/xsk/lexer.hpp | 2 +- src/h1/xsk/parser.cpp | 2412 +++++++++++++++---------------- src/h1/xsk/parser.hpp | 462 +++--- src/h2/xsk/compiler.cpp | 25 + src/h2/xsk/compiler.hpp | 1 + src/h2/xsk/lexer.cpp | 760 +++++----- src/h2/xsk/lexer.hpp | 2 +- src/h2/xsk/parser.cpp | 2412 +++++++++++++++---------------- src/h2/xsk/parser.hpp | 462 +++--- src/iw5/xsk/compiler.cpp | 25 + src/iw5/xsk/compiler.hpp | 1 + src/iw5/xsk/lexer.cpp | 753 +++++----- src/iw5/xsk/lexer.hpp | 2 +- src/iw5/xsk/parser.cpp | 2417 ++++++++++++++++---------------- src/iw5/xsk/parser.hpp | 458 +++--- src/iw6/xsk/compiler.cpp | 25 + src/iw6/xsk/compiler.hpp | 1 + src/iw6/xsk/lexer.cpp | 753 +++++----- src/iw6/xsk/lexer.hpp | 2 +- src/iw6/xsk/parser.cpp | 2396 +++++++++++++++---------------- src/iw6/xsk/parser.hpp | 458 +++--- src/iw7/xsk/compiler.cpp | 25 + src/iw7/xsk/compiler.hpp | 1 + src/iw7/xsk/lexer.cpp | 753 +++++----- src/iw7/xsk/lexer.hpp | 2 +- src/iw7/xsk/parser.cpp | 2396 +++++++++++++++---------------- src/iw7/xsk/parser.hpp | 458 +++--- src/s1/xsk/compiler.cpp | 25 + src/s1/xsk/compiler.hpp | 1 + src/s1/xsk/lexer.cpp | 760 +++++----- src/s1/xsk/lexer.hpp | 2 +- src/s1/xsk/parser.cpp | 2412 +++++++++++++++---------------- src/s1/xsk/parser.hpp | 462 +++--- src/s2/xsk/compiler.cpp | 25 + src/s2/xsk/compiler.hpp | 1 + src/s2/xsk/lexer.cpp | 760 +++++----- src/s2/xsk/lexer.hpp | 2 +- src/s2/xsk/parser.cpp | 2412 +++++++++++++++---------------- src/s2/xsk/parser.hpp | 462 +++--- src/utils/xsk/gsc/nodetree.hpp | 25 + src/utils/xsk/string.cpp | 15 + src/utils/xsk/string.hpp | 3 + src/utils/xsk/utils.cpp | 2 + 60 files changed, 13868 insertions(+), 12087 deletions(-) diff --git a/gen/h1/lexer.lpp b/gen/h1/lexer.lpp index 000bd49c..01239a38 100644 --- a/gen/h1/lexer.lpp +++ b/gen/h1/lexer.lpp @@ -26,8 +26,12 @@ using namespace xsk::gsc; RGX_FILE ([_A-Za-z0-9]+\\)+[_A-Za-z0-9]+ RGX_NAME [_A-Za-z][_A-Za-z0-9]* RGX_STRING \"(?:\\.|[^\"])*?\"|\'(?:\\.|[^\'])*?\' -RGX_FLOAT [0-9]+\.(?:[0-9]*)?f?|\.[0-9]+f? -RGX_INTEGER [0-9]+ +RGX_COLOR #([0-9a-fA-F]{6}|[0-9a-fA-F]{3}) +RGX_FLT_DEC [0-9]+\.(?:[0-9]*)?f?|\.[0-9]+f? +RGX_INT_OCT 0[1-7][0-7]* +RGX_INT_BIN 0[bB][01]+ +RGX_INT_HEX 0[xX][0-9a-fA-F]+ +RGX_INT_DEC [0-9]+ RGX_DEFAULT (.|\n) %x COMMENT_BLOCK_STATE @@ -141,8 +145,12 @@ RGX_DEFAULT (.|\n) {RGX_NAME} { return h1::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); } \&{RGX_STRING} { return h1::parser::make_ISTRING(std::string(yytext).substr(1), loc); } {RGX_STRING} { return h1::parser::make_STRING(std::string(yytext), loc); } -{RGX_FLOAT} { return h1::parser::make_FLOAT(std::string(yytext), loc); } -{RGX_INTEGER} { return h1::parser::make_INTEGER(std::string(yytext), loc); } +{RGX_COLOR} { return h1::parser::make_COLOR(std::string(yytext).substr(1), loc); } +{RGX_FLT_DEC} { return h1::parser::make_FLOAT(std::string(yytext), loc); } +{RGX_INT_OCT} { return h1::parser::make_INT_OCT(utils::string::oct_to_dec(yytext), loc); } +{RGX_INT_BIN} { return h1::parser::make_INT_BIN(utils::string::bin_to_dec(yytext), loc); } +{RGX_INT_HEX} { return h1::parser::make_INT_HEX(utils::string::hex_to_dec(yytext), loc); } +{RGX_INT_DEC} { return h1::parser::make_INT_DEC(std::string(yytext), loc); } <> { return h1::parser::make_H1EOF(loc); } <*>{RGX_DEFAULT} { throw h1::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); } diff --git a/gen/h1/parser.ypp b/gen/h1/parser.ypp index e35ee032..477d1c18 100644 --- a/gen/h1/parser.ypp +++ b/gen/h1/parser.ypp @@ -131,8 +131,12 @@ xsk::gsc::h1::parser::symbol_type H1lex(yyscan_t yyscanner, xsk::gsc::location& %token NAME "identifier" %token STRING "string literal" %token ISTRING "localized string" +%token COLOR "color" %token FLOAT "float" -%token INTEGER "int" +%token INT_DEC "int" +%token INT_OCT "octal int" +%token INT_BIN "binary int" +%token INT_HEX "hexadecimal int" %type program %type include @@ -202,9 +206,8 @@ xsk::gsc::h1::parser::symbol_type H1lex(yyscan_t yyscanner, xsk::gsc::location& %type file %type istring %type string +%type color %type vector -%type neg_float -%type neg_integer %type float %type integer %type false @@ -419,8 +422,6 @@ stmt_switch stmt_case : CASE integer COLON { $$ = std::make_unique(@$, expr_ptr(std::move($2)), std::make_unique(@$)); } - | CASE neg_integer COLON - { $$ = std::make_unique(@$, expr_ptr(std::move($2)), std::make_unique(@$)); } | CASE string COLON { $$ = std::make_unique(@$, expr_ptr(std::move($2)), std::make_unique(@$)); } ; @@ -549,9 +550,8 @@ expr_primitive | name { $$.as_node = std::move($1); } | istring { $$.as_node = std::move($1); } | string { $$.as_node = std::move($1); } + | color { $$.as_node = std::move($1); } | vector { $$.as_node = std::move($1); } - | neg_float { $$.as_node = std::move($1); } - | neg_integer { $$.as_node = std::move($1); } | float { $$.as_node = std::move($1); } | integer { $$.as_node = std::move($1); } | false { $$.as_node = std::move($1); } @@ -648,6 +648,19 @@ object | name { $$ = std::move($1); } ; +float + : SUB FLOAT %prec NEG { $$ = std::make_unique(@$, "-" + $2); }; + | FLOAT { $$ = std::make_unique(@$, $1); }; + ; + +integer + : SUB INT_DEC %prec NEG { $$ = std::make_unique(@$, "-" + $2); }; + | INT_DEC { $$ = std::make_unique(@$, $1); }; + | INT_OCT { $$ = std::make_unique(@$, $1); }; + | INT_BIN { $$ = std::make_unique(@$, $1); }; + | INT_HEX { $$ = std::make_unique(@$, $1); }; + ; + thisthread : THISTHREAD { $$ = std::make_unique(@$); }; empty_array : LBRACKET RBRACKET { $$ = std::make_unique(@$); }; undefined : UNDEFINED { $$ = std::make_unique(@$); }; @@ -661,11 +674,8 @@ name : NAME { $$ = std::make_unique(@$, $1); }; istring : ISTRING { $$ = std::make_unique(@$, $1); }; string : STRING { $$ = std::make_unique(@$, $1); }; +color : COLOR { $$ = std::make_unique(@$, $1); }; vector : LPAREN expr COMMA expr COMMA expr RPAREN { $$ = std::make_unique(@$, std::move($2), std::move($4), std::move($6)); }; -neg_float : SUB FLOAT %prec NEG { $$ = std::make_unique(@$, "-" + $2); }; -neg_integer : SUB INTEGER %prec NEG { $$ = std::make_unique(@$, "-" + $2); }; -float : FLOAT { $$ = std::make_unique(@$, $1); }; -integer : INTEGER { $$ = std::make_unique(@$, $1); }; false : FALSE { $$ = std::make_unique(@$); }; true : TRUE { $$ = std::make_unique(@$); }; diff --git a/gen/h2/lexer.lpp b/gen/h2/lexer.lpp index 3a3086d5..ef7ee0d8 100644 --- a/gen/h2/lexer.lpp +++ b/gen/h2/lexer.lpp @@ -26,8 +26,12 @@ using namespace xsk::gsc; RGX_FILE ([_A-Za-z0-9]+\\)+[_A-Za-z0-9]+ RGX_NAME [_A-Za-z][_A-Za-z0-9]* RGX_STRING \"(?:\\.|[^\"])*?\"|\'(?:\\.|[^\'])*?\' -RGX_FLOAT [0-9]+\.(?:[0-9]*)?f?|\.[0-9]+f? -RGX_INTEGER [0-9]+ +RGX_COLOR #([0-9a-fA-F]{6}|[0-9a-fA-F]{3}) +RGX_FLT_DEC [0-9]+\.(?:[0-9]*)?f?|\.[0-9]+f? +RGX_INT_OCT 0[1-7][0-7]* +RGX_INT_BIN 0[bB][01]+ +RGX_INT_HEX 0[xX][0-9a-fA-F]+ +RGX_INT_DEC [0-9]+ RGX_DEFAULT (.|\n) %x COMMENT_BLOCK_STATE @@ -141,8 +145,12 @@ RGX_DEFAULT (.|\n) {RGX_NAME} { return h2::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); } \&{RGX_STRING} { return h2::parser::make_ISTRING(std::string(yytext).substr(1), loc); } {RGX_STRING} { return h2::parser::make_STRING(std::string(yytext), loc); } -{RGX_FLOAT} { return h2::parser::make_FLOAT(std::string(yytext), loc); } -{RGX_INTEGER} { return h2::parser::make_INTEGER(std::string(yytext), loc); } +{RGX_COLOR} { return h2::parser::make_COLOR(std::string(yytext).substr(1), loc); } +{RGX_FLT_DEC} { return h2::parser::make_FLOAT(std::string(yytext), loc); } +{RGX_INT_OCT} { return h2::parser::make_INT_OCT(utils::string::oct_to_dec(yytext), loc); } +{RGX_INT_BIN} { return h2::parser::make_INT_BIN(utils::string::bin_to_dec(yytext), loc); } +{RGX_INT_HEX} { return h2::parser::make_INT_HEX(utils::string::hex_to_dec(yytext), loc); } +{RGX_INT_DEC} { return h2::parser::make_INT_DEC(std::string(yytext), loc); } <> { return h2::parser::make_H2EOF(loc); } <*>{RGX_DEFAULT} { throw h2::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); } diff --git a/gen/h2/parser.ypp b/gen/h2/parser.ypp index fe1cf10f..d89a662b 100644 --- a/gen/h2/parser.ypp +++ b/gen/h2/parser.ypp @@ -131,8 +131,12 @@ xsk::gsc::h2::parser::symbol_type H2lex(yyscan_t yyscanner, xsk::gsc::location& %token NAME "identifier" %token STRING "string literal" %token ISTRING "localized string" +%token COLOR "color" %token FLOAT "float" -%token INTEGER "int" +%token INT_DEC "int" +%token INT_OCT "octal int" +%token INT_BIN "binary int" +%token INT_HEX "hexadecimal int" %type program %type include @@ -202,9 +206,8 @@ xsk::gsc::h2::parser::symbol_type H2lex(yyscan_t yyscanner, xsk::gsc::location& %type file %type istring %type string +%type color %type vector -%type neg_float -%type neg_integer %type float %type integer %type false @@ -419,8 +422,6 @@ stmt_switch stmt_case : CASE integer COLON { $$ = std::make_unique(@$, expr_ptr(std::move($2)), std::make_unique(@$)); } - | CASE neg_integer COLON - { $$ = std::make_unique(@$, expr_ptr(std::move($2)), std::make_unique(@$)); } | CASE string COLON { $$ = std::make_unique(@$, expr_ptr(std::move($2)), std::make_unique(@$)); } ; @@ -549,9 +550,8 @@ expr_primitive | name { $$.as_node = std::move($1); } | istring { $$.as_node = std::move($1); } | string { $$.as_node = std::move($1); } + | color { $$.as_node = std::move($1); } | vector { $$.as_node = std::move($1); } - | neg_float { $$.as_node = std::move($1); } - | neg_integer { $$.as_node = std::move($1); } | float { $$.as_node = std::move($1); } | integer { $$.as_node = std::move($1); } | false { $$.as_node = std::move($1); } @@ -648,6 +648,19 @@ object | name { $$ = std::move($1); } ; +float + : SUB FLOAT %prec NEG { $$ = std::make_unique(@$, "-" + $2); }; + | FLOAT { $$ = std::make_unique(@$, $1); }; + ; + +integer + : SUB INT_DEC %prec NEG { $$ = std::make_unique(@$, "-" + $2); }; + | INT_DEC { $$ = std::make_unique(@$, $1); }; + | INT_OCT { $$ = std::make_unique(@$, $1); }; + | INT_BIN { $$ = std::make_unique(@$, $1); }; + | INT_HEX { $$ = std::make_unique(@$, $1); }; + ; + thisthread : THISTHREAD { $$ = std::make_unique(@$); }; empty_array : LBRACKET RBRACKET { $$ = std::make_unique(@$); }; undefined : UNDEFINED { $$ = std::make_unique(@$); }; @@ -661,11 +674,8 @@ name : NAME { $$ = std::make_unique(@$, $1); }; istring : ISTRING { $$ = std::make_unique(@$, $1); }; string : STRING { $$ = std::make_unique(@$, $1); }; +color : COLOR { $$ = std::make_unique(@$, $1); }; vector : LPAREN expr COMMA expr COMMA expr RPAREN { $$ = std::make_unique(@$, std::move($2), std::move($4), std::move($6)); }; -neg_float : SUB FLOAT %prec NEG { $$ = std::make_unique(@$, "-" + $2); }; -neg_integer : SUB INTEGER %prec NEG { $$ = std::make_unique(@$, "-" + $2); }; -float : FLOAT { $$ = std::make_unique(@$, $1); }; -integer : INTEGER { $$ = std::make_unique(@$, $1); }; false : FALSE { $$ = std::make_unique(@$); }; true : TRUE { $$ = std::make_unique(@$); }; diff --git a/gen/iw5/lexer.lpp b/gen/iw5/lexer.lpp index ed10df1d..e9045797 100644 --- a/gen/iw5/lexer.lpp +++ b/gen/iw5/lexer.lpp @@ -26,8 +26,12 @@ using namespace xsk::gsc; RGX_FILE ([_A-Za-z0-9]+\\)+[_A-Za-z0-9]+ RGX_NAME [_A-Za-z][_A-Za-z0-9]* RGX_STRING \"(?:\\.|[^\"])*?\"|\'(?:\\.|[^\'])*?\' -RGX_FLOAT [0-9]+\.(?:[0-9]*)?f?|\.[0-9]+f? -RGX_INTEGER [0-9]+ +RGX_COLOR #([0-9a-fA-F]{6}|[0-9a-fA-F]{3}) +RGX_FLT_DEC [0-9]+\.(?:[0-9]*)?f?|\.[0-9]+f? +RGX_INT_OCT 0[1-7][0-7]* +RGX_INT_BIN 0[bB][01]+ +RGX_INT_HEX 0[xX][0-9a-fA-F]+ +RGX_INT_DEC [0-9]+ RGX_DEFAULT (.|\n) %x COMMENT_BLOCK_STATE @@ -140,8 +144,12 @@ RGX_DEFAULT (.|\n) {RGX_NAME} { return iw5::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); } \&{RGX_STRING} { return iw5::parser::make_ISTRING(std::string(yytext).substr(1), loc); } {RGX_STRING} { return iw5::parser::make_STRING(std::string(yytext), loc); } -{RGX_FLOAT} { return iw5::parser::make_FLOAT(std::string(yytext), loc); } -{RGX_INTEGER} { return iw5::parser::make_INTEGER(std::string(yytext), loc); } +{RGX_COLOR} { return iw5::parser::make_COLOR(std::string(yytext).substr(1), loc); } +{RGX_FLT_DEC} { return iw5::parser::make_FLOAT(std::string(yytext), loc); } +{RGX_INT_OCT} { return iw5::parser::make_INT_OCT(utils::string::oct_to_dec(yytext), loc); } +{RGX_INT_BIN} { return iw5::parser::make_INT_BIN(utils::string::bin_to_dec(yytext), loc); } +{RGX_INT_HEX} { return iw5::parser::make_INT_HEX(utils::string::hex_to_dec(yytext), loc); } +{RGX_INT_DEC} { return iw5::parser::make_INT_DEC(std::string(yytext), loc); } <> { return iw5::parser::make_IW5EOF(loc); } <*>{RGX_DEFAULT} { throw iw5::parser::syntax_error(loc, "bad token: '" + std::string(yytext) + "'"); } diff --git a/gen/iw5/parser.ypp b/gen/iw5/parser.ypp index 046cffe5..6e42c3c7 100644 --- a/gen/iw5/parser.ypp +++ b/gen/iw5/parser.ypp @@ -130,8 +130,12 @@ xsk::gsc::iw5::parser::symbol_type IW5lex(yyscan_t yyscanner, xsk::gsc::location %token NAME "identifier" %token STRING "string literal" %token ISTRING "localized string" +%token COLOR "color" %token FLOAT "float" -%token INTEGER "int" +%token INT_DEC "int" +%token INT_OCT "octal int" +%token INT_BIN "binary int" +%token INT_HEX "hexadecimal int" %type program %type include @@ -200,9 +204,8 @@ xsk::gsc::iw5::parser::symbol_type IW5lex(yyscan_t yyscanner, xsk::gsc::location %type file %type istring %type string +%type color %type vector -%type neg_float -%type neg_integer %type float %type integer %type false @@ -409,8 +412,6 @@ stmt_switch stmt_case : CASE integer COLON { $$ = std::make_unique(@$, expr_ptr(std::move($2)), std::make_unique(@$)); } - | CASE neg_integer COLON - { $$ = std::make_unique(@$, expr_ptr(std::move($2)), std::make_unique(@$)); } | CASE string COLON { $$ = std::make_unique(@$, expr_ptr(std::move($2)), std::make_unique(@$)); } ; @@ -539,9 +540,8 @@ expr_primitive | name { $$.as_node = std::move($1); } | istring { $$.as_node = std::move($1); } | string { $$.as_node = std::move($1); } + | color { $$.as_node = std::move($1); } | vector { $$.as_node = std::move($1); } - | neg_float { $$.as_node = std::move($1); } - | neg_integer { $$.as_node = std::move($1); } | float { $$.as_node = std::move($1); } | integer { $$.as_node = std::move($1); } | false { $$.as_node = std::move($1); } @@ -638,6 +638,19 @@ object | name { $$ = std::move($1); } ; +float + : SUB FLOAT %prec NEG { $$ = std::make_unique(@$, "-" + $2); }; + | FLOAT { $$ = std::make_unique(@$, $1); }; + ; + +integer + : SUB INT_DEC %prec NEG { $$ = std::make_unique(@$, "-" + $2); }; + | INT_DEC { $$ = std::make_unique(@$, $1); }; + | INT_OCT { $$ = std::make_unique(@$, $1); }; + | INT_BIN { $$ = std::make_unique(@$, $1); }; + | INT_HEX { $$ = std::make_unique(@$, $1); }; + ; + thisthread : THISTHREAD { $$ = std::make_unique(@$); }; empty_array : LBRACKET RBRACKET { $$ = std::make_unique(@$); }; undefined : UNDEFINED { $$ = std::make_unique(@$); }; @@ -651,11 +664,8 @@ name : NAME { $$ = std::make_unique(@$, $1); }; istring : ISTRING { $$ = std::make_unique(@$, $1); }; string : STRING { $$ = std::make_unique(@$, $1); }; +color : COLOR { $$ = std::make_unique(@$, $1); }; vector : LPAREN expr COMMA expr COMMA expr RPAREN { $$ = std::make_unique(@$, std::move($2), std::move($4), std::move($6)); }; -neg_float : SUB FLOAT %prec NEG { $$ = std::make_unique(@$, "-" + $2); }; -neg_integer : SUB INTEGER %prec NEG { $$ = std::make_unique(@$, "-" + $2); }; -float : FLOAT { $$ = std::make_unique(@$, $1); }; -integer : INTEGER { $$ = std::make_unique(@$, $1); }; false : FALSE { $$ = std::make_unique(@$); }; true : TRUE { $$ = std::make_unique(@$); }; diff --git a/gen/iw6/lexer.lpp b/gen/iw6/lexer.lpp index 0925726a..f6e5c9b5 100644 --- a/gen/iw6/lexer.lpp +++ b/gen/iw6/lexer.lpp @@ -26,8 +26,12 @@ using namespace xsk::gsc; RGX_FILE ([_A-Za-z0-9]+\\)+[_A-Za-z0-9]+ RGX_NAME [_A-Za-z][_A-Za-z0-9]* RGX_STRING \"(?:\\.|[^\"])*?\"|\'(?:\\.|[^\'])*?\' -RGX_FLOAT [0-9]+\.(?:[0-9]*)?f?|\.[0-9]+f? -RGX_INTEGER [0-9]+ +RGX_COLOR #([0-9a-fA-F]{6}|[0-9a-fA-F]{3}) +RGX_FLT_DEC [0-9]+\.(?:[0-9]*)?f?|\.[0-9]+f? +RGX_INT_OCT 0[1-7][0-7]* +RGX_INT_BIN 0[bB][01]+ +RGX_INT_HEX 0[xX][0-9a-fA-F]+ +RGX_INT_DEC [0-9]+ RGX_DEFAULT (.|\n) %x COMMENT_BLOCK_STATE @@ -140,8 +144,12 @@ RGX_DEFAULT (.|\n) {RGX_NAME} { return iw6::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); } \&{RGX_STRING} { return iw6::parser::make_ISTRING(std::string(yytext).substr(1), loc); } {RGX_STRING} { return iw6::parser::make_STRING(std::string(yytext), loc); } -{RGX_FLOAT} { return iw6::parser::make_FLOAT(std::string(yytext), loc); } -{RGX_INTEGER} { return iw6::parser::make_INTEGER(std::string(yytext), loc); } +{RGX_COLOR} { return iw6::parser::make_COLOR(std::string(yytext).substr(1), loc); } +{RGX_FLT_DEC} { return iw6::parser::make_FLOAT(std::string(yytext), loc); } +{RGX_INT_OCT} { return iw6::parser::make_INT_OCT(utils::string::oct_to_dec(yytext), loc); } +{RGX_INT_BIN} { return iw6::parser::make_INT_BIN(utils::string::bin_to_dec(yytext), loc); } +{RGX_INT_HEX} { return iw6::parser::make_INT_HEX(utils::string::hex_to_dec(yytext), loc); } +{RGX_INT_DEC} { return iw6::parser::make_INT_DEC(std::string(yytext), loc); } <> { return iw6::parser::make_IW6EOF(loc); } <*>{RGX_DEFAULT} { throw iw6::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); } diff --git a/gen/iw6/parser.ypp b/gen/iw6/parser.ypp index 2828bd5c..a33437a7 100644 --- a/gen/iw6/parser.ypp +++ b/gen/iw6/parser.ypp @@ -130,8 +130,12 @@ xsk::gsc::iw6::parser::symbol_type IW6lex(yyscan_t yyscanner, xsk::gsc::location %token NAME "identifier" %token STRING "string literal" %token ISTRING "localized string" +%token COLOR "color" %token FLOAT "float" -%token INTEGER "int" +%token INT_DEC "int" +%token INT_OCT "octal int" +%token INT_BIN "binary int" +%token INT_HEX "hexadecimal int" %type program %type include @@ -200,9 +204,8 @@ xsk::gsc::iw6::parser::symbol_type IW6lex(yyscan_t yyscanner, xsk::gsc::location %type file %type istring %type string +%type color %type vector -%type neg_float -%type neg_integer %type float %type integer %type false @@ -409,8 +412,6 @@ stmt_switch stmt_case : CASE integer COLON { $$ = std::make_unique(@$, expr_ptr(std::move($2)), std::make_unique(@$)); } - | CASE neg_integer COLON - { $$ = std::make_unique(@$, expr_ptr(std::move($2)), std::make_unique(@$)); } | CASE string COLON { $$ = std::make_unique(@$, expr_ptr(std::move($2)), std::make_unique(@$)); } ; @@ -539,9 +540,8 @@ expr_primitive | name { $$.as_node = std::move($1); } | istring { $$.as_node = std::move($1); } | string { $$.as_node = std::move($1); } + | color { $$.as_node = std::move($1); } | vector { $$.as_node = std::move($1); } - | neg_float { $$.as_node = std::move($1); } - | neg_integer { $$.as_node = std::move($1); } | float { $$.as_node = std::move($1); } | integer { $$.as_node = std::move($1); } | false { $$.as_node = std::move($1); } @@ -638,6 +638,19 @@ object | name { $$ = std::move($1); } ; +float + : SUB FLOAT %prec NEG { $$ = std::make_unique(@$, "-" + $2); }; + | FLOAT { $$ = std::make_unique(@$, $1); }; + ; + +integer + : SUB INT_DEC %prec NEG { $$ = std::make_unique(@$, "-" + $2); }; + | INT_DEC { $$ = std::make_unique(@$, $1); }; + | INT_OCT { $$ = std::make_unique(@$, $1); }; + | INT_BIN { $$ = std::make_unique(@$, $1); }; + | INT_HEX { $$ = std::make_unique(@$, $1); }; + ; + thisthread : THISTHREAD { $$ = std::make_unique(@$); }; empty_array : LBRACKET RBRACKET { $$ = std::make_unique(@$); }; undefined : UNDEFINED { $$ = std::make_unique(@$); }; @@ -651,11 +664,8 @@ name : NAME { $$ = std::make_unique(@$, $1); }; istring : ISTRING { $$ = std::make_unique(@$, $1); }; string : STRING { $$ = std::make_unique(@$, $1); }; +color : COLOR { $$ = std::make_unique(@$, $1); }; vector : LPAREN expr COMMA expr COMMA expr RPAREN { $$ = std::make_unique(@$, std::move($2), std::move($4), std::move($6)); }; -neg_float : SUB FLOAT %prec NEG { $$ = std::make_unique(@$, "-" + $2); }; -neg_integer : SUB INTEGER %prec NEG { $$ = std::make_unique(@$, "-" + $2); }; -float : FLOAT { $$ = std::make_unique(@$, $1); }; -integer : INTEGER { $$ = std::make_unique(@$, $1); }; false : FALSE { $$ = std::make_unique(@$); }; true : TRUE { $$ = std::make_unique(@$); }; diff --git a/gen/iw7/lexer.lpp b/gen/iw7/lexer.lpp index c89316f5..ddc49353 100644 --- a/gen/iw7/lexer.lpp +++ b/gen/iw7/lexer.lpp @@ -26,8 +26,12 @@ using namespace xsk::gsc; RGX_FILE ([_A-Za-z0-9]+\\)+[_A-Za-z0-9]+ RGX_NAME [_A-Za-z][_A-Za-z0-9]* RGX_STRING \"(?:\\.|[^\"])*?\"|\'(?:\\.|[^\'])*?\' -RGX_FLOAT [0-9]+\.(?:[0-9]*)?f?|\.[0-9]+f? -RGX_INTEGER [0-9]+ +RGX_COLOR #([0-9a-fA-F]{6}|[0-9a-fA-F]{3}) +RGX_FLT_DEC [0-9]+\.(?:[0-9]*)?f?|\.[0-9]+f? +RGX_INT_OCT 0[1-7][0-7]* +RGX_INT_BIN 0[bB][01]+ +RGX_INT_HEX 0[xX][0-9a-fA-F]+ +RGX_INT_DEC [0-9]+ RGX_DEFAULT (.|\n) %x COMMENT_BLOCK_STATE @@ -140,8 +144,12 @@ RGX_DEFAULT (.|\n) {RGX_NAME} { return iw7::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); } \&{RGX_STRING} { return iw7::parser::make_ISTRING(std::string(yytext).substr(1), loc); } {RGX_STRING} { return iw7::parser::make_STRING(std::string(yytext), loc); } -{RGX_FLOAT} { return iw7::parser::make_FLOAT(std::string(yytext), loc); } -{RGX_INTEGER} { return iw7::parser::make_INTEGER(std::string(yytext), loc); } +{RGX_COLOR} { return iw7::parser::make_COLOR(std::string(yytext).substr(1), loc); } +{RGX_FLT_DEC} { return iw7::parser::make_FLOAT(std::string(yytext), loc); } +{RGX_INT_OCT} { return iw7::parser::make_INT_OCT(utils::string::oct_to_dec(yytext), loc); } +{RGX_INT_BIN} { return iw7::parser::make_INT_BIN(utils::string::bin_to_dec(yytext), loc); } +{RGX_INT_HEX} { return iw7::parser::make_INT_HEX(utils::string::hex_to_dec(yytext), loc); } +{RGX_INT_DEC} { return iw7::parser::make_INT_DEC(std::string(yytext), loc); } <> { return iw7::parser::make_IW7EOF(loc); } <*>{RGX_DEFAULT} { throw iw7::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); } diff --git a/gen/iw7/parser.ypp b/gen/iw7/parser.ypp index 6492a42f..91bee751 100644 --- a/gen/iw7/parser.ypp +++ b/gen/iw7/parser.ypp @@ -130,8 +130,12 @@ xsk::gsc::iw7::parser::symbol_type IW7lex(yyscan_t yyscanner, xsk::gsc::location %token NAME "identifier" %token STRING "string literal" %token ISTRING "localized string" +%token COLOR "color" %token FLOAT "float" -%token INTEGER "int" +%token INT_DEC "int" +%token INT_OCT "octal int" +%token INT_BIN "binary int" +%token INT_HEX "hexadecimal int" %type program %type include @@ -200,9 +204,8 @@ xsk::gsc::iw7::parser::symbol_type IW7lex(yyscan_t yyscanner, xsk::gsc::location %type file %type istring %type string +%type color %type vector -%type neg_float -%type neg_integer %type float %type integer %type false @@ -409,8 +412,6 @@ stmt_switch stmt_case : CASE integer COLON { $$ = std::make_unique(@$, expr_ptr(std::move($2)), std::make_unique(@$)); } - | CASE neg_integer COLON - { $$ = std::make_unique(@$, expr_ptr(std::move($2)), std::make_unique(@$)); } | CASE string COLON { $$ = std::make_unique(@$, expr_ptr(std::move($2)), std::make_unique(@$)); } ; @@ -539,9 +540,8 @@ expr_primitive | name { $$.as_node = std::move($1); } | istring { $$.as_node = std::move($1); } | string { $$.as_node = std::move($1); } + | color { $$.as_node = std::move($1); } | vector { $$.as_node = std::move($1); } - | neg_float { $$.as_node = std::move($1); } - | neg_integer { $$.as_node = std::move($1); } | float { $$.as_node = std::move($1); } | integer { $$.as_node = std::move($1); } | false { $$.as_node = std::move($1); } @@ -638,6 +638,19 @@ object | name { $$ = std::move($1); } ; +float + : SUB FLOAT %prec NEG { $$ = std::make_unique(@$, "-" + $2); }; + | FLOAT { $$ = std::make_unique(@$, $1); }; + ; + +integer + : SUB INT_DEC %prec NEG { $$ = std::make_unique(@$, "-" + $2); }; + | INT_DEC { $$ = std::make_unique(@$, $1); }; + | INT_OCT { $$ = std::make_unique(@$, $1); }; + | INT_BIN { $$ = std::make_unique(@$, $1); }; + | INT_HEX { $$ = std::make_unique(@$, $1); }; + ; + thisthread : THISTHREAD { $$ = std::make_unique(@$); }; empty_array : LBRACKET RBRACKET { $$ = std::make_unique(@$); }; undefined : UNDEFINED { $$ = std::make_unique(@$); }; @@ -651,11 +664,8 @@ name : NAME { $$ = std::make_unique(@$, $1); }; istring : ISTRING { $$ = std::make_unique(@$, $1); }; string : STRING { $$ = std::make_unique(@$, $1); }; +color : COLOR { $$ = std::make_unique(@$, $1); }; vector : LPAREN expr COMMA expr COMMA expr RPAREN { $$ = std::make_unique(@$, std::move($2), std::move($4), std::move($6)); }; -neg_float : SUB FLOAT %prec NEG { $$ = std::make_unique(@$, "-" + $2); }; -neg_integer : SUB INTEGER %prec NEG { $$ = std::make_unique(@$, "-" + $2); }; -float : FLOAT { $$ = std::make_unique(@$, $1); }; -integer : INTEGER { $$ = std::make_unique(@$, $1); }; false : FALSE { $$ = std::make_unique(@$); }; true : TRUE { $$ = std::make_unique(@$); }; diff --git a/gen/s1/lexer.lpp b/gen/s1/lexer.lpp index 2a6f7bc0..06a8fb33 100644 --- a/gen/s1/lexer.lpp +++ b/gen/s1/lexer.lpp @@ -26,8 +26,12 @@ using namespace xsk::gsc; RGX_FILE ([_A-Za-z0-9]+\\)+[_A-Za-z0-9]+ RGX_NAME [_A-Za-z][_A-Za-z0-9]* RGX_STRING \"(?:\\.|[^\"])*?\"|\'(?:\\.|[^\'])*?\' -RGX_FLOAT [0-9]+\.(?:[0-9]*)?f?|\.[0-9]+f? -RGX_INTEGER [0-9]+ +RGX_COLOR #([0-9a-fA-F]{6}|[0-9a-fA-F]{3}) +RGX_FLT_DEC [0-9]+\.(?:[0-9]*)?f?|\.[0-9]+f? +RGX_INT_OCT 0[1-7][0-7]* +RGX_INT_BIN 0[bB][01]+ +RGX_INT_HEX 0[xX][0-9a-fA-F]+ +RGX_INT_DEC [0-9]+ RGX_DEFAULT (.|\n) %x COMMENT_BLOCK_STATE @@ -141,8 +145,12 @@ RGX_DEFAULT (.|\n) {RGX_NAME} { return s1::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); } \&{RGX_STRING} { return s1::parser::make_ISTRING(std::string(yytext).substr(1), loc); } {RGX_STRING} { return s1::parser::make_STRING(std::string(yytext), loc); } -{RGX_FLOAT} { return s1::parser::make_FLOAT(std::string(yytext), loc); } -{RGX_INTEGER} { return s1::parser::make_INTEGER(std::string(yytext), loc); } +{RGX_COLOR} { return s1::parser::make_COLOR(std::string(yytext).substr(1), loc); } +{RGX_FLT_DEC} { return s1::parser::make_FLOAT(std::string(yytext), loc); } +{RGX_INT_OCT} { return s1::parser::make_INT_OCT(utils::string::oct_to_dec(yytext), loc); } +{RGX_INT_BIN} { return s1::parser::make_INT_BIN(utils::string::bin_to_dec(yytext), loc); } +{RGX_INT_HEX} { return s1::parser::make_INT_HEX(utils::string::hex_to_dec(yytext), loc); } +{RGX_INT_DEC} { return s1::parser::make_INT_DEC(std::string(yytext), loc); } <> { return s1::parser::make_S1EOF(loc); } <*>{RGX_DEFAULT} { throw s1::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); } diff --git a/gen/s1/parser.ypp b/gen/s1/parser.ypp index cc2ad564..866a7690 100644 --- a/gen/s1/parser.ypp +++ b/gen/s1/parser.ypp @@ -131,8 +131,12 @@ xsk::gsc::s1::parser::symbol_type S1lex(yyscan_t yyscanner, xsk::gsc::location& %token NAME "identifier" %token STRING "string literal" %token ISTRING "localized string" +%token COLOR "color" %token FLOAT "float" -%token INTEGER "int" +%token INT_DEC "int" +%token INT_OCT "octal int" +%token INT_BIN "binary int" +%token INT_HEX "hexadecimal int" %type program %type include @@ -202,9 +206,8 @@ xsk::gsc::s1::parser::symbol_type S1lex(yyscan_t yyscanner, xsk::gsc::location& %type file %type istring %type string +%type color %type vector -%type neg_float -%type neg_integer %type float %type integer %type false @@ -419,8 +422,6 @@ stmt_switch stmt_case : CASE integer COLON { $$ = std::make_unique(@$, expr_ptr(std::move($2)), std::make_unique(@$)); } - | CASE neg_integer COLON - { $$ = std::make_unique(@$, expr_ptr(std::move($2)), std::make_unique(@$)); } | CASE string COLON { $$ = std::make_unique(@$, expr_ptr(std::move($2)), std::make_unique(@$)); } ; @@ -549,9 +550,8 @@ expr_primitive | name { $$.as_node = std::move($1); } | istring { $$.as_node = std::move($1); } | string { $$.as_node = std::move($1); } + | color { $$.as_node = std::move($1); } | vector { $$.as_node = std::move($1); } - | neg_float { $$.as_node = std::move($1); } - | neg_integer { $$.as_node = std::move($1); } | float { $$.as_node = std::move($1); } | integer { $$.as_node = std::move($1); } | false { $$.as_node = std::move($1); } @@ -648,6 +648,19 @@ object | name { $$ = std::move($1); } ; +float + : SUB FLOAT %prec NEG { $$ = std::make_unique(@$, "-" + $2); }; + | FLOAT { $$ = std::make_unique(@$, $1); }; + ; + +integer + : SUB INT_DEC %prec NEG { $$ = std::make_unique(@$, "-" + $2); }; + | INT_DEC { $$ = std::make_unique(@$, $1); }; + | INT_OCT { $$ = std::make_unique(@$, $1); }; + | INT_BIN { $$ = std::make_unique(@$, $1); }; + | INT_HEX { $$ = std::make_unique(@$, $1); }; + ; + thisthread : THISTHREAD { $$ = std::make_unique(@$); }; empty_array : LBRACKET RBRACKET { $$ = std::make_unique(@$); }; undefined : UNDEFINED { $$ = std::make_unique(@$); }; @@ -661,11 +674,8 @@ name : NAME { $$ = std::make_unique(@$, $1); }; istring : ISTRING { $$ = std::make_unique(@$, $1); }; string : STRING { $$ = std::make_unique(@$, $1); }; +color : COLOR { $$ = std::make_unique(@$, $1); }; vector : LPAREN expr COMMA expr COMMA expr RPAREN { $$ = std::make_unique(@$, std::move($2), std::move($4), std::move($6)); }; -neg_float : SUB FLOAT %prec NEG { $$ = std::make_unique(@$, "-" + $2); }; -neg_integer : SUB INTEGER %prec NEG { $$ = std::make_unique(@$, "-" + $2); }; -float : FLOAT { $$ = std::make_unique(@$, $1); }; -integer : INTEGER { $$ = std::make_unique(@$, $1); }; false : FALSE { $$ = std::make_unique(@$); }; true : TRUE { $$ = std::make_unique(@$); }; diff --git a/gen/s2/lexer.lpp b/gen/s2/lexer.lpp index be66167f..b889053e 100644 --- a/gen/s2/lexer.lpp +++ b/gen/s2/lexer.lpp @@ -26,8 +26,12 @@ using namespace xsk::gsc; RGX_FILE ([_A-Za-z0-9]+\\)+[_A-Za-z0-9]+ RGX_NAME [_A-Za-z][_A-Za-z0-9]* RGX_STRING \"(?:\\.|[^\"])*?\"|\'(?:\\.|[^\'])*?\' -RGX_FLOAT [0-9]+\.(?:[0-9]*)?f?|\.[0-9]+f? -RGX_INTEGER [0-9]+ +RGX_COLOR #([0-9a-fA-F]{6}|[0-9a-fA-F]{3}) +RGX_FLT_DEC [0-9]+\.(?:[0-9]*)?f?|\.[0-9]+f? +RGX_INT_OCT 0[1-7][0-7]* +RGX_INT_BIN 0[bB][01]+ +RGX_INT_HEX 0[xX][0-9a-fA-F]+ +RGX_INT_DEC [0-9]+ RGX_DEFAULT (.|\n) %x COMMENT_BLOCK_STATE @@ -141,8 +145,12 @@ RGX_DEFAULT (.|\n) {RGX_NAME} { return s2::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); } \&{RGX_STRING} { return s2::parser::make_ISTRING(std::string(yytext).substr(1), loc); } {RGX_STRING} { return s2::parser::make_STRING(std::string(yytext), loc); } -{RGX_FLOAT} { return s2::parser::make_FLOAT(std::string(yytext), loc); } -{RGX_INTEGER} { return s2::parser::make_INTEGER(std::string(yytext), loc); } +{RGX_COLOR} { return s2::parser::make_COLOR(std::string(yytext).substr(1), loc); } +{RGX_FLT_DEC} { return s2::parser::make_FLOAT(std::string(yytext), loc); } +{RGX_INT_OCT} { return s2::parser::make_INT_OCT(utils::string::oct_to_dec(yytext), loc); } +{RGX_INT_BIN} { return s2::parser::make_INT_BIN(utils::string::bin_to_dec(yytext), loc); } +{RGX_INT_HEX} { return s2::parser::make_INT_HEX(utils::string::hex_to_dec(yytext), loc); } +{RGX_INT_DEC} { return s2::parser::make_INT_DEC(std::string(yytext), loc); } <> { return s2::parser::make_S2EOF(loc); } <*>{RGX_DEFAULT} { throw s2::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); } diff --git a/gen/s2/parser.ypp b/gen/s2/parser.ypp index b221220f..8f9ca167 100644 --- a/gen/s2/parser.ypp +++ b/gen/s2/parser.ypp @@ -131,8 +131,12 @@ xsk::gsc::s2::parser::symbol_type S2lex(yyscan_t yyscanner, xsk::gsc::location& %token NAME "identifier" %token STRING "string literal" %token ISTRING "localized string" +%token COLOR "color" %token FLOAT "float" -%token INTEGER "int" +%token INT_DEC "int" +%token INT_OCT "octal int" +%token INT_BIN "binary int" +%token INT_HEX "hexadecimal int" %type program %type include @@ -202,9 +206,8 @@ xsk::gsc::s2::parser::symbol_type S2lex(yyscan_t yyscanner, xsk::gsc::location& %type file %type istring %type string +%type color %type vector -%type neg_float -%type neg_integer %type float %type integer %type false @@ -419,8 +422,6 @@ stmt_switch stmt_case : CASE integer COLON { $$ = std::make_unique(@$, expr_ptr(std::move($2)), std::make_unique(@$)); } - | CASE neg_integer COLON - { $$ = std::make_unique(@$, expr_ptr(std::move($2)), std::make_unique(@$)); } | CASE string COLON { $$ = std::make_unique(@$, expr_ptr(std::move($2)), std::make_unique(@$)); } ; @@ -549,9 +550,8 @@ expr_primitive | name { $$.as_node = std::move($1); } | istring { $$.as_node = std::move($1); } | string { $$.as_node = std::move($1); } + | color { $$.as_node = std::move($1); } | vector { $$.as_node = std::move($1); } - | neg_float { $$.as_node = std::move($1); } - | neg_integer { $$.as_node = std::move($1); } | float { $$.as_node = std::move($1); } | integer { $$.as_node = std::move($1); } | false { $$.as_node = std::move($1); } @@ -648,6 +648,19 @@ object | name { $$ = std::move($1); } ; +float + : SUB FLOAT %prec NEG { $$ = std::make_unique(@$, "-" + $2); }; + | FLOAT { $$ = std::make_unique(@$, $1); }; + ; + +integer + : SUB INT_DEC %prec NEG { $$ = std::make_unique(@$, "-" + $2); }; + | INT_DEC { $$ = std::make_unique(@$, $1); }; + | INT_OCT { $$ = std::make_unique(@$, $1); }; + | INT_BIN { $$ = std::make_unique(@$, $1); }; + | INT_HEX { $$ = std::make_unique(@$, $1); }; + ; + thisthread : THISTHREAD { $$ = std::make_unique(@$); }; empty_array : LBRACKET RBRACKET { $$ = std::make_unique(@$); }; undefined : UNDEFINED { $$ = std::make_unique(@$); }; @@ -661,11 +674,8 @@ name : NAME { $$ = std::make_unique(@$, $1); }; istring : ISTRING { $$ = std::make_unique(@$, $1); }; string : STRING { $$ = std::make_unique(@$, $1); }; +color : COLOR { $$ = std::make_unique(@$, $1); }; vector : LPAREN expr COMMA expr COMMA expr RPAREN { $$ = std::make_unique(@$, std::move($2), std::move($4), std::move($6)); }; -neg_float : SUB FLOAT %prec NEG { $$ = std::make_unique(@$, "-" + $2); }; -neg_integer : SUB INTEGER %prec NEG { $$ = std::make_unique(@$, "-" + $2); }; -float : FLOAT { $$ = std::make_unique(@$, $1); }; -integer : INTEGER { $$ = std::make_unique(@$, $1); }; false : FALSE { $$ = std::make_unique(@$); }; true : TRUE { $$ = std::make_unique(@$); }; diff --git a/src/h1/xsk/compiler.cpp b/src/h1/xsk/compiler.cpp index 2bba553c..a557dde0 100644 --- a/src/h1/xsk/compiler.cpp +++ b/src/h1/xsk/compiler.cpp @@ -791,6 +791,7 @@ void compiler::emit_expr(const gsc::context_ptr& ctx, const gsc::expr_ptr& expr) case gsc::node_t::data_name: emit_local_variable(ctx, expr.as_name); break; case gsc::node_t::data_istring: emit_istring(ctx, expr.as_istring); break; case gsc::node_t::data_string: emit_string(ctx, expr.as_string); break; + case gsc::node_t::data_color: emit_color(ctx, expr.as_color); break; case gsc::node_t::data_vector: emit_vector(ctx, expr.as_vector); break; case gsc::node_t::data_float: emit_float(ctx, expr.as_float); break; case gsc::node_t::data_integer: emit_integer(ctx, expr.as_integer); break; @@ -1612,6 +1613,30 @@ void compiler::emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& s emit_opcode(ctx, opcode::OP_GetString, str->value); } +void compiler::emit_color(const gsc::context_ptr& ctx, const gsc::color_ptr& color) +{ + std::vector data; + std::string x, y, z; + + if(color->value.size() == 3) + { + x = "0x" + color->value.substr(0, 1) + color->value.substr(0, 1); + y = "0x" + color->value.substr(1, 1) + color->value.substr(1, 1); + z = "0x" + color->value.substr(2, 1) + color->value.substr(2, 1); + } + else + { + x = "0x" + color->value.substr(0, 2); + y = "0x" + color->value.substr(2, 2); + z = "0x" + color->value.substr(4, 2); + } + + data.push_back(gsc::utils::string::hex_to_dec(x.data())); + data.push_back(gsc::utils::string::hex_to_dec(y.data())); + data.push_back(gsc::utils::string::hex_to_dec(z.data())); + emit_opcode(ctx, opcode::OP_GetVector, data); +} + void compiler::emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec) { std::vector data; diff --git a/src/h1/xsk/compiler.hpp b/src/h1/xsk/compiler.hpp index 8ea1b811..7a1047a5 100644 --- a/src/h1/xsk/compiler.hpp +++ b/src/h1/xsk/compiler.hpp @@ -102,6 +102,7 @@ private: void emit_animation(const gsc::context_ptr& ctx, const gsc::animation_ptr& animation); void emit_istring(const gsc::context_ptr& ctx, const gsc::istring_ptr& str); void emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& str); + void emit_color(const gsc::context_ptr& ctx, const gsc::color_ptr& color); void emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec); void emit_float(const gsc::context_ptr& ctx, const gsc::float_ptr& num); void emit_integer(const gsc::context_ptr& ctx, const gsc::integer_ptr& num); diff --git a/src/h1/xsk/lexer.cpp b/src/h1/xsk/lexer.cpp index 805e5a4e..f867e4fc 100644 --- a/src/h1/xsk/lexer.cpp +++ b/src/h1/xsk/lexer.cpp @@ -553,8 +553,8 @@ static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 101 -#define YY_END_OF_BUFFER 102 +#define YY_NUM_RULES 105 +#define YY_END_OF_BUFFER 106 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -562,42 +562,43 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[306] = +static const flex_int16_t yy_accept[319] = { 0, - 0, 0, 0, 0, 0, 0, 102, 100, 1, 2, - 89, 100, 100, 88, 92, 100, 49, 50, 86, 84, - 55, 85, 56, 87, 99, 58, 59, 73, 83, 74, - 60, 95, 53, 54, 93, 95, 95, 95, 95, 95, + 0, 0, 0, 0, 0, 0, 106, 104, 1, 2, + 89, 104, 104, 88, 92, 104, 49, 50, 86, 84, + 55, 85, 56, 87, 103, 103, 58, 59, 73, 83, + 74, 60, 95, 53, 54, 93, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 51, 91, 52, 90, 5, 6, 5, 9, 10, - 9, 70, 0, 97, 0, 0, 0, 0, 79, 0, - 68, 0, 81, 0, 0, 77, 61, 75, 62, 76, - 98, 0, 8, 4, 3, 78, 98, 99, 0, 0, - 57, 65, 71, 69, 72, 66, 95, 82, 95, 95, + 95, 95, 51, 91, 52, 90, 5, 6, 5, 9, + 10, 9, 70, 0, 97, 0, 0, 0, 0, 0, + 79, 0, 68, 0, 81, 0, 0, 77, 61, 75, + 62, 76, 99, 0, 8, 4, 3, 78, 99, 103, + 100, 0, 0, 0, 0, 57, 65, 71, 69, 72, - 95, 95, 95, 95, 95, 95, 95, 95, 95, 25, - 30, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 80, 67, 7, 11, 0, 97, 0, 0, - 0, 0, 0, 96, 0, 0, 0, 0, 97, 0, - 98, 0, 3, 98, 98, 94, 63, 64, 95, 95, - 95, 95, 95, 95, 95, 95, 95, 95, 28, 95, + 66, 95, 82, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 25, 30, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 80, 67, 7, + 11, 0, 97, 0, 0, 0, 0, 0, 0, 96, + 0, 0, 0, 0, 97, 0, 99, 0, 3, 99, + 99, 100, 101, 102, 94, 63, 64, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 28, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 0, 0, 0, 0, 96, 0, 0, 96, + 95, 98, 0, 0, 0, 0, 96, 0, 0, 96, 0, 0, 47, 95, 40, 32, 95, 95, 95, 26, + 95, 95, 95, 45, 95, 95, 95, 95, 46, 95, + 95, 95, 41, 95, 20, 95, 0, 0, 0, 0, + 44, 34, 95, 95, 95, 18, 42, 95, 48, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 27, 0, + 0, 0, 0, 95, 95, 95, 95, 95, 19, 95, + 95, 36, 31, 95, 37, 95, 95, 95, 98, 0, + 0, 0, 95, 95, 95, 33, 29, 95, 95, 95, + 95, 95, 95, 0, 15, 0, 95, 95, 35, 95, + 14, 95, 95, 95, 21, 17, 0, 95, 95, 95, + 95, 43, 24, 95, 95, 0, 12, 95, 13, 39, - 95, 95, 41, 95, 20, 95, 0, 0, 0, 44, - 34, 95, 95, 95, 18, 42, 95, 48, 95, 95, - 95, 95, 95, 95, 95, 95, 95, 27, 0, 0, - 0, 95, 95, 95, 95, 95, 19, 95, 95, 36, - 31, 95, 37, 95, 95, 95, 0, 0, 0, 95, - 95, 95, 33, 29, 95, 95, 95, 95, 95, 95, - 0, 15, 0, 95, 95, 35, 95, 14, 95, 95, - 95, 21, 17, 0, 95, 95, 95, 95, 43, 24, - 95, 95, 0, 12, 95, 13, 39, 95, 95, 0, - 38, 95, 95, 0, 95, 95, 0, 95, 22, 0, - - 95, 16, 95, 23, 0 + 95, 95, 0, 38, 95, 95, 0, 95, 95, 0, + 95, 22, 0, 95, 16, 95, 23, 0 } ; static const YY_CHAR yy_ec[256] = @@ -606,16 +607,16 @@ static const YY_CHAR yy_ec[256] = 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 5, 6, 1, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, - 22, 23, 24, 1, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 26, 27, 28, 29, 30, 1, 31, 32, 33, 34, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 20, 20, 20, 20, 20, 21, 21, 22, 23, 24, + 25, 26, 27, 1, 28, 29, 28, 28, 28, 28, + 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 31, 30, 30, + 32, 33, 34, 35, 36, 1, 37, 38, 39, 40, - 35, 36, 37, 38, 39, 25, 40, 41, 42, 43, - 44, 45, 25, 46, 47, 48, 49, 50, 51, 25, - 52, 53, 54, 55, 56, 57, 1, 1, 1, 1, + 41, 42, 43, 44, 45, 30, 46, 47, 48, 49, + 50, 51, 30, 52, 53, 54, 55, 56, 57, 31, + 58, 59, 60, 61, 62, 63, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -632,240 +633,269 @@ static const YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static const YY_CHAR yy_meta[58] = +static const YY_CHAR yy_meta[64] = { 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 1, 4, 1, 1, - 1, 1, 1, 1, 4, 1, 5, 1, 1, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 1, 1, 1, 1 + 1, 1, 1, 1, 1, 3, 1, 4, 4, 4, + 4, 1, 1, 1, 1, 1, 1, 4, 4, 5, + 5, 1, 6, 1, 1, 5, 4, 4, 4, 4, + 4, 4, 5, 5, 7, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 7, 5, 5, 5, 5, 1, + 1, 1, 1 } ; -static const flex_int16_t yy_base[320] = +static const flex_int16_t yy_base[339] = { 0, - 0, 0, 55, 56, 57, 58, 575, 576, 576, 576, - 552, 57, 34, 551, 66, 60, 576, 576, 550, 57, - 576, 63, 48, 74, 74, 552, 576, 55, 548, 59, - 576, 542, 576, 576, 546, 62, 66, 71, 72, 67, - 73, 87, 70, 76, 89, 92, 93, 94, 96, 97, - 99, 576, 100, 576, 576, 576, 576, 550, 576, 576, - 549, 576, 120, 576, 136, 522, 521, 516, 576, 122, - 576, 123, 576, 126, 143, 576, 576, 576, 576, 576, - 118, 523, 576, 576, 0, 576, 125, 140, 132, 0, - 576, 539, 576, 576, 576, 538, 532, 576, 130, 133, + 0, 0, 61, 62, 63, 64, 677, 678, 678, 678, + 651, 63, 34, 650, 67, 68, 678, 678, 649, 65, + 678, 66, 64, 81, 89, 95, 651, 678, 70, 647, + 74, 678, 638, 678, 678, 645, 53, 71, 88, 47, + 86, 93, 103, 104, 98, 79, 108, 101, 111, 112, + 114, 117, 678, 123, 678, 678, 678, 678, 652, 678, + 678, 651, 678, 144, 678, 152, 0, 618, 617, 612, + 678, 146, 678, 149, 678, 150, 162, 678, 678, 678, + 678, 678, 154, 619, 678, 678, 0, 678, 168, 181, + 187, 160, 193, 211, 0, 678, 638, 678, 678, 678, - 124, 135, 137, 139, 145, 149, 146, 150, 151, 531, - 530, 152, 155, 154, 157, 158, 161, 162, 163, 170, - 167, 168, 576, 576, 576, 576, 186, 204, 211, 517, - 522, 515, 205, 576, 212, 202, 215, 210, 213, 217, - 576, 500, 0, 205, 576, 525, 576, 576, 194, 203, - 206, 200, 216, 198, 218, 221, 223, 224, 225, 226, - 227, 231, 228, 232, 236, 238, 241, 239, 242, 248, - 246, 249, 509, 509, 506, 273, 274, 277, 275, 276, - 284, 513, 520, 104, 519, 518, 262, 268, 264, 517, - 265, 270, 279, 516, 271, 282, 287, 288, 515, 289, + 637, 628, 678, 133, 129, 171, 136, 184, 180, 182, + 158, 147, 186, 188, 627, 626, 134, 70, 192, 183, + 208, 201, 212, 210, 214, 223, 225, 678, 678, 678, + 678, 254, 255, 258, 0, 613, 618, 611, 257, 678, + 264, 262, 263, 265, 266, 270, 678, 596, 0, 262, + 678, 289, 295, 0, 621, 678, 678, 244, 252, 253, + 243, 268, 269, 279, 284, 285, 273, 286, 288, 291, + 297, 298, 300, 301, 287, 303, 304, 305, 306, 311, + 315, 0, 605, 605, 602, 344, 345, 348, 343, 349, + 351, 609, 616, 324, 615, 614, 326, 328, 330, 613, - 272, 292, 514, 294, 297, 300, 492, 490, 501, 576, - 298, 299, 301, 305, 510, 509, 304, 508, 302, 321, - 309, 311, 312, 324, 328, 313, 330, 507, 487, 498, - 501, 333, 334, 314, 335, 337, 503, 338, 339, 502, - 501, 341, 500, 343, 347, 344, 491, 490, 493, 349, - 352, 354, 496, 495, 353, 357, 365, 366, 367, 369, - 486, 576, 477, 368, 370, 492, 375, 491, 372, 379, - 377, 380, 576, 478, 381, 388, 390, 391, 489, 488, - 393, 396, 472, 473, 394, 425, 424, 399, 397, 402, - 422, 404, 405, 398, 407, 409, 405, 408, 315, 193, + 245, 331, 334, 612, 336, 346, 353, 335, 611, 341, + 342, 357, 610, 358, 359, 362, 0, 588, 586, 597, + 678, 360, 364, 365, 369, 606, 605, 366, 604, 371, + 374, 373, 375, 376, 377, 388, 390, 391, 603, 0, + 583, 594, 597, 393, 394, 392, 395, 397, 599, 398, + 399, 598, 597, 401, 596, 402, 407, 412, 678, 587, + 586, 589, 413, 404, 419, 592, 591, 421, 417, 422, + 428, 429, 432, 582, 678, 573, 433, 434, 588, 435, + 587, 437, 438, 440, 443, 678, 574, 439, 450, 451, + 455, 585, 569, 453, 457, 546, 514, 456, 513, 489, - 410, 576, 414, 159, 576, 453, 458, 463, 468, 471, - 473, 478, 483, 488, 493, 498, 68, 503, 508 + 464, 459, 467, 487, 466, 465, 467, 469, 473, 477, + 470, 483, 471, 474, 678, 475, 476, 678, 523, 530, + 537, 541, 548, 553, 557, 564, 289, 571, 578, 585, + 592, 596, 224, 603, 610, 219, 188, 93 } ; -static const flex_int16_t yy_def[320] = +static const flex_int16_t yy_def[339] = { 0, - 305, 1, 306, 306, 307, 307, 305, 305, 305, 305, - 305, 308, 305, 305, 305, 309, 305, 305, 305, 305, - 305, 305, 305, 305, 310, 305, 305, 305, 305, 305, - 305, 311, 305, 305, 305, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 308, 305, 312, 305, 305, 305, 305, 313, - 305, 314, 305, 309, 315, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 316, 305, 305, 310, 310, 317, - 305, 305, 305, 305, 305, 305, 311, 305, 311, 311, + 318, 1, 319, 319, 320, 320, 318, 318, 318, 318, + 318, 321, 322, 318, 318, 323, 318, 318, 318, 318, + 318, 318, 318, 318, 324, 324, 318, 318, 318, 318, + 318, 318, 325, 318, 318, 318, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 321, 318, 326, 327, 327, 318, 318, + 318, 328, 318, 329, 318, 323, 330, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 331, 318, 318, 324, + 324, 324, 324, 324, 332, 318, 318, 318, 318, 318, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 305, 305, 305, 305, 308, 308, 312, 305, - 305, 305, 313, 305, 318, 314, 319, 309, 309, 315, - 305, 305, 316, 305, 305, 317, 305, 305, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 305, 305, 305, 313, 313, 318, 314, 314, - 319, 305, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 318, 325, 318, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 318, 318, 318, + 318, 321, 321, 326, 333, 318, 318, 318, 328, 318, + 334, 329, 335, 323, 323, 330, 318, 318, 331, 318, + 318, 324, 324, 94, 332, 318, 318, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 336, 318, 318, 318, 328, 328, 334, 329, 329, + 335, 318, 325, 325, 325, 325, 325, 325, 325, 325, - 311, 311, 311, 311, 311, 311, 305, 305, 305, 305, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 305, 305, - 305, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 305, 305, 305, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 305, 305, 305, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 305, 305, 311, 311, 311, 311, 311, 311, - 311, 311, 305, 311, 311, 311, 311, 311, 311, 305, - 311, 311, 311, 305, 311, 311, 305, 311, 311, 305, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 337, 318, 318, 318, + 318, 325, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 338, + 318, 318, 318, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 318, 318, + 318, 318, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 318, 318, 318, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 318, 318, 325, 325, 325, + 325, 325, 325, 325, 325, 318, 325, 325, 325, 325, - 311, 305, 311, 311, 0, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305 + 325, 325, 318, 325, 325, 325, 318, 325, 325, 318, + 325, 325, 318, 325, 318, 325, 325, 0, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318 } ; -static const flex_int16_t yy_nxt[634] = +static const flex_int16_t yy_nxt[742] = { 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 8, 34, 35, 32, - 36, 37, 38, 39, 40, 41, 42, 32, 43, 32, - 44, 32, 45, 32, 46, 47, 48, 49, 50, 32, - 51, 32, 32, 52, 53, 54, 55, 57, 57, 60, - 60, 64, 61, 61, 66, 81, 58, 58, 64, 77, - 70, 146, 67, 71, 72, 92, 93, 79, 78, 83, - 95, 96, 68, 65, 80, 84, 75, 73, 90, 87, - 85, 88, 90, 90, 82, 86, 90, 90, 90, 90, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 26, + 26, 27, 28, 29, 30, 31, 32, 33, 33, 33, + 33, 34, 8, 35, 36, 33, 37, 38, 39, 40, + 41, 42, 43, 33, 44, 33, 45, 33, 46, 33, + 47, 48, 49, 50, 51, 33, 52, 33, 33, 53, + 54, 55, 56, 58, 58, 61, 61, 65, 62, 62, + 68, 72, 59, 59, 73, 74, 65, 79, 69, 95, + 81, 83, 83, 83, 83, 95, 85, 109, 70, 80, + 82, 75, 86, 97, 98, 66, 259, 87, 100, 101, - 90, 101, 90, 107, 99, 110, 104, 105, 102, 106, - 112, 100, 111, 90, 103, 90, 108, 109, 90, 90, - 90, 123, 90, 90, 64, 90, 134, 115, 116, 121, - 90, 134, 113, 118, 64, 81, 122, 114, 63, 120, - 128, 119, 144, 211, 117, 74, 65, 305, 135, 137, - 90, 139, 75, 141, 124, 87, 90, 88, 90, 90, - 145, 90, 129, 90, 151, 90, 90, 150, 149, 140, - 152, 90, 90, 153, 155, 90, 90, 90, 90, 154, - 90, 90, 157, 90, 90, 90, 158, 90, 90, 90, - 64, 156, 160, 90, 90, 159, 90, 163, 165, 166, + 77, 104, 95, 95, 89, 88, 90, 91, 91, 90, + 89, 95, 90, 90, 90, 90, 84, 93, 95, 94, + 95, 95, 105, 171, 106, 95, 93, 95, 118, 112, + 95, 107, 110, 95, 111, 95, 95, 108, 117, 114, + 95, 120, 113, 95, 95, 115, 95, 128, 65, 95, + 140, 121, 116, 126, 64, 123, 133, 140, 65, 119, + 127, 95, 125, 124, 76, 95, 95, 122, 95, 159, + 145, 83, 83, 83, 83, 318, 66, 158, 141, 95, + 162, 143, 77, 129, 134, 150, 150, 150, 150, 170, + 95, 240, 95, 167, 146, 147, 89, 166, 90, 90, - 167, 161, 162, 170, 164, 171, 172, 168, 64, 134, - 134, 169, 65, 63, 133, 128, 177, 136, 64, 74, - 90, 64, 144, 180, 90, 139, 90, 302, 137, 90, - 65, 135, 90, 184, 186, 183, 75, 129, 178, 75, - 145, 181, 90, 140, 90, 188, 185, 90, 189, 90, - 90, 90, 90, 90, 90, 190, 187, 90, 90, 193, - 194, 195, 90, 197, 90, 90, 191, 90, 90, 196, - 192, 199, 90, 202, 90, 90, 203, 134, 134, 133, - 198, 177, 204, 134, 134, 200, 136, 201, 90, 206, - 90, 90, 180, 205, 90, 212, 90, 90, 90, 135, + 90, 90, 89, 95, 152, 152, 152, 90, 318, 151, + 153, 153, 95, 95, 95, 95, 95, 160, 95, 95, + 95, 164, 217, 161, 95, 95, 318, 182, 154, 154, + 154, 154, 163, 95, 165, 169, 173, 168, 154, 154, + 95, 172, 95, 95, 95, 175, 95, 154, 154, 154, + 154, 154, 154, 179, 174, 95, 176, 95, 65, 65, + 64, 140, 133, 177, 178, 142, 139, 180, 187, 181, + 140, 190, 76, 65, 65, 95, 95, 95, 145, 150, + 150, 150, 150, 196, 95, 95, 66, 66, 194, 141, + 134, 193, 135, 226, 143, 191, 188, 77, 77, 195, - 135, 137, 137, 178, 216, 90, 213, 215, 90, 217, - 181, 218, 214, 90, 90, 90, 220, 219, 90, 223, - 90, 222, 224, 90, 90, 90, 90, 90, 90, 225, - 90, 90, 226, 221, 228, 90, 236, 90, 90, 90, - 90, 90, 232, 234, 227, 235, 233, 90, 241, 242, - 90, 240, 238, 237, 90, 239, 90, 243, 245, 90, - 90, 90, 252, 90, 90, 90, 244, 90, 246, 90, - 90, 251, 255, 90, 254, 90, 250, 259, 90, 90, - 90, 256, 253, 90, 260, 258, 257, 264, 266, 267, - 268, 90, 90, 90, 90, 90, 90, 265, 90, 269, + 95, 95, 146, 151, 89, 95, 152, 152, 152, 90, + 318, 95, 153, 153, 197, 199, 95, 95, 95, 95, + 95, 95, 198, 95, 200, 202, 203, 95, 204, 95, + 95, 205, 95, 95, 201, 95, 95, 95, 95, 207, + 210, 206, 209, 95, 212, 213, 214, 95, 140, 140, + 139, 140, 187, 142, 208, 211, 95, 140, 95, 190, + 95, 216, 95, 95, 215, 223, 95, 95, 95, 222, + 228, 227, 224, 95, 95, 143, 141, 141, 95, 233, + 188, 143, 229, 191, 225, 95, 232, 230, 231, 95, + 95, 95, 95, 235, 95, 234, 95, 95, 95, 236, - 270, 90, 278, 90, 276, 90, 90, 90, 271, 272, - 275, 280, 279, 277, 90, 281, 90, 90, 285, 90, - 90, 282, 90, 90, 287, 90, 289, 291, 284, 292, - 90, 90, 286, 90, 90, 90, 90, 296, 288, 300, - 90, 298, 301, 297, 293, 295, 299, 304, 90, 294, - 90, 90, 303, 56, 56, 56, 56, 56, 59, 59, - 59, 59, 59, 63, 63, 63, 63, 63, 74, 74, - 74, 74, 74, 89, 89, 89, 97, 97, 127, 127, - 127, 127, 127, 133, 133, 133, 133, 133, 136, 136, - 136, 136, 136, 138, 138, 138, 138, 138, 143, 90, + 237, 95, 239, 95, 248, 95, 95, 95, 95, 95, + 244, 250, 238, 246, 251, 247, 255, 245, 253, 254, + 95, 252, 95, 95, 95, 95, 95, 95, 249, 95, + 95, 95, 256, 95, 95, 258, 95, 264, 268, 95, + 267, 257, 263, 272, 95, 95, 265, 269, 266, 95, + 271, 95, 270, 95, 95, 278, 281, 277, 273, 279, + 95, 95, 282, 280, 95, 95, 95, 95, 283, 95, + 95, 95, 95, 291, 289, 95, 284, 292, 285, 290, + 293, 288, 95, 95, 294, 95, 298, 95, 95, 95, + 295, 95, 297, 302, 300, 304, 95, 95, 95, 299, - 143, 143, 143, 176, 176, 176, 176, 176, 179, 179, - 179, 179, 179, 290, 90, 90, 283, 90, 90, 274, - 273, 90, 90, 263, 262, 261, 90, 90, 90, 90, - 249, 248, 247, 90, 90, 90, 90, 231, 230, 229, - 90, 90, 90, 90, 90, 90, 90, 210, 209, 208, - 207, 90, 182, 175, 174, 173, 90, 90, 90, 148, - 147, 142, 132, 131, 130, 126, 125, 98, 90, 94, - 91, 76, 69, 62, 305, 7, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 95, 95, 309, 301, 95, 95, 95, 95, 311, + 314, 315, 306, 308, 317, 95, 312, 313, 310, 95, + 307, 95, 316, 57, 57, 57, 57, 57, 57, 57, + 60, 60, 60, 60, 60, 60, 60, 64, 64, 64, + 64, 64, 64, 64, 67, 95, 95, 67, 76, 76, + 76, 76, 76, 76, 76, 92, 92, 92, 92, 92, + 102, 102, 102, 102, 132, 132, 132, 132, 132, 132, + 132, 139, 139, 139, 139, 139, 139, 139, 142, 142, + 142, 142, 142, 142, 142, 144, 144, 144, 144, 144, + 144, 144, 149, 303, 149, 149, 149, 149, 149, 155, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305 + 155, 95, 155, 186, 186, 186, 186, 186, 186, 186, + 189, 189, 189, 189, 189, 189, 189, 95, 296, 95, + 95, 287, 286, 95, 95, 276, 275, 274, 95, 95, + 95, 95, 262, 261, 260, 95, 95, 95, 95, 243, + 242, 241, 95, 95, 95, 95, 95, 95, 95, 221, + 220, 219, 218, 95, 192, 185, 184, 183, 95, 95, + 95, 157, 156, 148, 138, 137, 136, 131, 130, 103, + 95, 99, 96, 78, 71, 63, 318, 7, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318 } ; -static const flex_int16_t yy_chk[634] = +static const flex_int16_t yy_chk[742] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 3, 4, 5, - 6, 12, 5, 6, 13, 23, 3, 4, 16, 20, - 15, 317, 13, 15, 15, 28, 28, 22, 20, 24, - 30, 30, 13, 12, 22, 24, 16, 15, 36, 25, - 24, 25, 37, 40, 23, 24, 43, 38, 39, 41, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 4, 5, 6, 12, 5, 6, + 13, 15, 3, 4, 15, 15, 16, 20, 13, 40, + 22, 23, 23, 23, 23, 37, 24, 40, 13, 20, + 22, 15, 24, 29, 29, 12, 338, 24, 31, 31, - 25, 38, 44, 41, 36, 43, 39, 40, 38, 40, - 44, 37, 43, 42, 38, 45, 41, 42, 46, 47, - 48, 53, 49, 50, 63, 51, 70, 47, 48, 51, - 184, 72, 45, 49, 74, 81, 51, 46, 65, 50, - 65, 49, 87, 184, 48, 75, 63, 89, 70, 72, - 101, 75, 74, 81, 53, 88, 99, 88, 89, 100, - 87, 102, 65, 103, 101, 104, 88, 100, 99, 75, - 101, 105, 107, 102, 104, 106, 108, 109, 112, 103, - 114, 113, 106, 115, 116, 304, 107, 117, 118, 119, - 127, 105, 109, 121, 122, 108, 120, 114, 116, 117, + 16, 37, 118, 38, 25, 24, 25, 25, 25, 25, + 26, 46, 26, 26, 26, 26, 23, 25, 41, 25, + 39, 25, 38, 118, 39, 42, 25, 26, 46, 42, + 45, 39, 41, 48, 41, 43, 44, 39, 45, 43, + 47, 48, 42, 49, 50, 44, 51, 54, 64, 52, + 72, 49, 44, 52, 66, 50, 66, 74, 76, 47, + 52, 105, 51, 50, 77, 104, 117, 49, 107, 105, + 77, 83, 83, 83, 83, 92, 64, 104, 72, 112, + 107, 74, 76, 54, 66, 89, 89, 89, 89, 117, + 111, 337, 92, 112, 77, 83, 90, 111, 90, 90, - 118, 112, 113, 120, 115, 121, 122, 118, 128, 133, - 136, 119, 127, 129, 135, 129, 135, 137, 138, 140, - 149, 139, 144, 137, 154, 140, 152, 300, 136, 150, - 128, 133, 151, 150, 152, 149, 138, 129, 135, 139, - 144, 137, 153, 140, 155, 154, 151, 156, 155, 157, - 158, 159, 160, 161, 163, 156, 153, 162, 164, 159, - 160, 161, 165, 163, 166, 168, 157, 167, 169, 162, - 158, 165, 171, 168, 170, 172, 169, 176, 177, 178, - 164, 178, 170, 179, 180, 166, 181, 167, 187, 172, - 189, 191, 181, 171, 188, 187, 192, 195, 201, 176, + 90, 90, 91, 106, 91, 91, 91, 91, 93, 89, + 93, 93, 109, 90, 110, 120, 108, 106, 113, 91, + 114, 109, 336, 106, 119, 93, 94, 333, 94, 94, + 94, 94, 108, 122, 110, 114, 120, 113, 94, 94, + 121, 119, 124, 94, 123, 122, 125, 94, 94, 94, + 94, 94, 94, 125, 121, 126, 123, 127, 132, 133, + 134, 139, 134, 123, 124, 143, 141, 126, 141, 127, + 142, 143, 146, 144, 145, 161, 158, 201, 146, 150, + 150, 150, 150, 161, 159, 160, 132, 133, 159, 139, + 134, 158, 327, 201, 142, 143, 141, 144, 145, 160, - 177, 179, 180, 178, 192, 193, 188, 191, 196, 193, - 181, 195, 189, 197, 198, 200, 197, 196, 202, 201, - 204, 200, 202, 205, 211, 212, 206, 213, 219, 204, - 217, 214, 205, 198, 206, 221, 217, 222, 223, 226, - 234, 299, 211, 213, 205, 214, 212, 220, 222, 223, - 224, 221, 220, 219, 225, 220, 227, 224, 226, 232, - 233, 235, 234, 236, 238, 239, 225, 242, 227, 244, - 246, 233, 238, 245, 236, 250, 232, 245, 251, 255, - 252, 239, 235, 256, 246, 244, 242, 250, 252, 255, - 256, 257, 258, 259, 264, 260, 265, 251, 269, 257, + 162, 163, 146, 150, 152, 167, 152, 152, 152, 152, + 153, 164, 153, 153, 162, 164, 165, 166, 168, 175, + 169, 152, 163, 170, 165, 167, 168, 153, 169, 171, + 172, 170, 173, 174, 166, 176, 177, 178, 179, 172, + 175, 171, 174, 180, 177, 178, 179, 181, 186, 187, + 188, 189, 188, 191, 173, 176, 194, 190, 197, 191, + 198, 181, 199, 202, 180, 197, 203, 208, 205, 194, + 203, 202, 198, 210, 211, 189, 186, 187, 206, 210, + 188, 190, 205, 191, 199, 207, 208, 206, 207, 212, + 214, 215, 222, 212, 216, 211, 223, 224, 228, 214, - 258, 267, 269, 271, 265, 270, 272, 275, 259, 260, - 264, 271, 270, 267, 276, 272, 277, 278, 276, 281, - 285, 272, 282, 289, 278, 288, 282, 285, 275, 288, - 292, 293, 277, 295, 298, 296, 301, 293, 281, 297, - 303, 295, 298, 294, 289, 292, 296, 303, 291, 290, - 287, 286, 301, 306, 306, 306, 306, 306, 307, 307, - 307, 307, 307, 308, 308, 308, 308, 308, 309, 309, - 309, 309, 309, 310, 310, 310, 311, 311, 312, 312, - 312, 312, 312, 313, 313, 313, 313, 313, 314, 314, - 314, 314, 314, 315, 315, 315, 315, 315, 316, 284, + 215, 225, 216, 230, 228, 232, 231, 233, 234, 235, + 222, 231, 215, 224, 231, 225, 235, 223, 233, 234, + 236, 232, 237, 238, 246, 244, 245, 247, 230, 248, + 250, 251, 236, 254, 256, 238, 264, 245, 250, 257, + 248, 237, 244, 257, 258, 263, 246, 251, 247, 269, + 256, 265, 254, 268, 270, 264, 269, 263, 258, 265, + 271, 272, 270, 268, 273, 277, 278, 280, 271, 282, + 283, 288, 284, 282, 278, 285, 272, 283, 273, 280, + 284, 277, 289, 290, 285, 294, 289, 291, 298, 295, + 285, 302, 288, 295, 291, 298, 301, 306, 305, 290, - 316, 316, 316, 318, 318, 318, 318, 318, 319, 319, - 319, 319, 319, 283, 280, 279, 274, 268, 266, 263, - 261, 254, 253, 249, 248, 247, 243, 241, 240, 237, - 231, 230, 229, 228, 218, 216, 215, 209, 208, 207, - 203, 199, 194, 190, 186, 185, 183, 182, 175, 174, - 173, 146, 142, 132, 131, 130, 111, 110, 97, 96, - 92, 82, 68, 67, 66, 61, 58, 35, 32, 29, - 26, 19, 14, 11, 7, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 301, 308, 311, 306, 294, 309, 314, 316, 317, 308, + 311, 313, 302, 305, 316, 312, 309, 310, 307, 304, + 303, 300, 314, 319, 319, 319, 319, 319, 319, 319, + 320, 320, 320, 320, 320, 320, 320, 321, 321, 321, + 321, 321, 321, 321, 322, 299, 297, 322, 323, 323, + 323, 323, 323, 323, 323, 324, 324, 324, 324, 324, + 325, 325, 325, 325, 326, 326, 326, 326, 326, 326, + 326, 328, 328, 328, 328, 328, 328, 328, 329, 329, + 329, 329, 329, 329, 329, 330, 330, 330, 330, 330, + 330, 330, 331, 296, 331, 331, 331, 331, 331, 332, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305 + 332, 293, 332, 334, 334, 334, 334, 334, 334, 334, + 335, 335, 335, 335, 335, 335, 335, 292, 287, 281, + 279, 276, 274, 267, 266, 262, 261, 260, 255, 253, + 252, 249, 243, 242, 241, 239, 229, 227, 226, 220, + 219, 218, 213, 209, 204, 200, 196, 195, 193, 192, + 185, 184, 183, 155, 148, 138, 137, 136, 116, 115, + 102, 101, 97, 84, 70, 69, 68, 62, 59, 36, + 33, 30, 27, 19, 14, 11, 7, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318 } ; /* The intent behind this definition is that it'll catch @@ -886,9 +916,9 @@ static const flex_int16_t yy_chk[634] = #line 23 "lexer.lpp" #define YY_USER_ACTION loc.columns(yyleng); -#line 889 "lexer.cpp" +#line 919 "lexer.cpp" -#line 891 "lexer.cpp" +#line 921 "lexer.cpp" #define INITIAL 0 #define COMMENT_BLOCK_STATE 1 @@ -1148,15 +1178,15 @@ YY_DECL } { -#line 36 "lexer.lpp" +#line 40 "lexer.lpp" -#line 40 "lexer.lpp" +#line 44 "lexer.lpp" loc.step(); -#line 1159 "lexer.cpp" +#line 1189 "lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1183,13 +1213,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 306 ) + if ( yy_current_state >= 319 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 305 ); + while ( yy_current_state != 318 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -1211,522 +1241,542 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 43 "lexer.lpp" +#line 47 "lexer.lpp" { loc.step(); } YY_BREAK case 2: /* rule 2 can match eol */ YY_RULE_SETUP -#line 45 "lexer.lpp" +#line 49 "lexer.lpp" { loc.lines(yyleng); loc.step(); } YY_BREAK case 3: YY_RULE_SETUP -#line 47 "lexer.lpp" +#line 51 "lexer.lpp" YY_BREAK case 4: YY_RULE_SETUP -#line 49 "lexer.lpp" +#line 53 "lexer.lpp" { BEGIN(COMMENT_BLOCK_STATE); } YY_BREAK case 5: YY_RULE_SETUP -#line 50 "lexer.lpp" +#line 54 "lexer.lpp" YY_BREAK case 6: /* rule 6 can match eol */ YY_RULE_SETUP -#line 51 "lexer.lpp" +#line 55 "lexer.lpp" { loc.lines(yyleng); loc.step(); } YY_BREAK case 7: YY_RULE_SETUP -#line 52 "lexer.lpp" +#line 56 "lexer.lpp" { BEGIN(INITIAL); } YY_BREAK case 8: YY_RULE_SETUP -#line 54 "lexer.lpp" +#line 58 "lexer.lpp" { BEGIN(DEVELOPER_BLOCK_STATE); } YY_BREAK case 9: YY_RULE_SETUP -#line 55 "lexer.lpp" +#line 59 "lexer.lpp" YY_BREAK case 10: /* rule 10 can match eol */ YY_RULE_SETUP -#line 56 "lexer.lpp" +#line 60 "lexer.lpp" { loc.lines(yyleng); loc.step(); } YY_BREAK case 11: YY_RULE_SETUP -#line 57 "lexer.lpp" +#line 61 "lexer.lpp" { BEGIN(INITIAL); } YY_BREAK case 12: YY_RULE_SETUP -#line 59 "lexer.lpp" +#line 63 "lexer.lpp" { return h1::parser::make_BREAKPOINT(loc); } YY_BREAK case 13: YY_RULE_SETUP -#line 60 "lexer.lpp" +#line 64 "lexer.lpp" { return h1::parser::make_PROFBEGIN(loc); } YY_BREAK case 14: YY_RULE_SETUP -#line 61 "lexer.lpp" +#line 65 "lexer.lpp" { return h1::parser::make_PROFEND(loc); } YY_BREAK case 15: YY_RULE_SETUP -#line 62 "lexer.lpp" +#line 66 "lexer.lpp" { return h1::parser::make_INCLUDE(loc); } YY_BREAK case 16: YY_RULE_SETUP -#line 63 "lexer.lpp" +#line 67 "lexer.lpp" { return h1::parser::make_USINGTREE(loc); } YY_BREAK case 17: YY_RULE_SETUP -#line 64 "lexer.lpp" +#line 68 "lexer.lpp" { return h1::parser::make_ANIMTREE(loc); } YY_BREAK case 18: YY_RULE_SETUP -#line 65 "lexer.lpp" +#line 69 "lexer.lpp" { return h1::parser::make_ENDON(loc); } YY_BREAK case 19: YY_RULE_SETUP -#line 66 "lexer.lpp" +#line 70 "lexer.lpp" { return h1::parser::make_NOTIFY(loc); } YY_BREAK case 20: YY_RULE_SETUP -#line 67 "lexer.lpp" +#line 71 "lexer.lpp" { return h1::parser::make_WAIT(loc); } YY_BREAK case 21: YY_RULE_SETUP -#line 68 "lexer.lpp" +#line 72 "lexer.lpp" { return h1::parser::make_WAITTILL(loc); } YY_BREAK case 22: YY_RULE_SETUP -#line 69 "lexer.lpp" +#line 73 "lexer.lpp" { return h1::parser::make_WAITTILLMATCH(loc); } YY_BREAK case 23: YY_RULE_SETUP -#line 70 "lexer.lpp" +#line 74 "lexer.lpp" { return h1::parser::make_WAITTILLFRAMEEND(loc); } YY_BREAK case 24: YY_RULE_SETUP -#line 71 "lexer.lpp" +#line 75 "lexer.lpp" { return h1::parser::make_WAITFRAME(loc); } YY_BREAK case 25: YY_RULE_SETUP -#line 72 "lexer.lpp" +#line 76 "lexer.lpp" { return h1::parser::make_IF(loc); } YY_BREAK case 26: YY_RULE_SETUP -#line 73 "lexer.lpp" +#line 77 "lexer.lpp" { return h1::parser::make_ELSE(loc); } YY_BREAK case 27: YY_RULE_SETUP -#line 74 "lexer.lpp" +#line 78 "lexer.lpp" { return h1::parser::make_WHILE(loc); } YY_BREAK case 28: YY_RULE_SETUP -#line 75 "lexer.lpp" +#line 79 "lexer.lpp" { return h1::parser::make_FOR(loc); } YY_BREAK case 29: YY_RULE_SETUP -#line 76 "lexer.lpp" +#line 80 "lexer.lpp" { return h1::parser::make_FOREACH(loc); } YY_BREAK case 30: YY_RULE_SETUP -#line 77 "lexer.lpp" +#line 81 "lexer.lpp" { return h1::parser::make_IN(loc); } YY_BREAK case 31: YY_RULE_SETUP -#line 78 "lexer.lpp" +#line 82 "lexer.lpp" { return h1::parser::make_SWITCH(loc); } YY_BREAK case 32: YY_RULE_SETUP -#line 79 "lexer.lpp" +#line 83 "lexer.lpp" { return h1::parser::make_CASE(loc); } YY_BREAK case 33: YY_RULE_SETUP -#line 80 "lexer.lpp" +#line 84 "lexer.lpp" { return h1::parser::make_DEFAULT(loc); } YY_BREAK case 34: YY_RULE_SETUP -#line 81 "lexer.lpp" +#line 85 "lexer.lpp" { return h1::parser::make_BREAK(loc); } YY_BREAK case 35: YY_RULE_SETUP -#line 82 "lexer.lpp" +#line 86 "lexer.lpp" { return h1::parser::make_CONTINUE(loc); } YY_BREAK case 36: YY_RULE_SETUP -#line 83 "lexer.lpp" +#line 87 "lexer.lpp" { return h1::parser::make_RETURN(loc); } YY_BREAK case 37: YY_RULE_SETUP -#line 84 "lexer.lpp" +#line 88 "lexer.lpp" { return h1::parser::make_THREAD(loc); } YY_BREAK case 38: YY_RULE_SETUP -#line 85 "lexer.lpp" +#line 89 "lexer.lpp" { return h1::parser::make_CHILDTHREAD(loc); } YY_BREAK case 39: YY_RULE_SETUP -#line 86 "lexer.lpp" +#line 90 "lexer.lpp" { return h1::parser::make_THISTHREAD(loc); } YY_BREAK case 40: YY_RULE_SETUP -#line 87 "lexer.lpp" +#line 91 "lexer.lpp" { return h1::parser::make_CALL(loc); } YY_BREAK case 41: YY_RULE_SETUP -#line 88 "lexer.lpp" +#line 92 "lexer.lpp" { return h1::parser::make_TRUE(loc); } YY_BREAK case 42: YY_RULE_SETUP -#line 89 "lexer.lpp" +#line 93 "lexer.lpp" { return h1::parser::make_FALSE(loc); } YY_BREAK case 43: YY_RULE_SETUP -#line 90 "lexer.lpp" +#line 94 "lexer.lpp" { return h1::parser::make_UNDEFINED(loc); } YY_BREAK case 44: YY_RULE_SETUP -#line 91 "lexer.lpp" +#line 95 "lexer.lpp" { return h1::parser::make_SIZE(loc); } YY_BREAK case 45: YY_RULE_SETUP -#line 92 "lexer.lpp" +#line 96 "lexer.lpp" { return h1::parser::make_GAME(loc); } YY_BREAK case 46: YY_RULE_SETUP -#line 93 "lexer.lpp" +#line 97 "lexer.lpp" { return h1::parser::make_SELF(loc); } YY_BREAK case 47: YY_RULE_SETUP -#line 94 "lexer.lpp" +#line 98 "lexer.lpp" { return h1::parser::make_ANIM(loc); } YY_BREAK case 48: YY_RULE_SETUP -#line 95 "lexer.lpp" +#line 99 "lexer.lpp" { return h1::parser::make_LEVEL(loc); } YY_BREAK case 49: YY_RULE_SETUP -#line 96 "lexer.lpp" +#line 100 "lexer.lpp" { return h1::parser::make_LPAREN(loc); } YY_BREAK case 50: YY_RULE_SETUP -#line 97 "lexer.lpp" +#line 101 "lexer.lpp" { return h1::parser::make_RPAREN(loc); } YY_BREAK case 51: YY_RULE_SETUP -#line 98 "lexer.lpp" +#line 102 "lexer.lpp" { return h1::parser::make_LBRACE(loc); } YY_BREAK case 52: YY_RULE_SETUP -#line 99 "lexer.lpp" +#line 103 "lexer.lpp" { return h1::parser::make_RBRACE(loc); } YY_BREAK case 53: YY_RULE_SETUP -#line 100 "lexer.lpp" +#line 104 "lexer.lpp" { return h1::parser::make_LBRACKET(loc); } YY_BREAK case 54: YY_RULE_SETUP -#line 101 "lexer.lpp" +#line 105 "lexer.lpp" { return h1::parser::make_RBRACKET(loc); } YY_BREAK case 55: YY_RULE_SETUP -#line 102 "lexer.lpp" +#line 106 "lexer.lpp" { return h1::parser::make_COMMA(loc); } YY_BREAK case 56: YY_RULE_SETUP -#line 103 "lexer.lpp" +#line 107 "lexer.lpp" { return h1::parser::make_DOT(loc); } YY_BREAK case 57: YY_RULE_SETUP -#line 104 "lexer.lpp" +#line 108 "lexer.lpp" { return h1::parser::make_DOUBLECOLON(loc); } YY_BREAK case 58: YY_RULE_SETUP -#line 105 "lexer.lpp" +#line 109 "lexer.lpp" { return h1::parser::make_COLON(loc); } YY_BREAK case 59: YY_RULE_SETUP -#line 106 "lexer.lpp" +#line 110 "lexer.lpp" { return h1::parser::make_SEMICOLON(loc); } YY_BREAK case 60: YY_RULE_SETUP -#line 107 "lexer.lpp" +#line 111 "lexer.lpp" { return h1::parser::make_QMARK(loc); } YY_BREAK case 61: YY_RULE_SETUP -#line 108 "lexer.lpp" +#line 112 "lexer.lpp" { return h1::parser::make_INCREMENT(loc); } YY_BREAK case 62: YY_RULE_SETUP -#line 109 "lexer.lpp" +#line 113 "lexer.lpp" { return h1::parser::make_DECREMENT(loc); } YY_BREAK case 63: YY_RULE_SETUP -#line 110 "lexer.lpp" +#line 114 "lexer.lpp" { return h1::parser::make_ASSIGN_LSHIFT(loc); } YY_BREAK case 64: YY_RULE_SETUP -#line 111 "lexer.lpp" +#line 115 "lexer.lpp" { return h1::parser::make_ASSIGN_RSHIFT(loc); } YY_BREAK case 65: YY_RULE_SETUP -#line 112 "lexer.lpp" +#line 116 "lexer.lpp" { return h1::parser::make_LSHIFT(loc); } YY_BREAK case 66: YY_RULE_SETUP -#line 113 "lexer.lpp" +#line 117 "lexer.lpp" { return h1::parser::make_RSHIFT(loc); } YY_BREAK case 67: YY_RULE_SETUP -#line 114 "lexer.lpp" +#line 118 "lexer.lpp" { return h1::parser::make_OR(loc); } YY_BREAK case 68: YY_RULE_SETUP -#line 115 "lexer.lpp" +#line 119 "lexer.lpp" { return h1::parser::make_AND(loc); } YY_BREAK case 69: YY_RULE_SETUP -#line 116 "lexer.lpp" +#line 120 "lexer.lpp" { return h1::parser::make_EQUALITY(loc); } YY_BREAK case 70: YY_RULE_SETUP -#line 117 "lexer.lpp" +#line 121 "lexer.lpp" { return h1::parser::make_INEQUALITY(loc); } YY_BREAK case 71: YY_RULE_SETUP -#line 118 "lexer.lpp" +#line 122 "lexer.lpp" { return h1::parser::make_LESS_EQUAL(loc); } YY_BREAK case 72: YY_RULE_SETUP -#line 119 "lexer.lpp" +#line 123 "lexer.lpp" { return h1::parser::make_GREATER_EQUAL(loc); } YY_BREAK case 73: YY_RULE_SETUP -#line 120 "lexer.lpp" +#line 124 "lexer.lpp" { return h1::parser::make_LESS(loc); } YY_BREAK case 74: YY_RULE_SETUP -#line 121 "lexer.lpp" +#line 125 "lexer.lpp" { return h1::parser::make_GREATER(loc); } YY_BREAK case 75: YY_RULE_SETUP -#line 122 "lexer.lpp" +#line 126 "lexer.lpp" { return h1::parser::make_ASSIGN_ADD(loc); } YY_BREAK case 76: YY_RULE_SETUP -#line 123 "lexer.lpp" +#line 127 "lexer.lpp" { return h1::parser::make_ASSIGN_SUB(loc); } YY_BREAK case 77: YY_RULE_SETUP -#line 124 "lexer.lpp" +#line 128 "lexer.lpp" { return h1::parser::make_ASSIGN_MULT(loc); } YY_BREAK case 78: YY_RULE_SETUP -#line 125 "lexer.lpp" +#line 129 "lexer.lpp" { return h1::parser::make_ASSIGN_DIV(loc); } YY_BREAK case 79: YY_RULE_SETUP -#line 126 "lexer.lpp" +#line 130 "lexer.lpp" { return h1::parser::make_ASSIGN_MOD(loc); } YY_BREAK case 80: YY_RULE_SETUP -#line 127 "lexer.lpp" +#line 131 "lexer.lpp" { return h1::parser::make_ASSIGN_BITWISE_OR(loc); } YY_BREAK case 81: YY_RULE_SETUP -#line 128 "lexer.lpp" +#line 132 "lexer.lpp" { return h1::parser::make_ASSIGN_BITWISE_AND(loc); } YY_BREAK case 82: YY_RULE_SETUP -#line 129 "lexer.lpp" +#line 133 "lexer.lpp" { return h1::parser::make_ASSIGN_BITWISE_EXOR(loc); } YY_BREAK case 83: YY_RULE_SETUP -#line 130 "lexer.lpp" +#line 134 "lexer.lpp" { return h1::parser::make_ASSIGN(loc); } YY_BREAK case 84: YY_RULE_SETUP -#line 131 "lexer.lpp" +#line 135 "lexer.lpp" { return h1::parser::make_ADD(loc); } YY_BREAK case 85: YY_RULE_SETUP -#line 132 "lexer.lpp" +#line 136 "lexer.lpp" { return h1::parser::make_SUB(loc); } YY_BREAK case 86: YY_RULE_SETUP -#line 133 "lexer.lpp" +#line 137 "lexer.lpp" { return h1::parser::make_MULT(loc); } YY_BREAK case 87: YY_RULE_SETUP -#line 134 "lexer.lpp" +#line 138 "lexer.lpp" { return h1::parser::make_DIV(loc); } YY_BREAK case 88: YY_RULE_SETUP -#line 135 "lexer.lpp" +#line 139 "lexer.lpp" { return h1::parser::make_MOD(loc); } YY_BREAK case 89: YY_RULE_SETUP -#line 136 "lexer.lpp" +#line 140 "lexer.lpp" { return h1::parser::make_NOT(loc); } YY_BREAK case 90: YY_RULE_SETUP -#line 137 "lexer.lpp" +#line 141 "lexer.lpp" { return h1::parser::make_COMPLEMENT(loc); } YY_BREAK case 91: YY_RULE_SETUP -#line 138 "lexer.lpp" +#line 142 "lexer.lpp" { return h1::parser::make_BITWISE_OR(loc); } YY_BREAK case 92: YY_RULE_SETUP -#line 139 "lexer.lpp" +#line 143 "lexer.lpp" { return h1::parser::make_BITWISE_AND(loc); } YY_BREAK case 93: YY_RULE_SETUP -#line 140 "lexer.lpp" +#line 144 "lexer.lpp" { return h1::parser::make_BITWISE_EXOR(loc); } YY_BREAK case 94: YY_RULE_SETUP -#line 141 "lexer.lpp" +#line 145 "lexer.lpp" { return h1::parser::make_FILE(utils::string::fordslash(yytext), loc); } YY_BREAK case 95: YY_RULE_SETUP -#line 142 "lexer.lpp" +#line 146 "lexer.lpp" { return h1::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); } YY_BREAK case 96: /* rule 96 can match eol */ YY_RULE_SETUP -#line 143 "lexer.lpp" +#line 147 "lexer.lpp" { return h1::parser::make_ISTRING(std::string(yytext).substr(1), loc); } YY_BREAK case 97: /* rule 97 can match eol */ YY_RULE_SETUP -#line 144 "lexer.lpp" +#line 148 "lexer.lpp" { return h1::parser::make_STRING(std::string(yytext), loc); } YY_BREAK case 98: YY_RULE_SETUP -#line 145 "lexer.lpp" -{ return h1::parser::make_FLOAT(std::string(yytext), loc); } +#line 149 "lexer.lpp" +{ return h1::parser::make_COLOR(std::string(yytext).substr(1), loc); } YY_BREAK case 99: YY_RULE_SETUP -#line 146 "lexer.lpp" -{ return h1::parser::make_INTEGER(std::string(yytext), loc); } +#line 150 "lexer.lpp" +{ return h1::parser::make_FLOAT(std::string(yytext), loc); } + YY_BREAK +case 100: +YY_RULE_SETUP +#line 151 "lexer.lpp" +{ return h1::parser::make_INT_OCT(utils::string::oct_to_dec(yytext), loc); } + YY_BREAK +case 101: +YY_RULE_SETUP +#line 152 "lexer.lpp" +{ return h1::parser::make_INT_BIN(utils::string::bin_to_dec(yytext), loc); } + YY_BREAK +case 102: +YY_RULE_SETUP +#line 153 "lexer.lpp" +{ return h1::parser::make_INT_HEX(utils::string::hex_to_dec(yytext), loc); } + YY_BREAK +case 103: +YY_RULE_SETUP +#line 154 "lexer.lpp" +{ return h1::parser::make_INT_DEC(std::string(yytext), loc); } YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT_BLOCK_STATE): case YY_STATE_EOF(DEVELOPER_BLOCK_STATE): -#line 147 "lexer.lpp" +#line 155 "lexer.lpp" { return h1::parser::make_H1EOF(loc); } YY_BREAK -case 100: -/* rule 100 can match eol */ +case 104: +/* rule 104 can match eol */ YY_RULE_SETUP -#line 148 "lexer.lpp" +#line 156 "lexer.lpp" { throw h1::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); } YY_BREAK -case 101: +case 105: YY_RULE_SETUP -#line 150 "lexer.lpp" +#line 158 "lexer.lpp" ECHO; YY_BREAK -#line 1729 "lexer.cpp" +#line 1779 "lexer.cpp" case YY_END_OF_BUFFER: { @@ -2024,7 +2074,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 306 ) + if ( yy_current_state >= 319 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2053,11 +2103,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 306 ) + if ( yy_current_state >= 319 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 305); + yy_is_jam = (yy_current_state == 318); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -2856,6 +2906,6 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 150 "lexer.lpp" +#line 158 "lexer.lpp" diff --git a/src/h1/xsk/lexer.hpp b/src/h1/xsk/lexer.hpp index 36a8948d..97d5a7da 100644 --- a/src/h1/xsk/lexer.hpp +++ b/src/h1/xsk/lexer.hpp @@ -700,7 +700,7 @@ extern int yylex (yyscan_t yyscanner); #undef yyTABLES_NAME #endif -#line 150 "lexer.lpp" +#line 158 "lexer.lpp" #line 706 "lexer.hpp" diff --git a/src/h1/xsk/parser.cpp b/src/h1/xsk/parser.cpp index f70144e9..fff55f52 100644 --- a/src/h1/xsk/parser.cpp +++ b/src/h1/xsk/parser.cpp @@ -228,6 +228,10 @@ namespace xsk { namespace gsc { namespace h1 { value.YY_MOVE_OR_COPY< animtree_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_color: // color + value.YY_MOVE_OR_COPY< color_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_constant: // constant value.YY_MOVE_OR_COPY< constant_ptr > (YY_MOVE (that.value)); break; @@ -278,7 +282,6 @@ namespace xsk { namespace gsc { namespace h1 { value.YY_MOVE_OR_COPY< file_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.YY_MOVE_OR_COPY< float_ptr > (YY_MOVE (that.value)); break; @@ -291,7 +294,6 @@ namespace xsk { namespace gsc { namespace h1 { value.YY_MOVE_OR_COPY< include_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.YY_MOVE_OR_COPY< integer_ptr > (YY_MOVE (that.value)); break; @@ -333,8 +335,12 @@ namespace xsk { namespace gsc { namespace h1 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value)); break; @@ -495,6 +501,10 @@ namespace xsk { namespace gsc { namespace h1 { value.move< animtree_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_color: // color + value.move< color_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_constant: // constant value.move< constant_ptr > (YY_MOVE (that.value)); break; @@ -545,7 +555,6 @@ namespace xsk { namespace gsc { namespace h1 { value.move< file_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.move< float_ptr > (YY_MOVE (that.value)); break; @@ -558,7 +567,6 @@ namespace xsk { namespace gsc { namespace h1 { value.move< include_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.move< integer_ptr > (YY_MOVE (that.value)); break; @@ -600,8 +608,12 @@ namespace xsk { namespace gsc { namespace h1 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.move< std::string > (YY_MOVE (that.value)); break; @@ -762,6 +774,10 @@ namespace xsk { namespace gsc { namespace h1 { value.copy< animtree_ptr > (that.value); break; + case symbol_kind::S_color: // color + value.copy< color_ptr > (that.value); + break; + case symbol_kind::S_constant: // constant value.copy< constant_ptr > (that.value); break; @@ -812,7 +828,6 @@ namespace xsk { namespace gsc { namespace h1 { value.copy< file_ptr > (that.value); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.copy< float_ptr > (that.value); break; @@ -825,7 +840,6 @@ namespace xsk { namespace gsc { namespace h1 { value.copy< include_ptr > (that.value); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.copy< integer_ptr > (that.value); break; @@ -867,8 +881,12 @@ namespace xsk { namespace gsc { namespace h1 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.copy< std::string > (that.value); break; @@ -1028,6 +1046,10 @@ namespace xsk { namespace gsc { namespace h1 { value.move< animtree_ptr > (that.value); break; + case symbol_kind::S_color: // color + value.move< color_ptr > (that.value); + break; + case symbol_kind::S_constant: // constant value.move< constant_ptr > (that.value); break; @@ -1078,7 +1100,6 @@ namespace xsk { namespace gsc { namespace h1 { value.move< file_ptr > (that.value); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.move< float_ptr > (that.value); break; @@ -1091,7 +1112,6 @@ namespace xsk { namespace gsc { namespace h1 { value.move< include_ptr > (that.value); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.move< integer_ptr > (that.value); break; @@ -1133,8 +1153,12 @@ namespace xsk { namespace gsc { namespace h1 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.move< std::string > (that.value); break; @@ -1549,6 +1573,10 @@ namespace xsk { namespace gsc { namespace h1 { yylhs.value.emplace< animtree_ptr > (); break; + case symbol_kind::S_color: // color + yylhs.value.emplace< color_ptr > (); + break; + case symbol_kind::S_constant: // constant yylhs.value.emplace< constant_ptr > (); break; @@ -1599,7 +1627,6 @@ namespace xsk { namespace gsc { namespace h1 { yylhs.value.emplace< file_ptr > (); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float yylhs.value.emplace< float_ptr > (); break; @@ -1612,7 +1639,6 @@ namespace xsk { namespace gsc { namespace h1 { yylhs.value.emplace< include_ptr > (); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer yylhs.value.emplace< integer_ptr > (); break; @@ -1654,8 +1680,12 @@ namespace xsk { namespace gsc { namespace h1 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" yylhs.value.emplace< std::string > (); break; @@ -1810,1225 +1840,1237 @@ namespace xsk { namespace gsc { namespace h1 { switch (yyn) { case 2: // root: program -#line 243 "parser.ypp" +#line 246 "parser.ypp" { ast = std::move(yystack_[0].value.as < program_ptr > ()); } -#line 1816 "parser.cpp" - break; - - case 3: // root: %empty -#line 244 "parser.ypp" - { ast = std::make_unique(yylhs.location); } -#line 1822 "parser.cpp" - break; - - case 4: // program: program include -#line 249 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } -#line 1828 "parser.cpp" - break; - - case 5: // program: program define -#line 251 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } -#line 1834 "parser.cpp" - break; - - case 6: // program: include -#line 253 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } -#line 1840 "parser.cpp" - break; - - case 7: // program: define -#line 255 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1846 "parser.cpp" break; - case 8: // include: "#include" file ";" -#line 260 "parser.ypp" - { yylhs.value.as < include_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < file_ptr > ())); } + case 3: // root: %empty +#line 247 "parser.ypp" + { ast = std::make_unique(yylhs.location); } #line 1852 "parser.cpp" break; - case 9: // define: usingtree -#line 264 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_usingtree = std::move(yystack_[0].value.as < usingtree_ptr > ()); } + case 4: // program: program include +#line 252 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } #line 1858 "parser.cpp" break; - case 10: // define: constant -#line 265 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_constant = std::move(yystack_[0].value.as < constant_ptr > ()); } + case 5: // program: program define +#line 254 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1864 "parser.cpp" break; - case 11: // define: thread -#line 266 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_thread = std::move(yystack_[0].value.as < thread_ptr > ()); } + case 6: // program: include +#line 256 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } #line 1870 "parser.cpp" break; - case 12: // usingtree: "#using_animtree" "(" string ")" ";" -#line 271 "parser.ypp" - { yylhs.value.as < usingtree_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < string_ptr > ())); } + case 7: // program: define +#line 258 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1876 "parser.cpp" break; - case 13: // constant: name "=" expr ";" -#line 276 "parser.ypp" - { yylhs.value.as < constant_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 8: // include: "#include" file ";" +#line 263 "parser.ypp" + { yylhs.value.as < include_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < file_ptr > ())); } #line 1882 "parser.cpp" break; - case 14: // thread: name "(" parameters ")" stmt_block -#line 281 "parser.ypp" - { yylhs.value.as < thread_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < name_ptr > ()), std::move(yystack_[2].value.as < parameters_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } + case 9: // define: usingtree +#line 267 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_usingtree = std::move(yystack_[0].value.as < usingtree_ptr > ()); } #line 1888 "parser.cpp" break; - case 15: // parameters: parameters "," name -#line 286 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::move(yystack_[2].value.as < parameters_ptr > ()); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } + case 10: // define: constant +#line 268 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_constant = std::move(yystack_[0].value.as < constant_ptr > ()); } #line 1894 "parser.cpp" break; - case 16: // parameters: name -#line 288 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } + case 11: // define: thread +#line 269 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_thread = std::move(yystack_[0].value.as < thread_ptr > ()); } #line 1900 "parser.cpp" break; - case 17: // parameters: %empty -#line 290 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); } + case 12: // usingtree: "#using_animtree" "(" string ")" ";" +#line 274 "parser.ypp" + { yylhs.value.as < usingtree_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < string_ptr > ())); } #line 1906 "parser.cpp" break; - case 18: // stmt: stmt_block -#line 294 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_list = std::move(yystack_[0].value.as < stmt_list_ptr > ()); } + case 13: // constant: name "=" expr ";" +#line 279 "parser.ypp" + { yylhs.value.as < constant_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } #line 1912 "parser.cpp" break; - case 19: // stmt: stmt_call -#line 295 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_call = std::move(yystack_[0].value.as < stmt_call_ptr > ()); } + case 14: // thread: name "(" parameters ")" stmt_block +#line 284 "parser.ypp" + { yylhs.value.as < thread_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < name_ptr > ()), std::move(yystack_[2].value.as < parameters_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } #line 1918 "parser.cpp" break; - case 20: // stmt: stmt_assign -#line 296 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_assign = std::move(yystack_[0].value.as < stmt_assign_ptr > ()); } + case 15: // parameters: parameters "," name +#line 289 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::move(yystack_[2].value.as < parameters_ptr > ()); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } #line 1924 "parser.cpp" break; - case 21: // stmt: stmt_endon -#line 297 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_endon = std::move(yystack_[0].value.as < stmt_endon_ptr > ()); } + case 16: // parameters: name +#line 291 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } #line 1930 "parser.cpp" break; - case 22: // stmt: stmt_notify -#line 298 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_notify = std::move(yystack_[0].value.as < stmt_notify_ptr > ()); } + case 17: // parameters: %empty +#line 293 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); } #line 1936 "parser.cpp" break; - case 23: // stmt: stmt_wait -#line 299 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_wait = std::move(yystack_[0].value.as < stmt_wait_ptr > ()); } + case 18: // stmt: stmt_block +#line 297 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_list = std::move(yystack_[0].value.as < stmt_list_ptr > ()); } #line 1942 "parser.cpp" break; - case 24: // stmt: stmt_waittill -#line 300 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill_ptr > ()); } + case 19: // stmt: stmt_call +#line 298 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_call = std::move(yystack_[0].value.as < stmt_call_ptr > ()); } #line 1948 "parser.cpp" break; - case 25: // stmt: stmt_waittillmatch -#line 301 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch_ptr > ()); } + case 20: // stmt: stmt_assign +#line 299 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_assign = std::move(yystack_[0].value.as < stmt_assign_ptr > ()); } #line 1954 "parser.cpp" break; - case 26: // stmt: stmt_waittillframeend -#line 302 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend_ptr > ()); } + case 21: // stmt: stmt_endon +#line 300 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_endon = std::move(yystack_[0].value.as < stmt_endon_ptr > ()); } #line 1960 "parser.cpp" break; - case 27: // stmt: stmt_waitframe -#line 303 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waitframe = std::move(yystack_[0].value.as < stmt_waitframe_ptr > ()); } + case 22: // stmt: stmt_notify +#line 301 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_notify = std::move(yystack_[0].value.as < stmt_notify_ptr > ()); } #line 1966 "parser.cpp" break; - case 28: // stmt: stmt_if -#line 304 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_if = std::move(yystack_[0].value.as < stmt_if_ptr > ()); } + case 23: // stmt: stmt_wait +#line 302 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_wait = std::move(yystack_[0].value.as < stmt_wait_ptr > ()); } #line 1972 "parser.cpp" break; - case 29: // stmt: stmt_ifelse -#line 305 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse_ptr > ()); } + case 24: // stmt: stmt_waittill +#line 303 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill_ptr > ()); } #line 1978 "parser.cpp" break; - case 30: // stmt: stmt_while -#line 306 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_while = std::move(yystack_[0].value.as < stmt_while_ptr > ()); } + case 25: // stmt: stmt_waittillmatch +#line 304 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch_ptr > ()); } #line 1984 "parser.cpp" break; - case 31: // stmt: stmt_for -#line 307 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_for = std::move(yystack_[0].value.as < stmt_for_ptr > ()); } + case 26: // stmt: stmt_waittillframeend +#line 305 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend_ptr > ()); } #line 1990 "parser.cpp" break; - case 32: // stmt: stmt_foreach -#line 308 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach_ptr > ()); } + case 27: // stmt: stmt_waitframe +#line 306 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waitframe = std::move(yystack_[0].value.as < stmt_waitframe_ptr > ()); } #line 1996 "parser.cpp" break; - case 33: // stmt: stmt_switch -#line 309 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_switch = std::move(yystack_[0].value.as < stmt_switch_ptr > ()); } + case 28: // stmt: stmt_if +#line 307 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_if = std::move(yystack_[0].value.as < stmt_if_ptr > ()); } #line 2002 "parser.cpp" break; - case 34: // stmt: stmt_case -#line 310 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_case = std::move(yystack_[0].value.as < stmt_case_ptr > ()); } + case 29: // stmt: stmt_ifelse +#line 308 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse_ptr > ()); } #line 2008 "parser.cpp" break; - case 35: // stmt: stmt_default -#line 311 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_default = std::move(yystack_[0].value.as < stmt_default_ptr > ()); } + case 30: // stmt: stmt_while +#line 309 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_while = std::move(yystack_[0].value.as < stmt_while_ptr > ()); } #line 2014 "parser.cpp" break; - case 36: // stmt: stmt_break -#line 312 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_break = std::move(yystack_[0].value.as < stmt_break_ptr > ()); } + case 31: // stmt: stmt_for +#line 310 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_for = std::move(yystack_[0].value.as < stmt_for_ptr > ()); } #line 2020 "parser.cpp" break; - case 37: // stmt: stmt_continue -#line 313 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_continue = std::move(yystack_[0].value.as < stmt_continue_ptr > ()); } + case 32: // stmt: stmt_foreach +#line 311 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach_ptr > ()); } #line 2026 "parser.cpp" break; - case 38: // stmt: stmt_return -#line 314 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_return = std::move(yystack_[0].value.as < stmt_return_ptr > ()); } + case 33: // stmt: stmt_switch +#line 312 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_switch = std::move(yystack_[0].value.as < stmt_switch_ptr > ()); } #line 2032 "parser.cpp" break; - case 39: // stmt: stmt_breakpoint -#line 315 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_breakpoint = std::move(yystack_[0].value.as < stmt_breakpoint_ptr > ()); } + case 34: // stmt: stmt_case +#line 313 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_case = std::move(yystack_[0].value.as < stmt_case_ptr > ()); } #line 2038 "parser.cpp" break; - case 40: // stmt: stmt_prof_begin -#line 316 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_prof_begin = std::move(yystack_[0].value.as < stmt_prof_begin_ptr > ()); } + case 35: // stmt: stmt_default +#line 314 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_default = std::move(yystack_[0].value.as < stmt_default_ptr > ()); } #line 2044 "parser.cpp" break; - case 41: // stmt: stmt_prof_end -#line 317 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_prof_end = std::move(yystack_[0].value.as < stmt_prof_end_ptr > ()); } + case 36: // stmt: stmt_break +#line 315 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_break = std::move(yystack_[0].value.as < stmt_break_ptr > ()); } #line 2050 "parser.cpp" break; - case 42: // stmt_block: "{" stmt_list "}" -#line 321 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); } + case 37: // stmt: stmt_continue +#line 316 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_continue = std::move(yystack_[0].value.as < stmt_continue_ptr > ()); } #line 2056 "parser.cpp" break; - case 43: // stmt_block: "{" "}" -#line 322 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); } + case 38: // stmt: stmt_return +#line 317 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_return = std::move(yystack_[0].value.as < stmt_return_ptr > ()); } #line 2062 "parser.cpp" break; - case 44: // stmt_list: stmt_list stmt -#line 327 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 39: // stmt: stmt_breakpoint +#line 318 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_breakpoint = std::move(yystack_[0].value.as < stmt_breakpoint_ptr > ()); } #line 2068 "parser.cpp" break; - case 45: // stmt_list: stmt -#line 329 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 40: // stmt: stmt_prof_begin +#line 319 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_prof_begin = std::move(yystack_[0].value.as < stmt_prof_begin_ptr > ()); } #line 2074 "parser.cpp" break; - case 46: // stmt_call: expr_call ";" -#line 334 "parser.ypp" - { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } + case 41: // stmt: stmt_prof_end +#line 320 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_prof_end = std::move(yystack_[0].value.as < stmt_prof_end_ptr > ()); } #line 2080 "parser.cpp" break; - case 47: // stmt_call: expr_call_thread ";" -#line 336 "parser.ypp" - { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } + case 42: // stmt_block: "{" stmt_list "}" +#line 324 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); } #line 2086 "parser.cpp" break; - case 48: // stmt_assign: expr_assign ";" -#line 341 "parser.ypp" - { yylhs.value.as < stmt_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_assign_ptr > ())); } + case 43: // stmt_block: "{" "}" +#line 325 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); } #line 2092 "parser.cpp" break; - case 49: // stmt_endon: object "endon" "(" expr ")" ";" -#line 346 "parser.ypp" - { yylhs.value.as < stmt_endon_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ())); } + case 44: // stmt_list: stmt_list stmt +#line 330 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2098 "parser.cpp" break; - case 50: // stmt_notify: object "notify" "(" expr "," expr_arguments ")" ";" -#line 351 "parser.ypp" - { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 45: // stmt_list: stmt +#line 332 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2104 "parser.cpp" break; - case 51: // stmt_notify: object "notify" "(" expr ")" ";" -#line 353 "parser.ypp" - { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 46: // stmt_call: expr_call ";" +#line 337 "parser.ypp" + { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } #line 2110 "parser.cpp" break; - case 52: // stmt_wait: "wait" expr ";" -#line 358 "parser.ypp" - { yylhs.value.as < stmt_wait_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } + case 47: // stmt_call: expr_call_thread ";" +#line 339 "parser.ypp" + { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } #line 2116 "parser.cpp" break; - case 53: // stmt_waittill: object "waittill" "(" expr "," expr_arguments ")" ";" -#line 363 "parser.ypp" - { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 48: // stmt_assign: expr_assign ";" +#line 344 "parser.ypp" + { yylhs.value.as < stmt_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_assign_ptr > ())); } #line 2122 "parser.cpp" break; - case 54: // stmt_waittill: object "waittill" "(" expr ")" ";" -#line 365 "parser.ypp" - { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 49: // stmt_endon: object "endon" "(" expr ")" ";" +#line 349 "parser.ypp" + { yylhs.value.as < stmt_endon_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ())); } #line 2128 "parser.cpp" break; - case 55: // stmt_waittillmatch: object "waittillmatch" "(" expr "," expr_arguments ")" ";" -#line 370 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 50: // stmt_notify: object "notify" "(" expr "," expr_arguments ")" ";" +#line 354 "parser.ypp" + { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2134 "parser.cpp" break; - case 56: // stmt_waittillmatch: object "waittillmatch" "(" expr ")" ";" -#line 372 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 51: // stmt_notify: object "notify" "(" expr ")" ";" +#line 356 "parser.ypp" + { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2140 "parser.cpp" break; - case 57: // stmt_waittillframeend: "waittillframeend" ";" -#line 377 "parser.ypp" - { yylhs.value.as < stmt_waittillframeend_ptr > () = std::make_unique(yylhs.location); } + case 52: // stmt_wait: "wait" expr ";" +#line 361 "parser.ypp" + { yylhs.value.as < stmt_wait_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2146 "parser.cpp" break; - case 58: // stmt_waitframe: "waitframe" ";" -#line 382 "parser.ypp" - { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } + case 53: // stmt_waittill: object "waittill" "(" expr "," expr_arguments ")" ";" +#line 366 "parser.ypp" + { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2152 "parser.cpp" break; - case 59: // stmt_waitframe: "waitframe" "(" ")" ";" -#line 384 "parser.ypp" - { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } + case 54: // stmt_waittill: object "waittill" "(" expr ")" ";" +#line 368 "parser.ypp" + { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2158 "parser.cpp" break; - case 60: // stmt_if: "if" "(" expr ")" stmt -#line 389 "parser.ypp" - { yylhs.value.as < stmt_if_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 55: // stmt_waittillmatch: object "waittillmatch" "(" expr "," expr_arguments ")" ";" +#line 373 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2164 "parser.cpp" break; - case 61: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 394 "parser.ypp" - { yylhs.value.as < stmt_ifelse_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 56: // stmt_waittillmatch: object "waittillmatch" "(" expr ")" ";" +#line 375 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2170 "parser.cpp" break; - case 62: // stmt_while: "while" "(" expr ")" stmt -#line 399 "parser.ypp" - { yylhs.value.as < stmt_while_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 57: // stmt_waittillframeend: "waittillframeend" ";" +#line 380 "parser.ypp" + { yylhs.value.as < stmt_waittillframeend_ptr > () = std::make_unique(yylhs.location); } #line 2176 "parser.cpp" break; - case 63: // stmt_for: "for" "(" for_stmt ";" for_expr ";" for_stmt ")" stmt -#line 404 "parser.ypp" - { yylhs.value.as < stmt_for_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[6].value.as < stmt_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 58: // stmt_waitframe: "waitframe" ";" +#line 385 "parser.ypp" + { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } #line 2182 "parser.cpp" break; - case 64: // stmt_foreach: "foreach" "(" name "in" expr ")" stmt -#line 409 "parser.ypp" - { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 59: // stmt_waitframe: "waitframe" "(" ")" ";" +#line 387 "parser.ypp" + { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } #line 2188 "parser.cpp" break; - case 65: // stmt_foreach: "foreach" "(" name "," name "in" expr ")" stmt -#line 411 "parser.ypp" - { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[6].value.as < name_ptr > ())), expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 60: // stmt_if: "if" "(" expr ")" stmt +#line 392 "parser.ypp" + { yylhs.value.as < stmt_if_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2194 "parser.cpp" break; - case 66: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 416 "parser.ypp" - { yylhs.value.as < stmt_switch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } + case 61: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 397 "parser.ypp" + { yylhs.value.as < stmt_ifelse_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2200 "parser.cpp" break; - case 67: // stmt_case: "case" integer ":" -#line 421 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } + case 62: // stmt_while: "while" "(" expr ")" stmt +#line 402 "parser.ypp" + { yylhs.value.as < stmt_while_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2206 "parser.cpp" break; - case 68: // stmt_case: "case" neg_integer ":" -#line 423 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } + case 63: // stmt_for: "for" "(" for_stmt ";" for_expr ";" for_stmt ")" stmt +#line 407 "parser.ypp" + { yylhs.value.as < stmt_for_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[6].value.as < stmt_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2212 "parser.cpp" break; - case 69: // stmt_case: "case" string ":" -#line 425 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < string_ptr > ())), std::make_unique(yylhs.location)); } + case 64: // stmt_foreach: "foreach" "(" name "in" expr ")" stmt +#line 412 "parser.ypp" + { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2218 "parser.cpp" break; - case 70: // stmt_default: "default" ":" -#line 430 "parser.ypp" - { yylhs.value.as < stmt_default_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } + case 65: // stmt_foreach: "foreach" "(" name "," name "in" expr ")" stmt +#line 414 "parser.ypp" + { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[6].value.as < name_ptr > ())), expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2224 "parser.cpp" break; - case 71: // stmt_break: "break" ";" -#line 435 "parser.ypp" - { yylhs.value.as < stmt_break_ptr > () = std::make_unique(yylhs.location); } + case 66: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 419 "parser.ypp" + { yylhs.value.as < stmt_switch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } #line 2230 "parser.cpp" break; - case 72: // stmt_continue: "continue" ";" -#line 440 "parser.ypp" - { yylhs.value.as < stmt_continue_ptr > () = std::make_unique(yylhs.location); } + case 67: // stmt_case: "case" integer ":" +#line 424 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } #line 2236 "parser.cpp" break; - case 73: // stmt_return: "return" expr ";" -#line 445 "parser.ypp" - { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } + case 68: // stmt_case: "case" string ":" +#line 426 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < string_ptr > ())), std::make_unique(yylhs.location)); } #line 2242 "parser.cpp" break; - case 74: // stmt_return: "return" ";" -#line 447 "parser.ypp" - { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } + case 69: // stmt_default: "default" ":" +#line 431 "parser.ypp" + { yylhs.value.as < stmt_default_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2248 "parser.cpp" break; - case 75: // stmt_breakpoint: "breakpoint" ";" -#line 452 "parser.ypp" - { yylhs.value.as < stmt_breakpoint_ptr > () = std::make_unique(yylhs.location); } + case 70: // stmt_break: "break" ";" +#line 436 "parser.ypp" + { yylhs.value.as < stmt_break_ptr > () = std::make_unique(yylhs.location); } #line 2254 "parser.cpp" break; - case 76: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 457 "parser.ypp" - { yylhs.value.as < stmt_prof_begin_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 71: // stmt_continue: "continue" ";" +#line 441 "parser.ypp" + { yylhs.value.as < stmt_continue_ptr > () = std::make_unique(yylhs.location); } #line 2260 "parser.cpp" break; - case 77: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 462 "parser.ypp" - { yylhs.value.as < stmt_prof_end_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 72: // stmt_return: "return" expr ";" +#line 446 "parser.ypp" + { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2266 "parser.cpp" break; - case 78: // for_stmt: expr_assign -#line 466 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_list = std::make_unique(yylhs.location); yylhs.value.as < stmt_ptr > ().as_list->stmts.push_back(stmt_ptr(std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_assign_ptr > ())))); } + case 73: // stmt_return: "return" ";" +#line 448 "parser.ypp" + { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2272 "parser.cpp" break; - case 79: // for_stmt: %empty -#line 467 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_node = std::make_unique(yylhs.location); } + case 74: // stmt_breakpoint: "breakpoint" ";" +#line 453 "parser.ypp" + { yylhs.value.as < stmt_breakpoint_ptr > () = std::make_unique(yylhs.location); } #line 2278 "parser.cpp" break; - case 80: // for_expr: expr -#line 471 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 75: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" +#line 458 "parser.ypp" + { yylhs.value.as < stmt_prof_begin_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2284 "parser.cpp" break; - case 81: // for_expr: %empty -#line 472 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location); } + case 76: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" +#line 463 "parser.ypp" + { yylhs.value.as < stmt_prof_end_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2290 "parser.cpp" break; - case 82: // expr: expr_compare -#line 476 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 77: // for_stmt: expr_assign +#line 467 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_list = std::make_unique(yylhs.location); yylhs.value.as < stmt_ptr > ().as_list->stmts.push_back(stmt_ptr(std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_assign_ptr > ())))); } #line 2296 "parser.cpp" break; - case 83: // expr: expr_ternary -#line 477 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 78: // for_stmt: %empty +#line 468 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_node = std::make_unique(yylhs.location); } #line 2302 "parser.cpp" break; - case 84: // expr: expr_binary -#line 478 "parser.ypp" + case 79: // for_expr: expr +#line 472 "parser.ypp" { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2308 "parser.cpp" break; - case 85: // expr: expr_primitive -#line 479 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 80: // for_expr: %empty +#line 473 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location); } #line 2314 "parser.cpp" break; - case 86: // expr_assign: "++" object -#line 483 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } + case 81: // expr: expr_compare +#line 477 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2320 "parser.cpp" break; - case 87: // expr_assign: "--" object -#line 484 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } + case 82: // expr: expr_ternary +#line 478 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2326 "parser.cpp" break; - case 88: // expr_assign: object "++" -#line 485 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 83: // expr: expr_binary +#line 479 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2332 "parser.cpp" break; - case 89: // expr_assign: object "--" -#line 486 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 84: // expr: expr_primitive +#line 480 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2338 "parser.cpp" break; - case 90: // expr_assign: object "=" expr -#line 487 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 85: // expr_assign: "++" object +#line 484 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } #line 2344 "parser.cpp" break; - case 91: // expr_assign: object "|=" expr -#line 488 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 86: // expr_assign: "--" object +#line 485 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } #line 2350 "parser.cpp" break; - case 92: // expr_assign: object "&=" expr -#line 489 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 87: // expr_assign: object "++" +#line 486 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2356 "parser.cpp" break; - case 93: // expr_assign: object "^=" expr -#line 490 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 88: // expr_assign: object "--" +#line 487 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2362 "parser.cpp" break; - case 94: // expr_assign: object "<<=" expr -#line 491 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()),std::move( yystack_[0].value.as < expr_ptr > ())); } + case 89: // expr_assign: object "=" expr +#line 488 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2368 "parser.cpp" break; - case 95: // expr_assign: object ">>=" expr -#line 492 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 90: // expr_assign: object "|=" expr +#line 489 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2374 "parser.cpp" break; - case 96: // expr_assign: object "+=" expr -#line 493 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 91: // expr_assign: object "&=" expr +#line 490 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2380 "parser.cpp" break; - case 97: // expr_assign: object "-=" expr -#line 494 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 92: // expr_assign: object "^=" expr +#line 491 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2386 "parser.cpp" break; - case 98: // expr_assign: object "*=" expr -#line 495 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 93: // expr_assign: object "<<=" expr +#line 492 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()),std::move( yystack_[0].value.as < expr_ptr > ())); } #line 2392 "parser.cpp" break; - case 99: // expr_assign: object "/=" expr -#line 496 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 94: // expr_assign: object ">>=" expr +#line 493 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2398 "parser.cpp" break; - case 100: // expr_assign: object "%=" expr -#line 497 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 95: // expr_assign: object "+=" expr +#line 494 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2404 "parser.cpp" break; - case 101: // expr_compare: expr "||" expr -#line 501 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 96: // expr_assign: object "-=" expr +#line 495 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2410 "parser.cpp" break; - case 102: // expr_compare: expr "&&" expr -#line 502 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 97: // expr_assign: object "*=" expr +#line 496 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2416 "parser.cpp" break; - case 103: // expr_compare: expr "==" expr -#line 503 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 98: // expr_assign: object "/=" expr +#line 497 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2422 "parser.cpp" break; - case 104: // expr_compare: expr "!=" expr -#line 504 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 99: // expr_assign: object "%=" expr +#line 498 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2428 "parser.cpp" break; - case 105: // expr_compare: expr "<=" expr -#line 505 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 100: // expr_compare: expr "||" expr +#line 502 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2434 "parser.cpp" break; - case 106: // expr_compare: expr ">=" expr -#line 506 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 101: // expr_compare: expr "&&" expr +#line 503 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2440 "parser.cpp" break; - case 107: // expr_compare: expr "<" expr -#line 507 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 102: // expr_compare: expr "==" expr +#line 504 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2446 "parser.cpp" break; - case 108: // expr_compare: expr ">" expr -#line 508 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 103: // expr_compare: expr "!=" expr +#line 505 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2452 "parser.cpp" break; - case 109: // expr_ternary: expr "?" expr ":" expr -#line 512 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 104: // expr_compare: expr "<=" expr +#line 506 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2458 "parser.cpp" break; - case 110: // expr_binary: expr "|" expr -#line 516 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 105: // expr_compare: expr ">=" expr +#line 507 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2464 "parser.cpp" break; - case 111: // expr_binary: expr "&" expr -#line 517 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 106: // expr_compare: expr "<" expr +#line 508 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2470 "parser.cpp" break; - case 112: // expr_binary: expr "^" expr -#line 518 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 107: // expr_compare: expr ">" expr +#line 509 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2476 "parser.cpp" break; - case 113: // expr_binary: expr "<<" expr -#line 519 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 108: // expr_ternary: expr "?" expr ":" expr +#line 513 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2482 "parser.cpp" break; - case 114: // expr_binary: expr ">>" expr -#line 520 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 109: // expr_binary: expr "|" expr +#line 517 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2488 "parser.cpp" break; - case 115: // expr_binary: expr "+" expr -#line 521 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 110: // expr_binary: expr "&" expr +#line 518 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2494 "parser.cpp" break; - case 116: // expr_binary: expr "-" expr -#line 522 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 111: // expr_binary: expr "^" expr +#line 519 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2500 "parser.cpp" break; - case 117: // expr_binary: expr "*" expr -#line 523 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 112: // expr_binary: expr "<<" expr +#line 520 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2506 "parser.cpp" break; - case 118: // expr_binary: expr "/" expr -#line 524 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 113: // expr_binary: expr ">>" expr +#line 521 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2512 "parser.cpp" break; - case 119: // expr_binary: expr "%" expr -#line 525 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 114: // expr_binary: expr "+" expr +#line 522 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2518 "parser.cpp" break; - case 120: // expr_primitive: "(" expr ")" -#line 529 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[1].value.as < expr_ptr > ()); } + case 115: // expr_binary: expr "-" expr +#line 523 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2524 "parser.cpp" break; - case 121: // expr_primitive: "~" expr -#line 530 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } + case 116: // expr_binary: expr "*" expr +#line 524 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2530 "parser.cpp" break; - case 122: // expr_primitive: "!" expr -#line 531 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } + case 117: // expr_binary: expr "/" expr +#line 525 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2536 "parser.cpp" break; - case 123: // expr_primitive: expr_call -#line 532 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 118: // expr_binary: expr "%" expr +#line 526 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2542 "parser.cpp" break; - case 124: // expr_primitive: expr_call_thread -#line 533 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 119: // expr_primitive: "(" expr ")" +#line 530 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[1].value.as < expr_ptr > ()); } #line 2548 "parser.cpp" break; - case 125: // expr_primitive: expr_call_childthread -#line 534 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 120: // expr_primitive: "~" expr +#line 531 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2554 "parser.cpp" break; - case 126: // expr_primitive: expr_function -#line 535 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 121: // expr_primitive: "!" expr +#line 532 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2560 "parser.cpp" break; - case 127: // expr_primitive: expr_add_array -#line 536 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 122: // expr_primitive: expr_call +#line 533 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2566 "parser.cpp" break; - case 128: // expr_primitive: expr_array -#line 537 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 123: // expr_primitive: expr_call_thread +#line 534 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2572 "parser.cpp" break; - case 129: // expr_primitive: expr_field -#line 538 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 124: // expr_primitive: expr_call_childthread +#line 535 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2578 "parser.cpp" break; - case 130: // expr_primitive: expr_size -#line 539 "parser.ypp" + case 125: // expr_primitive: expr_function +#line 536 "parser.ypp" { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2584 "parser.cpp" break; - case 131: // expr_primitive: thisthread -#line 540 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < thisthread_ptr > ()); } + case 126: // expr_primitive: expr_add_array +#line 537 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2590 "parser.cpp" break; - case 132: // expr_primitive: empty_array -#line 541 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < empty_array_ptr > ()); } + case 127: // expr_primitive: expr_array +#line 538 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2596 "parser.cpp" break; - case 133: // expr_primitive: undefined -#line 542 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < undefined_ptr > ()); } + case 128: // expr_primitive: expr_field +#line 539 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2602 "parser.cpp" break; - case 134: // expr_primitive: game -#line 543 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < game_ptr > ()); } + case 129: // expr_primitive: expr_size +#line 540 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2608 "parser.cpp" break; - case 135: // expr_primitive: self -#line 544 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < self_ptr > ()); } + case 130: // expr_primitive: thisthread +#line 541 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < thisthread_ptr > ()); } #line 2614 "parser.cpp" break; - case 136: // expr_primitive: anim -#line 545 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < anim_ptr > ()); } + case 131: // expr_primitive: empty_array +#line 542 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < empty_array_ptr > ()); } #line 2620 "parser.cpp" break; - case 137: // expr_primitive: level -#line 546 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < level_ptr > ()); } + case 132: // expr_primitive: undefined +#line 543 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < undefined_ptr > ()); } #line 2626 "parser.cpp" break; - case 138: // expr_primitive: animation -#line 547 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animation_ptr > ()); } + case 133: // expr_primitive: game +#line 544 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < game_ptr > ()); } #line 2632 "parser.cpp" break; - case 139: // expr_primitive: animtree -#line 548 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animtree_ptr > ()); } + case 134: // expr_primitive: self +#line 545 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < self_ptr > ()); } #line 2638 "parser.cpp" break; - case 140: // expr_primitive: name -#line 549 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < name_ptr > ()); } + case 135: // expr_primitive: anim +#line 546 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < anim_ptr > ()); } #line 2644 "parser.cpp" break; - case 141: // expr_primitive: istring -#line 550 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < istring_ptr > ()); } + case 136: // expr_primitive: level +#line 547 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < level_ptr > ()); } #line 2650 "parser.cpp" break; - case 142: // expr_primitive: string -#line 551 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < string_ptr > ()); } + case 137: // expr_primitive: animation +#line 548 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animation_ptr > ()); } #line 2656 "parser.cpp" break; - case 143: // expr_primitive: vector -#line 552 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < vector_ptr > ()); } + case 138: // expr_primitive: animtree +#line 549 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animtree_ptr > ()); } #line 2662 "parser.cpp" break; - case 144: // expr_primitive: neg_float -#line 553 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } + case 139: // expr_primitive: name +#line 550 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < name_ptr > ()); } #line 2668 "parser.cpp" break; - case 145: // expr_primitive: neg_integer -#line 554 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } + case 140: // expr_primitive: istring +#line 551 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < istring_ptr > ()); } #line 2674 "parser.cpp" break; - case 146: // expr_primitive: float -#line 555 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } + case 141: // expr_primitive: string +#line 552 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < string_ptr > ()); } #line 2680 "parser.cpp" break; - case 147: // expr_primitive: integer -#line 556 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } + case 142: // expr_primitive: color +#line 553 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < color_ptr > ()); } #line 2686 "parser.cpp" break; - case 148: // expr_primitive: false -#line 557 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < false_ptr > ()); } + case 143: // expr_primitive: vector +#line 554 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < vector_ptr > ()); } #line 2692 "parser.cpp" break; - case 149: // expr_primitive: true -#line 558 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < true_ptr > ()); } + case 144: // expr_primitive: float +#line 555 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } #line 2698 "parser.cpp" break; - case 150: // expr_call: expr_call_function -#line 562 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 145: // expr_primitive: integer +#line 556 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } #line 2704 "parser.cpp" break; - case 151: // expr_call: expr_call_pointer -#line 563 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 146: // expr_primitive: false +#line 557 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < false_ptr > ()); } #line 2710 "parser.cpp" break; - case 152: // expr_call: object expr_call_function -#line 564 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 147: // expr_primitive: true +#line 558 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < true_ptr > ()); } #line 2716 "parser.cpp" break; - case 153: // expr_call: object expr_call_pointer -#line 565 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 148: // expr_call: expr_call_function +#line 562 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2722 "parser.cpp" break; - case 154: // expr_call_thread: "thread" expr_call_function -#line 569 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 149: // expr_call: expr_call_pointer +#line 563 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2728 "parser.cpp" break; - case 155: // expr_call_thread: "thread" expr_call_pointer -#line 570 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 150: // expr_call: object expr_call_function +#line 564 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2734 "parser.cpp" break; - case 156: // expr_call_thread: object "thread" expr_call_function -#line 571 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 151: // expr_call: object expr_call_pointer +#line 565 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2740 "parser.cpp" break; - case 157: // expr_call_thread: object "thread" expr_call_pointer -#line 572 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 152: // expr_call_thread: "thread" expr_call_function +#line 569 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2746 "parser.cpp" break; - case 158: // expr_call_childthread: "childthread" expr_call_function -#line 576 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 153: // expr_call_thread: "thread" expr_call_pointer +#line 570 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2752 "parser.cpp" break; - case 159: // expr_call_childthread: "childthread" expr_call_pointer -#line 577 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 154: // expr_call_thread: object "thread" expr_call_function +#line 571 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2758 "parser.cpp" break; - case 160: // expr_call_childthread: object "childthread" expr_call_function -#line 578 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 155: // expr_call_thread: object "thread" expr_call_pointer +#line 572 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2764 "parser.cpp" break; - case 161: // expr_call_childthread: object "childthread" expr_call_pointer -#line 579 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 156: // expr_call_childthread: "childthread" expr_call_function +#line 576 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2770 "parser.cpp" break; - case 162: // expr_call_function: name "(" expr_arguments ")" -#line 584 "parser.ypp" - {yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::make_unique(), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 157: // expr_call_childthread: "childthread" expr_call_pointer +#line 577 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2776 "parser.cpp" break; - case 163: // expr_call_function: file "::" name "(" expr_arguments ")" -#line 586 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < file_ptr > ()), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 158: // expr_call_childthread: object "childthread" expr_call_function +#line 578 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2782 "parser.cpp" break; - case 164: // expr_call_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 591 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, false, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 159: // expr_call_childthread: object "childthread" expr_call_pointer +#line 579 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2788 "parser.cpp" break; - case 165: // expr_call_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 593 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, true, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 160: // expr_call_function: name "(" expr_arguments ")" +#line 584 "parser.ypp" + {yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::make_unique(), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2794 "parser.cpp" break; - case 166: // expr_arguments: expr_arguments_filled -#line 597 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } + case 161: // expr_call_function: file "::" name "(" expr_arguments ")" +#line 586 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < file_ptr > ()), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2800 "parser.cpp" break; - case 167: // expr_arguments: expr_arguments_empty -#line 598 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } + case 162: // expr_call_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 591 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, false, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2806 "parser.cpp" break; - case 168: // expr_arguments_filled: expr_arguments "," expr -#line 603 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[2].value.as < expr_arguments_ptr > ()); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } + case 163: // expr_call_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 593 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, true, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2812 "parser.cpp" break; - case 169: // expr_arguments_filled: expr -#line 605 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } + case 164: // expr_arguments: expr_arguments_filled +#line 597 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } #line 2818 "parser.cpp" break; - case 170: // expr_arguments_empty: %empty -#line 610 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); } + case 165: // expr_arguments: expr_arguments_empty +#line 598 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } #line 2824 "parser.cpp" break; - case 171: // expr_function: "::" name -#line 615 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < name_ptr > ())); } + case 166: // expr_arguments_filled: expr_arguments "," expr +#line 603 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[2].value.as < expr_arguments_ptr > ()); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2830 "parser.cpp" break; - case 172: // expr_function: file "::" name -#line 617 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < file_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } + case 167: // expr_arguments_filled: expr +#line 605 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2836 "parser.cpp" break; - case 173: // expr_add_array: "[" expr_arguments_filled "]" -#line 622 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 168: // expr_arguments_empty: %empty +#line 610 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); } #line 2842 "parser.cpp" break; - case 174: // expr_array: object "[" expr "]" -#line 627 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < node_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 169: // expr_function: "::" name +#line 615 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2848 "parser.cpp" break; - case 175: // expr_field: object "." name -#line 632 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } + case 170: // expr_function: file "::" name +#line 617 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < file_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2854 "parser.cpp" break; - case 176: // expr_size: object ".size" -#line 637 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 171: // expr_add_array: "[" expr_arguments_filled "]" +#line 622 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2860 "parser.cpp" break; - case 177: // object: expr_call -#line 641 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 172: // expr_array: object "[" expr "]" +#line 627 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < node_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2866 "parser.cpp" break; - case 178: // object: expr_array -#line 642 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } + case 173: // expr_field: object "." name +#line 632 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2872 "parser.cpp" break; - case 179: // object: expr_field -#line 643 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } + case 174: // expr_size: object ".size" +#line 637 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2878 "parser.cpp" break; - case 180: // object: game -#line 644 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < game_ptr > ()); } + case 175: // object: expr_call +#line 641 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2884 "parser.cpp" break; - case 181: // object: self -#line 645 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < self_ptr > ()); } + case 176: // object: expr_array +#line 642 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2890 "parser.cpp" break; - case 182: // object: anim -#line 646 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < anim_ptr > ()); } + case 177: // object: expr_field +#line 643 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2896 "parser.cpp" break; - case 183: // object: level -#line 647 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < level_ptr > ()); } + case 178: // object: game +#line 644 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < game_ptr > ()); } #line 2902 "parser.cpp" break; - case 184: // object: name -#line 648 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < name_ptr > ()); } + case 179: // object: self +#line 645 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < self_ptr > ()); } #line 2908 "parser.cpp" break; - case 185: // thisthread: "thisthread" -#line 651 "parser.ypp" - { yylhs.value.as < thisthread_ptr > () = std::make_unique(yylhs.location); } + case 180: // object: anim +#line 646 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < anim_ptr > ()); } #line 2914 "parser.cpp" break; - case 186: // empty_array: "[" "]" -#line 652 "parser.ypp" - { yylhs.value.as < empty_array_ptr > () = std::make_unique(yylhs.location); } + case 181: // object: level +#line 647 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < level_ptr > ()); } #line 2920 "parser.cpp" break; - case 187: // undefined: "undefined" -#line 653 "parser.ypp" - { yylhs.value.as < undefined_ptr > () = std::make_unique(yylhs.location); } + case 182: // object: name +#line 648 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < name_ptr > ()); } #line 2926 "parser.cpp" break; - case 188: // game: "game" -#line 654 "parser.ypp" - { yylhs.value.as < game_ptr > () = std::make_unique(yylhs.location); } + case 183: // float: "-" "float" +#line 652 "parser.ypp" + { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 2932 "parser.cpp" break; - case 189: // self: "self" -#line 655 "parser.ypp" - { yylhs.value.as < self_ptr > () = std::make_unique(yylhs.location); } + case 184: // float: "float" +#line 653 "parser.ypp" + { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2938 "parser.cpp" break; - case 190: // anim: "anim" -#line 656 "parser.ypp" - { yylhs.value.as < anim_ptr > () = std::make_unique(yylhs.location); } + case 185: // integer: "-" "int" +#line 657 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 2944 "parser.cpp" break; - case 191: // level: "level" -#line 657 "parser.ypp" - { yylhs.value.as < level_ptr > () = std::make_unique(yylhs.location); } + case 186: // integer: "int" +#line 658 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2950 "parser.cpp" break; - case 192: // animation: "%" "identifier" -#line 658 "parser.ypp" - { yylhs.value.as < animation_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 187: // integer: "octal int" +#line 659 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2956 "parser.cpp" break; - case 193: // animtree: "#animtree" -#line 659 "parser.ypp" - { yylhs.value.as < animtree_ptr > () = std::make_unique(yylhs.location); } + case 188: // integer: "binary int" +#line 660 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2962 "parser.cpp" break; - case 194: // name: "identifier" -#line 660 "parser.ypp" - { yylhs.value.as < name_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 189: // integer: "hexadecimal int" +#line 661 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2968 "parser.cpp" break; - case 195: // file: "file path" -#line 661 "parser.ypp" - { yylhs.value.as < file_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 190: // thisthread: "thisthread" +#line 664 "parser.ypp" + { yylhs.value.as < thisthread_ptr > () = std::make_unique(yylhs.location); } #line 2974 "parser.cpp" break; - case 196: // istring: "localized string" -#line 662 "parser.ypp" - { yylhs.value.as < istring_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 191: // empty_array: "[" "]" +#line 665 "parser.ypp" + { yylhs.value.as < empty_array_ptr > () = std::make_unique(yylhs.location); } #line 2980 "parser.cpp" break; - case 197: // string: "string literal" -#line 663 "parser.ypp" - { yylhs.value.as < string_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 192: // undefined: "undefined" +#line 666 "parser.ypp" + { yylhs.value.as < undefined_ptr > () = std::make_unique(yylhs.location); } #line 2986 "parser.cpp" break; - case 198: // vector: "(" expr "," expr "," expr ")" -#line 664 "parser.ypp" - { yylhs.value.as < vector_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[3].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 193: // game: "game" +#line 667 "parser.ypp" + { yylhs.value.as < game_ptr > () = std::make_unique(yylhs.location); } #line 2992 "parser.cpp" break; - case 199: // neg_float: "-" "float" -#line 665 "parser.ypp" - { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 194: // self: "self" +#line 668 "parser.ypp" + { yylhs.value.as < self_ptr > () = std::make_unique(yylhs.location); } #line 2998 "parser.cpp" break; - case 200: // neg_integer: "-" "int" -#line 666 "parser.ypp" - { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 195: // anim: "anim" +#line 669 "parser.ypp" + { yylhs.value.as < anim_ptr > () = std::make_unique(yylhs.location); } #line 3004 "parser.cpp" break; - case 201: // float: "float" -#line 667 "parser.ypp" - { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 196: // level: "level" +#line 670 "parser.ypp" + { yylhs.value.as < level_ptr > () = std::make_unique(yylhs.location); } #line 3010 "parser.cpp" break; - case 202: // integer: "int" -#line 668 "parser.ypp" - { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 197: // animation: "%" "identifier" +#line 671 "parser.ypp" + { yylhs.value.as < animation_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3016 "parser.cpp" break; - case 203: // false: "false" -#line 669 "parser.ypp" - { yylhs.value.as < false_ptr > () = std::make_unique(yylhs.location); } + case 198: // animtree: "#animtree" +#line 672 "parser.ypp" + { yylhs.value.as < animtree_ptr > () = std::make_unique(yylhs.location); } #line 3022 "parser.cpp" break; - case 204: // true: "true" -#line 670 "parser.ypp" - { yylhs.value.as < true_ptr > () = std::make_unique(yylhs.location); } + case 199: // name: "identifier" +#line 673 "parser.ypp" + { yylhs.value.as < name_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3028 "parser.cpp" break; + case 200: // file: "file path" +#line 674 "parser.ypp" + { yylhs.value.as < file_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3034 "parser.cpp" + break; -#line 3032 "parser.cpp" + case 201: // istring: "localized string" +#line 675 "parser.ypp" + { yylhs.value.as < istring_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3040 "parser.cpp" + break; + + case 202: // string: "string literal" +#line 676 "parser.ypp" + { yylhs.value.as < string_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3046 "parser.cpp" + break; + + case 203: // color: "color" +#line 677 "parser.ypp" + { yylhs.value.as < color_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3052 "parser.cpp" + break; + + case 204: // vector: "(" expr "," expr "," expr ")" +#line 678 "parser.ypp" + { yylhs.value.as < vector_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[3].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } +#line 3058 "parser.cpp" + break; + + case 205: // false: "false" +#line 679 "parser.ypp" + { yylhs.value.as < false_ptr > () = std::make_unique(yylhs.location); } +#line 3064 "parser.cpp" + break; + + case 206: // true: "true" +#line 680 "parser.ypp" + { yylhs.value.as < true_ptr > () = std::make_unique(yylhs.location); } +#line 3070 "parser.cpp" + break; + + +#line 3074 "parser.cpp" default: break; @@ -3222,8 +3264,9 @@ namespace xsk { namespace gsc { namespace h1 { ",", ".", "::", ":", ";", "?", "++", "--", "<<", ">>", "||", "&&", "==", "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", "%", - "file path", "identifier", "string literal", "localized string", "float", - "int", "ADD_ARRAY", "THEN", "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", + "file path", "identifier", "string literal", "localized string", "color", + "float", "int", "octal int", "binary int", "hexadecimal int", + "ADD_ARRAY", "THEN", "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", "$accept", "root", "program", "include", "define", "usingtree", "constant", "thread", "parameters", "stmt", "stmt_block", "stmt_list", "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", @@ -3237,10 +3280,9 @@ namespace xsk { namespace gsc { namespace h1 { "expr_call_childthread", "expr_call_function", "expr_call_pointer", "expr_arguments", "expr_arguments_filled", "expr_arguments_empty", "expr_function", "expr_add_array", "expr_array", "expr_field", - "expr_size", "object", "thisthread", "empty_array", "undefined", "game", - "self", "anim", "level", "animation", "animtree", "name", "file", - "istring", "string", "vector", "neg_float", "neg_integer", "float", - "integer", "false", "true", YY_NULLPTR + "expr_size", "object", "float", "integer", "thisthread", "empty_array", + "undefined", "game", "self", "anim", "level", "animation", "animtree", + "name", "file", "istring", "string", "color", "vector", "false", "true", YY_NULLPTR }; return yy_sname[yysymbol]; } @@ -3505,572 +3547,580 @@ namespace xsk { namespace gsc { namespace h1 { } - const short parser::yypact_ninf_ = -242; + const short parser::yypact_ninf_ = -244; - const short parser::yytable_ninf_ = -185; + const short parser::yytable_ninf_ = -183; const short parser::yypact_[] = { - 8, -74, -23, -242, 25, 8, -242, -242, -242, -242, - -242, -21, -242, -16, -59, -242, -242, -242, -14, 810, - -242, -242, 20, -6, -242, -242, 7, 7, -242, 43, - -242, -242, -242, -242, -242, -242, -242, 810, 684, -14, - 810, 810, -43, 3, -242, -242, -242, 1562, -242, -242, - -242, -242, 21, -242, -242, -242, -242, -242, -242, 53, - 177, -242, 367, -242, -242, -242, 391, 426, 466, 707, - -242, -242, 13, 15, -242, -242, -242, -242, -242, -242, - -242, -242, -242, 14, 59, -14, 60, -242, -242, 65, - 68, -242, -242, 75, 1002, 684, -242, 1645, 80, 91, - -242, -242, -242, -242, -242, -242, -242, -242, 810, 810, - 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, - 810, 810, 810, 810, 810, 810, 810, 7, 7, -242, - 873, -14, -242, -242, 810, -14, -242, 568, -242, -242, - 810, -14, 810, -242, 810, 806, 810, -242, 1527, 262, - 262, 1676, 1686, 454, 454, 203, 203, 203, 203, 1717, - 1758, 1727, 127, 127, -242, -242, -242, -242, -242, -242, - -242, 1412, -242, 32, -242, 100, 93, 104, 126, 810, - 117, 19, 130, 133, 134, 140, 144, -4, 139, 142, - 150, 747, -242, -15, -15, -242, -242, 613, -242, -242, - -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, - -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, - -242, 153, 163, 164, -242, -242, 920, -242, -242, -242, - -242, 65, 806, 100, 1452, 1491, 171, 1645, 810, -242, - -242, 810, -242, 810, 810, 1597, -242, 149, -242, 810, - 810, 770, -14, 810, 132, 168, 174, 176, -242, -242, - -242, -242, 1632, -242, -11, -11, -242, -242, -242, -242, - -242, 180, 187, 188, 192, -242, -242, 810, 810, 810, - 810, 810, 810, 810, 810, 810, 810, 810, 189, 810, - 196, 1645, 49, 50, 71, -242, 191, 1168, 1202, 194, - -242, 966, 9, 1236, -242, -242, -242, -242, 810, 810, - 810, 810, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, - 1645, 1645, 1645, 198, 1270, 810, -242, 209, 210, -242, - 658, 658, 810, 810, -14, 59, 1304, 1046, 1090, 1134, - 810, -242, 72, -242, -242, 225, -242, 211, 1645, 1338, - 229, -242, 216, 217, 810, 218, 810, 223, 810, 83, - -242, 658, 770, 658, 810, -242, -242, 84, -242, 141, - -242, 145, -242, -242, 212, -242, 1372, 224, 231, 240, - 658, 658, -242, -242, -242, -242, -242 + 3, -71, -24, -244, 30, 3, -244, -244, -244, -244, + -244, -23, -244, -29, -54, -244, -244, -244, -49, 648, + -244, -244, -1, -21, -244, -244, -16, -16, -244, 12, + -244, -244, -244, -244, -244, -244, -244, 648, 514, -49, + 648, 648, 10, -37, -244, -244, -244, -244, -244, -244, + -244, 1603, -244, -244, -244, -244, 7, -244, -244, -244, + -244, -244, -244, 383, 604, -244, 671, -244, -244, -244, + -244, -244, 916, 924, 941, 946, -244, -244, 17, 26, + -244, -244, -244, -244, -244, -244, 25, 11, -49, 33, + -244, -244, 45, 35, -244, -244, 53, 1003, 514, -244, + 1686, 52, 42, -244, -244, -244, -244, -244, -244, -244, + -244, 648, 648, 648, 648, 648, 648, 648, 648, 648, + 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, + -16, -16, -244, 715, -49, -244, -244, 648, -49, -244, + 807, -244, -244, 648, -49, 648, -244, 648, 1413, 648, + -244, 1568, 231, 231, 1717, 1727, 710, 710, 41, 41, + 41, 41, 1758, 1799, 1768, 44, 44, -244, -244, -244, + -244, -244, -244, -244, 1453, -244, -17, -244, 69, 57, + 70, 74, 648, 79, -27, 77, 92, 93, 99, 101, + 342, 94, 96, 97, 581, -244, 683, 683, -244, -244, + 852, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, 119, 120, 121, -244, -244, 430, + -244, -244, -244, -244, 45, 1413, 69, 1493, 1532, 104, + 1686, 648, -244, -244, 648, -244, 648, 648, 1638, -244, + 135, -244, 648, 648, 442, -49, 648, 51, 128, 130, + -244, -244, -244, -244, 1673, -244, 175, 175, -244, -244, + -244, -244, -244, 141, 145, 147, 149, -244, -244, 648, + 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, + 150, 648, 152, 1686, 9, 19, 21, -244, 140, 1169, + 1203, 148, -244, 967, -2, 1237, -244, -244, -244, 648, + 648, 648, 648, 1686, 1686, 1686, 1686, 1686, 1686, 1686, + 1686, 1686, 1686, 1686, 159, 1271, 648, -244, 153, 157, + -244, 897, 897, 648, 648, -49, 11, 1305, 1047, 1091, + 1135, 648, -244, 22, -244, -244, 191, -244, 161, 1686, + 1339, 188, -244, 162, 166, 648, 167, 648, 168, 648, + 32, -244, 897, 442, 897, 648, -244, -244, 40, -244, + 58, -244, 67, -244, -244, 179, -244, 1373, 173, 174, + 177, 897, 897, -244, -244, -244, -244, -244 }; const unsigned char parser::yydefact_[] = { - 3, 0, 0, 194, 0, 2, 6, 7, 9, 10, - 11, 0, 195, 0, 0, 1, 4, 5, 17, 0, - 8, 197, 0, 0, 16, 193, 0, 0, 185, 0, - 204, 203, 187, 188, 189, 190, 191, 0, 170, 0, - 0, 0, 0, 0, 196, 201, 202, 0, 82, 83, - 84, 85, 123, 124, 125, 150, 151, 126, 127, 128, - 129, 130, 0, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 0, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 0, 0, 0, 0, 154, 155, 0, - 0, 158, 159, 0, 0, 170, 186, 169, 0, 166, - 167, 171, 122, 121, 199, 200, 192, 13, 0, 0, + 3, 0, 0, 199, 0, 2, 6, 7, 9, 10, + 11, 0, 200, 0, 0, 1, 4, 5, 17, 0, + 8, 202, 0, 0, 16, 198, 0, 0, 190, 0, + 206, 205, 192, 193, 194, 195, 196, 0, 168, 0, + 0, 0, 0, 0, 201, 203, 184, 186, 187, 188, + 189, 0, 81, 82, 83, 84, 122, 123, 124, 148, + 149, 125, 126, 127, 128, 129, 0, 144, 145, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 0, + 140, 141, 142, 143, 146, 147, 0, 0, 0, 0, + 152, 153, 0, 0, 156, 157, 0, 0, 168, 191, + 167, 0, 164, 165, 169, 121, 120, 183, 185, 197, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, - 0, 0, 152, 153, 170, 0, 12, 0, 14, 15, - 0, 0, 0, 120, 0, 169, 0, 173, 0, 113, - 114, 101, 102, 103, 104, 105, 106, 107, 108, 110, - 111, 112, 115, 116, 117, 118, 119, 156, 157, 160, - 161, 0, 175, 0, 166, 172, 0, 0, 0, 0, + 0, 0, 174, 0, 0, 150, 151, 168, 0, 12, + 0, 14, 15, 0, 0, 0, 119, 0, 167, 0, + 171, 0, 112, 113, 100, 101, 102, 103, 104, 105, + 106, 107, 109, 110, 111, 114, 115, 116, 117, 118, + 154, 155, 158, 159, 0, 173, 0, 164, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 43, 0, 0, 45, 18, 0, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 0, 177, 0, 178, 179, 0, 180, 181, 182, - 183, 184, 0, 0, 0, 0, 0, 168, 0, 174, - 162, 170, 75, 170, 170, 0, 57, 0, 58, 0, - 0, 79, 0, 0, 0, 0, 0, 0, 70, 71, - 72, 74, 0, 177, 86, 87, 42, 44, 48, 46, - 47, 0, 0, 0, 0, 88, 89, 0, 0, 0, + 0, 0, 0, 0, 0, 43, 0, 0, 45, 18, + 0, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 0, 175, 0, 176, 177, 0, + 178, 179, 180, 181, 182, 0, 0, 0, 0, 0, + 166, 0, 172, 160, 168, 74, 168, 168, 0, 57, + 0, 58, 0, 0, 78, 0, 0, 0, 0, 0, + 69, 70, 71, 73, 0, 175, 85, 86, 42, 44, + 48, 46, 47, 0, 0, 0, 0, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 109, 0, 0, 0, 52, 0, 0, 0, 0, - 78, 0, 0, 0, 69, 68, 67, 73, 0, 0, - 0, 0, 90, 96, 97, 98, 99, 100, 91, 92, - 93, 95, 94, 0, 0, 170, 163, 0, 0, 59, - 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, - 170, 198, 0, 76, 77, 60, 62, 0, 80, 0, - 0, 66, 0, 0, 170, 0, 170, 0, 170, 0, - 164, 0, 79, 0, 0, 49, 51, 0, 54, 0, - 56, 0, 165, 61, 0, 64, 0, 0, 0, 0, - 0, 0, 50, 53, 55, 63, 65 + 0, 0, 0, 108, 0, 0, 0, 52, 0, 0, + 0, 0, 77, 0, 0, 0, 67, 68, 72, 0, + 0, 0, 0, 89, 95, 96, 97, 98, 99, 90, + 91, 92, 94, 93, 0, 0, 168, 161, 0, 0, + 59, 0, 0, 80, 0, 0, 0, 0, 0, 0, + 0, 168, 204, 0, 75, 76, 60, 62, 0, 79, + 0, 0, 66, 0, 0, 168, 0, 168, 0, 168, + 0, 162, 0, 78, 0, 0, 49, 51, 0, 54, + 0, 56, 0, 163, 61, 0, 64, 0, 0, 0, + 0, 0, 0, 50, 53, 55, 63, 65 }; const short parser::yypgoto_[] = { - -242, -242, -242, 286, 288, -242, -242, -242, -242, -185, - -81, -242, -242, -242, -242, -242, -242, -242, -242, -242, - -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, - -242, -242, -242, -242, -242, -68, -242, 39, -241, -242, - -242, -242, -242, -83, 52, -242, -25, -19, -121, -29, - -242, -242, -242, -22, 78, -242, 106, -242, -242, -242, - 118, 159, 195, 200, -242, -242, 0, 5, -242, -10, - -242, -242, 108, -242, 115, -242, -242 + -244, -244, -244, 223, 226, -244, -244, -244, -244, 15, + -84, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -128, -244, 39, -243, -244, + -244, -244, -244, -106, -118, -244, -25, -19, -53, -26, + -244, -244, -244, -81, -22, -244, 43, -244, 46, -244, + -244, -244, 90, 156, 193, 203, -244, -244, 0, 5, + -244, -10, -244, -244, -244, -244 }; const short parser::yydefgoto_[] = { - 0, 4, 5, 6, 7, 8, 9, 10, 23, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 299, 347, 97, 221, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 98, 174, - 100, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82 + 0, 4, 5, 6, 7, 8, 9, 10, 23, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 301, 348, 100, 224, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 101, 177, + 103, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85 }; const short parser::yytable_[] = { - 11, 87, 91, 138, 22, 11, 13, 88, 92, 99, - 300, 12, 267, 173, 1, 2, 29, 14, 24, 18, - 29, 33, 34, 35, 36, 15, 89, 89, 21, 86, - 333, 90, 90, 130, 20, 84, 131, 132, 29, 101, - 85, -184, -184, 133, -184, 19, 104, 105, -184, -177, - -177, 86, -177, 134, 222, 334, -177, -184, 47, 247, - -184, 83, 89, 135, 136, -177, 99, 90, -177, 248, - 12, 3, 3, 240, 12, 3, 94, 254, 146, 102, - 103, -178, -178, 21, -178, 139, 46, 93, -178, 106, - 326, 327, 12, 3, 3, 146, 146, -178, -184, -184, - -178, 137, 167, 169, 140, 134, -177, -177, 168, 170, - 263, 263, 328, 360, 222, 224, 141, 146, 146, 142, - 292, 300, 293, 294, 372, 377, 146, 89, 89, 146, - 146, 172, 90, 90, 145, 175, 147, 231, -178, -178, - 241, 233, 90, 242, 243, 345, 346, 148, 149, 150, + 11, 90, 94, 141, 22, 11, 13, 91, 95, 1, + 2, 302, 102, 250, 12, 29, 14, 18, 24, 334, + 87, 20, 226, 251, 243, 88, 92, 92, 89, 149, + 15, 93, 93, 21, 225, -175, -175, 3, -175, 104, + 86, 135, -175, 19, 335, -182, -182, 136, -182, 109, + 327, -175, -182, 140, -175, 149, 96, 137, 51, 227, + 328, -182, 329, 361, -182, 149, 92, 149, 149, 12, + 3, 93, 102, 373, 138, 139, 97, 143, 149, 105, + 106, 378, 226, 144, 176, 137, 149, 150, 142, 3, + 265, 265, -175, -175, 225, 112, 113, 145, 149, 379, + 107, 108, -182, -182, 149, 170, 172, 245, 380, 244, + 246, 171, 173, 149, 247, 227, 227, 252, 228, 227, + 302, 125, 126, 127, 128, 129, 127, 128, 129, 249, + 92, 92, 253, 254, 175, 93, 93, 148, 178, 255, + 234, 256, 108, 260, 236, 93, 261, 262, 265, 292, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 244, 246, 263, 171, - 249, 224, 224, 250, 251, 224, 373, 255, 375, 232, - 252, 234, 378, 235, 253, 237, 379, 146, 258, 223, - 296, 146, 259, 231, 231, 385, 386, 231, 90, 90, - 260, 132, 90, 268, 342, -179, -179, 133, -179, 124, - 125, 126, -179, 269, 270, 225, 290, 304, 245, 359, - 308, -179, 105, 305, -179, 306, 89, 309, 310, 224, - 262, 90, 311, 367, 323, 369, 325, 371, 340, 132, - 132, 329, 361, 226, 332, 133, 133, 222, 222, 223, - 364, 231, 302, 380, 351, 227, 90, 109, 110, 343, - 344, 362, -179, -179, 89, 89, 365, 366, 368, 90, - 90, 225, 225, 370, 382, 225, 132, 291, 222, 263, - 222, 383, 133, 122, 123, 124, 125, 126, 297, 298, - 384, 16, 303, 17, 374, 256, 228, 222, 222, 264, - 265, 89, 257, 226, 0, 0, 90, 0, 224, 224, - 0, 227, 227, 0, 0, 227, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 0, 324, 225, - 231, 231, 229, 0, 350, 90, 90, 230, 0, 224, - 224, 224, 122, 123, 124, 125, 126, 336, 337, 338, - 339, 0, 228, 228, 0, 0, 228, 301, 224, 224, - 0, 231, 231, 231, 0, 0, 90, 90, 90, 227, - 0, 348, 349, 0, 0, 0, 0, 0, 0, 0, - 231, 231, 223, 223, 0, 90, 90, 0, 229, 229, - 0, 0, 229, 230, 230, 127, 128, 230, 29, 0, - 0, 0, 129, 376, 0, 0, 0, 0, 225, 225, - 228, 130, 0, 223, 131, 223, 0, 0, 0, -180, - -180, 0, -180, 0, 0, 0, -180, 0, 0, 0, - 0, 0, 223, 223, 0, -180, 226, 226, -180, 225, - 225, 225, 0, 0, 0, 0, 229, 0, 227, 227, - 0, 230, 12, 3, -181, -181, 0, -181, 225, 225, - 0, -181, 0, 0, 0, 0, 0, 226, 301, 226, - -181, 0, 0, -181, 0, 0, -180, -180, 0, 227, - 227, 227, 0, 0, 0, 0, 226, 226, 0, 228, - 228, 0, 0, 0, -182, -182, 0, -182, 227, 227, - 0, -182, 0, 0, 0, 0, 0, 0, 109, 110, - -182, -181, -181, -182, 115, 116, 117, 118, 0, 0, - 228, 228, 228, 0, 0, 229, 229, 0, 0, 0, - 230, 230, 0, 0, 122, 123, 124, 125, 126, 228, - 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -182, -182, 0, 0, 0, 229, 229, 229, 0, - 0, 230, 230, 230, 0, 0, 0, 0, 0, 0, - 0, 176, 177, 178, 0, 229, 229, 0, 0, 179, - 230, 230, 180, 181, 182, 0, 183, 184, 185, 0, - 186, 187, 188, 189, 190, 191, 26, 0, 0, 29, - 0, 0, 0, 0, 33, 34, 35, 36, 0, 0, - 137, 192, 86, 0, 0, 0, 176, 177, 178, 0, - 193, 194, 0, 0, 179, 0, 0, 180, 181, 182, - 0, 183, 184, 185, 0, 186, 187, 188, 189, 190, - 191, 26, 0, 0, 29, 0, 0, 0, 0, 33, - 34, 35, 36, 12, 3, 137, 266, 86, 0, 0, - 0, 176, 177, 178, 0, 193, 194, 0, 0, 179, - 0, 0, 180, 181, 182, 0, 183, 184, 185, 0, - 186, 187, 188, 189, 190, 191, 26, 0, 0, 29, - 0, 0, 25, 0, 33, 34, 35, 36, 12, 3, - 137, 0, 86, 0, 0, 0, 0, 0, 0, 0, - 193, 194, 26, 27, 28, 29, 30, 31, 32, 0, - 33, 34, 35, 36, 37, 0, 0, 0, 95, 96, - 0, 0, 39, 0, 0, -183, -183, 0, -183, 0, - 0, 0, -183, 12, 3, 0, 0, 0, 40, 41, - 0, -183, 0, 0, -183, 25, 0, 0, 0, 0, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 270, + 271, 272, 174, 227, 228, 228, 298, 306, 228, 307, + 259, 309, 235, 229, 237, 310, 238, 311, 240, 312, + 330, 294, 326, 295, 296, 324, 234, 234, 333, 341, + 234, 93, 93, 344, 135, 93, 29, 345, 362, 365, + 136, 363, 366, 226, 226, 269, 367, 369, 371, 133, + 381, 248, 134, 383, 384, 225, 225, 385, 16, 92, + 230, 17, 228, 264, 93, 375, 258, 0, 0, 266, + 267, 135, 135, 229, 226, 0, 226, 136, 136, 0, + 227, 227, 352, 0, 234, 304, 225, 265, 225, 93, + 12, 3, 0, 226, 226, 0, 92, 92, 0, 0, + 0, 93, 93, 343, 0, 225, 225, 0, 135, 0, + 293, 227, 227, 227, 136, 0, 230, 230, 360, 0, + 230, 299, 300, 0, 0, 305, 231, 303, 0, 0, + 227, 227, 368, 92, 370, 0, 372, 0, 93, 228, + 228, 125, 126, 127, 128, 129, 0, 0, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 0, + 325, 234, 234, 232, 0, 351, 93, 93, 0, 0, + 228, 228, 228, 233, 230, 0, 346, 347, 337, 338, + 339, 340, 231, 231, 0, 0, 231, 0, 0, 228, + 228, 0, 234, 234, 234, 0, 0, 93, 93, 93, + 0, 0, 349, 350, 229, 229, 0, 374, 0, 376, + 0, 234, 234, 0, 0, 0, 93, 93, 0, 232, + 232, 0, 0, 232, 0, 0, 386, 387, 0, 233, + 233, 0, 0, 233, 377, 229, 303, 229, 0, 0, + 231, -176, -176, 0, -176, 0, 0, 0, -176, 0, + 0, 230, 230, 257, 229, 229, 0, -176, 0, 21, + -176, 0, 0, 47, 48, 49, 50, 0, 0, 273, + 274, 0, 275, 276, 0, 0, 0, 232, 0, 0, + 0, 0, 230, 230, 230, 0, 0, 233, 130, 0, + 0, 29, 0, 0, 0, 0, 0, 0, -176, -176, + 0, 230, 230, 29, 133, 0, 0, 134, 33, 34, + 35, 36, 277, 278, 0, 0, 89, 231, 231, 0, + 0, 0, 0, 0, 196, 197, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, + 0, 0, 0, 0, 0, 12, 3, 0, 231, 231, + 231, 0, 25, 0, 232, 232, 0, 12, 3, 0, + 0, 0, 0, 0, 233, 233, 0, 231, 231, 0, + 0, 0, 26, 27, 28, 29, 30, 31, 32, 0, + 33, 34, 35, 36, 37, 232, 232, 232, 98, 99, + 0, 0, 39, 0, 0, 233, 233, 233, 0, 0, + 0, 0, 0, 0, 232, 232, 0, 0, 40, 41, + 0, 0, 0, 0, 233, 233, 0, 0, 0, 25, 0, 0, 0, 0, 0, 42, 0, 0, 43, 12, - 3, 21, 44, 45, 46, 26, 27, 28, 29, 30, - 31, 32, 0, 33, 34, 35, 36, 37, 0, 0, - 0, 38, -183, -183, 0, 39, 0, 261, 0, 0, - 0, 29, 0, 0, 0, 0, 33, 34, 35, 36, - 0, 40, 41, 0, 86, 0, 0, 0, 25, 0, - 0, 0, 193, 194, 0, 0, 0, 0, 42, 0, - 0, 43, 12, 3, 21, 44, 45, 46, 26, 27, - 28, 29, 30, 31, 32, 0, 33, 34, 35, 36, - 37, 236, 0, 0, 38, 12, 3, 108, 39, 0, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 0, 0, 0, 0, 40, 41, 0, 0, 0, 0, - 0, 25, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 42, 0, 0, 43, 12, 3, 21, 44, 45, - 46, 26, 27, 28, 29, 30, 31, 32, 0, 33, - 34, 35, 36, 37, 0, 0, 0, 95, 0, 0, - 0, 39, 0, 0, 0, 0, 0, 0, 0, 271, - 272, 0, 273, 274, 0, 0, 0, 40, 41, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 0, - 0, 29, 0, 0, 42, 0, 0, 43, 12, 3, - 21, 44, 45, 46, 130, 0, 0, 131, 0, 0, - 0, 0, 275, 276, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 29, 0, 0, - 0, 0, 0, 0, 0, 12, 3, 0, 0, 0, - 130, 0, 0, 131, 0, 0, 0, 0, 275, 276, + 3, 21, 44, 45, 46, 47, 48, 49, 50, 26, + 27, 28, 29, 30, 31, 32, 0, 33, 34, 35, + 36, 37, 0, 0, 0, 38, 0, 0, 0, 39, + 0, 263, -177, -177, 0, -177, 0, 0, 0, -177, + 0, 0, 0, 0, 0, 40, 41, 0, -177, 0, + 0, -177, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 42, 0, 0, 43, 12, 3, 21, 44, + 45, 46, 47, 48, 49, 50, 26, 27, 28, 29, + 30, 31, 32, 0, 33, 34, 35, 36, 37, -177, + -177, 0, 38, 0, 0, 0, 39, 0, 0, 130, + 131, 0, 29, 0, 0, 0, 132, 0, 0, 0, + 0, 0, 40, 41, 29, 133, 0, 0, 134, 33, + 34, 35, 36, 25, 0, 0, 0, 89, 0, 42, + 0, 0, 43, 12, 3, 21, 44, 45, 46, 47, + 48, 49, 50, 26, 27, 28, 29, 30, 31, 32, + 0, 33, 34, 35, 36, 37, 12, 3, 0, 98, + 0, 0, 0, 39, 112, 113, 0, 0, 12, 3, + 118, 119, 120, 121, 0, 0, 0, 0, 0, 40, + 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 125, 126, 127, 128, 129, 0, 42, 0, 0, 43, + 12, 3, 21, 44, 45, 46, 47, 48, 49, 50, + 179, 180, 181, 0, 0, 0, 0, 0, 182, 0, + 0, 183, 184, 185, 0, 186, 187, 188, 0, 189, + 190, 191, 192, 193, 194, 26, 0, 0, 29, 0, + 0, 0, 0, 33, 34, 35, 36, 0, 0, 140, + 195, 89, 0, 0, 0, 179, 180, 181, 0, 196, + 197, 0, 0, 182, 0, 0, 183, 184, 185, 0, + 186, 187, 188, 0, 189, 190, 191, 192, 193, 194, + 26, 0, 0, 29, 0, 0, 0, 0, 33, 34, + 35, 36, 12, 3, 140, 268, 89, 0, 0, 0, + 179, 180, 181, 0, 196, 197, 0, 0, 182, 0, + 0, 183, 184, 185, 0, 186, 187, 188, 0, 189, + 190, 191, 192, 193, 194, 26, 0, 0, 29, 0, + 0, 0, 0, 33, 34, 35, 36, 12, 3, 140, + 0, 89, 0, 0, -178, -178, 0, -178, 0, 196, + 197, -178, -179, -179, 0, -179, 0, 0, 0, -179, + -178, 0, 0, -178, 0, 0, 0, 0, -179, -180, + -180, -179, -180, 0, -181, -181, -180, -181, 0, 0, + 0, -181, 12, 3, 0, -180, 0, 0, -180, 0, + -181, 0, 0, -181, 0, 0, 0, 0, 29, 0, + 0, -178, -178, 0, 0, 0, 0, 0, 0, -179, + -179, 133, 0, 0, 134, 0, 0, 0, 0, 277, + 278, 0, 0, 0, 0, 0, -180, -180, 0, 0, + 0, -181, -181, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 146, 0, 0, 0, 0, 147, + 0, 0, 12, 3, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 143, 0, 0, 0, 0, 144, 0, - 0, 12, 3, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 353, 0, 0, - 0, 0, 354, 0, 0, 0, 0, 108, 0, 0, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 355, 0, 0, 0, 0, 356, 0, 0, 0, - 0, 108, 0, 0, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, - 122, 123, 124, 125, 126, 357, 0, 0, 0, 0, - 358, 0, 0, 0, 0, 108, 0, 0, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 330, - 0, 119, 120, 121, 122, 123, 124, 125, 126, 108, - 0, 0, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 331, 0, 119, 120, 121, 122, 123, - 124, 125, 126, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 335, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 108, 0, 0, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 341, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 108, 0, 0, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 352, 0, 119, 120, 121, - 122, 123, 124, 125, 126, 108, 0, 0, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 363, - 0, 119, 120, 121, 122, 123, 124, 125, 126, 108, - 0, 0, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 381, 0, 119, 120, 121, 122, 123, - 124, 125, 126, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 239, 0, 0, - 0, 0, 0, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 288, 0, 0, - 0, 0, 0, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 289, 0, 0, - 0, 0, 108, 0, 0, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, - 121, 122, 123, 124, 125, 126, 238, 0, 108, 0, - 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, - 125, 126, 107, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 295, 108, 0, - 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, - 125, 126, 307, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 108, 0, 0, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 0, 0, 0, - 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, - 109, 110, 0, 112, 113, 114, 115, 116, 117, 118, - 109, 110, 0, 0, 113, 114, 115, 116, 117, 118, - 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 109, 110, 0, 0, 113, 114, 115, 116, 117, - 118, 109, 110, 0, 0, 113, 114, 115, 116, 117, - 118, 0, 0, 0, 0, 120, 121, 122, 123, 124, - 125, 126, 0, 0, 0, 120, 0, 122, 123, 124, - 125, 126, 109, 110, 0, 0, 113, 114, 115, 116, - 117, 118, 0, 0, 0, 0, 0, 0, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 354, 0, + 0, 0, 0, 355, 0, 0, 0, 0, 111, 0, + 0, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 122, 123, 124, 125, 126, 127, + 128, 129, 356, 0, 0, 0, 0, 357, 0, 0, + 0, 0, 111, 0, 0, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 123, - 124, 125, 126 + 124, 125, 126, 127, 128, 129, 358, 0, 0, 0, + 0, 359, 0, 0, 0, 0, 111, 0, 0, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 331, 0, 122, 123, 124, 125, 126, 127, 128, 129, + 111, 0, 0, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 332, 0, 122, 123, 124, 125, + 126, 127, 128, 129, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 111, 0, + 0, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 342, 0, 122, 123, 124, 125, 126, 127, + 128, 129, 111, 0, 0, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 353, 0, 122, 123, + 124, 125, 126, 127, 128, 129, 111, 0, 0, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 364, 0, 122, 123, 124, 125, 126, 127, 128, 129, + 111, 0, 0, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 382, 0, 122, 123, 124, 125, + 126, 127, 128, 129, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 239, 0, + 0, 0, 0, 0, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 242, 0, + 0, 0, 0, 0, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 290, 0, + 0, 0, 0, 0, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 291, 0, + 0, 0, 0, 111, 0, 0, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, + 123, 124, 125, 126, 127, 128, 129, 241, 0, 111, + 0, 0, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 122, 123, 124, 125, 126, + 127, 128, 129, 110, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 297, 111, + 0, 0, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 122, 123, 124, 125, 126, + 127, 128, 129, 308, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 111, 0, 0, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 0, 0, + 0, 0, 0, 122, 123, 124, 125, 126, 127, 128, + 129, 112, 113, 0, 115, 116, 117, 118, 119, 120, + 121, 112, 113, 0, 0, 116, 117, 118, 119, 120, + 121, 0, 0, 0, 122, 123, 124, 125, 126, 127, + 128, 129, 0, 0, 122, 123, 124, 125, 126, 127, + 128, 129, 112, 113, 0, 0, 116, 117, 118, 119, + 120, 121, 112, 113, 0, 0, 116, 117, 118, 119, + 120, 121, 0, 0, 0, 0, 123, 124, 125, 126, + 127, 128, 129, 0, 0, 0, 123, 0, 125, 126, + 127, 128, 129, 112, 113, 0, 0, 116, 117, 118, + 119, 120, 121, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, + 126, 127, 128, 129 }; const short parser::yycheck_[] = { - 0, 26, 27, 84, 14, 5, 1, 26, 27, 38, - 251, 85, 197, 134, 6, 7, 31, 40, 18, 40, - 31, 36, 37, 38, 39, 0, 26, 27, 87, 44, - 21, 26, 27, 44, 50, 41, 47, 62, 31, 39, - 46, 28, 29, 62, 31, 66, 89, 90, 35, 28, - 29, 44, 31, 40, 137, 46, 35, 44, 19, 40, - 47, 41, 62, 48, 50, 44, 95, 62, 47, 50, - 85, 86, 86, 41, 85, 86, 37, 81, 46, 40, - 41, 28, 29, 87, 31, 85, 90, 44, 35, 86, - 41, 41, 85, 86, 86, 46, 46, 44, 85, 86, - 47, 42, 127, 128, 44, 40, 85, 86, 127, 128, - 193, 194, 41, 41, 197, 137, 48, 46, 46, 44, - 241, 362, 243, 244, 41, 41, 46, 127, 128, 46, - 46, 131, 127, 128, 95, 135, 45, 137, 85, 86, - 40, 141, 137, 50, 40, 330, 331, 108, 109, 110, + 0, 26, 27, 87, 14, 5, 1, 26, 27, 6, + 7, 254, 38, 40, 85, 31, 40, 40, 18, 21, + 41, 50, 140, 50, 41, 46, 26, 27, 44, 46, + 0, 26, 27, 87, 140, 28, 29, 86, 31, 39, + 41, 66, 35, 66, 46, 28, 29, 66, 31, 86, + 41, 44, 35, 42, 47, 46, 44, 40, 19, 140, + 41, 44, 41, 41, 47, 46, 66, 46, 46, 85, + 86, 66, 98, 41, 48, 50, 37, 44, 46, 40, + 41, 41, 200, 48, 137, 40, 46, 45, 88, 86, + 196, 197, 85, 86, 200, 54, 55, 44, 46, 41, + 90, 91, 85, 86, 46, 130, 131, 50, 41, 40, + 40, 130, 131, 46, 40, 196, 197, 40, 140, 200, + 363, 80, 81, 82, 83, 84, 82, 83, 84, 50, + 130, 131, 40, 40, 134, 130, 131, 98, 138, 40, + 140, 40, 91, 49, 144, 140, 50, 50, 254, 45, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 40, 50, 251, 130, - 40, 193, 194, 40, 40, 197, 361, 187, 363, 140, - 40, 142, 41, 144, 40, 146, 41, 46, 49, 137, - 41, 46, 50, 193, 194, 380, 381, 197, 193, 194, - 50, 226, 197, 50, 325, 28, 29, 226, 31, 82, - 83, 84, 35, 50, 50, 137, 45, 49, 179, 340, - 40, 44, 90, 49, 47, 49, 226, 40, 40, 251, - 191, 226, 40, 354, 45, 356, 40, 358, 40, 264, - 265, 50, 17, 137, 50, 264, 265, 330, 331, 197, - 21, 251, 252, 41, 335, 137, 251, 54, 55, 50, - 50, 50, 85, 86, 264, 265, 50, 50, 50, 264, - 265, 193, 194, 50, 50, 197, 301, 238, 361, 362, - 363, 50, 301, 80, 81, 82, 83, 84, 249, 250, - 50, 5, 253, 5, 362, 187, 137, 380, 381, 193, - 194, 301, 187, 197, -1, -1, 301, -1, 330, 331, - -1, 193, 194, -1, -1, 197, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 251, - 330, 331, 137, -1, 334, 330, 331, 137, -1, 361, - 362, 363, 80, 81, 82, 83, 84, 308, 309, 310, - 311, -1, 193, 194, -1, -1, 197, 251, 380, 381, - -1, 361, 362, 363, -1, -1, 361, 362, 363, 251, - -1, 332, 333, -1, -1, -1, -1, -1, -1, -1, - 380, 381, 330, 331, -1, 380, 381, -1, 193, 194, - -1, -1, 197, 193, 194, 28, 29, 197, 31, -1, - -1, -1, 35, 364, -1, -1, -1, -1, 330, 331, - 251, 44, -1, 361, 47, 363, -1, -1, -1, 28, - 29, -1, 31, -1, -1, -1, 35, -1, -1, -1, - -1, -1, 380, 381, -1, 44, 330, 331, 47, 361, - 362, 363, -1, -1, -1, -1, 251, -1, 330, 331, - -1, 251, 85, 86, 28, 29, -1, 31, 380, 381, - -1, 35, -1, -1, -1, -1, -1, 361, 362, 363, - 44, -1, -1, 47, -1, -1, 85, 86, -1, 361, - 362, 363, -1, -1, -1, -1, 380, 381, -1, 330, - 331, -1, -1, -1, 28, 29, -1, 31, 380, 381, - -1, 35, -1, -1, -1, -1, -1, -1, 54, 55, - 44, 85, 86, 47, 60, 61, 62, 63, -1, -1, - 361, 362, 363, -1, -1, 330, 331, -1, -1, -1, - 330, 331, -1, -1, 80, 81, 82, 83, 84, 380, - 381, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 85, 86, -1, -1, -1, 361, 362, 363, -1, - -1, 361, 362, 363, -1, -1, -1, -1, -1, -1, - -1, 3, 4, 5, -1, 380, 381, -1, -1, 11, - 380, 381, 14, 15, 16, -1, 18, 19, 20, -1, - 22, 23, 24, 25, 26, 27, 28, -1, -1, 31, - -1, -1, -1, -1, 36, 37, 38, 39, -1, -1, - 42, 43, 44, -1, -1, -1, 3, 4, 5, -1, - 52, 53, -1, -1, 11, -1, -1, 14, 15, 16, - -1, 18, 19, 20, -1, 22, 23, 24, 25, 26, - 27, 28, -1, -1, 31, -1, -1, -1, -1, 36, - 37, 38, 39, 85, 86, 42, 43, 44, -1, -1, - -1, 3, 4, 5, -1, 52, 53, -1, -1, 11, - -1, -1, 14, 15, 16, -1, 18, 19, 20, -1, - 22, 23, 24, 25, 26, 27, 28, -1, -1, 31, - -1, -1, 8, -1, 36, 37, 38, 39, 85, 86, - 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, - 52, 53, 28, 29, 30, 31, 32, 33, 34, -1, - 36, 37, 38, 39, 40, -1, -1, -1, 44, 45, - -1, -1, 48, -1, -1, 28, 29, -1, 31, -1, - -1, -1, 35, 85, 86, -1, -1, -1, 64, 65, - -1, 44, -1, -1, 47, 8, -1, -1, -1, -1, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 50, + 50, 50, 133, 254, 196, 197, 41, 49, 200, 49, + 190, 40, 143, 140, 145, 40, 147, 40, 149, 40, + 50, 244, 40, 246, 247, 45, 196, 197, 50, 40, + 200, 196, 197, 50, 229, 200, 31, 50, 17, 21, + 229, 50, 50, 331, 332, 200, 50, 50, 50, 44, + 41, 182, 47, 50, 50, 331, 332, 50, 5, 229, + 140, 5, 254, 194, 229, 363, 190, -1, -1, 196, + 197, 266, 267, 200, 362, -1, 364, 266, 267, -1, + 331, 332, 336, -1, 254, 255, 362, 363, 364, 254, + 85, 86, -1, 381, 382, -1, 266, 267, -1, -1, + -1, 266, 267, 326, -1, 381, 382, -1, 303, -1, + 241, 362, 363, 364, 303, -1, 196, 197, 341, -1, + 200, 252, 253, -1, -1, 256, 140, 254, -1, -1, + 381, 382, 355, 303, 357, -1, 359, -1, 303, 331, + 332, 80, 81, 82, 83, 84, -1, -1, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, + 291, 331, 332, 140, -1, 335, 331, 332, -1, -1, + 362, 363, 364, 140, 254, -1, 331, 332, 309, 310, + 311, 312, 196, 197, -1, -1, 200, -1, -1, 381, + 382, -1, 362, 363, 364, -1, -1, 362, 363, 364, + -1, -1, 333, 334, 331, 332, -1, 362, -1, 364, + -1, 381, 382, -1, -1, -1, 381, 382, -1, 196, + 197, -1, -1, 200, -1, -1, 381, 382, -1, 196, + 197, -1, -1, 200, 365, 362, 363, 364, -1, -1, + 254, 28, 29, -1, 31, -1, -1, -1, 35, -1, + -1, 331, 332, 81, 381, 382, -1, 44, -1, 87, + 47, -1, -1, 91, 92, 93, 94, -1, -1, 9, + 10, -1, 12, 13, -1, -1, -1, 254, -1, -1, + -1, -1, 362, 363, 364, -1, -1, 254, 28, -1, + -1, 31, -1, -1, -1, -1, -1, -1, 85, 86, + -1, 381, 382, 31, 44, -1, -1, 47, 36, 37, + 38, 39, 52, 53, -1, -1, 44, 331, 332, -1, + -1, -1, -1, -1, 52, 53, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, -1, -1, -1, + -1, -1, -1, -1, -1, 85, 86, -1, 362, 363, + 364, -1, 8, -1, 331, 332, -1, 85, 86, -1, + -1, -1, -1, -1, 331, 332, -1, 381, 382, -1, + -1, -1, 28, 29, 30, 31, 32, 33, 34, -1, + 36, 37, 38, 39, 40, 362, 363, 364, 44, 45, + -1, -1, 48, -1, -1, 362, 363, 364, -1, -1, + -1, -1, -1, -1, 381, 382, -1, -1, 64, 65, + -1, -1, -1, -1, 381, 382, -1, -1, -1, 8, -1, -1, -1, -1, -1, 81, -1, -1, 84, 85, - 86, 87, 88, 89, 90, 28, 29, 30, 31, 32, - 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, - -1, 44, 85, 86, -1, 48, -1, 50, -1, -1, - -1, 31, -1, -1, -1, -1, 36, 37, 38, 39, - -1, 64, 65, -1, 44, -1, -1, -1, 8, -1, - -1, -1, 52, 53, -1, -1, -1, -1, 81, -1, - -1, 84, 85, 86, 87, 88, 89, 90, 28, 29, - 30, 31, 32, 33, 34, -1, 36, 37, 38, 39, - 40, 45, -1, -1, 44, 85, 86, 51, 48, -1, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - -1, -1, -1, -1, 64, 65, -1, -1, -1, -1, - -1, 8, -1, 77, 78, 79, 80, 81, 82, 83, - 84, 81, -1, -1, 84, 85, 86, 87, 88, 89, - 90, 28, 29, 30, 31, 32, 33, 34, -1, 36, - 37, 38, 39, 40, -1, -1, -1, 44, -1, -1, - -1, 48, -1, -1, -1, -1, -1, -1, -1, 9, - 10, -1, 12, 13, -1, -1, -1, 64, 65, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 28, -1, - -1, 31, -1, -1, 81, -1, -1, 84, 85, 86, - 87, 88, 89, 90, 44, -1, -1, 47, -1, -1, - -1, -1, 52, 53, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 31, -1, -1, - -1, -1, -1, -1, -1, 85, 86, -1, -1, -1, - 44, -1, -1, 47, -1, -1, -1, -1, 52, 53, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 28, + 29, 30, 31, 32, 33, 34, -1, 36, 37, 38, + 39, 40, -1, -1, -1, 44, -1, -1, -1, 48, + -1, 50, 28, 29, -1, 31, -1, -1, -1, 35, + -1, -1, -1, -1, -1, 64, 65, -1, 44, -1, + -1, 47, -1, -1, -1, -1, 8, -1, -1, -1, + -1, -1, 81, -1, -1, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 28, 29, 30, 31, + 32, 33, 34, -1, 36, 37, 38, 39, 40, 85, + 86, -1, 44, -1, -1, -1, 48, -1, -1, 28, + 29, -1, 31, -1, -1, -1, 35, -1, -1, -1, + -1, -1, 64, 65, 31, 44, -1, -1, 47, 36, + 37, 38, 39, 8, -1, -1, -1, 44, -1, 81, + -1, -1, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 28, 29, 30, 31, 32, 33, 34, + -1, 36, 37, 38, 39, 40, 85, 86, -1, 44, + -1, -1, -1, 48, 54, 55, -1, -1, 85, 86, + 60, 61, 62, 63, -1, -1, -1, -1, -1, 64, + 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 80, 81, 82, 83, 84, -1, 81, -1, -1, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 3, 4, 5, -1, -1, -1, -1, -1, 11, -1, + -1, 14, 15, 16, -1, 18, 19, 20, -1, 22, + 23, 24, 25, 26, 27, 28, -1, -1, 31, -1, + -1, -1, -1, 36, 37, 38, 39, -1, -1, 42, + 43, 44, -1, -1, -1, 3, 4, 5, -1, 52, + 53, -1, -1, 11, -1, -1, 14, 15, 16, -1, + 18, 19, 20, -1, 22, 23, 24, 25, 26, 27, + 28, -1, -1, 31, -1, -1, -1, -1, 36, 37, + 38, 39, 85, 86, 42, 43, 44, -1, -1, -1, + 3, 4, 5, -1, 52, 53, -1, -1, 11, -1, + -1, 14, 15, 16, -1, 18, 19, 20, -1, 22, + 23, 24, 25, 26, 27, 28, -1, -1, 31, -1, + -1, -1, -1, 36, 37, 38, 39, 85, 86, 42, + -1, 44, -1, -1, 28, 29, -1, 31, -1, 52, + 53, 35, 28, 29, -1, 31, -1, -1, -1, 35, + 44, -1, -1, 47, -1, -1, -1, -1, 44, 28, + 29, 47, 31, -1, 28, 29, 35, 31, -1, -1, + -1, 35, 85, 86, -1, 44, -1, -1, 47, -1, + 44, -1, -1, 47, -1, -1, -1, -1, 31, -1, + -1, 85, 86, -1, -1, -1, -1, -1, -1, 85, + 86, 44, -1, -1, 47, -1, -1, -1, -1, 52, + 53, -1, -1, -1, -1, -1, 85, 86, -1, -1, + -1, 85, 86, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 41, -1, -1, -1, -1, 46, + -1, -1, 85, 86, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 41, -1, -1, -1, -1, 46, -1, - -1, 85, 86, 51, -1, -1, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, - 78, 79, 80, 81, 82, 83, 84, 41, -1, -1, - -1, -1, 46, -1, -1, -1, -1, 51, -1, -1, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 77, 78, 79, 80, 81, 82, 83, - 84, 41, -1, -1, -1, -1, 46, -1, -1, -1, - -1, 51, -1, -1, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 77, 78, 79, - 80, 81, 82, 83, 84, 41, -1, -1, -1, -1, - 46, -1, -1, -1, -1, 51, -1, -1, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, - -1, 77, 78, 79, 80, 81, 82, 83, 84, 51, - -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 41, -1, 77, 78, 79, 80, 81, - 82, 83, 84, 51, -1, -1, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 41, -1, 77, - 78, 79, 80, 81, 82, 83, 84, 51, -1, -1, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 41, -1, 77, 78, 79, 80, 81, 82, 83, - 84, 51, -1, -1, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 41, -1, 77, 78, 79, - 80, 81, 82, 83, 84, 51, -1, -1, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, - -1, 77, 78, 79, 80, 81, 82, 83, 84, 51, - -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 41, -1, 77, 78, 79, 80, 81, - 82, 83, 84, 51, -1, -1, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, - 78, 79, 80, 81, 82, 83, 84, 45, -1, -1, - -1, -1, -1, 51, -1, -1, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, - 78, 79, 80, 81, 82, 83, 84, 45, -1, -1, - -1, -1, -1, 51, -1, -1, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, - 78, 79, 80, 81, 82, 83, 84, 46, -1, -1, + 77, 78, 79, 80, 81, 82, 83, 84, 41, -1, + -1, -1, -1, 46, -1, -1, -1, -1, 51, -1, + -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 77, 78, 79, 80, 81, 82, + 83, 84, 41, -1, -1, -1, -1, 46, -1, -1, -1, -1, 51, -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, 78, - 79, 80, 81, 82, 83, 84, 49, -1, 51, -1, + 79, 80, 81, 82, 83, 84, 41, -1, -1, -1, + -1, 46, -1, -1, -1, -1, 51, -1, -1, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 41, -1, 77, 78, 79, 80, 81, 82, 83, 84, + 51, -1, -1, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 41, -1, 77, 78, 79, 80, + 81, 82, 83, 84, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, + 77, 78, 79, 80, 81, 82, 83, 84, 51, -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 77, 78, 79, 80, 81, 82, - 83, 84, 50, 51, -1, -1, 54, 55, 56, 57, + -1, -1, 41, -1, 77, 78, 79, 80, 81, 82, + 83, 84, 51, -1, -1, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 41, -1, 77, 78, + 79, 80, 81, 82, 83, 84, 51, -1, -1, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 41, -1, 77, 78, 79, 80, 81, 82, 83, 84, + 51, -1, -1, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 41, -1, 77, 78, 79, 80, + 81, 82, 83, 84, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 77, 78, 79, 80, 81, 82, 83, 84, 45, -1, + -1, -1, -1, -1, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 77, 78, 79, 80, 81, 82, 83, 84, 45, -1, + -1, -1, -1, -1, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 77, 78, 79, 80, 81, 82, 83, 84, 45, -1, + -1, -1, -1, -1, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 77, 78, 79, 80, 81, 82, 83, 84, 46, -1, + -1, -1, -1, 51, -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, - 78, 79, 80, 81, 82, 83, 84, 50, 51, -1, - -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 77, 78, 79, 80, 81, 82, - 83, 84, 50, 51, -1, -1, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 51, -1, -1, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 77, - 78, 79, 80, 81, 82, 83, 84, -1, -1, -1, - -1, -1, 77, 78, 79, 80, 81, 82, 83, 84, - 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, - 54, 55, -1, -1, 58, 59, 60, 61, 62, 63, - -1, -1, -1, 77, 78, 79, 80, 81, 82, 83, - 84, -1, -1, 77, 78, 79, 80, 81, 82, 83, - 84, 54, 55, -1, -1, 58, 59, 60, 61, 62, - 63, 54, 55, -1, -1, 58, 59, 60, 61, 62, - 63, -1, -1, -1, -1, 78, 79, 80, 81, 82, - 83, 84, -1, -1, -1, 78, -1, 80, 81, 82, - 83, 84, 54, 55, -1, -1, 58, 59, 60, 61, + 78, 79, 80, 81, 82, 83, 84, 49, -1, 51, + -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 80, 81, - 82, 83, 84 + -1, -1, -1, -1, -1, 77, 78, 79, 80, 81, + 82, 83, 84, 50, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 77, 78, 79, 80, 81, 82, 83, 84, 50, 51, + -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 77, 78, 79, 80, 81, + 82, 83, 84, 50, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 51, -1, -1, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 77, 78, 79, 80, 81, 82, 83, 84, -1, -1, + -1, -1, -1, 77, 78, 79, 80, 81, 82, 83, + 84, 54, 55, -1, 57, 58, 59, 60, 61, 62, + 63, 54, 55, -1, -1, 58, 59, 60, 61, 62, + 63, -1, -1, -1, 77, 78, 79, 80, 81, 82, + 83, 84, -1, -1, 77, 78, 79, 80, 81, 82, + 83, 84, 54, 55, -1, -1, 58, 59, 60, 61, + 62, 63, 54, 55, -1, -1, 58, 59, 60, 61, + 62, 63, -1, -1, -1, -1, 78, 79, 80, 81, + 82, 83, 84, -1, -1, -1, 78, -1, 80, 81, + 82, 83, 84, 54, 55, -1, -1, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, + 81, 82, 83, 84 }; const unsigned char parser::yystos_[] = { - 0, 6, 7, 86, 101, 102, 103, 104, 105, 106, - 107, 166, 85, 167, 40, 0, 103, 104, 40, 66, - 50, 87, 169, 108, 166, 8, 28, 29, 30, 31, + 0, 6, 7, 86, 105, 106, 107, 108, 109, 110, + 111, 172, 85, 173, 40, 0, 107, 108, 40, 66, + 50, 87, 175, 112, 172, 8, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 44, 48, - 64, 65, 81, 84, 88, 89, 90, 137, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 64, 65, 81, 84, 88, 89, 90, 91, 92, 93, + 94, 141, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 41, 41, 46, 44, 146, 147, 166, - 167, 146, 147, 44, 137, 44, 45, 137, 148, 149, - 150, 166, 137, 137, 89, 90, 86, 50, 51, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 77, - 78, 79, 80, 81, 82, 83, 84, 28, 29, 35, - 44, 47, 146, 147, 40, 48, 50, 42, 110, 166, - 44, 48, 44, 41, 46, 137, 46, 45, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 146, 147, 146, - 147, 137, 166, 148, 149, 166, 3, 4, 5, 11, - 14, 15, 16, 18, 19, 20, 22, 23, 24, 25, - 26, 27, 43, 52, 53, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 138, 143, 144, 153, 154, 156, 160, 161, 162, - 163, 166, 137, 166, 137, 137, 45, 137, 49, 45, - 41, 40, 50, 40, 40, 137, 50, 40, 50, 40, - 40, 40, 40, 40, 81, 169, 172, 174, 49, 50, - 50, 50, 137, 143, 156, 156, 43, 109, 50, 50, - 50, 9, 10, 12, 13, 52, 53, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 45, 46, - 45, 137, 148, 148, 148, 50, 41, 137, 137, 135, - 138, 156, 166, 137, 49, 49, 49, 50, 40, 40, - 40, 40, 137, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 45, 137, 40, 41, 41, 41, 50, - 41, 41, 50, 21, 46, 41, 137, 137, 137, 137, - 40, 41, 148, 50, 50, 109, 109, 136, 137, 137, - 166, 110, 41, 41, 46, 41, 46, 41, 46, 148, - 41, 17, 50, 41, 21, 50, 50, 148, 50, 148, - 50, 148, 41, 109, 135, 109, 137, 41, 41, 41, - 41, 41, 50, 50, 50, 109, 109 + 174, 175, 176, 177, 178, 179, 41, 41, 46, 44, + 150, 151, 172, 173, 150, 151, 44, 141, 44, 45, + 141, 152, 153, 154, 172, 141, 141, 90, 91, 86, + 50, 51, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 77, 78, 79, 80, 81, 82, 83, 84, + 28, 29, 35, 44, 47, 150, 151, 40, 48, 50, + 42, 114, 172, 44, 48, 44, 41, 46, 141, 46, + 45, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 150, 151, 150, 151, 141, 172, 152, 153, 172, 3, + 4, 5, 11, 14, 15, 16, 18, 19, 20, 22, + 23, 24, 25, 26, 27, 43, 52, 53, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 142, 147, 148, 157, 158, 160, + 166, 167, 168, 169, 172, 141, 172, 141, 141, 45, + 141, 49, 45, 41, 40, 50, 40, 40, 141, 50, + 40, 50, 40, 40, 40, 40, 40, 81, 162, 175, + 49, 50, 50, 50, 141, 147, 160, 160, 43, 113, + 50, 50, 50, 9, 10, 12, 13, 52, 53, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 45, 46, 45, 141, 152, 152, 152, 50, 41, 141, + 141, 139, 142, 160, 172, 141, 49, 49, 50, 40, + 40, 40, 40, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 45, 141, 40, 41, 41, 41, + 50, 41, 41, 50, 21, 46, 41, 141, 141, 141, + 141, 40, 41, 152, 50, 50, 113, 113, 140, 141, + 141, 172, 114, 41, 41, 46, 41, 46, 41, 46, + 152, 41, 17, 50, 41, 21, 50, 50, 152, 50, + 152, 50, 152, 41, 113, 139, 113, 141, 41, 41, + 41, 41, 41, 50, 50, 50, 113, 113 }; const unsigned char parser::yyr1_[] = { - 0, 100, 101, 101, 102, 102, 102, 102, 103, 104, - 104, 104, 105, 106, 107, 108, 108, 108, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 110, 110, 111, 111, 112, 112, 113, 114, - 115, 115, 116, 117, 117, 118, 118, 119, 120, 120, - 121, 122, 123, 124, 125, 125, 126, 127, 127, 127, - 128, 129, 130, 131, 131, 132, 133, 134, 135, 135, - 136, 136, 137, 137, 137, 137, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 139, 139, 139, 139, 139, 139, 139, 139, 140, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 0, 104, 105, 105, 106, 106, 106, 106, 107, 108, + 108, 108, 109, 110, 111, 112, 112, 112, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 114, 114, 115, 115, 116, 116, 117, 118, + 119, 119, 120, 121, 121, 122, 122, 123, 124, 124, + 125, 126, 127, 128, 129, 129, 130, 131, 131, 132, + 133, 134, 135, 135, 136, 137, 138, 139, 139, 140, + 140, 141, 141, 141, 141, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 143, 143, 143, 143, 144, 144, 144, 144, 145, 145, - 145, 145, 146, 146, 147, 147, 148, 148, 149, 149, - 150, 151, 151, 152, 153, 154, 155, 156, 156, 156, - 156, 156, 156, 156, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176 + 143, 143, 143, 143, 143, 143, 143, 143, 144, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 147, 147, + 147, 147, 148, 148, 148, 148, 149, 149, 149, 149, + 150, 150, 151, 151, 152, 152, 153, 153, 154, 155, + 155, 156, 157, 158, 159, 160, 160, 160, 160, 160, + 160, 160, 160, 161, 161, 162, 162, 162, 162, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179 }; const signed char @@ -4082,21 +4132,21 @@ namespace xsk { namespace gsc { namespace h1 { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 1, 2, 2, 2, 6, 8, 6, 3, 8, 6, 8, 6, 2, 2, 4, - 5, 7, 5, 9, 7, 9, 5, 3, 3, 3, - 2, 2, 2, 3, 2, 2, 5, 5, 1, 0, - 1, 0, 1, 1, 1, 1, 2, 2, 2, 2, + 5, 7, 5, 9, 7, 9, 5, 3, 3, 2, + 2, 2, 3, 2, 2, 5, 5, 1, 0, 1, + 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, + 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 3, 3, 2, 2, - 3, 3, 4, 6, 8, 9, 1, 1, 3, 1, - 0, 2, 3, 3, 4, 3, 2, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, - 1, 1, 2, 1, 1, 1, 1, 1, 7, 2, - 2, 1, 1, 1, 1 + 2, 2, 2, 2, 3, 3, 2, 2, 3, 3, + 4, 6, 8, 9, 1, 1, 3, 1, 0, 2, + 3, 3, 4, 3, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, + 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, + 1, 1, 1, 1, 7, 1, 1 }; @@ -4106,27 +4156,27 @@ namespace xsk { namespace gsc { namespace h1 { const short parser::yyrline_[] = { - 0, 243, 243, 244, 248, 250, 252, 254, 259, 264, - 265, 266, 270, 275, 280, 285, 287, 290, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 321, 322, 326, 328, 333, 335, 340, 345, - 350, 352, 357, 362, 364, 369, 371, 376, 381, 383, - 388, 393, 398, 403, 408, 410, 415, 420, 422, 424, - 429, 434, 439, 444, 446, 451, 456, 461, 466, 467, - 471, 472, 476, 477, 478, 479, 483, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 501, 502, 503, 504, 505, 506, 507, 508, 512, - 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, - 562, 563, 564, 565, 569, 570, 571, 572, 576, 577, - 578, 579, 583, 585, 590, 592, 597, 598, 602, 604, - 610, 614, 616, 621, 626, 631, 636, 641, 642, 643, - 644, 645, 646, 647, 648, 651, 652, 653, 654, 655, - 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, - 666, 667, 668, 669, 670 + 0, 246, 246, 247, 251, 253, 255, 257, 262, 267, + 268, 269, 273, 278, 283, 288, 290, 293, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 324, 325, 329, 331, 336, 338, 343, 348, + 353, 355, 360, 365, 367, 372, 374, 379, 384, 386, + 391, 396, 401, 406, 411, 413, 418, 423, 425, 430, + 435, 440, 445, 447, 452, 457, 462, 467, 468, 472, + 473, 477, 478, 479, 480, 484, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, + 502, 503, 504, 505, 506, 507, 508, 509, 513, 517, + 518, 519, 520, 521, 522, 523, 524, 525, 526, 530, + 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, + 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, + 551, 552, 553, 554, 555, 556, 557, 558, 562, 563, + 564, 565, 569, 570, 571, 572, 576, 577, 578, 579, + 583, 585, 590, 592, 597, 598, 602, 604, 610, 614, + 616, 621, 626, 631, 636, 641, 642, 643, 644, 645, + 646, 647, 648, 652, 653, 657, 658, 659, 660, 661, + 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, + 674, 675, 676, 677, 678, 679, 680 }; void @@ -4159,9 +4209,9 @@ namespace xsk { namespace gsc { namespace h1 { #line 13 "parser.ypp" } } } // xsk::gsc::h1 -#line 4163 "parser.cpp" +#line 4213 "parser.cpp" -#line 672 "parser.ypp" +#line 682 "parser.ypp" void xsk::gsc::h1::parser::error(const xsk::gsc::location& loc, const std::string& msg) diff --git a/src/h1/xsk/parser.hpp b/src/h1/xsk/parser.hpp index 09bd2240..af1c890d 100644 --- a/src/h1/xsk/parser.hpp +++ b/src/h1/xsk/parser.hpp @@ -417,31 +417,34 @@ namespace xsk { namespace gsc { namespace h1 { // animtree char dummy3[sizeof (animtree_ptr)]; + // color + char dummy4[sizeof (color_ptr)]; + // constant - char dummy4[sizeof (constant_ptr)]; + char dummy5[sizeof (constant_ptr)]; // define - char dummy5[sizeof (define_ptr)]; + char dummy6[sizeof (define_ptr)]; // empty_array - char dummy6[sizeof (empty_array_ptr)]; + char dummy7[sizeof (empty_array_ptr)]; // expr_arguments // expr_arguments_filled // expr_arguments_empty - char dummy7[sizeof (expr_arguments_ptr)]; + char dummy8[sizeof (expr_arguments_ptr)]; // expr_assign - char dummy8[sizeof (expr_assign_ptr)]; + char dummy9[sizeof (expr_assign_ptr)]; // expr_call // expr_call_thread // expr_call_childthread - char dummy9[sizeof (expr_call_ptr)]; + char dummy10[sizeof (expr_call_ptr)]; // expr_call_function // expr_call_pointer - char dummy10[sizeof (expr_call_type_ptr)]; + char dummy11[sizeof (expr_call_type_ptr)]; // for_expr // expr @@ -449,36 +452,34 @@ namespace xsk { namespace gsc { namespace h1 { // expr_ternary // expr_binary // expr_primitive - char dummy11[sizeof (expr_ptr)]; + char dummy12[sizeof (expr_ptr)]; // false - char dummy12[sizeof (false_ptr)]; + char dummy13[sizeof (false_ptr)]; // file - char dummy13[sizeof (file_ptr)]; + char dummy14[sizeof (file_ptr)]; - // neg_float // float - char dummy14[sizeof (float_ptr)]; + char dummy15[sizeof (float_ptr)]; // game - char dummy15[sizeof (game_ptr)]; + char dummy16[sizeof (game_ptr)]; // include - char dummy16[sizeof (include_ptr)]; + char dummy17[sizeof (include_ptr)]; - // neg_integer // integer - char dummy17[sizeof (integer_ptr)]; + char dummy18[sizeof (integer_ptr)]; // istring - char dummy18[sizeof (istring_ptr)]; + char dummy19[sizeof (istring_ptr)]; // level - char dummy19[sizeof (level_ptr)]; + char dummy20[sizeof (level_ptr)]; // name - char dummy20[sizeof (name_ptr)]; + char dummy21[sizeof (name_ptr)]; // expr_function // expr_add_array @@ -486,122 +487,126 @@ namespace xsk { namespace gsc { namespace h1 { // expr_field // expr_size // object - char dummy21[sizeof (node_ptr)]; + char dummy22[sizeof (node_ptr)]; // parameters - char dummy22[sizeof (parameters_ptr)]; + char dummy23[sizeof (parameters_ptr)]; // program - char dummy23[sizeof (program_ptr)]; + char dummy24[sizeof (program_ptr)]; // self - char dummy24[sizeof (self_ptr)]; + char dummy25[sizeof (self_ptr)]; // "file path" // "identifier" // "string literal" // "localized string" + // "color" // "float" // "int" - char dummy25[sizeof (std::string)]; + // "octal int" + // "binary int" + // "hexadecimal int" + char dummy26[sizeof (std::string)]; // stmt_assign - char dummy26[sizeof (stmt_assign_ptr)]; + char dummy27[sizeof (stmt_assign_ptr)]; // stmt_break - char dummy27[sizeof (stmt_break_ptr)]; + char dummy28[sizeof (stmt_break_ptr)]; // stmt_breakpoint - char dummy28[sizeof (stmt_breakpoint_ptr)]; + char dummy29[sizeof (stmt_breakpoint_ptr)]; // stmt_call - char dummy29[sizeof (stmt_call_ptr)]; + char dummy30[sizeof (stmt_call_ptr)]; // stmt_case - char dummy30[sizeof (stmt_case_ptr)]; + char dummy31[sizeof (stmt_case_ptr)]; // stmt_continue - char dummy31[sizeof (stmt_continue_ptr)]; + char dummy32[sizeof (stmt_continue_ptr)]; // stmt_default - char dummy32[sizeof (stmt_default_ptr)]; + char dummy33[sizeof (stmt_default_ptr)]; // stmt_endon - char dummy33[sizeof (stmt_endon_ptr)]; + char dummy34[sizeof (stmt_endon_ptr)]; // stmt_for - char dummy34[sizeof (stmt_for_ptr)]; + char dummy35[sizeof (stmt_for_ptr)]; // stmt_foreach - char dummy35[sizeof (stmt_foreach_ptr)]; + char dummy36[sizeof (stmt_foreach_ptr)]; // stmt_if - char dummy36[sizeof (stmt_if_ptr)]; + char dummy37[sizeof (stmt_if_ptr)]; // stmt_ifelse - char dummy37[sizeof (stmt_ifelse_ptr)]; + char dummy38[sizeof (stmt_ifelse_ptr)]; // stmt_block // stmt_list - char dummy38[sizeof (stmt_list_ptr)]; + char dummy39[sizeof (stmt_list_ptr)]; // stmt_notify - char dummy39[sizeof (stmt_notify_ptr)]; + char dummy40[sizeof (stmt_notify_ptr)]; // stmt_prof_begin - char dummy40[sizeof (stmt_prof_begin_ptr)]; + char dummy41[sizeof (stmt_prof_begin_ptr)]; // stmt_prof_end - char dummy41[sizeof (stmt_prof_end_ptr)]; + char dummy42[sizeof (stmt_prof_end_ptr)]; // stmt // for_stmt - char dummy42[sizeof (stmt_ptr)]; + char dummy43[sizeof (stmt_ptr)]; // stmt_return - char dummy43[sizeof (stmt_return_ptr)]; + char dummy44[sizeof (stmt_return_ptr)]; // stmt_switch - char dummy44[sizeof (stmt_switch_ptr)]; + char dummy45[sizeof (stmt_switch_ptr)]; // stmt_wait - char dummy45[sizeof (stmt_wait_ptr)]; + char dummy46[sizeof (stmt_wait_ptr)]; // stmt_waitframe - char dummy46[sizeof (stmt_waitframe_ptr)]; + char dummy47[sizeof (stmt_waitframe_ptr)]; // stmt_waittill - char dummy47[sizeof (stmt_waittill_ptr)]; + char dummy48[sizeof (stmt_waittill_ptr)]; // stmt_waittillframeend - char dummy48[sizeof (stmt_waittillframeend_ptr)]; + char dummy49[sizeof (stmt_waittillframeend_ptr)]; // stmt_waittillmatch - char dummy49[sizeof (stmt_waittillmatch_ptr)]; + char dummy50[sizeof (stmt_waittillmatch_ptr)]; // stmt_while - char dummy50[sizeof (stmt_while_ptr)]; + char dummy51[sizeof (stmt_while_ptr)]; // string - char dummy51[sizeof (string_ptr)]; + char dummy52[sizeof (string_ptr)]; // thisthread - char dummy52[sizeof (thisthread_ptr)]; + char dummy53[sizeof (thisthread_ptr)]; // thread - char dummy53[sizeof (thread_ptr)]; + char dummy54[sizeof (thread_ptr)]; // true - char dummy54[sizeof (true_ptr)]; + char dummy55[sizeof (true_ptr)]; // undefined - char dummy55[sizeof (undefined_ptr)]; + char dummy56[sizeof (undefined_ptr)]; // usingtree - char dummy56[sizeof (usingtree_ptr)]; + char dummy57[sizeof (usingtree_ptr)]; // vector - char dummy57[sizeof (vector_ptr)]; + char dummy58[sizeof (vector_ptr)]; }; /// The size of the largest semantic type. @@ -739,17 +744,21 @@ namespace xsk { namespace gsc { namespace h1 { NAME = 86, // "identifier" STRING = 87, // "string literal" ISTRING = 88, // "localized string" - FLOAT = 89, // "float" - INTEGER = 90, // "int" - ADD_ARRAY = 91, // ADD_ARRAY - THEN = 92, // THEN - TERN = 93, // TERN - NEG = 94, // NEG - ANIMREF = 95, // ANIMREF - PREINC = 96, // PREINC - PREDEC = 97, // PREDEC - POSTINC = 98, // POSTINC - POSTDEC = 99 // POSTDEC + COLOR = 89, // "color" + FLOAT = 90, // "float" + INT_DEC = 91, // "int" + INT_OCT = 92, // "octal int" + INT_BIN = 93, // "binary int" + INT_HEX = 94, // "hexadecimal int" + ADD_ARRAY = 95, // ADD_ARRAY + THEN = 96, // THEN + TERN = 97, // TERN + NEG = 98, // NEG + ANIMREF = 99, // ANIMREF + PREINC = 100, // PREINC + PREDEC = 101, // PREDEC + POSTINC = 102, // POSTINC + POSTDEC = 103 // POSTDEC }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; @@ -766,7 +775,7 @@ namespace xsk { namespace gsc { namespace h1 { { enum symbol_kind_type { - YYNTOKENS = 100, ///< Number of tokens. + YYNTOKENS = 104, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error @@ -857,94 +866,97 @@ namespace xsk { namespace gsc { namespace h1 { S_NAME = 86, // "identifier" S_STRING = 87, // "string literal" S_ISTRING = 88, // "localized string" - S_FLOAT = 89, // "float" - S_INTEGER = 90, // "int" - S_ADD_ARRAY = 91, // ADD_ARRAY - S_THEN = 92, // THEN - S_TERN = 93, // TERN - S_NEG = 94, // NEG - S_ANIMREF = 95, // ANIMREF - S_PREINC = 96, // PREINC - S_PREDEC = 97, // PREDEC - S_POSTINC = 98, // POSTINC - S_POSTDEC = 99, // POSTDEC - S_YYACCEPT = 100, // $accept - S_root = 101, // root - S_program = 102, // program - S_include = 103, // include - S_define = 104, // define - S_usingtree = 105, // usingtree - S_constant = 106, // constant - S_thread = 107, // thread - S_parameters = 108, // parameters - S_stmt = 109, // stmt - S_stmt_block = 110, // stmt_block - S_stmt_list = 111, // stmt_list - S_stmt_call = 112, // stmt_call - S_stmt_assign = 113, // stmt_assign - S_stmt_endon = 114, // stmt_endon - S_stmt_notify = 115, // stmt_notify - S_stmt_wait = 116, // stmt_wait - S_stmt_waittill = 117, // stmt_waittill - S_stmt_waittillmatch = 118, // stmt_waittillmatch - S_stmt_waittillframeend = 119, // stmt_waittillframeend - S_stmt_waitframe = 120, // stmt_waitframe - S_stmt_if = 121, // stmt_if - S_stmt_ifelse = 122, // stmt_ifelse - S_stmt_while = 123, // stmt_while - S_stmt_for = 124, // stmt_for - S_stmt_foreach = 125, // stmt_foreach - S_stmt_switch = 126, // stmt_switch - S_stmt_case = 127, // stmt_case - S_stmt_default = 128, // stmt_default - S_stmt_break = 129, // stmt_break - S_stmt_continue = 130, // stmt_continue - S_stmt_return = 131, // stmt_return - S_stmt_breakpoint = 132, // stmt_breakpoint - S_stmt_prof_begin = 133, // stmt_prof_begin - S_stmt_prof_end = 134, // stmt_prof_end - S_for_stmt = 135, // for_stmt - S_for_expr = 136, // for_expr - S_expr = 137, // expr - S_expr_assign = 138, // expr_assign - S_expr_compare = 139, // expr_compare - S_expr_ternary = 140, // expr_ternary - S_expr_binary = 141, // expr_binary - S_expr_primitive = 142, // expr_primitive - S_expr_call = 143, // expr_call - S_expr_call_thread = 144, // expr_call_thread - S_expr_call_childthread = 145, // expr_call_childthread - S_expr_call_function = 146, // expr_call_function - S_expr_call_pointer = 147, // expr_call_pointer - S_expr_arguments = 148, // expr_arguments - S_expr_arguments_filled = 149, // expr_arguments_filled - S_expr_arguments_empty = 150, // expr_arguments_empty - S_expr_function = 151, // expr_function - S_expr_add_array = 152, // expr_add_array - S_expr_array = 153, // expr_array - S_expr_field = 154, // expr_field - S_expr_size = 155, // expr_size - S_object = 156, // object - S_thisthread = 157, // thisthread - S_empty_array = 158, // empty_array - S_undefined = 159, // undefined - S_game = 160, // game - S_self = 161, // self - S_anim = 162, // anim - S_level = 163, // level - S_animation = 164, // animation - S_animtree = 165, // animtree - S_name = 166, // name - S_file = 167, // file - S_istring = 168, // istring - S_string = 169, // string - S_vector = 170, // vector - S_neg_float = 171, // neg_float - S_neg_integer = 172, // neg_integer - S_float = 173, // float - S_integer = 174, // integer - S_false = 175, // false - S_true = 176 // true + S_COLOR = 89, // "color" + S_FLOAT = 90, // "float" + S_INT_DEC = 91, // "int" + S_INT_OCT = 92, // "octal int" + S_INT_BIN = 93, // "binary int" + S_INT_HEX = 94, // "hexadecimal int" + S_ADD_ARRAY = 95, // ADD_ARRAY + S_THEN = 96, // THEN + S_TERN = 97, // TERN + S_NEG = 98, // NEG + S_ANIMREF = 99, // ANIMREF + S_PREINC = 100, // PREINC + S_PREDEC = 101, // PREDEC + S_POSTINC = 102, // POSTINC + S_POSTDEC = 103, // POSTDEC + S_YYACCEPT = 104, // $accept + S_root = 105, // root + S_program = 106, // program + S_include = 107, // include + S_define = 108, // define + S_usingtree = 109, // usingtree + S_constant = 110, // constant + S_thread = 111, // thread + S_parameters = 112, // parameters + S_stmt = 113, // stmt + S_stmt_block = 114, // stmt_block + S_stmt_list = 115, // stmt_list + S_stmt_call = 116, // stmt_call + S_stmt_assign = 117, // stmt_assign + S_stmt_endon = 118, // stmt_endon + S_stmt_notify = 119, // stmt_notify + S_stmt_wait = 120, // stmt_wait + S_stmt_waittill = 121, // stmt_waittill + S_stmt_waittillmatch = 122, // stmt_waittillmatch + S_stmt_waittillframeend = 123, // stmt_waittillframeend + S_stmt_waitframe = 124, // stmt_waitframe + S_stmt_if = 125, // stmt_if + S_stmt_ifelse = 126, // stmt_ifelse + S_stmt_while = 127, // stmt_while + S_stmt_for = 128, // stmt_for + S_stmt_foreach = 129, // stmt_foreach + S_stmt_switch = 130, // stmt_switch + S_stmt_case = 131, // stmt_case + S_stmt_default = 132, // stmt_default + S_stmt_break = 133, // stmt_break + S_stmt_continue = 134, // stmt_continue + S_stmt_return = 135, // stmt_return + S_stmt_breakpoint = 136, // stmt_breakpoint + S_stmt_prof_begin = 137, // stmt_prof_begin + S_stmt_prof_end = 138, // stmt_prof_end + S_for_stmt = 139, // for_stmt + S_for_expr = 140, // for_expr + S_expr = 141, // expr + S_expr_assign = 142, // expr_assign + S_expr_compare = 143, // expr_compare + S_expr_ternary = 144, // expr_ternary + S_expr_binary = 145, // expr_binary + S_expr_primitive = 146, // expr_primitive + S_expr_call = 147, // expr_call + S_expr_call_thread = 148, // expr_call_thread + S_expr_call_childthread = 149, // expr_call_childthread + S_expr_call_function = 150, // expr_call_function + S_expr_call_pointer = 151, // expr_call_pointer + S_expr_arguments = 152, // expr_arguments + S_expr_arguments_filled = 153, // expr_arguments_filled + S_expr_arguments_empty = 154, // expr_arguments_empty + S_expr_function = 155, // expr_function + S_expr_add_array = 156, // expr_add_array + S_expr_array = 157, // expr_array + S_expr_field = 158, // expr_field + S_expr_size = 159, // expr_size + S_object = 160, // object + S_float = 161, // float + S_integer = 162, // integer + S_thisthread = 163, // thisthread + S_empty_array = 164, // empty_array + S_undefined = 165, // undefined + S_game = 166, // game + S_self = 167, // self + S_anim = 168, // anim + S_level = 169, // level + S_animation = 170, // animation + S_animtree = 171, // animtree + S_name = 172, // name + S_file = 173, // file + S_istring = 174, // istring + S_string = 175, // string + S_color = 176, // color + S_vector = 177, // vector + S_false = 178, // false + S_true = 179 // true }; }; @@ -993,6 +1005,10 @@ namespace xsk { namespace gsc { namespace h1 { value.move< animtree_ptr > (std::move (that.value)); break; + case symbol_kind::S_color: // color + value.move< color_ptr > (std::move (that.value)); + break; + case symbol_kind::S_constant: // constant value.move< constant_ptr > (std::move (that.value)); break; @@ -1043,7 +1059,6 @@ namespace xsk { namespace gsc { namespace h1 { value.move< file_ptr > (std::move (that.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.move< float_ptr > (std::move (that.value)); break; @@ -1056,7 +1071,6 @@ namespace xsk { namespace gsc { namespace h1 { value.move< include_ptr > (std::move (that.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.move< integer_ptr > (std::move (that.value)); break; @@ -1098,8 +1112,12 @@ namespace xsk { namespace gsc { namespace h1 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.move< std::string > (std::move (that.value)); break; @@ -1298,6 +1316,20 @@ namespace xsk { namespace gsc { namespace h1 { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, color_ptr&& v, location_type&& l) + : Base (t) + , value (std::move (v)) + , location (std::move (l)) + {} +#else + basic_symbol (typename Base::kind_type t, const color_ptr& v, const location_type& l) + : Base (t) + , value (v) + , location (l) + {} +#endif + #if 201103L <= YY_CPLUSPLUS basic_symbol (typename Base::kind_type t, constant_ptr&& v, location_type&& l) : Base (t) @@ -2088,6 +2120,10 @@ switch (yykind) value.template destroy< animtree_ptr > (); break; + case symbol_kind::S_color: // color + value.template destroy< color_ptr > (); + break; + case symbol_kind::S_constant: // constant value.template destroy< constant_ptr > (); break; @@ -2138,7 +2174,6 @@ switch (yykind) value.template destroy< file_ptr > (); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.template destroy< float_ptr > (); break; @@ -2151,7 +2186,6 @@ switch (yykind) value.template destroy< include_ptr > (); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.template destroy< integer_ptr > (); break; @@ -2193,8 +2227,12 @@ switch (yykind) case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.template destroy< std::string > (); break; @@ -2434,7 +2472,7 @@ switch (yykind) : super_type(token_type (tok), v, l) #endif { - H1_ASSERT ((token::FILE <= tok && tok <= token::INTEGER)); + H1_ASSERT ((token::FILE <= tok && tok <= token::INT_HEX)); } }; @@ -3819,6 +3857,21 @@ switch (yykind) return symbol_type (token::ISTRING, v, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_COLOR (std::string v, location_type l) + { + return symbol_type (token::COLOR, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_COLOR (const std::string& v, const location_type& l) + { + return symbol_type (token::COLOR, v, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -3837,16 +3890,61 @@ switch (yykind) #if 201103L <= YY_CPLUSPLUS static symbol_type - make_INTEGER (std::string v, location_type l) + make_INT_DEC (std::string v, location_type l) { - return symbol_type (token::INTEGER, std::move (v), std::move (l)); + return symbol_type (token::INT_DEC, std::move (v), std::move (l)); } #else static symbol_type - make_INTEGER (const std::string& v, const location_type& l) + make_INT_DEC (const std::string& v, const location_type& l) { - return symbol_type (token::INTEGER, v, l); + return symbol_type (token::INT_DEC, v, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_INT_OCT (std::string v, location_type l) + { + return symbol_type (token::INT_OCT, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_INT_OCT (const std::string& v, const location_type& l) + { + return symbol_type (token::INT_OCT, v, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_INT_BIN (std::string v, location_type l) + { + return symbol_type (token::INT_BIN, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_INT_BIN (const std::string& v, const location_type& l) + { + return symbol_type (token::INT_BIN, v, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_INT_HEX (std::string v, location_type l) + { + return symbol_type (token::INT_HEX, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_INT_HEX (const std::string& v, const location_type& l) + { + return symbol_type (token::INT_HEX, v, l); } #endif #if 201103L <= YY_CPLUSPLUS @@ -4328,8 +4426,8 @@ switch (yykind) /// Constants. enum { - yylast_ = 1842, ///< Last index in yytable_. - yynnts_ = 77, ///< Number of nonterminal symbols. + yylast_ = 1883, ///< Last index in yytable_. + yynnts_ = 76, ///< Number of nonterminal symbols. yyfinal_ = 15 ///< Termination state number. }; @@ -4369,6 +4467,10 @@ switch (yykind) value.copy< animtree_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_color: // color + value.copy< color_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_constant: // constant value.copy< constant_ptr > (YY_MOVE (that.value)); break; @@ -4419,7 +4521,6 @@ switch (yykind) value.copy< file_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.copy< float_ptr > (YY_MOVE (that.value)); break; @@ -4432,7 +4533,6 @@ switch (yykind) value.copy< include_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.copy< integer_ptr > (YY_MOVE (that.value)); break; @@ -4474,8 +4574,12 @@ switch (yykind) case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.copy< std::string > (YY_MOVE (that.value)); break; @@ -4650,6 +4754,10 @@ switch (yykind) value.move< animtree_ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_color: // color + value.move< color_ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_constant: // constant value.move< constant_ptr > (YY_MOVE (s.value)); break; @@ -4700,7 +4808,6 @@ switch (yykind) value.move< file_ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.move< float_ptr > (YY_MOVE (s.value)); break; @@ -4713,7 +4820,6 @@ switch (yykind) value.move< include_ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.move< integer_ptr > (YY_MOVE (s.value)); break; @@ -4755,8 +4861,12 @@ switch (yykind) case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.move< std::string > (YY_MOVE (s.value)); break; @@ -4953,7 +5063,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::h1 -#line 4957 "parser.hpp" +#line 5067 "parser.hpp" diff --git a/src/h2/xsk/compiler.cpp b/src/h2/xsk/compiler.cpp index 9d7e5c82..4e37bfd7 100644 --- a/src/h2/xsk/compiler.cpp +++ b/src/h2/xsk/compiler.cpp @@ -791,6 +791,7 @@ void compiler::emit_expr(const gsc::context_ptr& ctx, const gsc::expr_ptr& expr) case gsc::node_t::data_name: emit_local_variable(ctx, expr.as_name); break; case gsc::node_t::data_istring: emit_istring(ctx, expr.as_istring); break; case gsc::node_t::data_string: emit_string(ctx, expr.as_string); break; + case gsc::node_t::data_color: emit_color(ctx, expr.as_color); break; case gsc::node_t::data_vector: emit_vector(ctx, expr.as_vector); break; case gsc::node_t::data_float: emit_float(ctx, expr.as_float); break; case gsc::node_t::data_integer: emit_integer(ctx, expr.as_integer); break; @@ -1612,6 +1613,30 @@ void compiler::emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& s emit_opcode(ctx, opcode::OP_GetString, str->value); } +void compiler::emit_color(const gsc::context_ptr& ctx, const gsc::color_ptr& color) +{ + std::vector data; + std::string x, y, z; + + if(color->value.size() == 3) + { + x = "0x" + color->value.substr(0, 1) + color->value.substr(0, 1); + y = "0x" + color->value.substr(1, 1) + color->value.substr(1, 1); + z = "0x" + color->value.substr(2, 1) + color->value.substr(2, 1); + } + else + { + x = "0x" + color->value.substr(0, 2); + y = "0x" + color->value.substr(2, 2); + z = "0x" + color->value.substr(4, 2); + } + + data.push_back(gsc::utils::string::hex_to_dec(x.data())); + data.push_back(gsc::utils::string::hex_to_dec(y.data())); + data.push_back(gsc::utils::string::hex_to_dec(z.data())); + emit_opcode(ctx, opcode::OP_GetVector, data); +} + void compiler::emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec) { std::vector data; diff --git a/src/h2/xsk/compiler.hpp b/src/h2/xsk/compiler.hpp index 6e51b7d1..c7a800df 100644 --- a/src/h2/xsk/compiler.hpp +++ b/src/h2/xsk/compiler.hpp @@ -102,6 +102,7 @@ private: void emit_animation(const gsc::context_ptr& ctx, const gsc::animation_ptr& animation); void emit_istring(const gsc::context_ptr& ctx, const gsc::istring_ptr& str); void emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& str); + void emit_color(const gsc::context_ptr& ctx, const gsc::color_ptr& color); void emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec); void emit_float(const gsc::context_ptr& ctx, const gsc::float_ptr& num); void emit_integer(const gsc::context_ptr& ctx, const gsc::integer_ptr& num); diff --git a/src/h2/xsk/lexer.cpp b/src/h2/xsk/lexer.cpp index 0a65aa4f..bb0cae72 100644 --- a/src/h2/xsk/lexer.cpp +++ b/src/h2/xsk/lexer.cpp @@ -553,8 +553,8 @@ static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 101 -#define YY_END_OF_BUFFER 102 +#define YY_NUM_RULES 105 +#define YY_END_OF_BUFFER 106 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -562,42 +562,43 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[306] = +static const flex_int16_t yy_accept[319] = { 0, - 0, 0, 0, 0, 0, 0, 102, 100, 1, 2, - 89, 100, 100, 88, 92, 100, 49, 50, 86, 84, - 55, 85, 56, 87, 99, 58, 59, 73, 83, 74, - 60, 95, 53, 54, 93, 95, 95, 95, 95, 95, + 0, 0, 0, 0, 0, 0, 106, 104, 1, 2, + 89, 104, 104, 88, 92, 104, 49, 50, 86, 84, + 55, 85, 56, 87, 103, 103, 58, 59, 73, 83, + 74, 60, 95, 53, 54, 93, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 51, 91, 52, 90, 5, 6, 5, 9, 10, - 9, 70, 0, 97, 0, 0, 0, 0, 79, 0, - 68, 0, 81, 0, 0, 77, 61, 75, 62, 76, - 98, 0, 8, 4, 3, 78, 98, 99, 0, 0, - 57, 65, 71, 69, 72, 66, 95, 82, 95, 95, + 95, 95, 51, 91, 52, 90, 5, 6, 5, 9, + 10, 9, 70, 0, 97, 0, 0, 0, 0, 0, + 79, 0, 68, 0, 81, 0, 0, 77, 61, 75, + 62, 76, 99, 0, 8, 4, 3, 78, 99, 103, + 100, 0, 0, 0, 0, 57, 65, 71, 69, 72, - 95, 95, 95, 95, 95, 95, 95, 95, 95, 25, - 30, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 80, 67, 7, 11, 0, 97, 0, 0, - 0, 0, 0, 96, 0, 0, 0, 0, 97, 0, - 98, 0, 3, 98, 98, 94, 63, 64, 95, 95, - 95, 95, 95, 95, 95, 95, 95, 95, 28, 95, + 66, 95, 82, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 25, 30, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 80, 67, 7, + 11, 0, 97, 0, 0, 0, 0, 0, 0, 96, + 0, 0, 0, 0, 97, 0, 99, 0, 3, 99, + 99, 100, 101, 102, 94, 63, 64, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 28, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 0, 0, 0, 0, 96, 0, 0, 96, + 95, 98, 0, 0, 0, 0, 96, 0, 0, 96, 0, 0, 47, 95, 40, 32, 95, 95, 95, 26, + 95, 95, 95, 45, 95, 95, 95, 95, 46, 95, + 95, 95, 41, 95, 20, 95, 0, 0, 0, 0, + 44, 34, 95, 95, 95, 18, 42, 95, 48, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 27, 0, + 0, 0, 0, 95, 95, 95, 95, 95, 19, 95, + 95, 36, 31, 95, 37, 95, 95, 95, 98, 0, + 0, 0, 95, 95, 95, 33, 29, 95, 95, 95, + 95, 95, 95, 0, 15, 0, 95, 95, 35, 95, + 14, 95, 95, 95, 21, 17, 0, 95, 95, 95, + 95, 43, 24, 95, 95, 0, 12, 95, 13, 39, - 95, 95, 41, 95, 20, 95, 0, 0, 0, 44, - 34, 95, 95, 95, 18, 42, 95, 48, 95, 95, - 95, 95, 95, 95, 95, 95, 95, 27, 0, 0, - 0, 95, 95, 95, 95, 95, 19, 95, 95, 36, - 31, 95, 37, 95, 95, 95, 0, 0, 0, 95, - 95, 95, 33, 29, 95, 95, 95, 95, 95, 95, - 0, 15, 0, 95, 95, 35, 95, 14, 95, 95, - 95, 21, 17, 0, 95, 95, 95, 95, 43, 24, - 95, 95, 0, 12, 95, 13, 39, 95, 95, 0, - 38, 95, 95, 0, 95, 95, 0, 95, 22, 0, - - 95, 16, 95, 23, 0 + 95, 95, 0, 38, 95, 95, 0, 95, 95, 0, + 95, 22, 0, 95, 16, 95, 23, 0 } ; static const YY_CHAR yy_ec[256] = @@ -606,16 +607,16 @@ static const YY_CHAR yy_ec[256] = 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 5, 6, 1, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, - 22, 23, 24, 1, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 26, 27, 28, 29, 30, 1, 31, 32, 33, 34, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 20, 20, 20, 20, 20, 21, 21, 22, 23, 24, + 25, 26, 27, 1, 28, 29, 28, 28, 28, 28, + 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 31, 30, 30, + 32, 33, 34, 35, 36, 1, 37, 38, 39, 40, - 35, 36, 37, 38, 39, 25, 40, 41, 42, 43, - 44, 45, 25, 46, 47, 48, 49, 50, 51, 25, - 52, 53, 54, 55, 56, 57, 1, 1, 1, 1, + 41, 42, 43, 44, 45, 30, 46, 47, 48, 49, + 50, 51, 30, 52, 53, 54, 55, 56, 57, 31, + 58, 59, 60, 61, 62, 63, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -632,240 +633,269 @@ static const YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static const YY_CHAR yy_meta[58] = +static const YY_CHAR yy_meta[64] = { 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 1, 4, 1, 1, - 1, 1, 1, 1, 4, 1, 5, 1, 1, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 1, 1, 1, 1 + 1, 1, 1, 1, 1, 3, 1, 4, 4, 4, + 4, 1, 1, 1, 1, 1, 1, 4, 4, 5, + 5, 1, 6, 1, 1, 5, 4, 4, 4, 4, + 4, 4, 5, 5, 7, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 7, 5, 5, 5, 5, 1, + 1, 1, 1 } ; -static const flex_int16_t yy_base[320] = +static const flex_int16_t yy_base[339] = { 0, - 0, 0, 55, 56, 57, 58, 575, 576, 576, 576, - 552, 57, 34, 551, 66, 60, 576, 576, 550, 57, - 576, 63, 48, 74, 74, 552, 576, 55, 548, 59, - 576, 542, 576, 576, 546, 62, 66, 71, 72, 67, - 73, 87, 70, 76, 89, 92, 93, 94, 96, 97, - 99, 576, 100, 576, 576, 576, 576, 550, 576, 576, - 549, 576, 120, 576, 136, 522, 521, 516, 576, 122, - 576, 123, 576, 126, 143, 576, 576, 576, 576, 576, - 118, 523, 576, 576, 0, 576, 125, 140, 132, 0, - 576, 539, 576, 576, 576, 538, 532, 576, 130, 133, + 0, 0, 61, 62, 63, 64, 677, 678, 678, 678, + 651, 63, 34, 650, 67, 68, 678, 678, 649, 65, + 678, 66, 64, 81, 89, 95, 651, 678, 70, 647, + 74, 678, 638, 678, 678, 645, 53, 71, 88, 47, + 86, 93, 103, 104, 98, 79, 108, 101, 111, 112, + 114, 117, 678, 123, 678, 678, 678, 678, 652, 678, + 678, 651, 678, 144, 678, 152, 0, 618, 617, 612, + 678, 146, 678, 149, 678, 150, 162, 678, 678, 678, + 678, 678, 154, 619, 678, 678, 0, 678, 168, 181, + 187, 160, 193, 211, 0, 678, 638, 678, 678, 678, - 124, 135, 137, 139, 145, 149, 146, 150, 151, 531, - 530, 152, 155, 154, 157, 158, 161, 162, 163, 170, - 167, 168, 576, 576, 576, 576, 186, 204, 211, 517, - 522, 515, 205, 576, 212, 202, 215, 210, 213, 217, - 576, 500, 0, 205, 576, 525, 576, 576, 194, 203, - 206, 200, 216, 198, 218, 221, 223, 224, 225, 226, - 227, 231, 228, 232, 236, 238, 241, 239, 242, 248, - 246, 249, 509, 509, 506, 273, 274, 277, 275, 276, - 284, 513, 520, 104, 519, 518, 262, 268, 264, 517, - 265, 270, 279, 516, 271, 282, 287, 288, 515, 289, + 637, 628, 678, 133, 129, 171, 136, 184, 180, 182, + 158, 147, 186, 188, 627, 626, 134, 70, 192, 183, + 208, 201, 212, 210, 214, 223, 225, 678, 678, 678, + 678, 254, 255, 258, 0, 613, 618, 611, 257, 678, + 264, 262, 263, 265, 266, 270, 678, 596, 0, 262, + 678, 289, 295, 0, 621, 678, 678, 244, 252, 253, + 243, 268, 269, 279, 284, 285, 273, 286, 288, 291, + 297, 298, 300, 301, 287, 303, 304, 305, 306, 311, + 315, 0, 605, 605, 602, 344, 345, 348, 343, 349, + 351, 609, 616, 324, 615, 614, 326, 328, 330, 613, - 272, 292, 514, 294, 297, 300, 492, 490, 501, 576, - 298, 299, 301, 305, 510, 509, 304, 508, 302, 321, - 309, 311, 312, 324, 328, 313, 330, 507, 487, 498, - 501, 333, 334, 314, 335, 337, 503, 338, 339, 502, - 501, 341, 500, 343, 347, 344, 491, 490, 493, 349, - 352, 354, 496, 495, 353, 357, 365, 366, 367, 369, - 486, 576, 477, 368, 370, 492, 375, 491, 372, 379, - 377, 380, 576, 478, 381, 388, 390, 391, 489, 488, - 393, 396, 472, 473, 394, 425, 424, 399, 397, 402, - 422, 404, 405, 398, 407, 409, 405, 408, 315, 193, + 245, 331, 334, 612, 336, 346, 353, 335, 611, 341, + 342, 357, 610, 358, 359, 362, 0, 588, 586, 597, + 678, 360, 364, 365, 369, 606, 605, 366, 604, 371, + 374, 373, 375, 376, 377, 388, 390, 391, 603, 0, + 583, 594, 597, 393, 394, 392, 395, 397, 599, 398, + 399, 598, 597, 401, 596, 402, 407, 412, 678, 587, + 586, 589, 413, 404, 419, 592, 591, 421, 417, 422, + 428, 429, 432, 582, 678, 573, 433, 434, 588, 435, + 587, 437, 438, 440, 443, 678, 574, 439, 450, 451, + 455, 585, 569, 453, 457, 546, 514, 456, 513, 489, - 410, 576, 414, 159, 576, 453, 458, 463, 468, 471, - 473, 478, 483, 488, 493, 498, 68, 503, 508 + 464, 459, 467, 487, 466, 465, 467, 469, 473, 477, + 470, 483, 471, 474, 678, 475, 476, 678, 523, 530, + 537, 541, 548, 553, 557, 564, 289, 571, 578, 585, + 592, 596, 224, 603, 610, 219, 188, 93 } ; -static const flex_int16_t yy_def[320] = +static const flex_int16_t yy_def[339] = { 0, - 305, 1, 306, 306, 307, 307, 305, 305, 305, 305, - 305, 308, 305, 305, 305, 309, 305, 305, 305, 305, - 305, 305, 305, 305, 310, 305, 305, 305, 305, 305, - 305, 311, 305, 305, 305, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 308, 305, 312, 305, 305, 305, 305, 313, - 305, 314, 305, 309, 315, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 316, 305, 305, 310, 310, 317, - 305, 305, 305, 305, 305, 305, 311, 305, 311, 311, + 318, 1, 319, 319, 320, 320, 318, 318, 318, 318, + 318, 321, 322, 318, 318, 323, 318, 318, 318, 318, + 318, 318, 318, 318, 324, 324, 318, 318, 318, 318, + 318, 318, 325, 318, 318, 318, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 321, 318, 326, 327, 327, 318, 318, + 318, 328, 318, 329, 318, 323, 330, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 331, 318, 318, 324, + 324, 324, 324, 324, 332, 318, 318, 318, 318, 318, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 305, 305, 305, 305, 308, 308, 312, 305, - 305, 305, 313, 305, 318, 314, 319, 309, 309, 315, - 305, 305, 316, 305, 305, 317, 305, 305, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 305, 305, 305, 313, 313, 318, 314, 314, - 319, 305, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 318, 325, 318, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 318, 318, 318, + 318, 321, 321, 326, 333, 318, 318, 318, 328, 318, + 334, 329, 335, 323, 323, 330, 318, 318, 331, 318, + 318, 324, 324, 94, 332, 318, 318, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 336, 318, 318, 318, 328, 328, 334, 329, 329, + 335, 318, 325, 325, 325, 325, 325, 325, 325, 325, - 311, 311, 311, 311, 311, 311, 305, 305, 305, 305, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 305, 305, - 305, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 305, 305, 305, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 305, 305, 305, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 305, 305, 311, 311, 311, 311, 311, 311, - 311, 311, 305, 311, 311, 311, 311, 311, 311, 305, - 311, 311, 311, 305, 311, 311, 305, 311, 311, 305, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 337, 318, 318, 318, + 318, 325, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 338, + 318, 318, 318, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 318, 318, + 318, 318, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 318, 318, 318, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 318, 318, 325, 325, 325, + 325, 325, 325, 325, 325, 318, 325, 325, 325, 325, - 311, 305, 311, 311, 0, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305 + 325, 325, 318, 325, 325, 325, 318, 325, 325, 318, + 325, 325, 318, 325, 318, 325, 325, 0, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318 } ; -static const flex_int16_t yy_nxt[634] = +static const flex_int16_t yy_nxt[742] = { 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 8, 34, 35, 32, - 36, 37, 38, 39, 40, 41, 42, 32, 43, 32, - 44, 32, 45, 32, 46, 47, 48, 49, 50, 32, - 51, 32, 32, 52, 53, 54, 55, 57, 57, 60, - 60, 64, 61, 61, 66, 81, 58, 58, 64, 77, - 70, 146, 67, 71, 72, 92, 93, 79, 78, 83, - 95, 96, 68, 65, 80, 84, 75, 73, 90, 87, - 85, 88, 90, 90, 82, 86, 90, 90, 90, 90, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 26, + 26, 27, 28, 29, 30, 31, 32, 33, 33, 33, + 33, 34, 8, 35, 36, 33, 37, 38, 39, 40, + 41, 42, 43, 33, 44, 33, 45, 33, 46, 33, + 47, 48, 49, 50, 51, 33, 52, 33, 33, 53, + 54, 55, 56, 58, 58, 61, 61, 65, 62, 62, + 68, 72, 59, 59, 73, 74, 65, 79, 69, 95, + 81, 83, 83, 83, 83, 95, 85, 109, 70, 80, + 82, 75, 86, 97, 98, 66, 259, 87, 100, 101, - 90, 101, 90, 107, 99, 110, 104, 105, 102, 106, - 112, 100, 111, 90, 103, 90, 108, 109, 90, 90, - 90, 123, 90, 90, 64, 90, 134, 115, 116, 121, - 90, 134, 113, 118, 64, 81, 122, 114, 63, 120, - 128, 119, 144, 211, 117, 74, 65, 305, 135, 137, - 90, 139, 75, 141, 124, 87, 90, 88, 90, 90, - 145, 90, 129, 90, 151, 90, 90, 150, 149, 140, - 152, 90, 90, 153, 155, 90, 90, 90, 90, 154, - 90, 90, 157, 90, 90, 90, 158, 90, 90, 90, - 64, 156, 160, 90, 90, 159, 90, 163, 165, 166, + 77, 104, 95, 95, 89, 88, 90, 91, 91, 90, + 89, 95, 90, 90, 90, 90, 84, 93, 95, 94, + 95, 95, 105, 171, 106, 95, 93, 95, 118, 112, + 95, 107, 110, 95, 111, 95, 95, 108, 117, 114, + 95, 120, 113, 95, 95, 115, 95, 128, 65, 95, + 140, 121, 116, 126, 64, 123, 133, 140, 65, 119, + 127, 95, 125, 124, 76, 95, 95, 122, 95, 159, + 145, 83, 83, 83, 83, 318, 66, 158, 141, 95, + 162, 143, 77, 129, 134, 150, 150, 150, 150, 170, + 95, 240, 95, 167, 146, 147, 89, 166, 90, 90, - 167, 161, 162, 170, 164, 171, 172, 168, 64, 134, - 134, 169, 65, 63, 133, 128, 177, 136, 64, 74, - 90, 64, 144, 180, 90, 139, 90, 302, 137, 90, - 65, 135, 90, 184, 186, 183, 75, 129, 178, 75, - 145, 181, 90, 140, 90, 188, 185, 90, 189, 90, - 90, 90, 90, 90, 90, 190, 187, 90, 90, 193, - 194, 195, 90, 197, 90, 90, 191, 90, 90, 196, - 192, 199, 90, 202, 90, 90, 203, 134, 134, 133, - 198, 177, 204, 134, 134, 200, 136, 201, 90, 206, - 90, 90, 180, 205, 90, 212, 90, 90, 90, 135, + 90, 90, 89, 95, 152, 152, 152, 90, 318, 151, + 153, 153, 95, 95, 95, 95, 95, 160, 95, 95, + 95, 164, 217, 161, 95, 95, 318, 182, 154, 154, + 154, 154, 163, 95, 165, 169, 173, 168, 154, 154, + 95, 172, 95, 95, 95, 175, 95, 154, 154, 154, + 154, 154, 154, 179, 174, 95, 176, 95, 65, 65, + 64, 140, 133, 177, 178, 142, 139, 180, 187, 181, + 140, 190, 76, 65, 65, 95, 95, 95, 145, 150, + 150, 150, 150, 196, 95, 95, 66, 66, 194, 141, + 134, 193, 135, 226, 143, 191, 188, 77, 77, 195, - 135, 137, 137, 178, 216, 90, 213, 215, 90, 217, - 181, 218, 214, 90, 90, 90, 220, 219, 90, 223, - 90, 222, 224, 90, 90, 90, 90, 90, 90, 225, - 90, 90, 226, 221, 228, 90, 236, 90, 90, 90, - 90, 90, 232, 234, 227, 235, 233, 90, 241, 242, - 90, 240, 238, 237, 90, 239, 90, 243, 245, 90, - 90, 90, 252, 90, 90, 90, 244, 90, 246, 90, - 90, 251, 255, 90, 254, 90, 250, 259, 90, 90, - 90, 256, 253, 90, 260, 258, 257, 264, 266, 267, - 268, 90, 90, 90, 90, 90, 90, 265, 90, 269, + 95, 95, 146, 151, 89, 95, 152, 152, 152, 90, + 318, 95, 153, 153, 197, 199, 95, 95, 95, 95, + 95, 95, 198, 95, 200, 202, 203, 95, 204, 95, + 95, 205, 95, 95, 201, 95, 95, 95, 95, 207, + 210, 206, 209, 95, 212, 213, 214, 95, 140, 140, + 139, 140, 187, 142, 208, 211, 95, 140, 95, 190, + 95, 216, 95, 95, 215, 223, 95, 95, 95, 222, + 228, 227, 224, 95, 95, 143, 141, 141, 95, 233, + 188, 143, 229, 191, 225, 95, 232, 230, 231, 95, + 95, 95, 95, 235, 95, 234, 95, 95, 95, 236, - 270, 90, 278, 90, 276, 90, 90, 90, 271, 272, - 275, 280, 279, 277, 90, 281, 90, 90, 285, 90, - 90, 282, 90, 90, 287, 90, 289, 291, 284, 292, - 90, 90, 286, 90, 90, 90, 90, 296, 288, 300, - 90, 298, 301, 297, 293, 295, 299, 304, 90, 294, - 90, 90, 303, 56, 56, 56, 56, 56, 59, 59, - 59, 59, 59, 63, 63, 63, 63, 63, 74, 74, - 74, 74, 74, 89, 89, 89, 97, 97, 127, 127, - 127, 127, 127, 133, 133, 133, 133, 133, 136, 136, - 136, 136, 136, 138, 138, 138, 138, 138, 143, 90, + 237, 95, 239, 95, 248, 95, 95, 95, 95, 95, + 244, 250, 238, 246, 251, 247, 255, 245, 253, 254, + 95, 252, 95, 95, 95, 95, 95, 95, 249, 95, + 95, 95, 256, 95, 95, 258, 95, 264, 268, 95, + 267, 257, 263, 272, 95, 95, 265, 269, 266, 95, + 271, 95, 270, 95, 95, 278, 281, 277, 273, 279, + 95, 95, 282, 280, 95, 95, 95, 95, 283, 95, + 95, 95, 95, 291, 289, 95, 284, 292, 285, 290, + 293, 288, 95, 95, 294, 95, 298, 95, 95, 95, + 295, 95, 297, 302, 300, 304, 95, 95, 95, 299, - 143, 143, 143, 176, 176, 176, 176, 176, 179, 179, - 179, 179, 179, 290, 90, 90, 283, 90, 90, 274, - 273, 90, 90, 263, 262, 261, 90, 90, 90, 90, - 249, 248, 247, 90, 90, 90, 90, 231, 230, 229, - 90, 90, 90, 90, 90, 90, 90, 210, 209, 208, - 207, 90, 182, 175, 174, 173, 90, 90, 90, 148, - 147, 142, 132, 131, 130, 126, 125, 98, 90, 94, - 91, 76, 69, 62, 305, 7, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 95, 95, 309, 301, 95, 95, 95, 95, 311, + 314, 315, 306, 308, 317, 95, 312, 313, 310, 95, + 307, 95, 316, 57, 57, 57, 57, 57, 57, 57, + 60, 60, 60, 60, 60, 60, 60, 64, 64, 64, + 64, 64, 64, 64, 67, 95, 95, 67, 76, 76, + 76, 76, 76, 76, 76, 92, 92, 92, 92, 92, + 102, 102, 102, 102, 132, 132, 132, 132, 132, 132, + 132, 139, 139, 139, 139, 139, 139, 139, 142, 142, + 142, 142, 142, 142, 142, 144, 144, 144, 144, 144, + 144, 144, 149, 303, 149, 149, 149, 149, 149, 155, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305 + 155, 95, 155, 186, 186, 186, 186, 186, 186, 186, + 189, 189, 189, 189, 189, 189, 189, 95, 296, 95, + 95, 287, 286, 95, 95, 276, 275, 274, 95, 95, + 95, 95, 262, 261, 260, 95, 95, 95, 95, 243, + 242, 241, 95, 95, 95, 95, 95, 95, 95, 221, + 220, 219, 218, 95, 192, 185, 184, 183, 95, 95, + 95, 157, 156, 148, 138, 137, 136, 131, 130, 103, + 95, 99, 96, 78, 71, 63, 318, 7, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318 } ; -static const flex_int16_t yy_chk[634] = +static const flex_int16_t yy_chk[742] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 3, 4, 5, - 6, 12, 5, 6, 13, 23, 3, 4, 16, 20, - 15, 317, 13, 15, 15, 28, 28, 22, 20, 24, - 30, 30, 13, 12, 22, 24, 16, 15, 36, 25, - 24, 25, 37, 40, 23, 24, 43, 38, 39, 41, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 4, 5, 6, 12, 5, 6, + 13, 15, 3, 4, 15, 15, 16, 20, 13, 40, + 22, 23, 23, 23, 23, 37, 24, 40, 13, 20, + 22, 15, 24, 29, 29, 12, 338, 24, 31, 31, - 25, 38, 44, 41, 36, 43, 39, 40, 38, 40, - 44, 37, 43, 42, 38, 45, 41, 42, 46, 47, - 48, 53, 49, 50, 63, 51, 70, 47, 48, 51, - 184, 72, 45, 49, 74, 81, 51, 46, 65, 50, - 65, 49, 87, 184, 48, 75, 63, 89, 70, 72, - 101, 75, 74, 81, 53, 88, 99, 88, 89, 100, - 87, 102, 65, 103, 101, 104, 88, 100, 99, 75, - 101, 105, 107, 102, 104, 106, 108, 109, 112, 103, - 114, 113, 106, 115, 116, 304, 107, 117, 118, 119, - 127, 105, 109, 121, 122, 108, 120, 114, 116, 117, + 16, 37, 118, 38, 25, 24, 25, 25, 25, 25, + 26, 46, 26, 26, 26, 26, 23, 25, 41, 25, + 39, 25, 38, 118, 39, 42, 25, 26, 46, 42, + 45, 39, 41, 48, 41, 43, 44, 39, 45, 43, + 47, 48, 42, 49, 50, 44, 51, 54, 64, 52, + 72, 49, 44, 52, 66, 50, 66, 74, 76, 47, + 52, 105, 51, 50, 77, 104, 117, 49, 107, 105, + 77, 83, 83, 83, 83, 92, 64, 104, 72, 112, + 107, 74, 76, 54, 66, 89, 89, 89, 89, 117, + 111, 337, 92, 112, 77, 83, 90, 111, 90, 90, - 118, 112, 113, 120, 115, 121, 122, 118, 128, 133, - 136, 119, 127, 129, 135, 129, 135, 137, 138, 140, - 149, 139, 144, 137, 154, 140, 152, 300, 136, 150, - 128, 133, 151, 150, 152, 149, 138, 129, 135, 139, - 144, 137, 153, 140, 155, 154, 151, 156, 155, 157, - 158, 159, 160, 161, 163, 156, 153, 162, 164, 159, - 160, 161, 165, 163, 166, 168, 157, 167, 169, 162, - 158, 165, 171, 168, 170, 172, 169, 176, 177, 178, - 164, 178, 170, 179, 180, 166, 181, 167, 187, 172, - 189, 191, 181, 171, 188, 187, 192, 195, 201, 176, + 90, 90, 91, 106, 91, 91, 91, 91, 93, 89, + 93, 93, 109, 90, 110, 120, 108, 106, 113, 91, + 114, 109, 336, 106, 119, 93, 94, 333, 94, 94, + 94, 94, 108, 122, 110, 114, 120, 113, 94, 94, + 121, 119, 124, 94, 123, 122, 125, 94, 94, 94, + 94, 94, 94, 125, 121, 126, 123, 127, 132, 133, + 134, 139, 134, 123, 124, 143, 141, 126, 141, 127, + 142, 143, 146, 144, 145, 161, 158, 201, 146, 150, + 150, 150, 150, 161, 159, 160, 132, 133, 159, 139, + 134, 158, 327, 201, 142, 143, 141, 144, 145, 160, - 177, 179, 180, 178, 192, 193, 188, 191, 196, 193, - 181, 195, 189, 197, 198, 200, 197, 196, 202, 201, - 204, 200, 202, 205, 211, 212, 206, 213, 219, 204, - 217, 214, 205, 198, 206, 221, 217, 222, 223, 226, - 234, 299, 211, 213, 205, 214, 212, 220, 222, 223, - 224, 221, 220, 219, 225, 220, 227, 224, 226, 232, - 233, 235, 234, 236, 238, 239, 225, 242, 227, 244, - 246, 233, 238, 245, 236, 250, 232, 245, 251, 255, - 252, 239, 235, 256, 246, 244, 242, 250, 252, 255, - 256, 257, 258, 259, 264, 260, 265, 251, 269, 257, + 162, 163, 146, 150, 152, 167, 152, 152, 152, 152, + 153, 164, 153, 153, 162, 164, 165, 166, 168, 175, + 169, 152, 163, 170, 165, 167, 168, 153, 169, 171, + 172, 170, 173, 174, 166, 176, 177, 178, 179, 172, + 175, 171, 174, 180, 177, 178, 179, 181, 186, 187, + 188, 189, 188, 191, 173, 176, 194, 190, 197, 191, + 198, 181, 199, 202, 180, 197, 203, 208, 205, 194, + 203, 202, 198, 210, 211, 189, 186, 187, 206, 210, + 188, 190, 205, 191, 199, 207, 208, 206, 207, 212, + 214, 215, 222, 212, 216, 211, 223, 224, 228, 214, - 258, 267, 269, 271, 265, 270, 272, 275, 259, 260, - 264, 271, 270, 267, 276, 272, 277, 278, 276, 281, - 285, 272, 282, 289, 278, 288, 282, 285, 275, 288, - 292, 293, 277, 295, 298, 296, 301, 293, 281, 297, - 303, 295, 298, 294, 289, 292, 296, 303, 291, 290, - 287, 286, 301, 306, 306, 306, 306, 306, 307, 307, - 307, 307, 307, 308, 308, 308, 308, 308, 309, 309, - 309, 309, 309, 310, 310, 310, 311, 311, 312, 312, - 312, 312, 312, 313, 313, 313, 313, 313, 314, 314, - 314, 314, 314, 315, 315, 315, 315, 315, 316, 284, + 215, 225, 216, 230, 228, 232, 231, 233, 234, 235, + 222, 231, 215, 224, 231, 225, 235, 223, 233, 234, + 236, 232, 237, 238, 246, 244, 245, 247, 230, 248, + 250, 251, 236, 254, 256, 238, 264, 245, 250, 257, + 248, 237, 244, 257, 258, 263, 246, 251, 247, 269, + 256, 265, 254, 268, 270, 264, 269, 263, 258, 265, + 271, 272, 270, 268, 273, 277, 278, 280, 271, 282, + 283, 288, 284, 282, 278, 285, 272, 283, 273, 280, + 284, 277, 289, 290, 285, 294, 289, 291, 298, 295, + 285, 302, 288, 295, 291, 298, 301, 306, 305, 290, - 316, 316, 316, 318, 318, 318, 318, 318, 319, 319, - 319, 319, 319, 283, 280, 279, 274, 268, 266, 263, - 261, 254, 253, 249, 248, 247, 243, 241, 240, 237, - 231, 230, 229, 228, 218, 216, 215, 209, 208, 207, - 203, 199, 194, 190, 186, 185, 183, 182, 175, 174, - 173, 146, 142, 132, 131, 130, 111, 110, 97, 96, - 92, 82, 68, 67, 66, 61, 58, 35, 32, 29, - 26, 19, 14, 11, 7, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 301, 308, 311, 306, 294, 309, 314, 316, 317, 308, + 311, 313, 302, 305, 316, 312, 309, 310, 307, 304, + 303, 300, 314, 319, 319, 319, 319, 319, 319, 319, + 320, 320, 320, 320, 320, 320, 320, 321, 321, 321, + 321, 321, 321, 321, 322, 299, 297, 322, 323, 323, + 323, 323, 323, 323, 323, 324, 324, 324, 324, 324, + 325, 325, 325, 325, 326, 326, 326, 326, 326, 326, + 326, 328, 328, 328, 328, 328, 328, 328, 329, 329, + 329, 329, 329, 329, 329, 330, 330, 330, 330, 330, + 330, 330, 331, 296, 331, 331, 331, 331, 331, 332, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305 + 332, 293, 332, 334, 334, 334, 334, 334, 334, 334, + 335, 335, 335, 335, 335, 335, 335, 292, 287, 281, + 279, 276, 274, 267, 266, 262, 261, 260, 255, 253, + 252, 249, 243, 242, 241, 239, 229, 227, 226, 220, + 219, 218, 213, 209, 204, 200, 196, 195, 193, 192, + 185, 184, 183, 155, 148, 138, 137, 136, 116, 115, + 102, 101, 97, 84, 70, 69, 68, 62, 59, 36, + 33, 30, 27, 19, 14, 11, 7, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318 } ; /* The intent behind this definition is that it'll catch @@ -886,9 +916,9 @@ static const flex_int16_t yy_chk[634] = #line 23 "lexer.lpp" #define YY_USER_ACTION loc.columns(yyleng); -#line 889 "lexer.cpp" +#line 919 "lexer.cpp" -#line 891 "lexer.cpp" +#line 921 "lexer.cpp" #define INITIAL 0 #define COMMENT_BLOCK_STATE 1 @@ -1148,15 +1178,15 @@ YY_DECL } { -#line 36 "lexer.lpp" +#line 40 "lexer.lpp" -#line 40 "lexer.lpp" +#line 44 "lexer.lpp" loc.step(); -#line 1159 "lexer.cpp" +#line 1189 "lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1183,13 +1213,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 306 ) + if ( yy_current_state >= 319 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 305 ); + while ( yy_current_state != 318 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -1211,522 +1241,542 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 43 "lexer.lpp" +#line 47 "lexer.lpp" { loc.step(); } YY_BREAK case 2: /* rule 2 can match eol */ YY_RULE_SETUP -#line 45 "lexer.lpp" +#line 49 "lexer.lpp" { loc.lines(yyleng); loc.step(); } YY_BREAK case 3: YY_RULE_SETUP -#line 47 "lexer.lpp" +#line 51 "lexer.lpp" YY_BREAK case 4: YY_RULE_SETUP -#line 49 "lexer.lpp" +#line 53 "lexer.lpp" { BEGIN(COMMENT_BLOCK_STATE); } YY_BREAK case 5: YY_RULE_SETUP -#line 50 "lexer.lpp" +#line 54 "lexer.lpp" YY_BREAK case 6: /* rule 6 can match eol */ YY_RULE_SETUP -#line 51 "lexer.lpp" +#line 55 "lexer.lpp" { loc.lines(yyleng); loc.step(); } YY_BREAK case 7: YY_RULE_SETUP -#line 52 "lexer.lpp" +#line 56 "lexer.lpp" { BEGIN(INITIAL); } YY_BREAK case 8: YY_RULE_SETUP -#line 54 "lexer.lpp" +#line 58 "lexer.lpp" { BEGIN(DEVELOPER_BLOCK_STATE); } YY_BREAK case 9: YY_RULE_SETUP -#line 55 "lexer.lpp" +#line 59 "lexer.lpp" YY_BREAK case 10: /* rule 10 can match eol */ YY_RULE_SETUP -#line 56 "lexer.lpp" +#line 60 "lexer.lpp" { loc.lines(yyleng); loc.step(); } YY_BREAK case 11: YY_RULE_SETUP -#line 57 "lexer.lpp" +#line 61 "lexer.lpp" { BEGIN(INITIAL); } YY_BREAK case 12: YY_RULE_SETUP -#line 59 "lexer.lpp" +#line 63 "lexer.lpp" { return h2::parser::make_BREAKPOINT(loc); } YY_BREAK case 13: YY_RULE_SETUP -#line 60 "lexer.lpp" +#line 64 "lexer.lpp" { return h2::parser::make_PROFBEGIN(loc); } YY_BREAK case 14: YY_RULE_SETUP -#line 61 "lexer.lpp" +#line 65 "lexer.lpp" { return h2::parser::make_PROFEND(loc); } YY_BREAK case 15: YY_RULE_SETUP -#line 62 "lexer.lpp" +#line 66 "lexer.lpp" { return h2::parser::make_INCLUDE(loc); } YY_BREAK case 16: YY_RULE_SETUP -#line 63 "lexer.lpp" +#line 67 "lexer.lpp" { return h2::parser::make_USINGTREE(loc); } YY_BREAK case 17: YY_RULE_SETUP -#line 64 "lexer.lpp" +#line 68 "lexer.lpp" { return h2::parser::make_ANIMTREE(loc); } YY_BREAK case 18: YY_RULE_SETUP -#line 65 "lexer.lpp" +#line 69 "lexer.lpp" { return h2::parser::make_ENDON(loc); } YY_BREAK case 19: YY_RULE_SETUP -#line 66 "lexer.lpp" +#line 70 "lexer.lpp" { return h2::parser::make_NOTIFY(loc); } YY_BREAK case 20: YY_RULE_SETUP -#line 67 "lexer.lpp" +#line 71 "lexer.lpp" { return h2::parser::make_WAIT(loc); } YY_BREAK case 21: YY_RULE_SETUP -#line 68 "lexer.lpp" +#line 72 "lexer.lpp" { return h2::parser::make_WAITTILL(loc); } YY_BREAK case 22: YY_RULE_SETUP -#line 69 "lexer.lpp" +#line 73 "lexer.lpp" { return h2::parser::make_WAITTILLMATCH(loc); } YY_BREAK case 23: YY_RULE_SETUP -#line 70 "lexer.lpp" +#line 74 "lexer.lpp" { return h2::parser::make_WAITTILLFRAMEEND(loc); } YY_BREAK case 24: YY_RULE_SETUP -#line 71 "lexer.lpp" +#line 75 "lexer.lpp" { return h2::parser::make_WAITFRAME(loc); } YY_BREAK case 25: YY_RULE_SETUP -#line 72 "lexer.lpp" +#line 76 "lexer.lpp" { return h2::parser::make_IF(loc); } YY_BREAK case 26: YY_RULE_SETUP -#line 73 "lexer.lpp" +#line 77 "lexer.lpp" { return h2::parser::make_ELSE(loc); } YY_BREAK case 27: YY_RULE_SETUP -#line 74 "lexer.lpp" +#line 78 "lexer.lpp" { return h2::parser::make_WHILE(loc); } YY_BREAK case 28: YY_RULE_SETUP -#line 75 "lexer.lpp" +#line 79 "lexer.lpp" { return h2::parser::make_FOR(loc); } YY_BREAK case 29: YY_RULE_SETUP -#line 76 "lexer.lpp" +#line 80 "lexer.lpp" { return h2::parser::make_FOREACH(loc); } YY_BREAK case 30: YY_RULE_SETUP -#line 77 "lexer.lpp" +#line 81 "lexer.lpp" { return h2::parser::make_IN(loc); } YY_BREAK case 31: YY_RULE_SETUP -#line 78 "lexer.lpp" +#line 82 "lexer.lpp" { return h2::parser::make_SWITCH(loc); } YY_BREAK case 32: YY_RULE_SETUP -#line 79 "lexer.lpp" +#line 83 "lexer.lpp" { return h2::parser::make_CASE(loc); } YY_BREAK case 33: YY_RULE_SETUP -#line 80 "lexer.lpp" +#line 84 "lexer.lpp" { return h2::parser::make_DEFAULT(loc); } YY_BREAK case 34: YY_RULE_SETUP -#line 81 "lexer.lpp" +#line 85 "lexer.lpp" { return h2::parser::make_BREAK(loc); } YY_BREAK case 35: YY_RULE_SETUP -#line 82 "lexer.lpp" +#line 86 "lexer.lpp" { return h2::parser::make_CONTINUE(loc); } YY_BREAK case 36: YY_RULE_SETUP -#line 83 "lexer.lpp" +#line 87 "lexer.lpp" { return h2::parser::make_RETURN(loc); } YY_BREAK case 37: YY_RULE_SETUP -#line 84 "lexer.lpp" +#line 88 "lexer.lpp" { return h2::parser::make_THREAD(loc); } YY_BREAK case 38: YY_RULE_SETUP -#line 85 "lexer.lpp" +#line 89 "lexer.lpp" { return h2::parser::make_CHILDTHREAD(loc); } YY_BREAK case 39: YY_RULE_SETUP -#line 86 "lexer.lpp" +#line 90 "lexer.lpp" { return h2::parser::make_THISTHREAD(loc); } YY_BREAK case 40: YY_RULE_SETUP -#line 87 "lexer.lpp" +#line 91 "lexer.lpp" { return h2::parser::make_CALL(loc); } YY_BREAK case 41: YY_RULE_SETUP -#line 88 "lexer.lpp" +#line 92 "lexer.lpp" { return h2::parser::make_TRUE(loc); } YY_BREAK case 42: YY_RULE_SETUP -#line 89 "lexer.lpp" +#line 93 "lexer.lpp" { return h2::parser::make_FALSE(loc); } YY_BREAK case 43: YY_RULE_SETUP -#line 90 "lexer.lpp" +#line 94 "lexer.lpp" { return h2::parser::make_UNDEFINED(loc); } YY_BREAK case 44: YY_RULE_SETUP -#line 91 "lexer.lpp" +#line 95 "lexer.lpp" { return h2::parser::make_SIZE(loc); } YY_BREAK case 45: YY_RULE_SETUP -#line 92 "lexer.lpp" +#line 96 "lexer.lpp" { return h2::parser::make_GAME(loc); } YY_BREAK case 46: YY_RULE_SETUP -#line 93 "lexer.lpp" +#line 97 "lexer.lpp" { return h2::parser::make_SELF(loc); } YY_BREAK case 47: YY_RULE_SETUP -#line 94 "lexer.lpp" +#line 98 "lexer.lpp" { return h2::parser::make_ANIM(loc); } YY_BREAK case 48: YY_RULE_SETUP -#line 95 "lexer.lpp" +#line 99 "lexer.lpp" { return h2::parser::make_LEVEL(loc); } YY_BREAK case 49: YY_RULE_SETUP -#line 96 "lexer.lpp" +#line 100 "lexer.lpp" { return h2::parser::make_LPAREN(loc); } YY_BREAK case 50: YY_RULE_SETUP -#line 97 "lexer.lpp" +#line 101 "lexer.lpp" { return h2::parser::make_RPAREN(loc); } YY_BREAK case 51: YY_RULE_SETUP -#line 98 "lexer.lpp" +#line 102 "lexer.lpp" { return h2::parser::make_LBRACE(loc); } YY_BREAK case 52: YY_RULE_SETUP -#line 99 "lexer.lpp" +#line 103 "lexer.lpp" { return h2::parser::make_RBRACE(loc); } YY_BREAK case 53: YY_RULE_SETUP -#line 100 "lexer.lpp" +#line 104 "lexer.lpp" { return h2::parser::make_LBRACKET(loc); } YY_BREAK case 54: YY_RULE_SETUP -#line 101 "lexer.lpp" +#line 105 "lexer.lpp" { return h2::parser::make_RBRACKET(loc); } YY_BREAK case 55: YY_RULE_SETUP -#line 102 "lexer.lpp" +#line 106 "lexer.lpp" { return h2::parser::make_COMMA(loc); } YY_BREAK case 56: YY_RULE_SETUP -#line 103 "lexer.lpp" +#line 107 "lexer.lpp" { return h2::parser::make_DOT(loc); } YY_BREAK case 57: YY_RULE_SETUP -#line 104 "lexer.lpp" +#line 108 "lexer.lpp" { return h2::parser::make_DOUBLECOLON(loc); } YY_BREAK case 58: YY_RULE_SETUP -#line 105 "lexer.lpp" +#line 109 "lexer.lpp" { return h2::parser::make_COLON(loc); } YY_BREAK case 59: YY_RULE_SETUP -#line 106 "lexer.lpp" +#line 110 "lexer.lpp" { return h2::parser::make_SEMICOLON(loc); } YY_BREAK case 60: YY_RULE_SETUP -#line 107 "lexer.lpp" +#line 111 "lexer.lpp" { return h2::parser::make_QMARK(loc); } YY_BREAK case 61: YY_RULE_SETUP -#line 108 "lexer.lpp" +#line 112 "lexer.lpp" { return h2::parser::make_INCREMENT(loc); } YY_BREAK case 62: YY_RULE_SETUP -#line 109 "lexer.lpp" +#line 113 "lexer.lpp" { return h2::parser::make_DECREMENT(loc); } YY_BREAK case 63: YY_RULE_SETUP -#line 110 "lexer.lpp" +#line 114 "lexer.lpp" { return h2::parser::make_ASSIGN_LSHIFT(loc); } YY_BREAK case 64: YY_RULE_SETUP -#line 111 "lexer.lpp" +#line 115 "lexer.lpp" { return h2::parser::make_ASSIGN_RSHIFT(loc); } YY_BREAK case 65: YY_RULE_SETUP -#line 112 "lexer.lpp" +#line 116 "lexer.lpp" { return h2::parser::make_LSHIFT(loc); } YY_BREAK case 66: YY_RULE_SETUP -#line 113 "lexer.lpp" +#line 117 "lexer.lpp" { return h2::parser::make_RSHIFT(loc); } YY_BREAK case 67: YY_RULE_SETUP -#line 114 "lexer.lpp" +#line 118 "lexer.lpp" { return h2::parser::make_OR(loc); } YY_BREAK case 68: YY_RULE_SETUP -#line 115 "lexer.lpp" +#line 119 "lexer.lpp" { return h2::parser::make_AND(loc); } YY_BREAK case 69: YY_RULE_SETUP -#line 116 "lexer.lpp" +#line 120 "lexer.lpp" { return h2::parser::make_EQUALITY(loc); } YY_BREAK case 70: YY_RULE_SETUP -#line 117 "lexer.lpp" +#line 121 "lexer.lpp" { return h2::parser::make_INEQUALITY(loc); } YY_BREAK case 71: YY_RULE_SETUP -#line 118 "lexer.lpp" +#line 122 "lexer.lpp" { return h2::parser::make_LESS_EQUAL(loc); } YY_BREAK case 72: YY_RULE_SETUP -#line 119 "lexer.lpp" +#line 123 "lexer.lpp" { return h2::parser::make_GREATER_EQUAL(loc); } YY_BREAK case 73: YY_RULE_SETUP -#line 120 "lexer.lpp" +#line 124 "lexer.lpp" { return h2::parser::make_LESS(loc); } YY_BREAK case 74: YY_RULE_SETUP -#line 121 "lexer.lpp" +#line 125 "lexer.lpp" { return h2::parser::make_GREATER(loc); } YY_BREAK case 75: YY_RULE_SETUP -#line 122 "lexer.lpp" +#line 126 "lexer.lpp" { return h2::parser::make_ASSIGN_ADD(loc); } YY_BREAK case 76: YY_RULE_SETUP -#line 123 "lexer.lpp" +#line 127 "lexer.lpp" { return h2::parser::make_ASSIGN_SUB(loc); } YY_BREAK case 77: YY_RULE_SETUP -#line 124 "lexer.lpp" +#line 128 "lexer.lpp" { return h2::parser::make_ASSIGN_MULT(loc); } YY_BREAK case 78: YY_RULE_SETUP -#line 125 "lexer.lpp" +#line 129 "lexer.lpp" { return h2::parser::make_ASSIGN_DIV(loc); } YY_BREAK case 79: YY_RULE_SETUP -#line 126 "lexer.lpp" +#line 130 "lexer.lpp" { return h2::parser::make_ASSIGN_MOD(loc); } YY_BREAK case 80: YY_RULE_SETUP -#line 127 "lexer.lpp" +#line 131 "lexer.lpp" { return h2::parser::make_ASSIGN_BITWISE_OR(loc); } YY_BREAK case 81: YY_RULE_SETUP -#line 128 "lexer.lpp" +#line 132 "lexer.lpp" { return h2::parser::make_ASSIGN_BITWISE_AND(loc); } YY_BREAK case 82: YY_RULE_SETUP -#line 129 "lexer.lpp" +#line 133 "lexer.lpp" { return h2::parser::make_ASSIGN_BITWISE_EXOR(loc); } YY_BREAK case 83: YY_RULE_SETUP -#line 130 "lexer.lpp" +#line 134 "lexer.lpp" { return h2::parser::make_ASSIGN(loc); } YY_BREAK case 84: YY_RULE_SETUP -#line 131 "lexer.lpp" +#line 135 "lexer.lpp" { return h2::parser::make_ADD(loc); } YY_BREAK case 85: YY_RULE_SETUP -#line 132 "lexer.lpp" +#line 136 "lexer.lpp" { return h2::parser::make_SUB(loc); } YY_BREAK case 86: YY_RULE_SETUP -#line 133 "lexer.lpp" +#line 137 "lexer.lpp" { return h2::parser::make_MULT(loc); } YY_BREAK case 87: YY_RULE_SETUP -#line 134 "lexer.lpp" +#line 138 "lexer.lpp" { return h2::parser::make_DIV(loc); } YY_BREAK case 88: YY_RULE_SETUP -#line 135 "lexer.lpp" +#line 139 "lexer.lpp" { return h2::parser::make_MOD(loc); } YY_BREAK case 89: YY_RULE_SETUP -#line 136 "lexer.lpp" +#line 140 "lexer.lpp" { return h2::parser::make_NOT(loc); } YY_BREAK case 90: YY_RULE_SETUP -#line 137 "lexer.lpp" +#line 141 "lexer.lpp" { return h2::parser::make_COMPLEMENT(loc); } YY_BREAK case 91: YY_RULE_SETUP -#line 138 "lexer.lpp" +#line 142 "lexer.lpp" { return h2::parser::make_BITWISE_OR(loc); } YY_BREAK case 92: YY_RULE_SETUP -#line 139 "lexer.lpp" +#line 143 "lexer.lpp" { return h2::parser::make_BITWISE_AND(loc); } YY_BREAK case 93: YY_RULE_SETUP -#line 140 "lexer.lpp" +#line 144 "lexer.lpp" { return h2::parser::make_BITWISE_EXOR(loc); } YY_BREAK case 94: YY_RULE_SETUP -#line 141 "lexer.lpp" +#line 145 "lexer.lpp" { return h2::parser::make_FILE(utils::string::fordslash(yytext), loc); } YY_BREAK case 95: YY_RULE_SETUP -#line 142 "lexer.lpp" +#line 146 "lexer.lpp" { return h2::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); } YY_BREAK case 96: /* rule 96 can match eol */ YY_RULE_SETUP -#line 143 "lexer.lpp" +#line 147 "lexer.lpp" { return h2::parser::make_ISTRING(std::string(yytext).substr(1), loc); } YY_BREAK case 97: /* rule 97 can match eol */ YY_RULE_SETUP -#line 144 "lexer.lpp" +#line 148 "lexer.lpp" { return h2::parser::make_STRING(std::string(yytext), loc); } YY_BREAK case 98: YY_RULE_SETUP -#line 145 "lexer.lpp" -{ return h2::parser::make_FLOAT(std::string(yytext), loc); } +#line 149 "lexer.lpp" +{ return h2::parser::make_COLOR(std::string(yytext).substr(1), loc); } YY_BREAK case 99: YY_RULE_SETUP -#line 146 "lexer.lpp" -{ return h2::parser::make_INTEGER(std::string(yytext), loc); } +#line 150 "lexer.lpp" +{ return h2::parser::make_FLOAT(std::string(yytext), loc); } + YY_BREAK +case 100: +YY_RULE_SETUP +#line 151 "lexer.lpp" +{ return h2::parser::make_INT_OCT(utils::string::oct_to_dec(yytext), loc); } + YY_BREAK +case 101: +YY_RULE_SETUP +#line 152 "lexer.lpp" +{ return h2::parser::make_INT_BIN(utils::string::bin_to_dec(yytext), loc); } + YY_BREAK +case 102: +YY_RULE_SETUP +#line 153 "lexer.lpp" +{ return h2::parser::make_INT_HEX(utils::string::hex_to_dec(yytext), loc); } + YY_BREAK +case 103: +YY_RULE_SETUP +#line 154 "lexer.lpp" +{ return h2::parser::make_INT_DEC(std::string(yytext), loc); } YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT_BLOCK_STATE): case YY_STATE_EOF(DEVELOPER_BLOCK_STATE): -#line 147 "lexer.lpp" +#line 155 "lexer.lpp" { return h2::parser::make_H2EOF(loc); } YY_BREAK -case 100: -/* rule 100 can match eol */ +case 104: +/* rule 104 can match eol */ YY_RULE_SETUP -#line 148 "lexer.lpp" +#line 156 "lexer.lpp" { throw h2::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); } YY_BREAK -case 101: +case 105: YY_RULE_SETUP -#line 150 "lexer.lpp" +#line 158 "lexer.lpp" ECHO; YY_BREAK -#line 1729 "lexer.cpp" +#line 1779 "lexer.cpp" case YY_END_OF_BUFFER: { @@ -2024,7 +2074,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 306 ) + if ( yy_current_state >= 319 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2053,11 +2103,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 306 ) + if ( yy_current_state >= 319 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 305); + yy_is_jam = (yy_current_state == 318); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -2856,6 +2906,6 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 150 "lexer.lpp" +#line 158 "lexer.lpp" diff --git a/src/h2/xsk/lexer.hpp b/src/h2/xsk/lexer.hpp index aba754c7..8ade5050 100644 --- a/src/h2/xsk/lexer.hpp +++ b/src/h2/xsk/lexer.hpp @@ -700,7 +700,7 @@ extern int yylex (yyscan_t yyscanner); #undef yyTABLES_NAME #endif -#line 150 "lexer.lpp" +#line 158 "lexer.lpp" #line 706 "lexer.hpp" diff --git a/src/h2/xsk/parser.cpp b/src/h2/xsk/parser.cpp index 368f9aa7..1631d40b 100644 --- a/src/h2/xsk/parser.cpp +++ b/src/h2/xsk/parser.cpp @@ -228,6 +228,10 @@ namespace xsk { namespace gsc { namespace h2 { value.YY_MOVE_OR_COPY< animtree_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_color: // color + value.YY_MOVE_OR_COPY< color_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_constant: // constant value.YY_MOVE_OR_COPY< constant_ptr > (YY_MOVE (that.value)); break; @@ -278,7 +282,6 @@ namespace xsk { namespace gsc { namespace h2 { value.YY_MOVE_OR_COPY< file_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.YY_MOVE_OR_COPY< float_ptr > (YY_MOVE (that.value)); break; @@ -291,7 +294,6 @@ namespace xsk { namespace gsc { namespace h2 { value.YY_MOVE_OR_COPY< include_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.YY_MOVE_OR_COPY< integer_ptr > (YY_MOVE (that.value)); break; @@ -333,8 +335,12 @@ namespace xsk { namespace gsc { namespace h2 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value)); break; @@ -495,6 +501,10 @@ namespace xsk { namespace gsc { namespace h2 { value.move< animtree_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_color: // color + value.move< color_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_constant: // constant value.move< constant_ptr > (YY_MOVE (that.value)); break; @@ -545,7 +555,6 @@ namespace xsk { namespace gsc { namespace h2 { value.move< file_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.move< float_ptr > (YY_MOVE (that.value)); break; @@ -558,7 +567,6 @@ namespace xsk { namespace gsc { namespace h2 { value.move< include_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.move< integer_ptr > (YY_MOVE (that.value)); break; @@ -600,8 +608,12 @@ namespace xsk { namespace gsc { namespace h2 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.move< std::string > (YY_MOVE (that.value)); break; @@ -762,6 +774,10 @@ namespace xsk { namespace gsc { namespace h2 { value.copy< animtree_ptr > (that.value); break; + case symbol_kind::S_color: // color + value.copy< color_ptr > (that.value); + break; + case symbol_kind::S_constant: // constant value.copy< constant_ptr > (that.value); break; @@ -812,7 +828,6 @@ namespace xsk { namespace gsc { namespace h2 { value.copy< file_ptr > (that.value); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.copy< float_ptr > (that.value); break; @@ -825,7 +840,6 @@ namespace xsk { namespace gsc { namespace h2 { value.copy< include_ptr > (that.value); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.copy< integer_ptr > (that.value); break; @@ -867,8 +881,12 @@ namespace xsk { namespace gsc { namespace h2 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.copy< std::string > (that.value); break; @@ -1028,6 +1046,10 @@ namespace xsk { namespace gsc { namespace h2 { value.move< animtree_ptr > (that.value); break; + case symbol_kind::S_color: // color + value.move< color_ptr > (that.value); + break; + case symbol_kind::S_constant: // constant value.move< constant_ptr > (that.value); break; @@ -1078,7 +1100,6 @@ namespace xsk { namespace gsc { namespace h2 { value.move< file_ptr > (that.value); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.move< float_ptr > (that.value); break; @@ -1091,7 +1112,6 @@ namespace xsk { namespace gsc { namespace h2 { value.move< include_ptr > (that.value); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.move< integer_ptr > (that.value); break; @@ -1133,8 +1153,12 @@ namespace xsk { namespace gsc { namespace h2 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.move< std::string > (that.value); break; @@ -1549,6 +1573,10 @@ namespace xsk { namespace gsc { namespace h2 { yylhs.value.emplace< animtree_ptr > (); break; + case symbol_kind::S_color: // color + yylhs.value.emplace< color_ptr > (); + break; + case symbol_kind::S_constant: // constant yylhs.value.emplace< constant_ptr > (); break; @@ -1599,7 +1627,6 @@ namespace xsk { namespace gsc { namespace h2 { yylhs.value.emplace< file_ptr > (); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float yylhs.value.emplace< float_ptr > (); break; @@ -1612,7 +1639,6 @@ namespace xsk { namespace gsc { namespace h2 { yylhs.value.emplace< include_ptr > (); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer yylhs.value.emplace< integer_ptr > (); break; @@ -1654,8 +1680,12 @@ namespace xsk { namespace gsc { namespace h2 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" yylhs.value.emplace< std::string > (); break; @@ -1810,1225 +1840,1237 @@ namespace xsk { namespace gsc { namespace h2 { switch (yyn) { case 2: // root: program -#line 243 "parser.ypp" +#line 246 "parser.ypp" { ast = std::move(yystack_[0].value.as < program_ptr > ()); } -#line 1816 "parser.cpp" - break; - - case 3: // root: %empty -#line 244 "parser.ypp" - { ast = std::make_unique(yylhs.location); } -#line 1822 "parser.cpp" - break; - - case 4: // program: program include -#line 249 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } -#line 1828 "parser.cpp" - break; - - case 5: // program: program define -#line 251 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } -#line 1834 "parser.cpp" - break; - - case 6: // program: include -#line 253 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } -#line 1840 "parser.cpp" - break; - - case 7: // program: define -#line 255 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1846 "parser.cpp" break; - case 8: // include: "#include" file ";" -#line 260 "parser.ypp" - { yylhs.value.as < include_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < file_ptr > ())); } + case 3: // root: %empty +#line 247 "parser.ypp" + { ast = std::make_unique(yylhs.location); } #line 1852 "parser.cpp" break; - case 9: // define: usingtree -#line 264 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_usingtree = std::move(yystack_[0].value.as < usingtree_ptr > ()); } + case 4: // program: program include +#line 252 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } #line 1858 "parser.cpp" break; - case 10: // define: constant -#line 265 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_constant = std::move(yystack_[0].value.as < constant_ptr > ()); } + case 5: // program: program define +#line 254 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1864 "parser.cpp" break; - case 11: // define: thread -#line 266 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_thread = std::move(yystack_[0].value.as < thread_ptr > ()); } + case 6: // program: include +#line 256 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } #line 1870 "parser.cpp" break; - case 12: // usingtree: "#using_animtree" "(" string ")" ";" -#line 271 "parser.ypp" - { yylhs.value.as < usingtree_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < string_ptr > ())); } + case 7: // program: define +#line 258 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1876 "parser.cpp" break; - case 13: // constant: name "=" expr ";" -#line 276 "parser.ypp" - { yylhs.value.as < constant_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 8: // include: "#include" file ";" +#line 263 "parser.ypp" + { yylhs.value.as < include_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < file_ptr > ())); } #line 1882 "parser.cpp" break; - case 14: // thread: name "(" parameters ")" stmt_block -#line 281 "parser.ypp" - { yylhs.value.as < thread_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < name_ptr > ()), std::move(yystack_[2].value.as < parameters_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } + case 9: // define: usingtree +#line 267 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_usingtree = std::move(yystack_[0].value.as < usingtree_ptr > ()); } #line 1888 "parser.cpp" break; - case 15: // parameters: parameters "," name -#line 286 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::move(yystack_[2].value.as < parameters_ptr > ()); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } + case 10: // define: constant +#line 268 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_constant = std::move(yystack_[0].value.as < constant_ptr > ()); } #line 1894 "parser.cpp" break; - case 16: // parameters: name -#line 288 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } + case 11: // define: thread +#line 269 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_thread = std::move(yystack_[0].value.as < thread_ptr > ()); } #line 1900 "parser.cpp" break; - case 17: // parameters: %empty -#line 290 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); } + case 12: // usingtree: "#using_animtree" "(" string ")" ";" +#line 274 "parser.ypp" + { yylhs.value.as < usingtree_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < string_ptr > ())); } #line 1906 "parser.cpp" break; - case 18: // stmt: stmt_block -#line 294 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_list = std::move(yystack_[0].value.as < stmt_list_ptr > ()); } + case 13: // constant: name "=" expr ";" +#line 279 "parser.ypp" + { yylhs.value.as < constant_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } #line 1912 "parser.cpp" break; - case 19: // stmt: stmt_call -#line 295 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_call = std::move(yystack_[0].value.as < stmt_call_ptr > ()); } + case 14: // thread: name "(" parameters ")" stmt_block +#line 284 "parser.ypp" + { yylhs.value.as < thread_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < name_ptr > ()), std::move(yystack_[2].value.as < parameters_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } #line 1918 "parser.cpp" break; - case 20: // stmt: stmt_assign -#line 296 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_assign = std::move(yystack_[0].value.as < stmt_assign_ptr > ()); } + case 15: // parameters: parameters "," name +#line 289 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::move(yystack_[2].value.as < parameters_ptr > ()); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } #line 1924 "parser.cpp" break; - case 21: // stmt: stmt_endon -#line 297 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_endon = std::move(yystack_[0].value.as < stmt_endon_ptr > ()); } + case 16: // parameters: name +#line 291 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } #line 1930 "parser.cpp" break; - case 22: // stmt: stmt_notify -#line 298 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_notify = std::move(yystack_[0].value.as < stmt_notify_ptr > ()); } + case 17: // parameters: %empty +#line 293 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); } #line 1936 "parser.cpp" break; - case 23: // stmt: stmt_wait -#line 299 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_wait = std::move(yystack_[0].value.as < stmt_wait_ptr > ()); } + case 18: // stmt: stmt_block +#line 297 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_list = std::move(yystack_[0].value.as < stmt_list_ptr > ()); } #line 1942 "parser.cpp" break; - case 24: // stmt: stmt_waittill -#line 300 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill_ptr > ()); } + case 19: // stmt: stmt_call +#line 298 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_call = std::move(yystack_[0].value.as < stmt_call_ptr > ()); } #line 1948 "parser.cpp" break; - case 25: // stmt: stmt_waittillmatch -#line 301 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch_ptr > ()); } + case 20: // stmt: stmt_assign +#line 299 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_assign = std::move(yystack_[0].value.as < stmt_assign_ptr > ()); } #line 1954 "parser.cpp" break; - case 26: // stmt: stmt_waittillframeend -#line 302 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend_ptr > ()); } + case 21: // stmt: stmt_endon +#line 300 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_endon = std::move(yystack_[0].value.as < stmt_endon_ptr > ()); } #line 1960 "parser.cpp" break; - case 27: // stmt: stmt_waitframe -#line 303 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waitframe = std::move(yystack_[0].value.as < stmt_waitframe_ptr > ()); } + case 22: // stmt: stmt_notify +#line 301 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_notify = std::move(yystack_[0].value.as < stmt_notify_ptr > ()); } #line 1966 "parser.cpp" break; - case 28: // stmt: stmt_if -#line 304 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_if = std::move(yystack_[0].value.as < stmt_if_ptr > ()); } + case 23: // stmt: stmt_wait +#line 302 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_wait = std::move(yystack_[0].value.as < stmt_wait_ptr > ()); } #line 1972 "parser.cpp" break; - case 29: // stmt: stmt_ifelse -#line 305 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse_ptr > ()); } + case 24: // stmt: stmt_waittill +#line 303 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill_ptr > ()); } #line 1978 "parser.cpp" break; - case 30: // stmt: stmt_while -#line 306 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_while = std::move(yystack_[0].value.as < stmt_while_ptr > ()); } + case 25: // stmt: stmt_waittillmatch +#line 304 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch_ptr > ()); } #line 1984 "parser.cpp" break; - case 31: // stmt: stmt_for -#line 307 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_for = std::move(yystack_[0].value.as < stmt_for_ptr > ()); } + case 26: // stmt: stmt_waittillframeend +#line 305 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend_ptr > ()); } #line 1990 "parser.cpp" break; - case 32: // stmt: stmt_foreach -#line 308 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach_ptr > ()); } + case 27: // stmt: stmt_waitframe +#line 306 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waitframe = std::move(yystack_[0].value.as < stmt_waitframe_ptr > ()); } #line 1996 "parser.cpp" break; - case 33: // stmt: stmt_switch -#line 309 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_switch = std::move(yystack_[0].value.as < stmt_switch_ptr > ()); } + case 28: // stmt: stmt_if +#line 307 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_if = std::move(yystack_[0].value.as < stmt_if_ptr > ()); } #line 2002 "parser.cpp" break; - case 34: // stmt: stmt_case -#line 310 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_case = std::move(yystack_[0].value.as < stmt_case_ptr > ()); } + case 29: // stmt: stmt_ifelse +#line 308 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse_ptr > ()); } #line 2008 "parser.cpp" break; - case 35: // stmt: stmt_default -#line 311 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_default = std::move(yystack_[0].value.as < stmt_default_ptr > ()); } + case 30: // stmt: stmt_while +#line 309 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_while = std::move(yystack_[0].value.as < stmt_while_ptr > ()); } #line 2014 "parser.cpp" break; - case 36: // stmt: stmt_break -#line 312 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_break = std::move(yystack_[0].value.as < stmt_break_ptr > ()); } + case 31: // stmt: stmt_for +#line 310 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_for = std::move(yystack_[0].value.as < stmt_for_ptr > ()); } #line 2020 "parser.cpp" break; - case 37: // stmt: stmt_continue -#line 313 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_continue = std::move(yystack_[0].value.as < stmt_continue_ptr > ()); } + case 32: // stmt: stmt_foreach +#line 311 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach_ptr > ()); } #line 2026 "parser.cpp" break; - case 38: // stmt: stmt_return -#line 314 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_return = std::move(yystack_[0].value.as < stmt_return_ptr > ()); } + case 33: // stmt: stmt_switch +#line 312 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_switch = std::move(yystack_[0].value.as < stmt_switch_ptr > ()); } #line 2032 "parser.cpp" break; - case 39: // stmt: stmt_breakpoint -#line 315 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_breakpoint = std::move(yystack_[0].value.as < stmt_breakpoint_ptr > ()); } + case 34: // stmt: stmt_case +#line 313 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_case = std::move(yystack_[0].value.as < stmt_case_ptr > ()); } #line 2038 "parser.cpp" break; - case 40: // stmt: stmt_prof_begin -#line 316 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_prof_begin = std::move(yystack_[0].value.as < stmt_prof_begin_ptr > ()); } + case 35: // stmt: stmt_default +#line 314 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_default = std::move(yystack_[0].value.as < stmt_default_ptr > ()); } #line 2044 "parser.cpp" break; - case 41: // stmt: stmt_prof_end -#line 317 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_prof_end = std::move(yystack_[0].value.as < stmt_prof_end_ptr > ()); } + case 36: // stmt: stmt_break +#line 315 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_break = std::move(yystack_[0].value.as < stmt_break_ptr > ()); } #line 2050 "parser.cpp" break; - case 42: // stmt_block: "{" stmt_list "}" -#line 321 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); } + case 37: // stmt: stmt_continue +#line 316 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_continue = std::move(yystack_[0].value.as < stmt_continue_ptr > ()); } #line 2056 "parser.cpp" break; - case 43: // stmt_block: "{" "}" -#line 322 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); } + case 38: // stmt: stmt_return +#line 317 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_return = std::move(yystack_[0].value.as < stmt_return_ptr > ()); } #line 2062 "parser.cpp" break; - case 44: // stmt_list: stmt_list stmt -#line 327 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 39: // stmt: stmt_breakpoint +#line 318 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_breakpoint = std::move(yystack_[0].value.as < stmt_breakpoint_ptr > ()); } #line 2068 "parser.cpp" break; - case 45: // stmt_list: stmt -#line 329 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 40: // stmt: stmt_prof_begin +#line 319 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_prof_begin = std::move(yystack_[0].value.as < stmt_prof_begin_ptr > ()); } #line 2074 "parser.cpp" break; - case 46: // stmt_call: expr_call ";" -#line 334 "parser.ypp" - { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } + case 41: // stmt: stmt_prof_end +#line 320 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_prof_end = std::move(yystack_[0].value.as < stmt_prof_end_ptr > ()); } #line 2080 "parser.cpp" break; - case 47: // stmt_call: expr_call_thread ";" -#line 336 "parser.ypp" - { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } + case 42: // stmt_block: "{" stmt_list "}" +#line 324 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); } #line 2086 "parser.cpp" break; - case 48: // stmt_assign: expr_assign ";" -#line 341 "parser.ypp" - { yylhs.value.as < stmt_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_assign_ptr > ())); } + case 43: // stmt_block: "{" "}" +#line 325 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); } #line 2092 "parser.cpp" break; - case 49: // stmt_endon: object "endon" "(" expr ")" ";" -#line 346 "parser.ypp" - { yylhs.value.as < stmt_endon_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ())); } + case 44: // stmt_list: stmt_list stmt +#line 330 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2098 "parser.cpp" break; - case 50: // stmt_notify: object "notify" "(" expr "," expr_arguments ")" ";" -#line 351 "parser.ypp" - { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 45: // stmt_list: stmt +#line 332 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2104 "parser.cpp" break; - case 51: // stmt_notify: object "notify" "(" expr ")" ";" -#line 353 "parser.ypp" - { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 46: // stmt_call: expr_call ";" +#line 337 "parser.ypp" + { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } #line 2110 "parser.cpp" break; - case 52: // stmt_wait: "wait" expr ";" -#line 358 "parser.ypp" - { yylhs.value.as < stmt_wait_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } + case 47: // stmt_call: expr_call_thread ";" +#line 339 "parser.ypp" + { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } #line 2116 "parser.cpp" break; - case 53: // stmt_waittill: object "waittill" "(" expr "," expr_arguments ")" ";" -#line 363 "parser.ypp" - { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 48: // stmt_assign: expr_assign ";" +#line 344 "parser.ypp" + { yylhs.value.as < stmt_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_assign_ptr > ())); } #line 2122 "parser.cpp" break; - case 54: // stmt_waittill: object "waittill" "(" expr ")" ";" -#line 365 "parser.ypp" - { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 49: // stmt_endon: object "endon" "(" expr ")" ";" +#line 349 "parser.ypp" + { yylhs.value.as < stmt_endon_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ())); } #line 2128 "parser.cpp" break; - case 55: // stmt_waittillmatch: object "waittillmatch" "(" expr "," expr_arguments ")" ";" -#line 370 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 50: // stmt_notify: object "notify" "(" expr "," expr_arguments ")" ";" +#line 354 "parser.ypp" + { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2134 "parser.cpp" break; - case 56: // stmt_waittillmatch: object "waittillmatch" "(" expr ")" ";" -#line 372 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 51: // stmt_notify: object "notify" "(" expr ")" ";" +#line 356 "parser.ypp" + { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2140 "parser.cpp" break; - case 57: // stmt_waittillframeend: "waittillframeend" ";" -#line 377 "parser.ypp" - { yylhs.value.as < stmt_waittillframeend_ptr > () = std::make_unique(yylhs.location); } + case 52: // stmt_wait: "wait" expr ";" +#line 361 "parser.ypp" + { yylhs.value.as < stmt_wait_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2146 "parser.cpp" break; - case 58: // stmt_waitframe: "waitframe" ";" -#line 382 "parser.ypp" - { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } + case 53: // stmt_waittill: object "waittill" "(" expr "," expr_arguments ")" ";" +#line 366 "parser.ypp" + { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2152 "parser.cpp" break; - case 59: // stmt_waitframe: "waitframe" "(" ")" ";" -#line 384 "parser.ypp" - { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } + case 54: // stmt_waittill: object "waittill" "(" expr ")" ";" +#line 368 "parser.ypp" + { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2158 "parser.cpp" break; - case 60: // stmt_if: "if" "(" expr ")" stmt -#line 389 "parser.ypp" - { yylhs.value.as < stmt_if_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 55: // stmt_waittillmatch: object "waittillmatch" "(" expr "," expr_arguments ")" ";" +#line 373 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2164 "parser.cpp" break; - case 61: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 394 "parser.ypp" - { yylhs.value.as < stmt_ifelse_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 56: // stmt_waittillmatch: object "waittillmatch" "(" expr ")" ";" +#line 375 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2170 "parser.cpp" break; - case 62: // stmt_while: "while" "(" expr ")" stmt -#line 399 "parser.ypp" - { yylhs.value.as < stmt_while_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 57: // stmt_waittillframeend: "waittillframeend" ";" +#line 380 "parser.ypp" + { yylhs.value.as < stmt_waittillframeend_ptr > () = std::make_unique(yylhs.location); } #line 2176 "parser.cpp" break; - case 63: // stmt_for: "for" "(" for_stmt ";" for_expr ";" for_stmt ")" stmt -#line 404 "parser.ypp" - { yylhs.value.as < stmt_for_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[6].value.as < stmt_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 58: // stmt_waitframe: "waitframe" ";" +#line 385 "parser.ypp" + { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } #line 2182 "parser.cpp" break; - case 64: // stmt_foreach: "foreach" "(" name "in" expr ")" stmt -#line 409 "parser.ypp" - { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 59: // stmt_waitframe: "waitframe" "(" ")" ";" +#line 387 "parser.ypp" + { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } #line 2188 "parser.cpp" break; - case 65: // stmt_foreach: "foreach" "(" name "," name "in" expr ")" stmt -#line 411 "parser.ypp" - { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[6].value.as < name_ptr > ())), expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 60: // stmt_if: "if" "(" expr ")" stmt +#line 392 "parser.ypp" + { yylhs.value.as < stmt_if_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2194 "parser.cpp" break; - case 66: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 416 "parser.ypp" - { yylhs.value.as < stmt_switch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } + case 61: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 397 "parser.ypp" + { yylhs.value.as < stmt_ifelse_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2200 "parser.cpp" break; - case 67: // stmt_case: "case" integer ":" -#line 421 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } + case 62: // stmt_while: "while" "(" expr ")" stmt +#line 402 "parser.ypp" + { yylhs.value.as < stmt_while_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2206 "parser.cpp" break; - case 68: // stmt_case: "case" neg_integer ":" -#line 423 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } + case 63: // stmt_for: "for" "(" for_stmt ";" for_expr ";" for_stmt ")" stmt +#line 407 "parser.ypp" + { yylhs.value.as < stmt_for_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[6].value.as < stmt_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2212 "parser.cpp" break; - case 69: // stmt_case: "case" string ":" -#line 425 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < string_ptr > ())), std::make_unique(yylhs.location)); } + case 64: // stmt_foreach: "foreach" "(" name "in" expr ")" stmt +#line 412 "parser.ypp" + { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2218 "parser.cpp" break; - case 70: // stmt_default: "default" ":" -#line 430 "parser.ypp" - { yylhs.value.as < stmt_default_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } + case 65: // stmt_foreach: "foreach" "(" name "," name "in" expr ")" stmt +#line 414 "parser.ypp" + { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[6].value.as < name_ptr > ())), expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2224 "parser.cpp" break; - case 71: // stmt_break: "break" ";" -#line 435 "parser.ypp" - { yylhs.value.as < stmt_break_ptr > () = std::make_unique(yylhs.location); } + case 66: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 419 "parser.ypp" + { yylhs.value.as < stmt_switch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } #line 2230 "parser.cpp" break; - case 72: // stmt_continue: "continue" ";" -#line 440 "parser.ypp" - { yylhs.value.as < stmt_continue_ptr > () = std::make_unique(yylhs.location); } + case 67: // stmt_case: "case" integer ":" +#line 424 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } #line 2236 "parser.cpp" break; - case 73: // stmt_return: "return" expr ";" -#line 445 "parser.ypp" - { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } + case 68: // stmt_case: "case" string ":" +#line 426 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < string_ptr > ())), std::make_unique(yylhs.location)); } #line 2242 "parser.cpp" break; - case 74: // stmt_return: "return" ";" -#line 447 "parser.ypp" - { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } + case 69: // stmt_default: "default" ":" +#line 431 "parser.ypp" + { yylhs.value.as < stmt_default_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2248 "parser.cpp" break; - case 75: // stmt_breakpoint: "breakpoint" ";" -#line 452 "parser.ypp" - { yylhs.value.as < stmt_breakpoint_ptr > () = std::make_unique(yylhs.location); } + case 70: // stmt_break: "break" ";" +#line 436 "parser.ypp" + { yylhs.value.as < stmt_break_ptr > () = std::make_unique(yylhs.location); } #line 2254 "parser.cpp" break; - case 76: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 457 "parser.ypp" - { yylhs.value.as < stmt_prof_begin_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 71: // stmt_continue: "continue" ";" +#line 441 "parser.ypp" + { yylhs.value.as < stmt_continue_ptr > () = std::make_unique(yylhs.location); } #line 2260 "parser.cpp" break; - case 77: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 462 "parser.ypp" - { yylhs.value.as < stmt_prof_end_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 72: // stmt_return: "return" expr ";" +#line 446 "parser.ypp" + { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2266 "parser.cpp" break; - case 78: // for_stmt: expr_assign -#line 466 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_list = std::make_unique(yylhs.location); yylhs.value.as < stmt_ptr > ().as_list->stmts.push_back(stmt_ptr(std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_assign_ptr > ())))); } + case 73: // stmt_return: "return" ";" +#line 448 "parser.ypp" + { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2272 "parser.cpp" break; - case 79: // for_stmt: %empty -#line 467 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_node = std::make_unique(yylhs.location); } + case 74: // stmt_breakpoint: "breakpoint" ";" +#line 453 "parser.ypp" + { yylhs.value.as < stmt_breakpoint_ptr > () = std::make_unique(yylhs.location); } #line 2278 "parser.cpp" break; - case 80: // for_expr: expr -#line 471 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 75: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" +#line 458 "parser.ypp" + { yylhs.value.as < stmt_prof_begin_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2284 "parser.cpp" break; - case 81: // for_expr: %empty -#line 472 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location); } + case 76: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" +#line 463 "parser.ypp" + { yylhs.value.as < stmt_prof_end_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2290 "parser.cpp" break; - case 82: // expr: expr_compare -#line 476 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 77: // for_stmt: expr_assign +#line 467 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_list = std::make_unique(yylhs.location); yylhs.value.as < stmt_ptr > ().as_list->stmts.push_back(stmt_ptr(std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_assign_ptr > ())))); } #line 2296 "parser.cpp" break; - case 83: // expr: expr_ternary -#line 477 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 78: // for_stmt: %empty +#line 468 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_node = std::make_unique(yylhs.location); } #line 2302 "parser.cpp" break; - case 84: // expr: expr_binary -#line 478 "parser.ypp" + case 79: // for_expr: expr +#line 472 "parser.ypp" { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2308 "parser.cpp" break; - case 85: // expr: expr_primitive -#line 479 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 80: // for_expr: %empty +#line 473 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location); } #line 2314 "parser.cpp" break; - case 86: // expr_assign: "++" object -#line 483 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } + case 81: // expr: expr_compare +#line 477 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2320 "parser.cpp" break; - case 87: // expr_assign: "--" object -#line 484 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } + case 82: // expr: expr_ternary +#line 478 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2326 "parser.cpp" break; - case 88: // expr_assign: object "++" -#line 485 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 83: // expr: expr_binary +#line 479 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2332 "parser.cpp" break; - case 89: // expr_assign: object "--" -#line 486 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 84: // expr: expr_primitive +#line 480 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2338 "parser.cpp" break; - case 90: // expr_assign: object "=" expr -#line 487 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 85: // expr_assign: "++" object +#line 484 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } #line 2344 "parser.cpp" break; - case 91: // expr_assign: object "|=" expr -#line 488 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 86: // expr_assign: "--" object +#line 485 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } #line 2350 "parser.cpp" break; - case 92: // expr_assign: object "&=" expr -#line 489 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 87: // expr_assign: object "++" +#line 486 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2356 "parser.cpp" break; - case 93: // expr_assign: object "^=" expr -#line 490 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 88: // expr_assign: object "--" +#line 487 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2362 "parser.cpp" break; - case 94: // expr_assign: object "<<=" expr -#line 491 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()),std::move( yystack_[0].value.as < expr_ptr > ())); } + case 89: // expr_assign: object "=" expr +#line 488 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2368 "parser.cpp" break; - case 95: // expr_assign: object ">>=" expr -#line 492 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 90: // expr_assign: object "|=" expr +#line 489 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2374 "parser.cpp" break; - case 96: // expr_assign: object "+=" expr -#line 493 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 91: // expr_assign: object "&=" expr +#line 490 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2380 "parser.cpp" break; - case 97: // expr_assign: object "-=" expr -#line 494 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 92: // expr_assign: object "^=" expr +#line 491 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2386 "parser.cpp" break; - case 98: // expr_assign: object "*=" expr -#line 495 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 93: // expr_assign: object "<<=" expr +#line 492 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()),std::move( yystack_[0].value.as < expr_ptr > ())); } #line 2392 "parser.cpp" break; - case 99: // expr_assign: object "/=" expr -#line 496 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 94: // expr_assign: object ">>=" expr +#line 493 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2398 "parser.cpp" break; - case 100: // expr_assign: object "%=" expr -#line 497 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 95: // expr_assign: object "+=" expr +#line 494 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2404 "parser.cpp" break; - case 101: // expr_compare: expr "||" expr -#line 501 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 96: // expr_assign: object "-=" expr +#line 495 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2410 "parser.cpp" break; - case 102: // expr_compare: expr "&&" expr -#line 502 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 97: // expr_assign: object "*=" expr +#line 496 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2416 "parser.cpp" break; - case 103: // expr_compare: expr "==" expr -#line 503 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 98: // expr_assign: object "/=" expr +#line 497 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2422 "parser.cpp" break; - case 104: // expr_compare: expr "!=" expr -#line 504 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 99: // expr_assign: object "%=" expr +#line 498 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2428 "parser.cpp" break; - case 105: // expr_compare: expr "<=" expr -#line 505 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 100: // expr_compare: expr "||" expr +#line 502 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2434 "parser.cpp" break; - case 106: // expr_compare: expr ">=" expr -#line 506 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 101: // expr_compare: expr "&&" expr +#line 503 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2440 "parser.cpp" break; - case 107: // expr_compare: expr "<" expr -#line 507 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 102: // expr_compare: expr "==" expr +#line 504 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2446 "parser.cpp" break; - case 108: // expr_compare: expr ">" expr -#line 508 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 103: // expr_compare: expr "!=" expr +#line 505 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2452 "parser.cpp" break; - case 109: // expr_ternary: expr "?" expr ":" expr -#line 512 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 104: // expr_compare: expr "<=" expr +#line 506 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2458 "parser.cpp" break; - case 110: // expr_binary: expr "|" expr -#line 516 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 105: // expr_compare: expr ">=" expr +#line 507 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2464 "parser.cpp" break; - case 111: // expr_binary: expr "&" expr -#line 517 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 106: // expr_compare: expr "<" expr +#line 508 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2470 "parser.cpp" break; - case 112: // expr_binary: expr "^" expr -#line 518 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 107: // expr_compare: expr ">" expr +#line 509 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2476 "parser.cpp" break; - case 113: // expr_binary: expr "<<" expr -#line 519 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 108: // expr_ternary: expr "?" expr ":" expr +#line 513 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2482 "parser.cpp" break; - case 114: // expr_binary: expr ">>" expr -#line 520 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 109: // expr_binary: expr "|" expr +#line 517 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2488 "parser.cpp" break; - case 115: // expr_binary: expr "+" expr -#line 521 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 110: // expr_binary: expr "&" expr +#line 518 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2494 "parser.cpp" break; - case 116: // expr_binary: expr "-" expr -#line 522 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 111: // expr_binary: expr "^" expr +#line 519 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2500 "parser.cpp" break; - case 117: // expr_binary: expr "*" expr -#line 523 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 112: // expr_binary: expr "<<" expr +#line 520 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2506 "parser.cpp" break; - case 118: // expr_binary: expr "/" expr -#line 524 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 113: // expr_binary: expr ">>" expr +#line 521 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2512 "parser.cpp" break; - case 119: // expr_binary: expr "%" expr -#line 525 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 114: // expr_binary: expr "+" expr +#line 522 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2518 "parser.cpp" break; - case 120: // expr_primitive: "(" expr ")" -#line 529 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[1].value.as < expr_ptr > ()); } + case 115: // expr_binary: expr "-" expr +#line 523 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2524 "parser.cpp" break; - case 121: // expr_primitive: "~" expr -#line 530 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } + case 116: // expr_binary: expr "*" expr +#line 524 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2530 "parser.cpp" break; - case 122: // expr_primitive: "!" expr -#line 531 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } + case 117: // expr_binary: expr "/" expr +#line 525 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2536 "parser.cpp" break; - case 123: // expr_primitive: expr_call -#line 532 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 118: // expr_binary: expr "%" expr +#line 526 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2542 "parser.cpp" break; - case 124: // expr_primitive: expr_call_thread -#line 533 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 119: // expr_primitive: "(" expr ")" +#line 530 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[1].value.as < expr_ptr > ()); } #line 2548 "parser.cpp" break; - case 125: // expr_primitive: expr_call_childthread -#line 534 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 120: // expr_primitive: "~" expr +#line 531 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2554 "parser.cpp" break; - case 126: // expr_primitive: expr_function -#line 535 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 121: // expr_primitive: "!" expr +#line 532 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2560 "parser.cpp" break; - case 127: // expr_primitive: expr_add_array -#line 536 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 122: // expr_primitive: expr_call +#line 533 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2566 "parser.cpp" break; - case 128: // expr_primitive: expr_array -#line 537 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 123: // expr_primitive: expr_call_thread +#line 534 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2572 "parser.cpp" break; - case 129: // expr_primitive: expr_field -#line 538 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 124: // expr_primitive: expr_call_childthread +#line 535 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2578 "parser.cpp" break; - case 130: // expr_primitive: expr_size -#line 539 "parser.ypp" + case 125: // expr_primitive: expr_function +#line 536 "parser.ypp" { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2584 "parser.cpp" break; - case 131: // expr_primitive: thisthread -#line 540 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < thisthread_ptr > ()); } + case 126: // expr_primitive: expr_add_array +#line 537 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2590 "parser.cpp" break; - case 132: // expr_primitive: empty_array -#line 541 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < empty_array_ptr > ()); } + case 127: // expr_primitive: expr_array +#line 538 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2596 "parser.cpp" break; - case 133: // expr_primitive: undefined -#line 542 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < undefined_ptr > ()); } + case 128: // expr_primitive: expr_field +#line 539 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2602 "parser.cpp" break; - case 134: // expr_primitive: game -#line 543 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < game_ptr > ()); } + case 129: // expr_primitive: expr_size +#line 540 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2608 "parser.cpp" break; - case 135: // expr_primitive: self -#line 544 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < self_ptr > ()); } + case 130: // expr_primitive: thisthread +#line 541 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < thisthread_ptr > ()); } #line 2614 "parser.cpp" break; - case 136: // expr_primitive: anim -#line 545 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < anim_ptr > ()); } + case 131: // expr_primitive: empty_array +#line 542 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < empty_array_ptr > ()); } #line 2620 "parser.cpp" break; - case 137: // expr_primitive: level -#line 546 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < level_ptr > ()); } + case 132: // expr_primitive: undefined +#line 543 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < undefined_ptr > ()); } #line 2626 "parser.cpp" break; - case 138: // expr_primitive: animation -#line 547 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animation_ptr > ()); } + case 133: // expr_primitive: game +#line 544 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < game_ptr > ()); } #line 2632 "parser.cpp" break; - case 139: // expr_primitive: animtree -#line 548 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animtree_ptr > ()); } + case 134: // expr_primitive: self +#line 545 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < self_ptr > ()); } #line 2638 "parser.cpp" break; - case 140: // expr_primitive: name -#line 549 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < name_ptr > ()); } + case 135: // expr_primitive: anim +#line 546 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < anim_ptr > ()); } #line 2644 "parser.cpp" break; - case 141: // expr_primitive: istring -#line 550 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < istring_ptr > ()); } + case 136: // expr_primitive: level +#line 547 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < level_ptr > ()); } #line 2650 "parser.cpp" break; - case 142: // expr_primitive: string -#line 551 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < string_ptr > ()); } + case 137: // expr_primitive: animation +#line 548 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animation_ptr > ()); } #line 2656 "parser.cpp" break; - case 143: // expr_primitive: vector -#line 552 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < vector_ptr > ()); } + case 138: // expr_primitive: animtree +#line 549 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animtree_ptr > ()); } #line 2662 "parser.cpp" break; - case 144: // expr_primitive: neg_float -#line 553 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } + case 139: // expr_primitive: name +#line 550 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < name_ptr > ()); } #line 2668 "parser.cpp" break; - case 145: // expr_primitive: neg_integer -#line 554 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } + case 140: // expr_primitive: istring +#line 551 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < istring_ptr > ()); } #line 2674 "parser.cpp" break; - case 146: // expr_primitive: float -#line 555 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } + case 141: // expr_primitive: string +#line 552 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < string_ptr > ()); } #line 2680 "parser.cpp" break; - case 147: // expr_primitive: integer -#line 556 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } + case 142: // expr_primitive: color +#line 553 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < color_ptr > ()); } #line 2686 "parser.cpp" break; - case 148: // expr_primitive: false -#line 557 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < false_ptr > ()); } + case 143: // expr_primitive: vector +#line 554 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < vector_ptr > ()); } #line 2692 "parser.cpp" break; - case 149: // expr_primitive: true -#line 558 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < true_ptr > ()); } + case 144: // expr_primitive: float +#line 555 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } #line 2698 "parser.cpp" break; - case 150: // expr_call: expr_call_function -#line 562 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 145: // expr_primitive: integer +#line 556 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } #line 2704 "parser.cpp" break; - case 151: // expr_call: expr_call_pointer -#line 563 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 146: // expr_primitive: false +#line 557 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < false_ptr > ()); } #line 2710 "parser.cpp" break; - case 152: // expr_call: object expr_call_function -#line 564 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 147: // expr_primitive: true +#line 558 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < true_ptr > ()); } #line 2716 "parser.cpp" break; - case 153: // expr_call: object expr_call_pointer -#line 565 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 148: // expr_call: expr_call_function +#line 562 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2722 "parser.cpp" break; - case 154: // expr_call_thread: "thread" expr_call_function -#line 569 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 149: // expr_call: expr_call_pointer +#line 563 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2728 "parser.cpp" break; - case 155: // expr_call_thread: "thread" expr_call_pointer -#line 570 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 150: // expr_call: object expr_call_function +#line 564 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2734 "parser.cpp" break; - case 156: // expr_call_thread: object "thread" expr_call_function -#line 571 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 151: // expr_call: object expr_call_pointer +#line 565 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2740 "parser.cpp" break; - case 157: // expr_call_thread: object "thread" expr_call_pointer -#line 572 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 152: // expr_call_thread: "thread" expr_call_function +#line 569 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2746 "parser.cpp" break; - case 158: // expr_call_childthread: "childthread" expr_call_function -#line 576 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 153: // expr_call_thread: "thread" expr_call_pointer +#line 570 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2752 "parser.cpp" break; - case 159: // expr_call_childthread: "childthread" expr_call_pointer -#line 577 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 154: // expr_call_thread: object "thread" expr_call_function +#line 571 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2758 "parser.cpp" break; - case 160: // expr_call_childthread: object "childthread" expr_call_function -#line 578 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 155: // expr_call_thread: object "thread" expr_call_pointer +#line 572 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2764 "parser.cpp" break; - case 161: // expr_call_childthread: object "childthread" expr_call_pointer -#line 579 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 156: // expr_call_childthread: "childthread" expr_call_function +#line 576 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2770 "parser.cpp" break; - case 162: // expr_call_function: name "(" expr_arguments ")" -#line 584 "parser.ypp" - {yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::make_unique(), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 157: // expr_call_childthread: "childthread" expr_call_pointer +#line 577 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2776 "parser.cpp" break; - case 163: // expr_call_function: file "::" name "(" expr_arguments ")" -#line 586 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < file_ptr > ()), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 158: // expr_call_childthread: object "childthread" expr_call_function +#line 578 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2782 "parser.cpp" break; - case 164: // expr_call_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 591 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, false, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 159: // expr_call_childthread: object "childthread" expr_call_pointer +#line 579 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2788 "parser.cpp" break; - case 165: // expr_call_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 593 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, true, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 160: // expr_call_function: name "(" expr_arguments ")" +#line 584 "parser.ypp" + {yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::make_unique(), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2794 "parser.cpp" break; - case 166: // expr_arguments: expr_arguments_filled -#line 597 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } + case 161: // expr_call_function: file "::" name "(" expr_arguments ")" +#line 586 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < file_ptr > ()), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2800 "parser.cpp" break; - case 167: // expr_arguments: expr_arguments_empty -#line 598 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } + case 162: // expr_call_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 591 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, false, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2806 "parser.cpp" break; - case 168: // expr_arguments_filled: expr_arguments "," expr -#line 603 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[2].value.as < expr_arguments_ptr > ()); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } + case 163: // expr_call_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 593 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, true, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2812 "parser.cpp" break; - case 169: // expr_arguments_filled: expr -#line 605 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } + case 164: // expr_arguments: expr_arguments_filled +#line 597 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } #line 2818 "parser.cpp" break; - case 170: // expr_arguments_empty: %empty -#line 610 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); } + case 165: // expr_arguments: expr_arguments_empty +#line 598 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } #line 2824 "parser.cpp" break; - case 171: // expr_function: "::" name -#line 615 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < name_ptr > ())); } + case 166: // expr_arguments_filled: expr_arguments "," expr +#line 603 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[2].value.as < expr_arguments_ptr > ()); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2830 "parser.cpp" break; - case 172: // expr_function: file "::" name -#line 617 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < file_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } + case 167: // expr_arguments_filled: expr +#line 605 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2836 "parser.cpp" break; - case 173: // expr_add_array: "[" expr_arguments_filled "]" -#line 622 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 168: // expr_arguments_empty: %empty +#line 610 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); } #line 2842 "parser.cpp" break; - case 174: // expr_array: object "[" expr "]" -#line 627 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < node_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 169: // expr_function: "::" name +#line 615 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2848 "parser.cpp" break; - case 175: // expr_field: object "." name -#line 632 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } + case 170: // expr_function: file "::" name +#line 617 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < file_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2854 "parser.cpp" break; - case 176: // expr_size: object ".size" -#line 637 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 171: // expr_add_array: "[" expr_arguments_filled "]" +#line 622 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2860 "parser.cpp" break; - case 177: // object: expr_call -#line 641 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 172: // expr_array: object "[" expr "]" +#line 627 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < node_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2866 "parser.cpp" break; - case 178: // object: expr_array -#line 642 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } + case 173: // expr_field: object "." name +#line 632 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2872 "parser.cpp" break; - case 179: // object: expr_field -#line 643 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } + case 174: // expr_size: object ".size" +#line 637 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2878 "parser.cpp" break; - case 180: // object: game -#line 644 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < game_ptr > ()); } + case 175: // object: expr_call +#line 641 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2884 "parser.cpp" break; - case 181: // object: self -#line 645 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < self_ptr > ()); } + case 176: // object: expr_array +#line 642 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2890 "parser.cpp" break; - case 182: // object: anim -#line 646 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < anim_ptr > ()); } + case 177: // object: expr_field +#line 643 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2896 "parser.cpp" break; - case 183: // object: level -#line 647 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < level_ptr > ()); } + case 178: // object: game +#line 644 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < game_ptr > ()); } #line 2902 "parser.cpp" break; - case 184: // object: name -#line 648 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < name_ptr > ()); } + case 179: // object: self +#line 645 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < self_ptr > ()); } #line 2908 "parser.cpp" break; - case 185: // thisthread: "thisthread" -#line 651 "parser.ypp" - { yylhs.value.as < thisthread_ptr > () = std::make_unique(yylhs.location); } + case 180: // object: anim +#line 646 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < anim_ptr > ()); } #line 2914 "parser.cpp" break; - case 186: // empty_array: "[" "]" -#line 652 "parser.ypp" - { yylhs.value.as < empty_array_ptr > () = std::make_unique(yylhs.location); } + case 181: // object: level +#line 647 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < level_ptr > ()); } #line 2920 "parser.cpp" break; - case 187: // undefined: "undefined" -#line 653 "parser.ypp" - { yylhs.value.as < undefined_ptr > () = std::make_unique(yylhs.location); } + case 182: // object: name +#line 648 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < name_ptr > ()); } #line 2926 "parser.cpp" break; - case 188: // game: "game" -#line 654 "parser.ypp" - { yylhs.value.as < game_ptr > () = std::make_unique(yylhs.location); } + case 183: // float: "-" "float" +#line 652 "parser.ypp" + { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 2932 "parser.cpp" break; - case 189: // self: "self" -#line 655 "parser.ypp" - { yylhs.value.as < self_ptr > () = std::make_unique(yylhs.location); } + case 184: // float: "float" +#line 653 "parser.ypp" + { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2938 "parser.cpp" break; - case 190: // anim: "anim" -#line 656 "parser.ypp" - { yylhs.value.as < anim_ptr > () = std::make_unique(yylhs.location); } + case 185: // integer: "-" "int" +#line 657 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 2944 "parser.cpp" break; - case 191: // level: "level" -#line 657 "parser.ypp" - { yylhs.value.as < level_ptr > () = std::make_unique(yylhs.location); } + case 186: // integer: "int" +#line 658 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2950 "parser.cpp" break; - case 192: // animation: "%" "identifier" -#line 658 "parser.ypp" - { yylhs.value.as < animation_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 187: // integer: "octal int" +#line 659 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2956 "parser.cpp" break; - case 193: // animtree: "#animtree" -#line 659 "parser.ypp" - { yylhs.value.as < animtree_ptr > () = std::make_unique(yylhs.location); } + case 188: // integer: "binary int" +#line 660 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2962 "parser.cpp" break; - case 194: // name: "identifier" -#line 660 "parser.ypp" - { yylhs.value.as < name_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 189: // integer: "hexadecimal int" +#line 661 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2968 "parser.cpp" break; - case 195: // file: "file path" -#line 661 "parser.ypp" - { yylhs.value.as < file_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 190: // thisthread: "thisthread" +#line 664 "parser.ypp" + { yylhs.value.as < thisthread_ptr > () = std::make_unique(yylhs.location); } #line 2974 "parser.cpp" break; - case 196: // istring: "localized string" -#line 662 "parser.ypp" - { yylhs.value.as < istring_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 191: // empty_array: "[" "]" +#line 665 "parser.ypp" + { yylhs.value.as < empty_array_ptr > () = std::make_unique(yylhs.location); } #line 2980 "parser.cpp" break; - case 197: // string: "string literal" -#line 663 "parser.ypp" - { yylhs.value.as < string_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 192: // undefined: "undefined" +#line 666 "parser.ypp" + { yylhs.value.as < undefined_ptr > () = std::make_unique(yylhs.location); } #line 2986 "parser.cpp" break; - case 198: // vector: "(" expr "," expr "," expr ")" -#line 664 "parser.ypp" - { yylhs.value.as < vector_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[3].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 193: // game: "game" +#line 667 "parser.ypp" + { yylhs.value.as < game_ptr > () = std::make_unique(yylhs.location); } #line 2992 "parser.cpp" break; - case 199: // neg_float: "-" "float" -#line 665 "parser.ypp" - { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 194: // self: "self" +#line 668 "parser.ypp" + { yylhs.value.as < self_ptr > () = std::make_unique(yylhs.location); } #line 2998 "parser.cpp" break; - case 200: // neg_integer: "-" "int" -#line 666 "parser.ypp" - { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 195: // anim: "anim" +#line 669 "parser.ypp" + { yylhs.value.as < anim_ptr > () = std::make_unique(yylhs.location); } #line 3004 "parser.cpp" break; - case 201: // float: "float" -#line 667 "parser.ypp" - { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 196: // level: "level" +#line 670 "parser.ypp" + { yylhs.value.as < level_ptr > () = std::make_unique(yylhs.location); } #line 3010 "parser.cpp" break; - case 202: // integer: "int" -#line 668 "parser.ypp" - { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 197: // animation: "%" "identifier" +#line 671 "parser.ypp" + { yylhs.value.as < animation_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3016 "parser.cpp" break; - case 203: // false: "false" -#line 669 "parser.ypp" - { yylhs.value.as < false_ptr > () = std::make_unique(yylhs.location); } + case 198: // animtree: "#animtree" +#line 672 "parser.ypp" + { yylhs.value.as < animtree_ptr > () = std::make_unique(yylhs.location); } #line 3022 "parser.cpp" break; - case 204: // true: "true" -#line 670 "parser.ypp" - { yylhs.value.as < true_ptr > () = std::make_unique(yylhs.location); } + case 199: // name: "identifier" +#line 673 "parser.ypp" + { yylhs.value.as < name_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3028 "parser.cpp" break; + case 200: // file: "file path" +#line 674 "parser.ypp" + { yylhs.value.as < file_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3034 "parser.cpp" + break; -#line 3032 "parser.cpp" + case 201: // istring: "localized string" +#line 675 "parser.ypp" + { yylhs.value.as < istring_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3040 "parser.cpp" + break; + + case 202: // string: "string literal" +#line 676 "parser.ypp" + { yylhs.value.as < string_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3046 "parser.cpp" + break; + + case 203: // color: "color" +#line 677 "parser.ypp" + { yylhs.value.as < color_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3052 "parser.cpp" + break; + + case 204: // vector: "(" expr "," expr "," expr ")" +#line 678 "parser.ypp" + { yylhs.value.as < vector_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[3].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } +#line 3058 "parser.cpp" + break; + + case 205: // false: "false" +#line 679 "parser.ypp" + { yylhs.value.as < false_ptr > () = std::make_unique(yylhs.location); } +#line 3064 "parser.cpp" + break; + + case 206: // true: "true" +#line 680 "parser.ypp" + { yylhs.value.as < true_ptr > () = std::make_unique(yylhs.location); } +#line 3070 "parser.cpp" + break; + + +#line 3074 "parser.cpp" default: break; @@ -3222,8 +3264,9 @@ namespace xsk { namespace gsc { namespace h2 { ",", ".", "::", ":", ";", "?", "++", "--", "<<", ">>", "||", "&&", "==", "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", "%", - "file path", "identifier", "string literal", "localized string", "float", - "int", "ADD_ARRAY", "THEN", "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", + "file path", "identifier", "string literal", "localized string", "color", + "float", "int", "octal int", "binary int", "hexadecimal int", + "ADD_ARRAY", "THEN", "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", "$accept", "root", "program", "include", "define", "usingtree", "constant", "thread", "parameters", "stmt", "stmt_block", "stmt_list", "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", @@ -3237,10 +3280,9 @@ namespace xsk { namespace gsc { namespace h2 { "expr_call_childthread", "expr_call_function", "expr_call_pointer", "expr_arguments", "expr_arguments_filled", "expr_arguments_empty", "expr_function", "expr_add_array", "expr_array", "expr_field", - "expr_size", "object", "thisthread", "empty_array", "undefined", "game", - "self", "anim", "level", "animation", "animtree", "name", "file", - "istring", "string", "vector", "neg_float", "neg_integer", "float", - "integer", "false", "true", YY_NULLPTR + "expr_size", "object", "float", "integer", "thisthread", "empty_array", + "undefined", "game", "self", "anim", "level", "animation", "animtree", + "name", "file", "istring", "string", "color", "vector", "false", "true", YY_NULLPTR }; return yy_sname[yysymbol]; } @@ -3505,572 +3547,580 @@ namespace xsk { namespace gsc { namespace h2 { } - const short parser::yypact_ninf_ = -242; + const short parser::yypact_ninf_ = -244; - const short parser::yytable_ninf_ = -185; + const short parser::yytable_ninf_ = -183; const short parser::yypact_[] = { - 8, -74, -23, -242, 25, 8, -242, -242, -242, -242, - -242, -21, -242, -16, -59, -242, -242, -242, -14, 810, - -242, -242, 20, -6, -242, -242, 7, 7, -242, 43, - -242, -242, -242, -242, -242, -242, -242, 810, 684, -14, - 810, 810, -43, 3, -242, -242, -242, 1562, -242, -242, - -242, -242, 21, -242, -242, -242, -242, -242, -242, 53, - 177, -242, 367, -242, -242, -242, 391, 426, 466, 707, - -242, -242, 13, 15, -242, -242, -242, -242, -242, -242, - -242, -242, -242, 14, 59, -14, 60, -242, -242, 65, - 68, -242, -242, 75, 1002, 684, -242, 1645, 80, 91, - -242, -242, -242, -242, -242, -242, -242, -242, 810, 810, - 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, - 810, 810, 810, 810, 810, 810, 810, 7, 7, -242, - 873, -14, -242, -242, 810, -14, -242, 568, -242, -242, - 810, -14, 810, -242, 810, 806, 810, -242, 1527, 262, - 262, 1676, 1686, 454, 454, 203, 203, 203, 203, 1717, - 1758, 1727, 127, 127, -242, -242, -242, -242, -242, -242, - -242, 1412, -242, 32, -242, 100, 93, 104, 126, 810, - 117, 19, 130, 133, 134, 140, 144, -4, 139, 142, - 150, 747, -242, -15, -15, -242, -242, 613, -242, -242, - -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, - -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, - -242, 153, 163, 164, -242, -242, 920, -242, -242, -242, - -242, 65, 806, 100, 1452, 1491, 171, 1645, 810, -242, - -242, 810, -242, 810, 810, 1597, -242, 149, -242, 810, - 810, 770, -14, 810, 132, 168, 174, 176, -242, -242, - -242, -242, 1632, -242, -11, -11, -242, -242, -242, -242, - -242, 180, 187, 188, 192, -242, -242, 810, 810, 810, - 810, 810, 810, 810, 810, 810, 810, 810, 189, 810, - 196, 1645, 49, 50, 71, -242, 191, 1168, 1202, 194, - -242, 966, 9, 1236, -242, -242, -242, -242, 810, 810, - 810, 810, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, - 1645, 1645, 1645, 198, 1270, 810, -242, 209, 210, -242, - 658, 658, 810, 810, -14, 59, 1304, 1046, 1090, 1134, - 810, -242, 72, -242, -242, 225, -242, 211, 1645, 1338, - 229, -242, 216, 217, 810, 218, 810, 223, 810, 83, - -242, 658, 770, 658, 810, -242, -242, 84, -242, 141, - -242, 145, -242, -242, 212, -242, 1372, 224, 231, 240, - 658, 658, -242, -242, -242, -242, -242 + 3, -71, -24, -244, 30, 3, -244, -244, -244, -244, + -244, -23, -244, -29, -54, -244, -244, -244, -49, 648, + -244, -244, -1, -21, -244, -244, -16, -16, -244, 12, + -244, -244, -244, -244, -244, -244, -244, 648, 514, -49, + 648, 648, 10, -37, -244, -244, -244, -244, -244, -244, + -244, 1603, -244, -244, -244, -244, 7, -244, -244, -244, + -244, -244, -244, 383, 604, -244, 671, -244, -244, -244, + -244, -244, 916, 924, 941, 946, -244, -244, 17, 26, + -244, -244, -244, -244, -244, -244, 25, 11, -49, 33, + -244, -244, 45, 35, -244, -244, 53, 1003, 514, -244, + 1686, 52, 42, -244, -244, -244, -244, -244, -244, -244, + -244, 648, 648, 648, 648, 648, 648, 648, 648, 648, + 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, + -16, -16, -244, 715, -49, -244, -244, 648, -49, -244, + 807, -244, -244, 648, -49, 648, -244, 648, 1413, 648, + -244, 1568, 231, 231, 1717, 1727, 710, 710, 41, 41, + 41, 41, 1758, 1799, 1768, 44, 44, -244, -244, -244, + -244, -244, -244, -244, 1453, -244, -17, -244, 69, 57, + 70, 74, 648, 79, -27, 77, 92, 93, 99, 101, + 342, 94, 96, 97, 581, -244, 683, 683, -244, -244, + 852, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, 119, 120, 121, -244, -244, 430, + -244, -244, -244, -244, 45, 1413, 69, 1493, 1532, 104, + 1686, 648, -244, -244, 648, -244, 648, 648, 1638, -244, + 135, -244, 648, 648, 442, -49, 648, 51, 128, 130, + -244, -244, -244, -244, 1673, -244, 175, 175, -244, -244, + -244, -244, -244, 141, 145, 147, 149, -244, -244, 648, + 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, + 150, 648, 152, 1686, 9, 19, 21, -244, 140, 1169, + 1203, 148, -244, 967, -2, 1237, -244, -244, -244, 648, + 648, 648, 648, 1686, 1686, 1686, 1686, 1686, 1686, 1686, + 1686, 1686, 1686, 1686, 159, 1271, 648, -244, 153, 157, + -244, 897, 897, 648, 648, -49, 11, 1305, 1047, 1091, + 1135, 648, -244, 22, -244, -244, 191, -244, 161, 1686, + 1339, 188, -244, 162, 166, 648, 167, 648, 168, 648, + 32, -244, 897, 442, 897, 648, -244, -244, 40, -244, + 58, -244, 67, -244, -244, 179, -244, 1373, 173, 174, + 177, 897, 897, -244, -244, -244, -244, -244 }; const unsigned char parser::yydefact_[] = { - 3, 0, 0, 194, 0, 2, 6, 7, 9, 10, - 11, 0, 195, 0, 0, 1, 4, 5, 17, 0, - 8, 197, 0, 0, 16, 193, 0, 0, 185, 0, - 204, 203, 187, 188, 189, 190, 191, 0, 170, 0, - 0, 0, 0, 0, 196, 201, 202, 0, 82, 83, - 84, 85, 123, 124, 125, 150, 151, 126, 127, 128, - 129, 130, 0, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 0, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 0, 0, 0, 0, 154, 155, 0, - 0, 158, 159, 0, 0, 170, 186, 169, 0, 166, - 167, 171, 122, 121, 199, 200, 192, 13, 0, 0, + 3, 0, 0, 199, 0, 2, 6, 7, 9, 10, + 11, 0, 200, 0, 0, 1, 4, 5, 17, 0, + 8, 202, 0, 0, 16, 198, 0, 0, 190, 0, + 206, 205, 192, 193, 194, 195, 196, 0, 168, 0, + 0, 0, 0, 0, 201, 203, 184, 186, 187, 188, + 189, 0, 81, 82, 83, 84, 122, 123, 124, 148, + 149, 125, 126, 127, 128, 129, 0, 144, 145, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 0, + 140, 141, 142, 143, 146, 147, 0, 0, 0, 0, + 152, 153, 0, 0, 156, 157, 0, 0, 168, 191, + 167, 0, 164, 165, 169, 121, 120, 183, 185, 197, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, - 0, 0, 152, 153, 170, 0, 12, 0, 14, 15, - 0, 0, 0, 120, 0, 169, 0, 173, 0, 113, - 114, 101, 102, 103, 104, 105, 106, 107, 108, 110, - 111, 112, 115, 116, 117, 118, 119, 156, 157, 160, - 161, 0, 175, 0, 166, 172, 0, 0, 0, 0, + 0, 0, 174, 0, 0, 150, 151, 168, 0, 12, + 0, 14, 15, 0, 0, 0, 119, 0, 167, 0, + 171, 0, 112, 113, 100, 101, 102, 103, 104, 105, + 106, 107, 109, 110, 111, 114, 115, 116, 117, 118, + 154, 155, 158, 159, 0, 173, 0, 164, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 43, 0, 0, 45, 18, 0, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 0, 177, 0, 178, 179, 0, 180, 181, 182, - 183, 184, 0, 0, 0, 0, 0, 168, 0, 174, - 162, 170, 75, 170, 170, 0, 57, 0, 58, 0, - 0, 79, 0, 0, 0, 0, 0, 0, 70, 71, - 72, 74, 0, 177, 86, 87, 42, 44, 48, 46, - 47, 0, 0, 0, 0, 88, 89, 0, 0, 0, + 0, 0, 0, 0, 0, 43, 0, 0, 45, 18, + 0, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 0, 175, 0, 176, 177, 0, + 178, 179, 180, 181, 182, 0, 0, 0, 0, 0, + 166, 0, 172, 160, 168, 74, 168, 168, 0, 57, + 0, 58, 0, 0, 78, 0, 0, 0, 0, 0, + 69, 70, 71, 73, 0, 175, 85, 86, 42, 44, + 48, 46, 47, 0, 0, 0, 0, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 109, 0, 0, 0, 52, 0, 0, 0, 0, - 78, 0, 0, 0, 69, 68, 67, 73, 0, 0, - 0, 0, 90, 96, 97, 98, 99, 100, 91, 92, - 93, 95, 94, 0, 0, 170, 163, 0, 0, 59, - 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, - 170, 198, 0, 76, 77, 60, 62, 0, 80, 0, - 0, 66, 0, 0, 170, 0, 170, 0, 170, 0, - 164, 0, 79, 0, 0, 49, 51, 0, 54, 0, - 56, 0, 165, 61, 0, 64, 0, 0, 0, 0, - 0, 0, 50, 53, 55, 63, 65 + 0, 0, 0, 108, 0, 0, 0, 52, 0, 0, + 0, 0, 77, 0, 0, 0, 67, 68, 72, 0, + 0, 0, 0, 89, 95, 96, 97, 98, 99, 90, + 91, 92, 94, 93, 0, 0, 168, 161, 0, 0, + 59, 0, 0, 80, 0, 0, 0, 0, 0, 0, + 0, 168, 204, 0, 75, 76, 60, 62, 0, 79, + 0, 0, 66, 0, 0, 168, 0, 168, 0, 168, + 0, 162, 0, 78, 0, 0, 49, 51, 0, 54, + 0, 56, 0, 163, 61, 0, 64, 0, 0, 0, + 0, 0, 0, 50, 53, 55, 63, 65 }; const short parser::yypgoto_[] = { - -242, -242, -242, 286, 288, -242, -242, -242, -242, -185, - -81, -242, -242, -242, -242, -242, -242, -242, -242, -242, - -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, - -242, -242, -242, -242, -242, -68, -242, 39, -241, -242, - -242, -242, -242, -83, 52, -242, -25, -19, -121, -29, - -242, -242, -242, -22, 78, -242, 106, -242, -242, -242, - 118, 159, 195, 200, -242, -242, 0, 5, -242, -10, - -242, -242, 108, -242, 115, -242, -242 + -244, -244, -244, 223, 226, -244, -244, -244, -244, 15, + -84, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -128, -244, 39, -243, -244, + -244, -244, -244, -106, -118, -244, -25, -19, -53, -26, + -244, -244, -244, -81, -22, -244, 43, -244, 46, -244, + -244, -244, 90, 156, 193, 203, -244, -244, 0, 5, + -244, -10, -244, -244, -244, -244 }; const short parser::yydefgoto_[] = { - 0, 4, 5, 6, 7, 8, 9, 10, 23, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 299, 347, 97, 221, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 98, 174, - 100, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82 + 0, 4, 5, 6, 7, 8, 9, 10, 23, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 301, 348, 100, 224, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 101, 177, + 103, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85 }; const short parser::yytable_[] = { - 11, 87, 91, 138, 22, 11, 13, 88, 92, 99, - 300, 12, 267, 173, 1, 2, 29, 14, 24, 18, - 29, 33, 34, 35, 36, 15, 89, 89, 21, 86, - 333, 90, 90, 130, 20, 84, 131, 132, 29, 101, - 85, -184, -184, 133, -184, 19, 104, 105, -184, -177, - -177, 86, -177, 134, 222, 334, -177, -184, 47, 247, - -184, 83, 89, 135, 136, -177, 99, 90, -177, 248, - 12, 3, 3, 240, 12, 3, 94, 254, 146, 102, - 103, -178, -178, 21, -178, 139, 46, 93, -178, 106, - 326, 327, 12, 3, 3, 146, 146, -178, -184, -184, - -178, 137, 167, 169, 140, 134, -177, -177, 168, 170, - 263, 263, 328, 360, 222, 224, 141, 146, 146, 142, - 292, 300, 293, 294, 372, 377, 146, 89, 89, 146, - 146, 172, 90, 90, 145, 175, 147, 231, -178, -178, - 241, 233, 90, 242, 243, 345, 346, 148, 149, 150, + 11, 90, 94, 141, 22, 11, 13, 91, 95, 1, + 2, 302, 102, 250, 12, 29, 14, 18, 24, 334, + 87, 20, 226, 251, 243, 88, 92, 92, 89, 149, + 15, 93, 93, 21, 225, -175, -175, 3, -175, 104, + 86, 135, -175, 19, 335, -182, -182, 136, -182, 109, + 327, -175, -182, 140, -175, 149, 96, 137, 51, 227, + 328, -182, 329, 361, -182, 149, 92, 149, 149, 12, + 3, 93, 102, 373, 138, 139, 97, 143, 149, 105, + 106, 378, 226, 144, 176, 137, 149, 150, 142, 3, + 265, 265, -175, -175, 225, 112, 113, 145, 149, 379, + 107, 108, -182, -182, 149, 170, 172, 245, 380, 244, + 246, 171, 173, 149, 247, 227, 227, 252, 228, 227, + 302, 125, 126, 127, 128, 129, 127, 128, 129, 249, + 92, 92, 253, 254, 175, 93, 93, 148, 178, 255, + 234, 256, 108, 260, 236, 93, 261, 262, 265, 292, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 244, 246, 263, 171, - 249, 224, 224, 250, 251, 224, 373, 255, 375, 232, - 252, 234, 378, 235, 253, 237, 379, 146, 258, 223, - 296, 146, 259, 231, 231, 385, 386, 231, 90, 90, - 260, 132, 90, 268, 342, -179, -179, 133, -179, 124, - 125, 126, -179, 269, 270, 225, 290, 304, 245, 359, - 308, -179, 105, 305, -179, 306, 89, 309, 310, 224, - 262, 90, 311, 367, 323, 369, 325, 371, 340, 132, - 132, 329, 361, 226, 332, 133, 133, 222, 222, 223, - 364, 231, 302, 380, 351, 227, 90, 109, 110, 343, - 344, 362, -179, -179, 89, 89, 365, 366, 368, 90, - 90, 225, 225, 370, 382, 225, 132, 291, 222, 263, - 222, 383, 133, 122, 123, 124, 125, 126, 297, 298, - 384, 16, 303, 17, 374, 256, 228, 222, 222, 264, - 265, 89, 257, 226, 0, 0, 90, 0, 224, 224, - 0, 227, 227, 0, 0, 227, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 0, 324, 225, - 231, 231, 229, 0, 350, 90, 90, 230, 0, 224, - 224, 224, 122, 123, 124, 125, 126, 336, 337, 338, - 339, 0, 228, 228, 0, 0, 228, 301, 224, 224, - 0, 231, 231, 231, 0, 0, 90, 90, 90, 227, - 0, 348, 349, 0, 0, 0, 0, 0, 0, 0, - 231, 231, 223, 223, 0, 90, 90, 0, 229, 229, - 0, 0, 229, 230, 230, 127, 128, 230, 29, 0, - 0, 0, 129, 376, 0, 0, 0, 0, 225, 225, - 228, 130, 0, 223, 131, 223, 0, 0, 0, -180, - -180, 0, -180, 0, 0, 0, -180, 0, 0, 0, - 0, 0, 223, 223, 0, -180, 226, 226, -180, 225, - 225, 225, 0, 0, 0, 0, 229, 0, 227, 227, - 0, 230, 12, 3, -181, -181, 0, -181, 225, 225, - 0, -181, 0, 0, 0, 0, 0, 226, 301, 226, - -181, 0, 0, -181, 0, 0, -180, -180, 0, 227, - 227, 227, 0, 0, 0, 0, 226, 226, 0, 228, - 228, 0, 0, 0, -182, -182, 0, -182, 227, 227, - 0, -182, 0, 0, 0, 0, 0, 0, 109, 110, - -182, -181, -181, -182, 115, 116, 117, 118, 0, 0, - 228, 228, 228, 0, 0, 229, 229, 0, 0, 0, - 230, 230, 0, 0, 122, 123, 124, 125, 126, 228, - 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -182, -182, 0, 0, 0, 229, 229, 229, 0, - 0, 230, 230, 230, 0, 0, 0, 0, 0, 0, - 0, 176, 177, 178, 0, 229, 229, 0, 0, 179, - 230, 230, 180, 181, 182, 0, 183, 184, 185, 0, - 186, 187, 188, 189, 190, 191, 26, 0, 0, 29, - 0, 0, 0, 0, 33, 34, 35, 36, 0, 0, - 137, 192, 86, 0, 0, 0, 176, 177, 178, 0, - 193, 194, 0, 0, 179, 0, 0, 180, 181, 182, - 0, 183, 184, 185, 0, 186, 187, 188, 189, 190, - 191, 26, 0, 0, 29, 0, 0, 0, 0, 33, - 34, 35, 36, 12, 3, 137, 266, 86, 0, 0, - 0, 176, 177, 178, 0, 193, 194, 0, 0, 179, - 0, 0, 180, 181, 182, 0, 183, 184, 185, 0, - 186, 187, 188, 189, 190, 191, 26, 0, 0, 29, - 0, 0, 25, 0, 33, 34, 35, 36, 12, 3, - 137, 0, 86, 0, 0, 0, 0, 0, 0, 0, - 193, 194, 26, 27, 28, 29, 30, 31, 32, 0, - 33, 34, 35, 36, 37, 0, 0, 0, 95, 96, - 0, 0, 39, 0, 0, -183, -183, 0, -183, 0, - 0, 0, -183, 12, 3, 0, 0, 0, 40, 41, - 0, -183, 0, 0, -183, 25, 0, 0, 0, 0, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 270, + 271, 272, 174, 227, 228, 228, 298, 306, 228, 307, + 259, 309, 235, 229, 237, 310, 238, 311, 240, 312, + 330, 294, 326, 295, 296, 324, 234, 234, 333, 341, + 234, 93, 93, 344, 135, 93, 29, 345, 362, 365, + 136, 363, 366, 226, 226, 269, 367, 369, 371, 133, + 381, 248, 134, 383, 384, 225, 225, 385, 16, 92, + 230, 17, 228, 264, 93, 375, 258, 0, 0, 266, + 267, 135, 135, 229, 226, 0, 226, 136, 136, 0, + 227, 227, 352, 0, 234, 304, 225, 265, 225, 93, + 12, 3, 0, 226, 226, 0, 92, 92, 0, 0, + 0, 93, 93, 343, 0, 225, 225, 0, 135, 0, + 293, 227, 227, 227, 136, 0, 230, 230, 360, 0, + 230, 299, 300, 0, 0, 305, 231, 303, 0, 0, + 227, 227, 368, 92, 370, 0, 372, 0, 93, 228, + 228, 125, 126, 127, 128, 129, 0, 0, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 0, + 325, 234, 234, 232, 0, 351, 93, 93, 0, 0, + 228, 228, 228, 233, 230, 0, 346, 347, 337, 338, + 339, 340, 231, 231, 0, 0, 231, 0, 0, 228, + 228, 0, 234, 234, 234, 0, 0, 93, 93, 93, + 0, 0, 349, 350, 229, 229, 0, 374, 0, 376, + 0, 234, 234, 0, 0, 0, 93, 93, 0, 232, + 232, 0, 0, 232, 0, 0, 386, 387, 0, 233, + 233, 0, 0, 233, 377, 229, 303, 229, 0, 0, + 231, -176, -176, 0, -176, 0, 0, 0, -176, 0, + 0, 230, 230, 257, 229, 229, 0, -176, 0, 21, + -176, 0, 0, 47, 48, 49, 50, 0, 0, 273, + 274, 0, 275, 276, 0, 0, 0, 232, 0, 0, + 0, 0, 230, 230, 230, 0, 0, 233, 130, 0, + 0, 29, 0, 0, 0, 0, 0, 0, -176, -176, + 0, 230, 230, 29, 133, 0, 0, 134, 33, 34, + 35, 36, 277, 278, 0, 0, 89, 231, 231, 0, + 0, 0, 0, 0, 196, 197, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, + 0, 0, 0, 0, 0, 12, 3, 0, 231, 231, + 231, 0, 25, 0, 232, 232, 0, 12, 3, 0, + 0, 0, 0, 0, 233, 233, 0, 231, 231, 0, + 0, 0, 26, 27, 28, 29, 30, 31, 32, 0, + 33, 34, 35, 36, 37, 232, 232, 232, 98, 99, + 0, 0, 39, 0, 0, 233, 233, 233, 0, 0, + 0, 0, 0, 0, 232, 232, 0, 0, 40, 41, + 0, 0, 0, 0, 233, 233, 0, 0, 0, 25, 0, 0, 0, 0, 0, 42, 0, 0, 43, 12, - 3, 21, 44, 45, 46, 26, 27, 28, 29, 30, - 31, 32, 0, 33, 34, 35, 36, 37, 0, 0, - 0, 38, -183, -183, 0, 39, 0, 261, 0, 0, - 0, 29, 0, 0, 0, 0, 33, 34, 35, 36, - 0, 40, 41, 0, 86, 0, 0, 0, 25, 0, - 0, 0, 193, 194, 0, 0, 0, 0, 42, 0, - 0, 43, 12, 3, 21, 44, 45, 46, 26, 27, - 28, 29, 30, 31, 32, 0, 33, 34, 35, 36, - 37, 236, 0, 0, 38, 12, 3, 108, 39, 0, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 0, 0, 0, 0, 40, 41, 0, 0, 0, 0, - 0, 25, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 42, 0, 0, 43, 12, 3, 21, 44, 45, - 46, 26, 27, 28, 29, 30, 31, 32, 0, 33, - 34, 35, 36, 37, 0, 0, 0, 95, 0, 0, - 0, 39, 0, 0, 0, 0, 0, 0, 0, 271, - 272, 0, 273, 274, 0, 0, 0, 40, 41, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 0, - 0, 29, 0, 0, 42, 0, 0, 43, 12, 3, - 21, 44, 45, 46, 130, 0, 0, 131, 0, 0, - 0, 0, 275, 276, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 29, 0, 0, - 0, 0, 0, 0, 0, 12, 3, 0, 0, 0, - 130, 0, 0, 131, 0, 0, 0, 0, 275, 276, + 3, 21, 44, 45, 46, 47, 48, 49, 50, 26, + 27, 28, 29, 30, 31, 32, 0, 33, 34, 35, + 36, 37, 0, 0, 0, 38, 0, 0, 0, 39, + 0, 263, -177, -177, 0, -177, 0, 0, 0, -177, + 0, 0, 0, 0, 0, 40, 41, 0, -177, 0, + 0, -177, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 42, 0, 0, 43, 12, 3, 21, 44, + 45, 46, 47, 48, 49, 50, 26, 27, 28, 29, + 30, 31, 32, 0, 33, 34, 35, 36, 37, -177, + -177, 0, 38, 0, 0, 0, 39, 0, 0, 130, + 131, 0, 29, 0, 0, 0, 132, 0, 0, 0, + 0, 0, 40, 41, 29, 133, 0, 0, 134, 33, + 34, 35, 36, 25, 0, 0, 0, 89, 0, 42, + 0, 0, 43, 12, 3, 21, 44, 45, 46, 47, + 48, 49, 50, 26, 27, 28, 29, 30, 31, 32, + 0, 33, 34, 35, 36, 37, 12, 3, 0, 98, + 0, 0, 0, 39, 112, 113, 0, 0, 12, 3, + 118, 119, 120, 121, 0, 0, 0, 0, 0, 40, + 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 125, 126, 127, 128, 129, 0, 42, 0, 0, 43, + 12, 3, 21, 44, 45, 46, 47, 48, 49, 50, + 179, 180, 181, 0, 0, 0, 0, 0, 182, 0, + 0, 183, 184, 185, 0, 186, 187, 188, 0, 189, + 190, 191, 192, 193, 194, 26, 0, 0, 29, 0, + 0, 0, 0, 33, 34, 35, 36, 0, 0, 140, + 195, 89, 0, 0, 0, 179, 180, 181, 0, 196, + 197, 0, 0, 182, 0, 0, 183, 184, 185, 0, + 186, 187, 188, 0, 189, 190, 191, 192, 193, 194, + 26, 0, 0, 29, 0, 0, 0, 0, 33, 34, + 35, 36, 12, 3, 140, 268, 89, 0, 0, 0, + 179, 180, 181, 0, 196, 197, 0, 0, 182, 0, + 0, 183, 184, 185, 0, 186, 187, 188, 0, 189, + 190, 191, 192, 193, 194, 26, 0, 0, 29, 0, + 0, 0, 0, 33, 34, 35, 36, 12, 3, 140, + 0, 89, 0, 0, -178, -178, 0, -178, 0, 196, + 197, -178, -179, -179, 0, -179, 0, 0, 0, -179, + -178, 0, 0, -178, 0, 0, 0, 0, -179, -180, + -180, -179, -180, 0, -181, -181, -180, -181, 0, 0, + 0, -181, 12, 3, 0, -180, 0, 0, -180, 0, + -181, 0, 0, -181, 0, 0, 0, 0, 29, 0, + 0, -178, -178, 0, 0, 0, 0, 0, 0, -179, + -179, 133, 0, 0, 134, 0, 0, 0, 0, 277, + 278, 0, 0, 0, 0, 0, -180, -180, 0, 0, + 0, -181, -181, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 146, 0, 0, 0, 0, 147, + 0, 0, 12, 3, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 143, 0, 0, 0, 0, 144, 0, - 0, 12, 3, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 353, 0, 0, - 0, 0, 354, 0, 0, 0, 0, 108, 0, 0, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 355, 0, 0, 0, 0, 356, 0, 0, 0, - 0, 108, 0, 0, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, - 122, 123, 124, 125, 126, 357, 0, 0, 0, 0, - 358, 0, 0, 0, 0, 108, 0, 0, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 330, - 0, 119, 120, 121, 122, 123, 124, 125, 126, 108, - 0, 0, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 331, 0, 119, 120, 121, 122, 123, - 124, 125, 126, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 335, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 108, 0, 0, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 341, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 108, 0, 0, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 352, 0, 119, 120, 121, - 122, 123, 124, 125, 126, 108, 0, 0, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 363, - 0, 119, 120, 121, 122, 123, 124, 125, 126, 108, - 0, 0, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 381, 0, 119, 120, 121, 122, 123, - 124, 125, 126, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 239, 0, 0, - 0, 0, 0, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 288, 0, 0, - 0, 0, 0, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 289, 0, 0, - 0, 0, 108, 0, 0, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, - 121, 122, 123, 124, 125, 126, 238, 0, 108, 0, - 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, - 125, 126, 107, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 295, 108, 0, - 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, - 125, 126, 307, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 108, 0, 0, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 0, 0, 0, - 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, - 109, 110, 0, 112, 113, 114, 115, 116, 117, 118, - 109, 110, 0, 0, 113, 114, 115, 116, 117, 118, - 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 109, 110, 0, 0, 113, 114, 115, 116, 117, - 118, 109, 110, 0, 0, 113, 114, 115, 116, 117, - 118, 0, 0, 0, 0, 120, 121, 122, 123, 124, - 125, 126, 0, 0, 0, 120, 0, 122, 123, 124, - 125, 126, 109, 110, 0, 0, 113, 114, 115, 116, - 117, 118, 0, 0, 0, 0, 0, 0, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 354, 0, + 0, 0, 0, 355, 0, 0, 0, 0, 111, 0, + 0, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 122, 123, 124, 125, 126, 127, + 128, 129, 356, 0, 0, 0, 0, 357, 0, 0, + 0, 0, 111, 0, 0, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 123, - 124, 125, 126 + 124, 125, 126, 127, 128, 129, 358, 0, 0, 0, + 0, 359, 0, 0, 0, 0, 111, 0, 0, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 331, 0, 122, 123, 124, 125, 126, 127, 128, 129, + 111, 0, 0, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 332, 0, 122, 123, 124, 125, + 126, 127, 128, 129, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 111, 0, + 0, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 342, 0, 122, 123, 124, 125, 126, 127, + 128, 129, 111, 0, 0, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 353, 0, 122, 123, + 124, 125, 126, 127, 128, 129, 111, 0, 0, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 364, 0, 122, 123, 124, 125, 126, 127, 128, 129, + 111, 0, 0, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 382, 0, 122, 123, 124, 125, + 126, 127, 128, 129, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 239, 0, + 0, 0, 0, 0, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 242, 0, + 0, 0, 0, 0, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 290, 0, + 0, 0, 0, 0, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 291, 0, + 0, 0, 0, 111, 0, 0, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, + 123, 124, 125, 126, 127, 128, 129, 241, 0, 111, + 0, 0, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 122, 123, 124, 125, 126, + 127, 128, 129, 110, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 297, 111, + 0, 0, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 122, 123, 124, 125, 126, + 127, 128, 129, 308, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 111, 0, 0, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 0, 0, + 0, 0, 0, 122, 123, 124, 125, 126, 127, 128, + 129, 112, 113, 0, 115, 116, 117, 118, 119, 120, + 121, 112, 113, 0, 0, 116, 117, 118, 119, 120, + 121, 0, 0, 0, 122, 123, 124, 125, 126, 127, + 128, 129, 0, 0, 122, 123, 124, 125, 126, 127, + 128, 129, 112, 113, 0, 0, 116, 117, 118, 119, + 120, 121, 112, 113, 0, 0, 116, 117, 118, 119, + 120, 121, 0, 0, 0, 0, 123, 124, 125, 126, + 127, 128, 129, 0, 0, 0, 123, 0, 125, 126, + 127, 128, 129, 112, 113, 0, 0, 116, 117, 118, + 119, 120, 121, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, + 126, 127, 128, 129 }; const short parser::yycheck_[] = { - 0, 26, 27, 84, 14, 5, 1, 26, 27, 38, - 251, 85, 197, 134, 6, 7, 31, 40, 18, 40, - 31, 36, 37, 38, 39, 0, 26, 27, 87, 44, - 21, 26, 27, 44, 50, 41, 47, 62, 31, 39, - 46, 28, 29, 62, 31, 66, 89, 90, 35, 28, - 29, 44, 31, 40, 137, 46, 35, 44, 19, 40, - 47, 41, 62, 48, 50, 44, 95, 62, 47, 50, - 85, 86, 86, 41, 85, 86, 37, 81, 46, 40, - 41, 28, 29, 87, 31, 85, 90, 44, 35, 86, - 41, 41, 85, 86, 86, 46, 46, 44, 85, 86, - 47, 42, 127, 128, 44, 40, 85, 86, 127, 128, - 193, 194, 41, 41, 197, 137, 48, 46, 46, 44, - 241, 362, 243, 244, 41, 41, 46, 127, 128, 46, - 46, 131, 127, 128, 95, 135, 45, 137, 85, 86, - 40, 141, 137, 50, 40, 330, 331, 108, 109, 110, + 0, 26, 27, 87, 14, 5, 1, 26, 27, 6, + 7, 254, 38, 40, 85, 31, 40, 40, 18, 21, + 41, 50, 140, 50, 41, 46, 26, 27, 44, 46, + 0, 26, 27, 87, 140, 28, 29, 86, 31, 39, + 41, 66, 35, 66, 46, 28, 29, 66, 31, 86, + 41, 44, 35, 42, 47, 46, 44, 40, 19, 140, + 41, 44, 41, 41, 47, 46, 66, 46, 46, 85, + 86, 66, 98, 41, 48, 50, 37, 44, 46, 40, + 41, 41, 200, 48, 137, 40, 46, 45, 88, 86, + 196, 197, 85, 86, 200, 54, 55, 44, 46, 41, + 90, 91, 85, 86, 46, 130, 131, 50, 41, 40, + 40, 130, 131, 46, 40, 196, 197, 40, 140, 200, + 363, 80, 81, 82, 83, 84, 82, 83, 84, 50, + 130, 131, 40, 40, 134, 130, 131, 98, 138, 40, + 140, 40, 91, 49, 144, 140, 50, 50, 254, 45, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 40, 50, 251, 130, - 40, 193, 194, 40, 40, 197, 361, 187, 363, 140, - 40, 142, 41, 144, 40, 146, 41, 46, 49, 137, - 41, 46, 50, 193, 194, 380, 381, 197, 193, 194, - 50, 226, 197, 50, 325, 28, 29, 226, 31, 82, - 83, 84, 35, 50, 50, 137, 45, 49, 179, 340, - 40, 44, 90, 49, 47, 49, 226, 40, 40, 251, - 191, 226, 40, 354, 45, 356, 40, 358, 40, 264, - 265, 50, 17, 137, 50, 264, 265, 330, 331, 197, - 21, 251, 252, 41, 335, 137, 251, 54, 55, 50, - 50, 50, 85, 86, 264, 265, 50, 50, 50, 264, - 265, 193, 194, 50, 50, 197, 301, 238, 361, 362, - 363, 50, 301, 80, 81, 82, 83, 84, 249, 250, - 50, 5, 253, 5, 362, 187, 137, 380, 381, 193, - 194, 301, 187, 197, -1, -1, 301, -1, 330, 331, - -1, 193, 194, -1, -1, 197, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 251, - 330, 331, 137, -1, 334, 330, 331, 137, -1, 361, - 362, 363, 80, 81, 82, 83, 84, 308, 309, 310, - 311, -1, 193, 194, -1, -1, 197, 251, 380, 381, - -1, 361, 362, 363, -1, -1, 361, 362, 363, 251, - -1, 332, 333, -1, -1, -1, -1, -1, -1, -1, - 380, 381, 330, 331, -1, 380, 381, -1, 193, 194, - -1, -1, 197, 193, 194, 28, 29, 197, 31, -1, - -1, -1, 35, 364, -1, -1, -1, -1, 330, 331, - 251, 44, -1, 361, 47, 363, -1, -1, -1, 28, - 29, -1, 31, -1, -1, -1, 35, -1, -1, -1, - -1, -1, 380, 381, -1, 44, 330, 331, 47, 361, - 362, 363, -1, -1, -1, -1, 251, -1, 330, 331, - -1, 251, 85, 86, 28, 29, -1, 31, 380, 381, - -1, 35, -1, -1, -1, -1, -1, 361, 362, 363, - 44, -1, -1, 47, -1, -1, 85, 86, -1, 361, - 362, 363, -1, -1, -1, -1, 380, 381, -1, 330, - 331, -1, -1, -1, 28, 29, -1, 31, 380, 381, - -1, 35, -1, -1, -1, -1, -1, -1, 54, 55, - 44, 85, 86, 47, 60, 61, 62, 63, -1, -1, - 361, 362, 363, -1, -1, 330, 331, -1, -1, -1, - 330, 331, -1, -1, 80, 81, 82, 83, 84, 380, - 381, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 85, 86, -1, -1, -1, 361, 362, 363, -1, - -1, 361, 362, 363, -1, -1, -1, -1, -1, -1, - -1, 3, 4, 5, -1, 380, 381, -1, -1, 11, - 380, 381, 14, 15, 16, -1, 18, 19, 20, -1, - 22, 23, 24, 25, 26, 27, 28, -1, -1, 31, - -1, -1, -1, -1, 36, 37, 38, 39, -1, -1, - 42, 43, 44, -1, -1, -1, 3, 4, 5, -1, - 52, 53, -1, -1, 11, -1, -1, 14, 15, 16, - -1, 18, 19, 20, -1, 22, 23, 24, 25, 26, - 27, 28, -1, -1, 31, -1, -1, -1, -1, 36, - 37, 38, 39, 85, 86, 42, 43, 44, -1, -1, - -1, 3, 4, 5, -1, 52, 53, -1, -1, 11, - -1, -1, 14, 15, 16, -1, 18, 19, 20, -1, - 22, 23, 24, 25, 26, 27, 28, -1, -1, 31, - -1, -1, 8, -1, 36, 37, 38, 39, 85, 86, - 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, - 52, 53, 28, 29, 30, 31, 32, 33, 34, -1, - 36, 37, 38, 39, 40, -1, -1, -1, 44, 45, - -1, -1, 48, -1, -1, 28, 29, -1, 31, -1, - -1, -1, 35, 85, 86, -1, -1, -1, 64, 65, - -1, 44, -1, -1, 47, 8, -1, -1, -1, -1, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 50, + 50, 50, 133, 254, 196, 197, 41, 49, 200, 49, + 190, 40, 143, 140, 145, 40, 147, 40, 149, 40, + 50, 244, 40, 246, 247, 45, 196, 197, 50, 40, + 200, 196, 197, 50, 229, 200, 31, 50, 17, 21, + 229, 50, 50, 331, 332, 200, 50, 50, 50, 44, + 41, 182, 47, 50, 50, 331, 332, 50, 5, 229, + 140, 5, 254, 194, 229, 363, 190, -1, -1, 196, + 197, 266, 267, 200, 362, -1, 364, 266, 267, -1, + 331, 332, 336, -1, 254, 255, 362, 363, 364, 254, + 85, 86, -1, 381, 382, -1, 266, 267, -1, -1, + -1, 266, 267, 326, -1, 381, 382, -1, 303, -1, + 241, 362, 363, 364, 303, -1, 196, 197, 341, -1, + 200, 252, 253, -1, -1, 256, 140, 254, -1, -1, + 381, 382, 355, 303, 357, -1, 359, -1, 303, 331, + 332, 80, 81, 82, 83, 84, -1, -1, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, + 291, 331, 332, 140, -1, 335, 331, 332, -1, -1, + 362, 363, 364, 140, 254, -1, 331, 332, 309, 310, + 311, 312, 196, 197, -1, -1, 200, -1, -1, 381, + 382, -1, 362, 363, 364, -1, -1, 362, 363, 364, + -1, -1, 333, 334, 331, 332, -1, 362, -1, 364, + -1, 381, 382, -1, -1, -1, 381, 382, -1, 196, + 197, -1, -1, 200, -1, -1, 381, 382, -1, 196, + 197, -1, -1, 200, 365, 362, 363, 364, -1, -1, + 254, 28, 29, -1, 31, -1, -1, -1, 35, -1, + -1, 331, 332, 81, 381, 382, -1, 44, -1, 87, + 47, -1, -1, 91, 92, 93, 94, -1, -1, 9, + 10, -1, 12, 13, -1, -1, -1, 254, -1, -1, + -1, -1, 362, 363, 364, -1, -1, 254, 28, -1, + -1, 31, -1, -1, -1, -1, -1, -1, 85, 86, + -1, 381, 382, 31, 44, -1, -1, 47, 36, 37, + 38, 39, 52, 53, -1, -1, 44, 331, 332, -1, + -1, -1, -1, -1, 52, 53, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, -1, -1, -1, + -1, -1, -1, -1, -1, 85, 86, -1, 362, 363, + 364, -1, 8, -1, 331, 332, -1, 85, 86, -1, + -1, -1, -1, -1, 331, 332, -1, 381, 382, -1, + -1, -1, 28, 29, 30, 31, 32, 33, 34, -1, + 36, 37, 38, 39, 40, 362, 363, 364, 44, 45, + -1, -1, 48, -1, -1, 362, 363, 364, -1, -1, + -1, -1, -1, -1, 381, 382, -1, -1, 64, 65, + -1, -1, -1, -1, 381, 382, -1, -1, -1, 8, -1, -1, -1, -1, -1, 81, -1, -1, 84, 85, - 86, 87, 88, 89, 90, 28, 29, 30, 31, 32, - 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, - -1, 44, 85, 86, -1, 48, -1, 50, -1, -1, - -1, 31, -1, -1, -1, -1, 36, 37, 38, 39, - -1, 64, 65, -1, 44, -1, -1, -1, 8, -1, - -1, -1, 52, 53, -1, -1, -1, -1, 81, -1, - -1, 84, 85, 86, 87, 88, 89, 90, 28, 29, - 30, 31, 32, 33, 34, -1, 36, 37, 38, 39, - 40, 45, -1, -1, 44, 85, 86, 51, 48, -1, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - -1, -1, -1, -1, 64, 65, -1, -1, -1, -1, - -1, 8, -1, 77, 78, 79, 80, 81, 82, 83, - 84, 81, -1, -1, 84, 85, 86, 87, 88, 89, - 90, 28, 29, 30, 31, 32, 33, 34, -1, 36, - 37, 38, 39, 40, -1, -1, -1, 44, -1, -1, - -1, 48, -1, -1, -1, -1, -1, -1, -1, 9, - 10, -1, 12, 13, -1, -1, -1, 64, 65, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 28, -1, - -1, 31, -1, -1, 81, -1, -1, 84, 85, 86, - 87, 88, 89, 90, 44, -1, -1, 47, -1, -1, - -1, -1, 52, 53, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 31, -1, -1, - -1, -1, -1, -1, -1, 85, 86, -1, -1, -1, - 44, -1, -1, 47, -1, -1, -1, -1, 52, 53, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 28, + 29, 30, 31, 32, 33, 34, -1, 36, 37, 38, + 39, 40, -1, -1, -1, 44, -1, -1, -1, 48, + -1, 50, 28, 29, -1, 31, -1, -1, -1, 35, + -1, -1, -1, -1, -1, 64, 65, -1, 44, -1, + -1, 47, -1, -1, -1, -1, 8, -1, -1, -1, + -1, -1, 81, -1, -1, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 28, 29, 30, 31, + 32, 33, 34, -1, 36, 37, 38, 39, 40, 85, + 86, -1, 44, -1, -1, -1, 48, -1, -1, 28, + 29, -1, 31, -1, -1, -1, 35, -1, -1, -1, + -1, -1, 64, 65, 31, 44, -1, -1, 47, 36, + 37, 38, 39, 8, -1, -1, -1, 44, -1, 81, + -1, -1, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 28, 29, 30, 31, 32, 33, 34, + -1, 36, 37, 38, 39, 40, 85, 86, -1, 44, + -1, -1, -1, 48, 54, 55, -1, -1, 85, 86, + 60, 61, 62, 63, -1, -1, -1, -1, -1, 64, + 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 80, 81, 82, 83, 84, -1, 81, -1, -1, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 3, 4, 5, -1, -1, -1, -1, -1, 11, -1, + -1, 14, 15, 16, -1, 18, 19, 20, -1, 22, + 23, 24, 25, 26, 27, 28, -1, -1, 31, -1, + -1, -1, -1, 36, 37, 38, 39, -1, -1, 42, + 43, 44, -1, -1, -1, 3, 4, 5, -1, 52, + 53, -1, -1, 11, -1, -1, 14, 15, 16, -1, + 18, 19, 20, -1, 22, 23, 24, 25, 26, 27, + 28, -1, -1, 31, -1, -1, -1, -1, 36, 37, + 38, 39, 85, 86, 42, 43, 44, -1, -1, -1, + 3, 4, 5, -1, 52, 53, -1, -1, 11, -1, + -1, 14, 15, 16, -1, 18, 19, 20, -1, 22, + 23, 24, 25, 26, 27, 28, -1, -1, 31, -1, + -1, -1, -1, 36, 37, 38, 39, 85, 86, 42, + -1, 44, -1, -1, 28, 29, -1, 31, -1, 52, + 53, 35, 28, 29, -1, 31, -1, -1, -1, 35, + 44, -1, -1, 47, -1, -1, -1, -1, 44, 28, + 29, 47, 31, -1, 28, 29, 35, 31, -1, -1, + -1, 35, 85, 86, -1, 44, -1, -1, 47, -1, + 44, -1, -1, 47, -1, -1, -1, -1, 31, -1, + -1, 85, 86, -1, -1, -1, -1, -1, -1, 85, + 86, 44, -1, -1, 47, -1, -1, -1, -1, 52, + 53, -1, -1, -1, -1, -1, 85, 86, -1, -1, + -1, 85, 86, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 41, -1, -1, -1, -1, 46, + -1, -1, 85, 86, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 41, -1, -1, -1, -1, 46, -1, - -1, 85, 86, 51, -1, -1, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, - 78, 79, 80, 81, 82, 83, 84, 41, -1, -1, - -1, -1, 46, -1, -1, -1, -1, 51, -1, -1, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 77, 78, 79, 80, 81, 82, 83, - 84, 41, -1, -1, -1, -1, 46, -1, -1, -1, - -1, 51, -1, -1, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 77, 78, 79, - 80, 81, 82, 83, 84, 41, -1, -1, -1, -1, - 46, -1, -1, -1, -1, 51, -1, -1, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, - -1, 77, 78, 79, 80, 81, 82, 83, 84, 51, - -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 41, -1, 77, 78, 79, 80, 81, - 82, 83, 84, 51, -1, -1, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 41, -1, 77, - 78, 79, 80, 81, 82, 83, 84, 51, -1, -1, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 41, -1, 77, 78, 79, 80, 81, 82, 83, - 84, 51, -1, -1, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 41, -1, 77, 78, 79, - 80, 81, 82, 83, 84, 51, -1, -1, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, - -1, 77, 78, 79, 80, 81, 82, 83, 84, 51, - -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 41, -1, 77, 78, 79, 80, 81, - 82, 83, 84, 51, -1, -1, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, - 78, 79, 80, 81, 82, 83, 84, 45, -1, -1, - -1, -1, -1, 51, -1, -1, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, - 78, 79, 80, 81, 82, 83, 84, 45, -1, -1, - -1, -1, -1, 51, -1, -1, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, - 78, 79, 80, 81, 82, 83, 84, 46, -1, -1, + 77, 78, 79, 80, 81, 82, 83, 84, 41, -1, + -1, -1, -1, 46, -1, -1, -1, -1, 51, -1, + -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 77, 78, 79, 80, 81, 82, + 83, 84, 41, -1, -1, -1, -1, 46, -1, -1, -1, -1, 51, -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, 78, - 79, 80, 81, 82, 83, 84, 49, -1, 51, -1, + 79, 80, 81, 82, 83, 84, 41, -1, -1, -1, + -1, 46, -1, -1, -1, -1, 51, -1, -1, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 41, -1, 77, 78, 79, 80, 81, 82, 83, 84, + 51, -1, -1, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 41, -1, 77, 78, 79, 80, + 81, 82, 83, 84, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, + 77, 78, 79, 80, 81, 82, 83, 84, 51, -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 77, 78, 79, 80, 81, 82, - 83, 84, 50, 51, -1, -1, 54, 55, 56, 57, + -1, -1, 41, -1, 77, 78, 79, 80, 81, 82, + 83, 84, 51, -1, -1, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 41, -1, 77, 78, + 79, 80, 81, 82, 83, 84, 51, -1, -1, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 41, -1, 77, 78, 79, 80, 81, 82, 83, 84, + 51, -1, -1, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 41, -1, 77, 78, 79, 80, + 81, 82, 83, 84, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 77, 78, 79, 80, 81, 82, 83, 84, 45, -1, + -1, -1, -1, -1, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 77, 78, 79, 80, 81, 82, 83, 84, 45, -1, + -1, -1, -1, -1, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 77, 78, 79, 80, 81, 82, 83, 84, 45, -1, + -1, -1, -1, -1, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 77, 78, 79, 80, 81, 82, 83, 84, 46, -1, + -1, -1, -1, 51, -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, - 78, 79, 80, 81, 82, 83, 84, 50, 51, -1, - -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 77, 78, 79, 80, 81, 82, - 83, 84, 50, 51, -1, -1, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 51, -1, -1, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 77, - 78, 79, 80, 81, 82, 83, 84, -1, -1, -1, - -1, -1, 77, 78, 79, 80, 81, 82, 83, 84, - 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, - 54, 55, -1, -1, 58, 59, 60, 61, 62, 63, - -1, -1, -1, 77, 78, 79, 80, 81, 82, 83, - 84, -1, -1, 77, 78, 79, 80, 81, 82, 83, - 84, 54, 55, -1, -1, 58, 59, 60, 61, 62, - 63, 54, 55, -1, -1, 58, 59, 60, 61, 62, - 63, -1, -1, -1, -1, 78, 79, 80, 81, 82, - 83, 84, -1, -1, -1, 78, -1, 80, 81, 82, - 83, 84, 54, 55, -1, -1, 58, 59, 60, 61, + 78, 79, 80, 81, 82, 83, 84, 49, -1, 51, + -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 80, 81, - 82, 83, 84 + -1, -1, -1, -1, -1, 77, 78, 79, 80, 81, + 82, 83, 84, 50, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 77, 78, 79, 80, 81, 82, 83, 84, 50, 51, + -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 77, 78, 79, 80, 81, + 82, 83, 84, 50, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 51, -1, -1, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 77, 78, 79, 80, 81, 82, 83, 84, -1, -1, + -1, -1, -1, 77, 78, 79, 80, 81, 82, 83, + 84, 54, 55, -1, 57, 58, 59, 60, 61, 62, + 63, 54, 55, -1, -1, 58, 59, 60, 61, 62, + 63, -1, -1, -1, 77, 78, 79, 80, 81, 82, + 83, 84, -1, -1, 77, 78, 79, 80, 81, 82, + 83, 84, 54, 55, -1, -1, 58, 59, 60, 61, + 62, 63, 54, 55, -1, -1, 58, 59, 60, 61, + 62, 63, -1, -1, -1, -1, 78, 79, 80, 81, + 82, 83, 84, -1, -1, -1, 78, -1, 80, 81, + 82, 83, 84, 54, 55, -1, -1, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, + 81, 82, 83, 84 }; const unsigned char parser::yystos_[] = { - 0, 6, 7, 86, 101, 102, 103, 104, 105, 106, - 107, 166, 85, 167, 40, 0, 103, 104, 40, 66, - 50, 87, 169, 108, 166, 8, 28, 29, 30, 31, + 0, 6, 7, 86, 105, 106, 107, 108, 109, 110, + 111, 172, 85, 173, 40, 0, 107, 108, 40, 66, + 50, 87, 175, 112, 172, 8, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 44, 48, - 64, 65, 81, 84, 88, 89, 90, 137, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 64, 65, 81, 84, 88, 89, 90, 91, 92, 93, + 94, 141, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 41, 41, 46, 44, 146, 147, 166, - 167, 146, 147, 44, 137, 44, 45, 137, 148, 149, - 150, 166, 137, 137, 89, 90, 86, 50, 51, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 77, - 78, 79, 80, 81, 82, 83, 84, 28, 29, 35, - 44, 47, 146, 147, 40, 48, 50, 42, 110, 166, - 44, 48, 44, 41, 46, 137, 46, 45, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 146, 147, 146, - 147, 137, 166, 148, 149, 166, 3, 4, 5, 11, - 14, 15, 16, 18, 19, 20, 22, 23, 24, 25, - 26, 27, 43, 52, 53, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 138, 143, 144, 153, 154, 156, 160, 161, 162, - 163, 166, 137, 166, 137, 137, 45, 137, 49, 45, - 41, 40, 50, 40, 40, 137, 50, 40, 50, 40, - 40, 40, 40, 40, 81, 169, 172, 174, 49, 50, - 50, 50, 137, 143, 156, 156, 43, 109, 50, 50, - 50, 9, 10, 12, 13, 52, 53, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 45, 46, - 45, 137, 148, 148, 148, 50, 41, 137, 137, 135, - 138, 156, 166, 137, 49, 49, 49, 50, 40, 40, - 40, 40, 137, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 45, 137, 40, 41, 41, 41, 50, - 41, 41, 50, 21, 46, 41, 137, 137, 137, 137, - 40, 41, 148, 50, 50, 109, 109, 136, 137, 137, - 166, 110, 41, 41, 46, 41, 46, 41, 46, 148, - 41, 17, 50, 41, 21, 50, 50, 148, 50, 148, - 50, 148, 41, 109, 135, 109, 137, 41, 41, 41, - 41, 41, 50, 50, 50, 109, 109 + 174, 175, 176, 177, 178, 179, 41, 41, 46, 44, + 150, 151, 172, 173, 150, 151, 44, 141, 44, 45, + 141, 152, 153, 154, 172, 141, 141, 90, 91, 86, + 50, 51, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 77, 78, 79, 80, 81, 82, 83, 84, + 28, 29, 35, 44, 47, 150, 151, 40, 48, 50, + 42, 114, 172, 44, 48, 44, 41, 46, 141, 46, + 45, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 150, 151, 150, 151, 141, 172, 152, 153, 172, 3, + 4, 5, 11, 14, 15, 16, 18, 19, 20, 22, + 23, 24, 25, 26, 27, 43, 52, 53, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 142, 147, 148, 157, 158, 160, + 166, 167, 168, 169, 172, 141, 172, 141, 141, 45, + 141, 49, 45, 41, 40, 50, 40, 40, 141, 50, + 40, 50, 40, 40, 40, 40, 40, 81, 162, 175, + 49, 50, 50, 50, 141, 147, 160, 160, 43, 113, + 50, 50, 50, 9, 10, 12, 13, 52, 53, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 45, 46, 45, 141, 152, 152, 152, 50, 41, 141, + 141, 139, 142, 160, 172, 141, 49, 49, 50, 40, + 40, 40, 40, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 45, 141, 40, 41, 41, 41, + 50, 41, 41, 50, 21, 46, 41, 141, 141, 141, + 141, 40, 41, 152, 50, 50, 113, 113, 140, 141, + 141, 172, 114, 41, 41, 46, 41, 46, 41, 46, + 152, 41, 17, 50, 41, 21, 50, 50, 152, 50, + 152, 50, 152, 41, 113, 139, 113, 141, 41, 41, + 41, 41, 41, 50, 50, 50, 113, 113 }; const unsigned char parser::yyr1_[] = { - 0, 100, 101, 101, 102, 102, 102, 102, 103, 104, - 104, 104, 105, 106, 107, 108, 108, 108, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 110, 110, 111, 111, 112, 112, 113, 114, - 115, 115, 116, 117, 117, 118, 118, 119, 120, 120, - 121, 122, 123, 124, 125, 125, 126, 127, 127, 127, - 128, 129, 130, 131, 131, 132, 133, 134, 135, 135, - 136, 136, 137, 137, 137, 137, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 139, 139, 139, 139, 139, 139, 139, 139, 140, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 0, 104, 105, 105, 106, 106, 106, 106, 107, 108, + 108, 108, 109, 110, 111, 112, 112, 112, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 114, 114, 115, 115, 116, 116, 117, 118, + 119, 119, 120, 121, 121, 122, 122, 123, 124, 124, + 125, 126, 127, 128, 129, 129, 130, 131, 131, 132, + 133, 134, 135, 135, 136, 137, 138, 139, 139, 140, + 140, 141, 141, 141, 141, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 143, 143, 143, 143, 144, 144, 144, 144, 145, 145, - 145, 145, 146, 146, 147, 147, 148, 148, 149, 149, - 150, 151, 151, 152, 153, 154, 155, 156, 156, 156, - 156, 156, 156, 156, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176 + 143, 143, 143, 143, 143, 143, 143, 143, 144, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 147, 147, + 147, 147, 148, 148, 148, 148, 149, 149, 149, 149, + 150, 150, 151, 151, 152, 152, 153, 153, 154, 155, + 155, 156, 157, 158, 159, 160, 160, 160, 160, 160, + 160, 160, 160, 161, 161, 162, 162, 162, 162, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179 }; const signed char @@ -4082,21 +4132,21 @@ namespace xsk { namespace gsc { namespace h2 { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 1, 2, 2, 2, 6, 8, 6, 3, 8, 6, 8, 6, 2, 2, 4, - 5, 7, 5, 9, 7, 9, 5, 3, 3, 3, - 2, 2, 2, 3, 2, 2, 5, 5, 1, 0, - 1, 0, 1, 1, 1, 1, 2, 2, 2, 2, + 5, 7, 5, 9, 7, 9, 5, 3, 3, 2, + 2, 2, 3, 2, 2, 5, 5, 1, 0, 1, + 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, + 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 3, 3, 2, 2, - 3, 3, 4, 6, 8, 9, 1, 1, 3, 1, - 0, 2, 3, 3, 4, 3, 2, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, - 1, 1, 2, 1, 1, 1, 1, 1, 7, 2, - 2, 1, 1, 1, 1 + 2, 2, 2, 2, 3, 3, 2, 2, 3, 3, + 4, 6, 8, 9, 1, 1, 3, 1, 0, 2, + 3, 3, 4, 3, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, + 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, + 1, 1, 1, 1, 7, 1, 1 }; @@ -4106,27 +4156,27 @@ namespace xsk { namespace gsc { namespace h2 { const short parser::yyrline_[] = { - 0, 243, 243, 244, 248, 250, 252, 254, 259, 264, - 265, 266, 270, 275, 280, 285, 287, 290, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 321, 322, 326, 328, 333, 335, 340, 345, - 350, 352, 357, 362, 364, 369, 371, 376, 381, 383, - 388, 393, 398, 403, 408, 410, 415, 420, 422, 424, - 429, 434, 439, 444, 446, 451, 456, 461, 466, 467, - 471, 472, 476, 477, 478, 479, 483, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 501, 502, 503, 504, 505, 506, 507, 508, 512, - 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, - 562, 563, 564, 565, 569, 570, 571, 572, 576, 577, - 578, 579, 583, 585, 590, 592, 597, 598, 602, 604, - 610, 614, 616, 621, 626, 631, 636, 641, 642, 643, - 644, 645, 646, 647, 648, 651, 652, 653, 654, 655, - 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, - 666, 667, 668, 669, 670 + 0, 246, 246, 247, 251, 253, 255, 257, 262, 267, + 268, 269, 273, 278, 283, 288, 290, 293, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 324, 325, 329, 331, 336, 338, 343, 348, + 353, 355, 360, 365, 367, 372, 374, 379, 384, 386, + 391, 396, 401, 406, 411, 413, 418, 423, 425, 430, + 435, 440, 445, 447, 452, 457, 462, 467, 468, 472, + 473, 477, 478, 479, 480, 484, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, + 502, 503, 504, 505, 506, 507, 508, 509, 513, 517, + 518, 519, 520, 521, 522, 523, 524, 525, 526, 530, + 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, + 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, + 551, 552, 553, 554, 555, 556, 557, 558, 562, 563, + 564, 565, 569, 570, 571, 572, 576, 577, 578, 579, + 583, 585, 590, 592, 597, 598, 602, 604, 610, 614, + 616, 621, 626, 631, 636, 641, 642, 643, 644, 645, + 646, 647, 648, 652, 653, 657, 658, 659, 660, 661, + 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, + 674, 675, 676, 677, 678, 679, 680 }; void @@ -4159,9 +4209,9 @@ namespace xsk { namespace gsc { namespace h2 { #line 13 "parser.ypp" } } } // xsk::gsc::h2 -#line 4163 "parser.cpp" +#line 4213 "parser.cpp" -#line 672 "parser.ypp" +#line 682 "parser.ypp" void xsk::gsc::h2::parser::error(const xsk::gsc::location& loc, const std::string& msg) diff --git a/src/h2/xsk/parser.hpp b/src/h2/xsk/parser.hpp index 8b562228..d19cbe1d 100644 --- a/src/h2/xsk/parser.hpp +++ b/src/h2/xsk/parser.hpp @@ -417,31 +417,34 @@ namespace xsk { namespace gsc { namespace h2 { // animtree char dummy3[sizeof (animtree_ptr)]; + // color + char dummy4[sizeof (color_ptr)]; + // constant - char dummy4[sizeof (constant_ptr)]; + char dummy5[sizeof (constant_ptr)]; // define - char dummy5[sizeof (define_ptr)]; + char dummy6[sizeof (define_ptr)]; // empty_array - char dummy6[sizeof (empty_array_ptr)]; + char dummy7[sizeof (empty_array_ptr)]; // expr_arguments // expr_arguments_filled // expr_arguments_empty - char dummy7[sizeof (expr_arguments_ptr)]; + char dummy8[sizeof (expr_arguments_ptr)]; // expr_assign - char dummy8[sizeof (expr_assign_ptr)]; + char dummy9[sizeof (expr_assign_ptr)]; // expr_call // expr_call_thread // expr_call_childthread - char dummy9[sizeof (expr_call_ptr)]; + char dummy10[sizeof (expr_call_ptr)]; // expr_call_function // expr_call_pointer - char dummy10[sizeof (expr_call_type_ptr)]; + char dummy11[sizeof (expr_call_type_ptr)]; // for_expr // expr @@ -449,36 +452,34 @@ namespace xsk { namespace gsc { namespace h2 { // expr_ternary // expr_binary // expr_primitive - char dummy11[sizeof (expr_ptr)]; + char dummy12[sizeof (expr_ptr)]; // false - char dummy12[sizeof (false_ptr)]; + char dummy13[sizeof (false_ptr)]; // file - char dummy13[sizeof (file_ptr)]; + char dummy14[sizeof (file_ptr)]; - // neg_float // float - char dummy14[sizeof (float_ptr)]; + char dummy15[sizeof (float_ptr)]; // game - char dummy15[sizeof (game_ptr)]; + char dummy16[sizeof (game_ptr)]; // include - char dummy16[sizeof (include_ptr)]; + char dummy17[sizeof (include_ptr)]; - // neg_integer // integer - char dummy17[sizeof (integer_ptr)]; + char dummy18[sizeof (integer_ptr)]; // istring - char dummy18[sizeof (istring_ptr)]; + char dummy19[sizeof (istring_ptr)]; // level - char dummy19[sizeof (level_ptr)]; + char dummy20[sizeof (level_ptr)]; // name - char dummy20[sizeof (name_ptr)]; + char dummy21[sizeof (name_ptr)]; // expr_function // expr_add_array @@ -486,122 +487,126 @@ namespace xsk { namespace gsc { namespace h2 { // expr_field // expr_size // object - char dummy21[sizeof (node_ptr)]; + char dummy22[sizeof (node_ptr)]; // parameters - char dummy22[sizeof (parameters_ptr)]; + char dummy23[sizeof (parameters_ptr)]; // program - char dummy23[sizeof (program_ptr)]; + char dummy24[sizeof (program_ptr)]; // self - char dummy24[sizeof (self_ptr)]; + char dummy25[sizeof (self_ptr)]; // "file path" // "identifier" // "string literal" // "localized string" + // "color" // "float" // "int" - char dummy25[sizeof (std::string)]; + // "octal int" + // "binary int" + // "hexadecimal int" + char dummy26[sizeof (std::string)]; // stmt_assign - char dummy26[sizeof (stmt_assign_ptr)]; + char dummy27[sizeof (stmt_assign_ptr)]; // stmt_break - char dummy27[sizeof (stmt_break_ptr)]; + char dummy28[sizeof (stmt_break_ptr)]; // stmt_breakpoint - char dummy28[sizeof (stmt_breakpoint_ptr)]; + char dummy29[sizeof (stmt_breakpoint_ptr)]; // stmt_call - char dummy29[sizeof (stmt_call_ptr)]; + char dummy30[sizeof (stmt_call_ptr)]; // stmt_case - char dummy30[sizeof (stmt_case_ptr)]; + char dummy31[sizeof (stmt_case_ptr)]; // stmt_continue - char dummy31[sizeof (stmt_continue_ptr)]; + char dummy32[sizeof (stmt_continue_ptr)]; // stmt_default - char dummy32[sizeof (stmt_default_ptr)]; + char dummy33[sizeof (stmt_default_ptr)]; // stmt_endon - char dummy33[sizeof (stmt_endon_ptr)]; + char dummy34[sizeof (stmt_endon_ptr)]; // stmt_for - char dummy34[sizeof (stmt_for_ptr)]; + char dummy35[sizeof (stmt_for_ptr)]; // stmt_foreach - char dummy35[sizeof (stmt_foreach_ptr)]; + char dummy36[sizeof (stmt_foreach_ptr)]; // stmt_if - char dummy36[sizeof (stmt_if_ptr)]; + char dummy37[sizeof (stmt_if_ptr)]; // stmt_ifelse - char dummy37[sizeof (stmt_ifelse_ptr)]; + char dummy38[sizeof (stmt_ifelse_ptr)]; // stmt_block // stmt_list - char dummy38[sizeof (stmt_list_ptr)]; + char dummy39[sizeof (stmt_list_ptr)]; // stmt_notify - char dummy39[sizeof (stmt_notify_ptr)]; + char dummy40[sizeof (stmt_notify_ptr)]; // stmt_prof_begin - char dummy40[sizeof (stmt_prof_begin_ptr)]; + char dummy41[sizeof (stmt_prof_begin_ptr)]; // stmt_prof_end - char dummy41[sizeof (stmt_prof_end_ptr)]; + char dummy42[sizeof (stmt_prof_end_ptr)]; // stmt // for_stmt - char dummy42[sizeof (stmt_ptr)]; + char dummy43[sizeof (stmt_ptr)]; // stmt_return - char dummy43[sizeof (stmt_return_ptr)]; + char dummy44[sizeof (stmt_return_ptr)]; // stmt_switch - char dummy44[sizeof (stmt_switch_ptr)]; + char dummy45[sizeof (stmt_switch_ptr)]; // stmt_wait - char dummy45[sizeof (stmt_wait_ptr)]; + char dummy46[sizeof (stmt_wait_ptr)]; // stmt_waitframe - char dummy46[sizeof (stmt_waitframe_ptr)]; + char dummy47[sizeof (stmt_waitframe_ptr)]; // stmt_waittill - char dummy47[sizeof (stmt_waittill_ptr)]; + char dummy48[sizeof (stmt_waittill_ptr)]; // stmt_waittillframeend - char dummy48[sizeof (stmt_waittillframeend_ptr)]; + char dummy49[sizeof (stmt_waittillframeend_ptr)]; // stmt_waittillmatch - char dummy49[sizeof (stmt_waittillmatch_ptr)]; + char dummy50[sizeof (stmt_waittillmatch_ptr)]; // stmt_while - char dummy50[sizeof (stmt_while_ptr)]; + char dummy51[sizeof (stmt_while_ptr)]; // string - char dummy51[sizeof (string_ptr)]; + char dummy52[sizeof (string_ptr)]; // thisthread - char dummy52[sizeof (thisthread_ptr)]; + char dummy53[sizeof (thisthread_ptr)]; // thread - char dummy53[sizeof (thread_ptr)]; + char dummy54[sizeof (thread_ptr)]; // true - char dummy54[sizeof (true_ptr)]; + char dummy55[sizeof (true_ptr)]; // undefined - char dummy55[sizeof (undefined_ptr)]; + char dummy56[sizeof (undefined_ptr)]; // usingtree - char dummy56[sizeof (usingtree_ptr)]; + char dummy57[sizeof (usingtree_ptr)]; // vector - char dummy57[sizeof (vector_ptr)]; + char dummy58[sizeof (vector_ptr)]; }; /// The size of the largest semantic type. @@ -739,17 +744,21 @@ namespace xsk { namespace gsc { namespace h2 { NAME = 86, // "identifier" STRING = 87, // "string literal" ISTRING = 88, // "localized string" - FLOAT = 89, // "float" - INTEGER = 90, // "int" - ADD_ARRAY = 91, // ADD_ARRAY - THEN = 92, // THEN - TERN = 93, // TERN - NEG = 94, // NEG - ANIMREF = 95, // ANIMREF - PREINC = 96, // PREINC - PREDEC = 97, // PREDEC - POSTINC = 98, // POSTINC - POSTDEC = 99 // POSTDEC + COLOR = 89, // "color" + FLOAT = 90, // "float" + INT_DEC = 91, // "int" + INT_OCT = 92, // "octal int" + INT_BIN = 93, // "binary int" + INT_HEX = 94, // "hexadecimal int" + ADD_ARRAY = 95, // ADD_ARRAY + THEN = 96, // THEN + TERN = 97, // TERN + NEG = 98, // NEG + ANIMREF = 99, // ANIMREF + PREINC = 100, // PREINC + PREDEC = 101, // PREDEC + POSTINC = 102, // POSTINC + POSTDEC = 103 // POSTDEC }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; @@ -766,7 +775,7 @@ namespace xsk { namespace gsc { namespace h2 { { enum symbol_kind_type { - YYNTOKENS = 100, ///< Number of tokens. + YYNTOKENS = 104, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error @@ -857,94 +866,97 @@ namespace xsk { namespace gsc { namespace h2 { S_NAME = 86, // "identifier" S_STRING = 87, // "string literal" S_ISTRING = 88, // "localized string" - S_FLOAT = 89, // "float" - S_INTEGER = 90, // "int" - S_ADD_ARRAY = 91, // ADD_ARRAY - S_THEN = 92, // THEN - S_TERN = 93, // TERN - S_NEG = 94, // NEG - S_ANIMREF = 95, // ANIMREF - S_PREINC = 96, // PREINC - S_PREDEC = 97, // PREDEC - S_POSTINC = 98, // POSTINC - S_POSTDEC = 99, // POSTDEC - S_YYACCEPT = 100, // $accept - S_root = 101, // root - S_program = 102, // program - S_include = 103, // include - S_define = 104, // define - S_usingtree = 105, // usingtree - S_constant = 106, // constant - S_thread = 107, // thread - S_parameters = 108, // parameters - S_stmt = 109, // stmt - S_stmt_block = 110, // stmt_block - S_stmt_list = 111, // stmt_list - S_stmt_call = 112, // stmt_call - S_stmt_assign = 113, // stmt_assign - S_stmt_endon = 114, // stmt_endon - S_stmt_notify = 115, // stmt_notify - S_stmt_wait = 116, // stmt_wait - S_stmt_waittill = 117, // stmt_waittill - S_stmt_waittillmatch = 118, // stmt_waittillmatch - S_stmt_waittillframeend = 119, // stmt_waittillframeend - S_stmt_waitframe = 120, // stmt_waitframe - S_stmt_if = 121, // stmt_if - S_stmt_ifelse = 122, // stmt_ifelse - S_stmt_while = 123, // stmt_while - S_stmt_for = 124, // stmt_for - S_stmt_foreach = 125, // stmt_foreach - S_stmt_switch = 126, // stmt_switch - S_stmt_case = 127, // stmt_case - S_stmt_default = 128, // stmt_default - S_stmt_break = 129, // stmt_break - S_stmt_continue = 130, // stmt_continue - S_stmt_return = 131, // stmt_return - S_stmt_breakpoint = 132, // stmt_breakpoint - S_stmt_prof_begin = 133, // stmt_prof_begin - S_stmt_prof_end = 134, // stmt_prof_end - S_for_stmt = 135, // for_stmt - S_for_expr = 136, // for_expr - S_expr = 137, // expr - S_expr_assign = 138, // expr_assign - S_expr_compare = 139, // expr_compare - S_expr_ternary = 140, // expr_ternary - S_expr_binary = 141, // expr_binary - S_expr_primitive = 142, // expr_primitive - S_expr_call = 143, // expr_call - S_expr_call_thread = 144, // expr_call_thread - S_expr_call_childthread = 145, // expr_call_childthread - S_expr_call_function = 146, // expr_call_function - S_expr_call_pointer = 147, // expr_call_pointer - S_expr_arguments = 148, // expr_arguments - S_expr_arguments_filled = 149, // expr_arguments_filled - S_expr_arguments_empty = 150, // expr_arguments_empty - S_expr_function = 151, // expr_function - S_expr_add_array = 152, // expr_add_array - S_expr_array = 153, // expr_array - S_expr_field = 154, // expr_field - S_expr_size = 155, // expr_size - S_object = 156, // object - S_thisthread = 157, // thisthread - S_empty_array = 158, // empty_array - S_undefined = 159, // undefined - S_game = 160, // game - S_self = 161, // self - S_anim = 162, // anim - S_level = 163, // level - S_animation = 164, // animation - S_animtree = 165, // animtree - S_name = 166, // name - S_file = 167, // file - S_istring = 168, // istring - S_string = 169, // string - S_vector = 170, // vector - S_neg_float = 171, // neg_float - S_neg_integer = 172, // neg_integer - S_float = 173, // float - S_integer = 174, // integer - S_false = 175, // false - S_true = 176 // true + S_COLOR = 89, // "color" + S_FLOAT = 90, // "float" + S_INT_DEC = 91, // "int" + S_INT_OCT = 92, // "octal int" + S_INT_BIN = 93, // "binary int" + S_INT_HEX = 94, // "hexadecimal int" + S_ADD_ARRAY = 95, // ADD_ARRAY + S_THEN = 96, // THEN + S_TERN = 97, // TERN + S_NEG = 98, // NEG + S_ANIMREF = 99, // ANIMREF + S_PREINC = 100, // PREINC + S_PREDEC = 101, // PREDEC + S_POSTINC = 102, // POSTINC + S_POSTDEC = 103, // POSTDEC + S_YYACCEPT = 104, // $accept + S_root = 105, // root + S_program = 106, // program + S_include = 107, // include + S_define = 108, // define + S_usingtree = 109, // usingtree + S_constant = 110, // constant + S_thread = 111, // thread + S_parameters = 112, // parameters + S_stmt = 113, // stmt + S_stmt_block = 114, // stmt_block + S_stmt_list = 115, // stmt_list + S_stmt_call = 116, // stmt_call + S_stmt_assign = 117, // stmt_assign + S_stmt_endon = 118, // stmt_endon + S_stmt_notify = 119, // stmt_notify + S_stmt_wait = 120, // stmt_wait + S_stmt_waittill = 121, // stmt_waittill + S_stmt_waittillmatch = 122, // stmt_waittillmatch + S_stmt_waittillframeend = 123, // stmt_waittillframeend + S_stmt_waitframe = 124, // stmt_waitframe + S_stmt_if = 125, // stmt_if + S_stmt_ifelse = 126, // stmt_ifelse + S_stmt_while = 127, // stmt_while + S_stmt_for = 128, // stmt_for + S_stmt_foreach = 129, // stmt_foreach + S_stmt_switch = 130, // stmt_switch + S_stmt_case = 131, // stmt_case + S_stmt_default = 132, // stmt_default + S_stmt_break = 133, // stmt_break + S_stmt_continue = 134, // stmt_continue + S_stmt_return = 135, // stmt_return + S_stmt_breakpoint = 136, // stmt_breakpoint + S_stmt_prof_begin = 137, // stmt_prof_begin + S_stmt_prof_end = 138, // stmt_prof_end + S_for_stmt = 139, // for_stmt + S_for_expr = 140, // for_expr + S_expr = 141, // expr + S_expr_assign = 142, // expr_assign + S_expr_compare = 143, // expr_compare + S_expr_ternary = 144, // expr_ternary + S_expr_binary = 145, // expr_binary + S_expr_primitive = 146, // expr_primitive + S_expr_call = 147, // expr_call + S_expr_call_thread = 148, // expr_call_thread + S_expr_call_childthread = 149, // expr_call_childthread + S_expr_call_function = 150, // expr_call_function + S_expr_call_pointer = 151, // expr_call_pointer + S_expr_arguments = 152, // expr_arguments + S_expr_arguments_filled = 153, // expr_arguments_filled + S_expr_arguments_empty = 154, // expr_arguments_empty + S_expr_function = 155, // expr_function + S_expr_add_array = 156, // expr_add_array + S_expr_array = 157, // expr_array + S_expr_field = 158, // expr_field + S_expr_size = 159, // expr_size + S_object = 160, // object + S_float = 161, // float + S_integer = 162, // integer + S_thisthread = 163, // thisthread + S_empty_array = 164, // empty_array + S_undefined = 165, // undefined + S_game = 166, // game + S_self = 167, // self + S_anim = 168, // anim + S_level = 169, // level + S_animation = 170, // animation + S_animtree = 171, // animtree + S_name = 172, // name + S_file = 173, // file + S_istring = 174, // istring + S_string = 175, // string + S_color = 176, // color + S_vector = 177, // vector + S_false = 178, // false + S_true = 179 // true }; }; @@ -993,6 +1005,10 @@ namespace xsk { namespace gsc { namespace h2 { value.move< animtree_ptr > (std::move (that.value)); break; + case symbol_kind::S_color: // color + value.move< color_ptr > (std::move (that.value)); + break; + case symbol_kind::S_constant: // constant value.move< constant_ptr > (std::move (that.value)); break; @@ -1043,7 +1059,6 @@ namespace xsk { namespace gsc { namespace h2 { value.move< file_ptr > (std::move (that.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.move< float_ptr > (std::move (that.value)); break; @@ -1056,7 +1071,6 @@ namespace xsk { namespace gsc { namespace h2 { value.move< include_ptr > (std::move (that.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.move< integer_ptr > (std::move (that.value)); break; @@ -1098,8 +1112,12 @@ namespace xsk { namespace gsc { namespace h2 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.move< std::string > (std::move (that.value)); break; @@ -1298,6 +1316,20 @@ namespace xsk { namespace gsc { namespace h2 { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, color_ptr&& v, location_type&& l) + : Base (t) + , value (std::move (v)) + , location (std::move (l)) + {} +#else + basic_symbol (typename Base::kind_type t, const color_ptr& v, const location_type& l) + : Base (t) + , value (v) + , location (l) + {} +#endif + #if 201103L <= YY_CPLUSPLUS basic_symbol (typename Base::kind_type t, constant_ptr&& v, location_type&& l) : Base (t) @@ -2088,6 +2120,10 @@ switch (yykind) value.template destroy< animtree_ptr > (); break; + case symbol_kind::S_color: // color + value.template destroy< color_ptr > (); + break; + case symbol_kind::S_constant: // constant value.template destroy< constant_ptr > (); break; @@ -2138,7 +2174,6 @@ switch (yykind) value.template destroy< file_ptr > (); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.template destroy< float_ptr > (); break; @@ -2151,7 +2186,6 @@ switch (yykind) value.template destroy< include_ptr > (); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.template destroy< integer_ptr > (); break; @@ -2193,8 +2227,12 @@ switch (yykind) case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.template destroy< std::string > (); break; @@ -2434,7 +2472,7 @@ switch (yykind) : super_type(token_type (tok), v, l) #endif { - H2_ASSERT ((token::FILE <= tok && tok <= token::INTEGER)); + H2_ASSERT ((token::FILE <= tok && tok <= token::INT_HEX)); } }; @@ -3819,6 +3857,21 @@ switch (yykind) return symbol_type (token::ISTRING, v, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_COLOR (std::string v, location_type l) + { + return symbol_type (token::COLOR, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_COLOR (const std::string& v, const location_type& l) + { + return symbol_type (token::COLOR, v, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -3837,16 +3890,61 @@ switch (yykind) #if 201103L <= YY_CPLUSPLUS static symbol_type - make_INTEGER (std::string v, location_type l) + make_INT_DEC (std::string v, location_type l) { - return symbol_type (token::INTEGER, std::move (v), std::move (l)); + return symbol_type (token::INT_DEC, std::move (v), std::move (l)); } #else static symbol_type - make_INTEGER (const std::string& v, const location_type& l) + make_INT_DEC (const std::string& v, const location_type& l) { - return symbol_type (token::INTEGER, v, l); + return symbol_type (token::INT_DEC, v, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_INT_OCT (std::string v, location_type l) + { + return symbol_type (token::INT_OCT, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_INT_OCT (const std::string& v, const location_type& l) + { + return symbol_type (token::INT_OCT, v, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_INT_BIN (std::string v, location_type l) + { + return symbol_type (token::INT_BIN, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_INT_BIN (const std::string& v, const location_type& l) + { + return symbol_type (token::INT_BIN, v, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_INT_HEX (std::string v, location_type l) + { + return symbol_type (token::INT_HEX, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_INT_HEX (const std::string& v, const location_type& l) + { + return symbol_type (token::INT_HEX, v, l); } #endif #if 201103L <= YY_CPLUSPLUS @@ -4328,8 +4426,8 @@ switch (yykind) /// Constants. enum { - yylast_ = 1842, ///< Last index in yytable_. - yynnts_ = 77, ///< Number of nonterminal symbols. + yylast_ = 1883, ///< Last index in yytable_. + yynnts_ = 76, ///< Number of nonterminal symbols. yyfinal_ = 15 ///< Termination state number. }; @@ -4369,6 +4467,10 @@ switch (yykind) value.copy< animtree_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_color: // color + value.copy< color_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_constant: // constant value.copy< constant_ptr > (YY_MOVE (that.value)); break; @@ -4419,7 +4521,6 @@ switch (yykind) value.copy< file_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.copy< float_ptr > (YY_MOVE (that.value)); break; @@ -4432,7 +4533,6 @@ switch (yykind) value.copy< include_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.copy< integer_ptr > (YY_MOVE (that.value)); break; @@ -4474,8 +4574,12 @@ switch (yykind) case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.copy< std::string > (YY_MOVE (that.value)); break; @@ -4650,6 +4754,10 @@ switch (yykind) value.move< animtree_ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_color: // color + value.move< color_ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_constant: // constant value.move< constant_ptr > (YY_MOVE (s.value)); break; @@ -4700,7 +4808,6 @@ switch (yykind) value.move< file_ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.move< float_ptr > (YY_MOVE (s.value)); break; @@ -4713,7 +4820,6 @@ switch (yykind) value.move< include_ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.move< integer_ptr > (YY_MOVE (s.value)); break; @@ -4755,8 +4861,12 @@ switch (yykind) case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.move< std::string > (YY_MOVE (s.value)); break; @@ -4953,7 +5063,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::h2 -#line 4957 "parser.hpp" +#line 5067 "parser.hpp" diff --git a/src/iw5/xsk/compiler.cpp b/src/iw5/xsk/compiler.cpp index 6a65193b..2170cb06 100644 --- a/src/iw5/xsk/compiler.cpp +++ b/src/iw5/xsk/compiler.cpp @@ -785,6 +785,7 @@ void compiler::emit_expr(const gsc::context_ptr& ctx, const gsc::expr_ptr& expr) case gsc::node_t::data_name: emit_local_variable(ctx, expr.as_name); break; case gsc::node_t::data_istring: emit_istring(ctx, expr.as_istring); break; case gsc::node_t::data_string: emit_string(ctx, expr.as_string); break; + case gsc::node_t::data_color: emit_color(ctx, expr.as_color); break; case gsc::node_t::data_vector: emit_vector(ctx, expr.as_vector); break; case gsc::node_t::data_float: emit_float(ctx, expr.as_float); break; case gsc::node_t::data_integer: emit_integer(ctx, expr.as_integer); break; @@ -1606,6 +1607,30 @@ void compiler::emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& s emit_opcode(ctx, opcode::OP_GetString, str->value); } +void compiler::emit_color(const gsc::context_ptr& ctx, const gsc::color_ptr& color) +{ + std::vector data; + std::string x, y, z; + + if(color->value.size() == 3) + { + x = "0x" + color->value.substr(0, 1) + color->value.substr(0, 1); + y = "0x" + color->value.substr(1, 1) + color->value.substr(1, 1); + z = "0x" + color->value.substr(2, 1) + color->value.substr(2, 1); + } + else + { + x = "0x" + color->value.substr(0, 2); + y = "0x" + color->value.substr(2, 2); + z = "0x" + color->value.substr(4, 2); + } + + data.push_back(gsc::utils::string::hex_to_dec(x.data())); + data.push_back(gsc::utils::string::hex_to_dec(y.data())); + data.push_back(gsc::utils::string::hex_to_dec(z.data())); + emit_opcode(ctx, opcode::OP_GetVector, data); +} + void compiler::emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec) { std::vector data; diff --git a/src/iw5/xsk/compiler.hpp b/src/iw5/xsk/compiler.hpp index a1acfb47..ef127176 100644 --- a/src/iw5/xsk/compiler.hpp +++ b/src/iw5/xsk/compiler.hpp @@ -101,6 +101,7 @@ private: void emit_animation(const gsc::context_ptr& ctx, const gsc::animation_ptr& animation); void emit_istring(const gsc::context_ptr& ctx, const gsc::istring_ptr& str); void emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& str); + void emit_color(const gsc::context_ptr& ctx, const gsc::color_ptr& color); void emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec); void emit_float(const gsc::context_ptr& ctx, const gsc::float_ptr& num); void emit_integer(const gsc::context_ptr& ctx, const gsc::integer_ptr& num); diff --git a/src/iw5/xsk/lexer.cpp b/src/iw5/xsk/lexer.cpp index be25637b..ce0ca7ce 100644 --- a/src/iw5/xsk/lexer.cpp +++ b/src/iw5/xsk/lexer.cpp @@ -553,8 +553,8 @@ static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 100 -#define YY_END_OF_BUFFER 101 +#define YY_NUM_RULES 104 +#define YY_END_OF_BUFFER 105 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -562,41 +562,43 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[301] = +static const flex_int16_t yy_accept[314] = { 0, - 0, 0, 0, 0, 0, 0, 101, 99, 1, 2, - 88, 99, 99, 87, 91, 99, 48, 49, 85, 83, - 54, 84, 55, 86, 98, 57, 58, 72, 82, 73, - 59, 94, 52, 53, 92, 94, 94, 94, 94, 94, + 0, 0, 0, 0, 0, 0, 105, 103, 1, 2, + 88, 103, 103, 87, 91, 103, 48, 49, 85, 83, + 54, 84, 55, 86, 102, 102, 57, 58, 72, 82, + 73, 59, 94, 52, 53, 92, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, - 94, 50, 90, 51, 89, 5, 6, 5, 9, 10, - 9, 69, 0, 96, 0, 0, 0, 0, 78, 0, - 67, 0, 80, 0, 0, 76, 60, 74, 61, 75, - 97, 0, 8, 4, 3, 77, 97, 98, 0, 0, - 56, 64, 70, 68, 71, 65, 94, 81, 94, 94, + 94, 94, 50, 90, 51, 89, 5, 6, 5, 9, + 10, 9, 69, 0, 96, 0, 0, 0, 0, 0, + 78, 0, 67, 0, 80, 0, 0, 76, 60, 74, + 61, 75, 98, 0, 8, 4, 3, 77, 98, 102, + 99, 0, 0, 0, 0, 56, 64, 70, 68, 71, - 94, 94, 94, 94, 94, 94, 94, 94, 94, 24, - 29, 94, 94, 94, 94, 94, 94, 94, 94, 94, - 94, 94, 79, 66, 7, 11, 0, 96, 0, 0, - 0, 0, 0, 95, 0, 0, 0, 0, 96, 0, - 97, 0, 3, 97, 97, 93, 62, 63, 94, 94, - 94, 94, 94, 94, 94, 94, 94, 94, 27, 94, + 65, 94, 81, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 24, 29, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 79, 66, 7, + 11, 0, 96, 0, 0, 0, 0, 0, 0, 95, + 0, 0, 0, 0, 96, 0, 98, 0, 3, 98, + 98, 99, 100, 101, 93, 62, 63, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 27, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, - 94, 94, 0, 0, 0, 0, 95, 0, 0, 95, + 94, 97, 0, 0, 0, 0, 95, 0, 0, 95, 0, 0, 46, 94, 39, 31, 94, 94, 94, 25, + 94, 94, 94, 44, 94, 94, 94, 94, 45, 94, + 94, 94, 40, 94, 20, 94, 0, 0, 0, 0, + 43, 33, 94, 94, 94, 18, 41, 94, 47, 94, + 94, 94, 94, 94, 94, 94, 94, 26, 0, 0, + 0, 0, 94, 94, 94, 94, 94, 19, 94, 94, + 35, 30, 94, 36, 94, 94, 97, 0, 0, 0, + 94, 94, 94, 32, 28, 94, 94, 94, 94, 94, + 0, 15, 0, 94, 94, 34, 94, 14, 94, 94, + 21, 17, 0, 94, 94, 94, 94, 42, 94, 94, + 0, 12, 94, 13, 38, 94, 94, 0, 37, 94, - 94, 94, 40, 94, 20, 94, 0, 0, 0, 43, - 33, 94, 94, 94, 18, 41, 94, 47, 94, 94, - 94, 94, 94, 94, 94, 94, 26, 0, 0, 0, - 94, 94, 94, 94, 94, 19, 94, 94, 35, 30, - 94, 36, 94, 94, 0, 0, 0, 94, 94, 94, - 32, 28, 94, 94, 94, 94, 94, 0, 15, 0, - 94, 94, 34, 94, 14, 94, 94, 21, 17, 0, - 94, 94, 94, 94, 42, 94, 94, 0, 12, 94, - 13, 38, 94, 94, 0, 37, 94, 94, 0, 94, - 94, 0, 94, 22, 0, 94, 16, 94, 23, 0 - + 94, 0, 94, 94, 0, 94, 22, 0, 94, 16, + 94, 23, 0 } ; static const YY_CHAR yy_ec[256] = @@ -605,16 +607,16 @@ static const YY_CHAR yy_ec[256] = 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 5, 6, 1, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, - 22, 23, 24, 1, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 26, 27, 28, 29, 30, 1, 31, 32, 33, 34, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 20, 20, 20, 20, 20, 21, 21, 22, 23, 24, + 25, 26, 27, 1, 28, 29, 28, 28, 28, 28, + 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 31, 30, 30, + 32, 33, 34, 35, 36, 1, 37, 38, 39, 40, - 35, 36, 37, 38, 39, 25, 40, 41, 42, 43, - 44, 45, 25, 46, 47, 48, 49, 50, 51, 25, - 52, 53, 54, 55, 56, 57, 1, 1, 1, 1, + 41, 42, 43, 44, 45, 30, 46, 47, 48, 49, + 50, 51, 30, 52, 53, 54, 55, 56, 57, 31, + 58, 59, 60, 61, 62, 63, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -631,238 +633,267 @@ static const YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static const YY_CHAR yy_meta[58] = +static const YY_CHAR yy_meta[64] = { 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 1, 4, 1, 1, - 1, 1, 1, 1, 4, 1, 5, 1, 1, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 1, 1, 1, 1 + 1, 1, 1, 1, 1, 3, 1, 4, 4, 4, + 4, 1, 1, 1, 1, 1, 1, 4, 4, 5, + 5, 1, 6, 1, 1, 5, 4, 4, 4, 4, + 4, 4, 5, 5, 7, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 7, 5, 5, 5, 5, 1, + 1, 1, 1 } ; -static const flex_int16_t yy_base[315] = +static const flex_int16_t yy_base[334] = { 0, - 0, 0, 55, 56, 57, 58, 565, 566, 566, 566, - 542, 57, 34, 541, 66, 60, 566, 566, 540, 57, - 566, 63, 48, 74, 74, 542, 566, 55, 538, 59, - 566, 532, 566, 566, 536, 62, 66, 71, 72, 67, - 73, 87, 70, 76, 89, 92, 93, 94, 96, 97, - 99, 566, 100, 566, 566, 566, 566, 540, 566, 566, - 539, 566, 120, 566, 136, 512, 511, 506, 566, 122, - 566, 123, 566, 126, 143, 566, 566, 566, 566, 566, - 118, 513, 566, 566, 0, 566, 125, 140, 132, 0, - 566, 529, 566, 566, 566, 528, 522, 566, 130, 133, + 0, 0, 61, 62, 63, 64, 667, 668, 668, 668, + 641, 63, 34, 640, 67, 68, 668, 668, 639, 65, + 668, 66, 64, 81, 89, 95, 641, 668, 70, 637, + 74, 668, 628, 668, 668, 635, 53, 71, 88, 47, + 86, 93, 103, 104, 98, 79, 108, 101, 111, 112, + 114, 117, 668, 123, 668, 668, 668, 668, 642, 668, + 668, 641, 668, 144, 668, 152, 0, 608, 607, 602, + 668, 146, 668, 149, 668, 150, 162, 668, 668, 668, + 668, 668, 154, 609, 668, 668, 0, 668, 168, 181, + 187, 160, 193, 211, 0, 668, 628, 668, 668, 668, - 124, 135, 137, 139, 145, 149, 146, 150, 151, 521, - 520, 152, 155, 154, 157, 158, 161, 162, 163, 170, - 167, 168, 566, 566, 566, 566, 186, 204, 211, 507, - 512, 505, 205, 566, 212, 202, 215, 210, 213, 217, - 566, 490, 0, 205, 566, 515, 566, 566, 194, 203, - 206, 200, 216, 198, 218, 221, 223, 224, 225, 226, - 227, 231, 228, 232, 236, 238, 241, 239, 242, 248, - 246, 249, 499, 499, 496, 273, 274, 277, 275, 276, - 284, 503, 510, 104, 509, 508, 262, 268, 264, 507, - 265, 270, 279, 506, 271, 282, 287, 288, 505, 289, + 627, 618, 668, 133, 129, 171, 136, 184, 180, 182, + 158, 147, 186, 188, 617, 616, 134, 70, 192, 183, + 208, 201, 212, 210, 214, 223, 225, 668, 668, 668, + 668, 254, 255, 258, 0, 603, 608, 601, 257, 668, + 264, 262, 263, 265, 266, 270, 668, 586, 0, 262, + 668, 289, 295, 0, 611, 668, 668, 244, 252, 253, + 243, 268, 269, 279, 284, 285, 273, 286, 288, 291, + 297, 298, 300, 301, 287, 303, 304, 305, 306, 311, + 315, 0, 595, 595, 592, 344, 345, 348, 343, 349, + 351, 599, 606, 324, 605, 604, 326, 328, 330, 603, - 272, 292, 504, 294, 297, 298, 482, 480, 491, 566, - 299, 300, 304, 301, 500, 499, 302, 498, 305, 311, - 309, 312, 313, 322, 314, 327, 497, 477, 488, 491, - 328, 331, 310, 333, 335, 493, 336, 334, 492, 491, - 337, 490, 341, 338, 481, 480, 483, 343, 340, 353, - 486, 485, 348, 360, 362, 363, 351, 476, 566, 467, - 364, 366, 482, 369, 481, 368, 375, 376, 566, 455, - 373, 379, 377, 388, 419, 378, 386, 403, 417, 389, - 416, 414, 398, 384, 392, 412, 392, 400, 368, 401, - 399, 341, 403, 347, 193, 404, 566, 408, 159, 566, + 245, 331, 334, 602, 336, 346, 353, 335, 601, 341, + 342, 357, 600, 358, 359, 360, 0, 578, 576, 587, + 668, 364, 362, 365, 370, 596, 595, 366, 594, 369, + 371, 373, 374, 375, 388, 378, 387, 593, 0, 573, + 584, 587, 391, 392, 393, 377, 396, 589, 397, 400, + 588, 587, 401, 586, 402, 409, 668, 577, 576, 579, + 410, 406, 404, 582, 581, 411, 417, 419, 426, 414, + 572, 668, 563, 413, 430, 578, 431, 577, 432, 433, + 435, 668, 564, 437, 441, 439, 442, 575, 446, 447, + 559, 558, 452, 550, 503, 453, 448, 481, 478, 456, - 447, 452, 457, 462, 465, 467, 472, 477, 482, 487, - 492, 68, 497, 502 + 454, 458, 462, 461, 468, 466, 473, 459, 463, 668, + 468, 464, 668, 512, 519, 526, 530, 537, 542, 546, + 553, 289, 560, 567, 574, 581, 585, 224, 592, 599, + 219, 188, 93 } ; -static const flex_int16_t yy_def[315] = +static const flex_int16_t yy_def[334] = { 0, - 300, 1, 301, 301, 302, 302, 300, 300, 300, 300, - 300, 303, 300, 300, 300, 304, 300, 300, 300, 300, - 300, 300, 300, 300, 305, 300, 300, 300, 300, 300, - 300, 306, 300, 300, 300, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 303, 300, 307, 300, 300, 300, 300, 308, - 300, 309, 300, 304, 310, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 311, 300, 300, 305, 305, 312, - 300, 300, 300, 300, 300, 300, 306, 300, 306, 306, + 313, 1, 314, 314, 315, 315, 313, 313, 313, 313, + 313, 316, 317, 313, 313, 318, 313, 313, 313, 313, + 313, 313, 313, 313, 319, 319, 313, 313, 313, 313, + 313, 313, 320, 313, 313, 313, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 316, 313, 321, 322, 322, 313, 313, + 313, 323, 313, 324, 313, 318, 325, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 326, 313, 313, 319, + 319, 319, 319, 319, 327, 313, 313, 313, 313, 313, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 300, 300, 300, 300, 303, 303, 307, 300, - 300, 300, 308, 300, 313, 309, 314, 304, 304, 310, - 300, 300, 311, 300, 300, 312, 300, 300, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 300, 300, 300, 308, 308, 313, 309, 309, - 314, 300, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 313, 320, 313, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 313, 313, 313, + 313, 316, 316, 321, 328, 313, 313, 313, 323, 313, + 329, 324, 330, 318, 318, 325, 313, 313, 326, 313, + 313, 319, 319, 94, 327, 313, 313, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 331, 313, 313, 313, 323, 323, 329, 324, 324, + 330, 313, 320, 320, 320, 320, 320, 320, 320, 320, - 306, 306, 306, 306, 306, 306, 300, 300, 300, 300, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 300, 300, 300, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 300, 300, 300, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 300, 300, 300, - 306, 306, 306, 306, 306, 306, 306, 306, 300, 300, - 306, 306, 306, 306, 306, 306, 306, 300, 306, 306, - 306, 306, 306, 306, 300, 306, 306, 306, 300, 306, - 306, 300, 306, 306, 300, 306, 300, 306, 306, 0, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 332, 313, 313, 313, + 313, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 333, 313, + 313, 313, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 313, 313, 313, 313, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 313, 313, 313, 320, 320, 320, 320, 320, 320, 320, + 320, 313, 313, 320, 320, 320, 320, 320, 320, 320, + 313, 320, 320, 320, 320, 320, 320, 313, 320, 320, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300 + 320, 313, 320, 320, 313, 320, 320, 313, 320, 313, + 320, 320, 0, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313 } ; -static const flex_int16_t yy_nxt[624] = +static const flex_int16_t yy_nxt[732] = { 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 8, 34, 35, 32, - 36, 37, 38, 39, 40, 41, 42, 32, 43, 32, - 44, 32, 45, 32, 46, 47, 48, 49, 50, 32, - 51, 32, 32, 52, 53, 54, 55, 57, 57, 60, - 60, 64, 61, 61, 66, 81, 58, 58, 64, 77, - 70, 146, 67, 71, 72, 92, 93, 79, 78, 83, - 95, 96, 68, 65, 80, 84, 75, 73, 90, 87, - 85, 88, 90, 90, 82, 86, 90, 90, 90, 90, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 26, + 26, 27, 28, 29, 30, 31, 32, 33, 33, 33, + 33, 34, 8, 35, 36, 33, 37, 38, 39, 40, + 41, 42, 43, 33, 44, 33, 45, 33, 46, 33, + 47, 48, 49, 50, 51, 33, 52, 33, 33, 53, + 54, 55, 56, 58, 58, 61, 61, 65, 62, 62, + 68, 72, 59, 59, 73, 74, 65, 79, 69, 95, + 81, 83, 83, 83, 83, 95, 85, 109, 70, 80, + 82, 75, 86, 97, 98, 66, 257, 87, 100, 101, - 90, 101, 90, 107, 99, 110, 104, 105, 102, 106, - 112, 100, 111, 90, 103, 90, 108, 109, 90, 90, - 90, 123, 90, 90, 64, 90, 134, 115, 116, 121, - 90, 134, 113, 118, 64, 81, 122, 114, 63, 120, - 128, 119, 144, 211, 117, 74, 65, 300, 135, 137, - 90, 139, 75, 141, 124, 87, 90, 88, 90, 90, - 145, 90, 129, 90, 151, 90, 90, 150, 149, 140, - 152, 90, 90, 153, 155, 90, 90, 90, 90, 154, - 90, 90, 157, 90, 90, 90, 158, 90, 90, 90, - 64, 156, 160, 90, 90, 159, 90, 163, 165, 166, + 77, 104, 95, 95, 89, 88, 90, 91, 91, 90, + 89, 95, 90, 90, 90, 90, 84, 93, 95, 94, + 95, 95, 105, 171, 106, 95, 93, 95, 118, 112, + 95, 107, 110, 95, 111, 95, 95, 108, 117, 114, + 95, 120, 113, 95, 95, 115, 95, 128, 65, 95, + 140, 121, 116, 126, 64, 123, 133, 140, 65, 119, + 127, 95, 125, 124, 76, 95, 95, 122, 95, 159, + 145, 83, 83, 83, 83, 313, 66, 158, 141, 95, + 162, 143, 77, 129, 134, 150, 150, 150, 150, 170, + 95, 239, 95, 167, 146, 147, 89, 166, 90, 90, - 167, 161, 162, 170, 164, 171, 172, 168, 64, 134, - 134, 169, 65, 63, 133, 128, 177, 136, 64, 74, - 90, 64, 144, 180, 90, 139, 90, 297, 137, 90, - 65, 135, 90, 184, 186, 183, 75, 129, 178, 75, - 145, 181, 90, 140, 90, 188, 185, 90, 189, 90, - 90, 90, 90, 90, 90, 190, 187, 90, 90, 193, - 194, 195, 90, 197, 90, 90, 191, 90, 90, 196, - 192, 199, 90, 202, 90, 90, 203, 134, 134, 133, - 198, 177, 204, 134, 134, 200, 136, 201, 90, 206, - 90, 90, 180, 205, 90, 212, 90, 90, 90, 135, + 90, 90, 89, 95, 152, 152, 152, 90, 313, 151, + 153, 153, 95, 95, 95, 95, 95, 160, 95, 95, + 95, 164, 217, 161, 95, 95, 313, 182, 154, 154, + 154, 154, 163, 95, 165, 169, 173, 168, 154, 154, + 95, 172, 95, 95, 95, 175, 95, 154, 154, 154, + 154, 154, 154, 179, 174, 95, 176, 95, 65, 65, + 64, 140, 133, 177, 178, 142, 139, 180, 187, 181, + 140, 190, 76, 65, 65, 95, 95, 95, 145, 150, + 150, 150, 150, 196, 95, 95, 66, 66, 194, 141, + 134, 193, 135, 226, 143, 191, 188, 77, 77, 195, - 135, 137, 137, 178, 216, 90, 213, 215, 90, 217, - 181, 218, 214, 90, 90, 90, 220, 219, 90, 223, - 90, 222, 224, 90, 90, 90, 90, 90, 90, 225, - 90, 90, 227, 221, 235, 90, 90, 90, 90, 90, - 90, 234, 237, 231, 226, 238, 233, 232, 90, 240, - 241, 239, 243, 90, 90, 242, 236, 90, 250, 90, - 90, 90, 90, 90, 90, 244, 90, 90, 249, 90, - 253, 248, 252, 90, 90, 295, 254, 90, 257, 90, - 251, 261, 255, 256, 264, 262, 90, 263, 90, 90, - 90, 268, 90, 265, 90, 90, 266, 267, 274, 90, + 95, 95, 146, 151, 89, 95, 152, 152, 152, 90, + 313, 95, 153, 153, 197, 199, 95, 95, 95, 95, + 95, 95, 198, 95, 200, 202, 203, 95, 204, 95, + 95, 205, 95, 95, 201, 95, 95, 95, 95, 207, + 210, 206, 209, 95, 212, 213, 214, 95, 140, 140, + 139, 140, 187, 142, 208, 211, 95, 140, 95, 190, + 95, 216, 95, 95, 215, 223, 95, 95, 95, 222, + 228, 227, 224, 95, 95, 143, 141, 141, 95, 233, + 188, 143, 229, 191, 225, 95, 232, 230, 231, 95, + 95, 95, 95, 235, 95, 234, 95, 95, 95, 236, - 272, 90, 90, 90, 90, 90, 271, 273, 275, 280, - 90, 276, 90, 292, 90, 90, 284, 277, 90, 281, - 279, 282, 286, 283, 90, 90, 90, 90, 287, 90, - 90, 288, 291, 290, 90, 293, 294, 296, 90, 289, - 90, 299, 90, 90, 285, 90, 298, 56, 56, 56, - 56, 56, 59, 59, 59, 59, 59, 63, 63, 63, - 63, 63, 74, 74, 74, 74, 74, 89, 89, 89, - 97, 97, 127, 127, 127, 127, 127, 133, 133, 133, - 133, 133, 136, 136, 136, 136, 136, 138, 138, 138, - 138, 138, 143, 278, 143, 143, 143, 176, 176, 176, + 238, 95, 95, 95, 247, 95, 95, 95, 249, 95, + 95, 250, 237, 245, 243, 244, 246, 252, 253, 95, + 95, 251, 255, 95, 95, 95, 248, 254, 95, 95, + 264, 256, 95, 95, 95, 262, 95, 266, 95, 265, + 261, 95, 95, 95, 276, 95, 95, 263, 267, 95, + 269, 95, 268, 277, 274, 270, 278, 275, 95, 279, + 281, 284, 95, 95, 95, 95, 280, 95, 287, 95, + 285, 95, 288, 95, 95, 286, 289, 293, 95, 95, + 95, 295, 290, 297, 95, 95, 95, 294, 95, 300, + 292, 299, 304, 95, 95, 95, 95, 296, 95, 310, - 176, 176, 179, 179, 179, 179, 179, 90, 90, 270, - 269, 90, 90, 260, 259, 258, 90, 90, 90, 90, - 247, 246, 245, 90, 90, 90, 90, 230, 229, 228, - 90, 90, 90, 90, 90, 90, 90, 210, 209, 208, - 207, 90, 182, 175, 174, 173, 90, 90, 90, 148, - 147, 142, 132, 131, 130, 126, 125, 98, 90, 94, - 91, 76, 69, 62, 300, 7, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + 95, 301, 306, 303, 307, 95, 309, 312, 308, 305, + 95, 311, 57, 57, 57, 57, 57, 57, 57, 60, + 60, 60, 60, 60, 60, 60, 64, 64, 64, 64, + 64, 64, 64, 67, 302, 95, 67, 76, 76, 76, + 76, 76, 76, 76, 92, 92, 92, 92, 92, 102, + 102, 102, 102, 132, 132, 132, 132, 132, 132, 132, + 139, 139, 139, 139, 139, 139, 139, 142, 142, 142, + 142, 142, 142, 142, 144, 144, 144, 144, 144, 144, + 144, 149, 95, 149, 149, 149, 149, 149, 155, 155, + 95, 155, 186, 186, 186, 186, 186, 186, 186, 189, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300 + 189, 189, 189, 189, 189, 189, 298, 95, 291, 95, + 95, 283, 282, 95, 95, 273, 272, 271, 95, 95, + 95, 95, 260, 259, 258, 95, 95, 95, 95, 242, + 241, 240, 95, 95, 95, 95, 95, 95, 95, 221, + 220, 219, 218, 95, 192, 185, 184, 183, 95, 95, + 95, 157, 156, 148, 138, 137, 136, 131, 130, 103, + 95, 99, 96, 78, 71, 63, 313, 7, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313 } ; -static const flex_int16_t yy_chk[624] = +static const flex_int16_t yy_chk[732] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 3, 4, 5, - 6, 12, 5, 6, 13, 23, 3, 4, 16, 20, - 15, 312, 13, 15, 15, 28, 28, 22, 20, 24, - 30, 30, 13, 12, 22, 24, 16, 15, 36, 25, - 24, 25, 37, 40, 23, 24, 43, 38, 39, 41, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 4, 5, 6, 12, 5, 6, + 13, 15, 3, 4, 15, 15, 16, 20, 13, 40, + 22, 23, 23, 23, 23, 37, 24, 40, 13, 20, + 22, 15, 24, 29, 29, 12, 333, 24, 31, 31, - 25, 38, 44, 41, 36, 43, 39, 40, 38, 40, - 44, 37, 43, 42, 38, 45, 41, 42, 46, 47, - 48, 53, 49, 50, 63, 51, 70, 47, 48, 51, - 184, 72, 45, 49, 74, 81, 51, 46, 65, 50, - 65, 49, 87, 184, 48, 75, 63, 89, 70, 72, - 101, 75, 74, 81, 53, 88, 99, 88, 89, 100, - 87, 102, 65, 103, 101, 104, 88, 100, 99, 75, - 101, 105, 107, 102, 104, 106, 108, 109, 112, 103, - 114, 113, 106, 115, 116, 299, 107, 117, 118, 119, - 127, 105, 109, 121, 122, 108, 120, 114, 116, 117, + 16, 37, 118, 38, 25, 24, 25, 25, 25, 25, + 26, 46, 26, 26, 26, 26, 23, 25, 41, 25, + 39, 25, 38, 118, 39, 42, 25, 26, 46, 42, + 45, 39, 41, 48, 41, 43, 44, 39, 45, 43, + 47, 48, 42, 49, 50, 44, 51, 54, 64, 52, + 72, 49, 44, 52, 66, 50, 66, 74, 76, 47, + 52, 105, 51, 50, 77, 104, 117, 49, 107, 105, + 77, 83, 83, 83, 83, 92, 64, 104, 72, 112, + 107, 74, 76, 54, 66, 89, 89, 89, 89, 117, + 111, 332, 92, 112, 77, 83, 90, 111, 90, 90, - 118, 112, 113, 120, 115, 121, 122, 118, 128, 133, - 136, 119, 127, 129, 135, 129, 135, 137, 138, 140, - 149, 139, 144, 137, 154, 140, 152, 295, 136, 150, - 128, 133, 151, 150, 152, 149, 138, 129, 135, 139, - 144, 137, 153, 140, 155, 154, 151, 156, 155, 157, - 158, 159, 160, 161, 163, 156, 153, 162, 164, 159, - 160, 161, 165, 163, 166, 168, 157, 167, 169, 162, - 158, 165, 171, 168, 170, 172, 169, 176, 177, 178, - 164, 178, 170, 179, 180, 166, 181, 167, 187, 172, - 189, 191, 181, 171, 188, 187, 192, 195, 201, 176, + 90, 90, 91, 106, 91, 91, 91, 91, 93, 89, + 93, 93, 109, 90, 110, 120, 108, 106, 113, 91, + 114, 109, 331, 106, 119, 93, 94, 328, 94, 94, + 94, 94, 108, 122, 110, 114, 120, 113, 94, 94, + 121, 119, 124, 94, 123, 122, 125, 94, 94, 94, + 94, 94, 94, 125, 121, 126, 123, 127, 132, 133, + 134, 139, 134, 123, 124, 143, 141, 126, 141, 127, + 142, 143, 146, 144, 145, 161, 158, 201, 146, 150, + 150, 150, 150, 161, 159, 160, 132, 133, 159, 139, + 134, 158, 322, 201, 142, 143, 141, 144, 145, 160, - 177, 179, 180, 178, 192, 193, 188, 191, 196, 193, - 181, 195, 189, 197, 198, 200, 197, 196, 202, 201, - 204, 200, 202, 205, 206, 211, 212, 214, 217, 204, - 213, 219, 206, 198, 217, 221, 233, 220, 222, 223, - 225, 214, 220, 211, 205, 220, 213, 212, 224, 222, - 223, 221, 225, 226, 231, 224, 219, 232, 233, 234, - 238, 235, 237, 241, 244, 226, 249, 243, 232, 248, - 237, 231, 235, 294, 253, 292, 238, 257, 244, 250, - 234, 248, 241, 243, 253, 249, 254, 250, 255, 256, - 261, 257, 262, 254, 266, 264, 255, 256, 266, 271, + 162, 163, 146, 150, 152, 167, 152, 152, 152, 152, + 153, 164, 153, 153, 162, 164, 165, 166, 168, 175, + 169, 152, 163, 170, 165, 167, 168, 153, 169, 171, + 172, 170, 173, 174, 166, 176, 177, 178, 179, 172, + 175, 171, 174, 180, 177, 178, 179, 181, 186, 187, + 188, 189, 188, 191, 173, 176, 194, 190, 197, 191, + 198, 181, 199, 202, 180, 197, 203, 208, 205, 194, + 203, 202, 198, 210, 211, 189, 186, 187, 206, 210, + 188, 190, 205, 191, 199, 207, 208, 206, 207, 212, + 214, 215, 216, 212, 223, 211, 222, 224, 228, 214, - 262, 267, 268, 273, 276, 272, 261, 264, 267, 272, - 284, 268, 277, 289, 274, 280, 277, 268, 287, 273, - 271, 274, 280, 276, 283, 291, 288, 290, 283, 293, - 296, 284, 288, 287, 298, 290, 291, 293, 286, 285, - 282, 298, 281, 279, 278, 275, 296, 301, 301, 301, - 301, 301, 302, 302, 302, 302, 302, 303, 303, 303, - 303, 303, 304, 304, 304, 304, 304, 305, 305, 305, - 306, 306, 307, 307, 307, 307, 307, 308, 308, 308, - 308, 308, 309, 309, 309, 309, 309, 310, 310, 310, - 310, 310, 311, 270, 311, 311, 311, 313, 313, 313, + 216, 230, 225, 231, 228, 232, 233, 234, 231, 246, + 236, 231, 215, 224, 222, 223, 225, 233, 234, 237, + 235, 232, 236, 243, 244, 245, 230, 235, 247, 249, + 246, 237, 250, 253, 255, 244, 263, 249, 262, 247, + 243, 256, 261, 266, 263, 274, 270, 245, 250, 267, + 255, 268, 253, 266, 261, 256, 267, 262, 269, 268, + 270, 274, 275, 277, 279, 280, 269, 281, 279, 284, + 275, 286, 280, 285, 287, 277, 281, 285, 289, 290, + 297, 287, 281, 290, 293, 296, 301, 286, 300, 296, + 284, 293, 301, 304, 303, 309, 312, 289, 306, 308, - 313, 313, 314, 314, 314, 314, 314, 265, 263, 260, - 258, 252, 251, 247, 246, 245, 242, 240, 239, 236, - 230, 229, 228, 227, 218, 216, 215, 209, 208, 207, - 203, 199, 194, 190, 186, 185, 183, 182, 175, 174, - 173, 146, 142, 132, 131, 130, 111, 110, 97, 96, - 92, 82, 68, 67, 66, 61, 58, 35, 32, 29, - 26, 19, 14, 11, 7, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + 311, 297, 303, 300, 304, 307, 306, 311, 305, 302, + 299, 309, 314, 314, 314, 314, 314, 314, 314, 315, + 315, 315, 315, 315, 315, 315, 316, 316, 316, 316, + 316, 316, 316, 317, 298, 295, 317, 318, 318, 318, + 318, 318, 318, 318, 319, 319, 319, 319, 319, 320, + 320, 320, 320, 321, 321, 321, 321, 321, 321, 321, + 323, 323, 323, 323, 323, 323, 323, 324, 324, 324, + 324, 324, 324, 324, 325, 325, 325, 325, 325, 325, + 325, 326, 294, 326, 326, 326, 326, 326, 327, 327, + 292, 327, 329, 329, 329, 329, 329, 329, 329, 330, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300 + 330, 330, 330, 330, 330, 330, 291, 288, 283, 278, + 276, 273, 271, 265, 264, 260, 259, 258, 254, 252, + 251, 248, 242, 241, 240, 238, 229, 227, 226, 220, + 219, 218, 213, 209, 204, 200, 196, 195, 193, 192, + 185, 184, 183, 155, 148, 138, 137, 136, 116, 115, + 102, 101, 97, 84, 70, 69, 68, 62, 59, 36, + 33, 30, 27, 19, 14, 11, 7, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313 } ; /* The intent behind this definition is that it'll catch @@ -883,9 +914,9 @@ static const flex_int16_t yy_chk[624] = #line 23 "lexer.lpp" #define YY_USER_ACTION loc.columns(yyleng); -#line 886 "lexer.cpp" +#line 917 "lexer.cpp" -#line 888 "lexer.cpp" +#line 919 "lexer.cpp" #define INITIAL 0 #define COMMENT_BLOCK_STATE 1 @@ -1145,15 +1176,15 @@ YY_DECL } { -#line 36 "lexer.lpp" +#line 40 "lexer.lpp" -#line 40 "lexer.lpp" +#line 44 "lexer.lpp" loc.step(); -#line 1156 "lexer.cpp" +#line 1187 "lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1180,13 +1211,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 301 ) + if ( yy_current_state >= 314 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 300 ); + while ( yy_current_state != 313 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -1208,517 +1239,537 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 43 "lexer.lpp" +#line 47 "lexer.lpp" { loc.step(); } YY_BREAK case 2: /* rule 2 can match eol */ YY_RULE_SETUP -#line 45 "lexer.lpp" +#line 49 "lexer.lpp" { loc.lines(yyleng); loc.step(); } YY_BREAK case 3: YY_RULE_SETUP -#line 47 "lexer.lpp" +#line 51 "lexer.lpp" YY_BREAK case 4: YY_RULE_SETUP -#line 49 "lexer.lpp" +#line 53 "lexer.lpp" { BEGIN(COMMENT_BLOCK_STATE); } YY_BREAK case 5: YY_RULE_SETUP -#line 50 "lexer.lpp" +#line 54 "lexer.lpp" YY_BREAK case 6: /* rule 6 can match eol */ YY_RULE_SETUP -#line 51 "lexer.lpp" +#line 55 "lexer.lpp" { loc.lines(yyleng); loc.step(); } YY_BREAK case 7: YY_RULE_SETUP -#line 52 "lexer.lpp" +#line 56 "lexer.lpp" { BEGIN(INITIAL); } YY_BREAK case 8: YY_RULE_SETUP -#line 54 "lexer.lpp" +#line 58 "lexer.lpp" { BEGIN(DEVELOPER_BLOCK_STATE); } YY_BREAK case 9: YY_RULE_SETUP -#line 55 "lexer.lpp" +#line 59 "lexer.lpp" YY_BREAK case 10: /* rule 10 can match eol */ YY_RULE_SETUP -#line 56 "lexer.lpp" +#line 60 "lexer.lpp" { loc.lines(yyleng); loc.step(); } YY_BREAK case 11: YY_RULE_SETUP -#line 57 "lexer.lpp" +#line 61 "lexer.lpp" { BEGIN(INITIAL); } YY_BREAK case 12: YY_RULE_SETUP -#line 59 "lexer.lpp" +#line 63 "lexer.lpp" { return iw5::parser::make_BREAKPOINT(loc); } YY_BREAK case 13: YY_RULE_SETUP -#line 60 "lexer.lpp" +#line 64 "lexer.lpp" { return iw5::parser::make_PROFBEGIN(loc); } YY_BREAK case 14: YY_RULE_SETUP -#line 61 "lexer.lpp" +#line 65 "lexer.lpp" { return iw5::parser::make_PROFEND(loc); } YY_BREAK case 15: YY_RULE_SETUP -#line 62 "lexer.lpp" +#line 66 "lexer.lpp" { return iw5::parser::make_INCLUDE(loc); } YY_BREAK case 16: YY_RULE_SETUP -#line 63 "lexer.lpp" +#line 67 "lexer.lpp" { return iw5::parser::make_USINGTREE(loc); } YY_BREAK case 17: YY_RULE_SETUP -#line 64 "lexer.lpp" +#line 68 "lexer.lpp" { return iw5::parser::make_ANIMTREE(loc); } YY_BREAK case 18: YY_RULE_SETUP -#line 65 "lexer.lpp" +#line 69 "lexer.lpp" { return iw5::parser::make_ENDON(loc); } YY_BREAK case 19: YY_RULE_SETUP -#line 66 "lexer.lpp" +#line 70 "lexer.lpp" { return iw5::parser::make_NOTIFY(loc); } YY_BREAK case 20: YY_RULE_SETUP -#line 67 "lexer.lpp" +#line 71 "lexer.lpp" { return iw5::parser::make_WAIT(loc); } YY_BREAK case 21: YY_RULE_SETUP -#line 68 "lexer.lpp" +#line 72 "lexer.lpp" { return iw5::parser::make_WAITTILL(loc); } YY_BREAK case 22: YY_RULE_SETUP -#line 69 "lexer.lpp" +#line 73 "lexer.lpp" { return iw5::parser::make_WAITTILLMATCH(loc); } YY_BREAK case 23: YY_RULE_SETUP -#line 70 "lexer.lpp" +#line 74 "lexer.lpp" { return iw5::parser::make_WAITTILLFRAMEEND(loc); } YY_BREAK case 24: YY_RULE_SETUP -#line 71 "lexer.lpp" +#line 75 "lexer.lpp" { return iw5::parser::make_IF(loc); } YY_BREAK case 25: YY_RULE_SETUP -#line 72 "lexer.lpp" +#line 76 "lexer.lpp" { return iw5::parser::make_ELSE(loc); } YY_BREAK case 26: YY_RULE_SETUP -#line 73 "lexer.lpp" +#line 77 "lexer.lpp" { return iw5::parser::make_WHILE(loc); } YY_BREAK case 27: YY_RULE_SETUP -#line 74 "lexer.lpp" +#line 78 "lexer.lpp" { return iw5::parser::make_FOR(loc); } YY_BREAK case 28: YY_RULE_SETUP -#line 75 "lexer.lpp" +#line 79 "lexer.lpp" { return iw5::parser::make_FOREACH(loc); } YY_BREAK case 29: YY_RULE_SETUP -#line 76 "lexer.lpp" +#line 80 "lexer.lpp" { return iw5::parser::make_IN(loc); } YY_BREAK case 30: YY_RULE_SETUP -#line 77 "lexer.lpp" +#line 81 "lexer.lpp" { return iw5::parser::make_SWITCH(loc); } YY_BREAK case 31: YY_RULE_SETUP -#line 78 "lexer.lpp" +#line 82 "lexer.lpp" { return iw5::parser::make_CASE(loc); } YY_BREAK case 32: YY_RULE_SETUP -#line 79 "lexer.lpp" +#line 83 "lexer.lpp" { return iw5::parser::make_DEFAULT(loc); } YY_BREAK case 33: YY_RULE_SETUP -#line 80 "lexer.lpp" +#line 84 "lexer.lpp" { return iw5::parser::make_BREAK(loc); } YY_BREAK case 34: YY_RULE_SETUP -#line 81 "lexer.lpp" +#line 85 "lexer.lpp" { return iw5::parser::make_CONTINUE(loc); } YY_BREAK case 35: YY_RULE_SETUP -#line 82 "lexer.lpp" +#line 86 "lexer.lpp" { return iw5::parser::make_RETURN(loc); } YY_BREAK case 36: YY_RULE_SETUP -#line 83 "lexer.lpp" +#line 87 "lexer.lpp" { return iw5::parser::make_THREAD(loc); } YY_BREAK case 37: YY_RULE_SETUP -#line 84 "lexer.lpp" +#line 88 "lexer.lpp" { return iw5::parser::make_CHILDTHREAD(loc); } YY_BREAK case 38: YY_RULE_SETUP -#line 85 "lexer.lpp" +#line 89 "lexer.lpp" { return iw5::parser::make_THISTHREAD(loc); } YY_BREAK case 39: YY_RULE_SETUP -#line 86 "lexer.lpp" +#line 90 "lexer.lpp" { return iw5::parser::make_CALL(loc); } YY_BREAK case 40: YY_RULE_SETUP -#line 87 "lexer.lpp" +#line 91 "lexer.lpp" { return iw5::parser::make_TRUE(loc); } YY_BREAK case 41: YY_RULE_SETUP -#line 88 "lexer.lpp" +#line 92 "lexer.lpp" { return iw5::parser::make_FALSE(loc); } YY_BREAK case 42: YY_RULE_SETUP -#line 89 "lexer.lpp" +#line 93 "lexer.lpp" { return iw5::parser::make_UNDEFINED(loc); } YY_BREAK case 43: YY_RULE_SETUP -#line 90 "lexer.lpp" +#line 94 "lexer.lpp" { return iw5::parser::make_SIZE(loc); } YY_BREAK case 44: YY_RULE_SETUP -#line 91 "lexer.lpp" +#line 95 "lexer.lpp" { return iw5::parser::make_GAME(loc); } YY_BREAK case 45: YY_RULE_SETUP -#line 92 "lexer.lpp" +#line 96 "lexer.lpp" { return iw5::parser::make_SELF(loc); } YY_BREAK case 46: YY_RULE_SETUP -#line 93 "lexer.lpp" +#line 97 "lexer.lpp" { return iw5::parser::make_ANIM(loc); } YY_BREAK case 47: YY_RULE_SETUP -#line 94 "lexer.lpp" +#line 98 "lexer.lpp" { return iw5::parser::make_LEVEL(loc); } YY_BREAK case 48: YY_RULE_SETUP -#line 95 "lexer.lpp" +#line 99 "lexer.lpp" { return iw5::parser::make_LPAREN(loc); } YY_BREAK case 49: YY_RULE_SETUP -#line 96 "lexer.lpp" +#line 100 "lexer.lpp" { return iw5::parser::make_RPAREN(loc); } YY_BREAK case 50: YY_RULE_SETUP -#line 97 "lexer.lpp" +#line 101 "lexer.lpp" { return iw5::parser::make_LBRACE(loc); } YY_BREAK case 51: YY_RULE_SETUP -#line 98 "lexer.lpp" +#line 102 "lexer.lpp" { return iw5::parser::make_RBRACE(loc); } YY_BREAK case 52: YY_RULE_SETUP -#line 99 "lexer.lpp" +#line 103 "lexer.lpp" { return iw5::parser::make_LBRACKET(loc); } YY_BREAK case 53: YY_RULE_SETUP -#line 100 "lexer.lpp" +#line 104 "lexer.lpp" { return iw5::parser::make_RBRACKET(loc); } YY_BREAK case 54: YY_RULE_SETUP -#line 101 "lexer.lpp" +#line 105 "lexer.lpp" { return iw5::parser::make_COMMA(loc); } YY_BREAK case 55: YY_RULE_SETUP -#line 102 "lexer.lpp" +#line 106 "lexer.lpp" { return iw5::parser::make_DOT(loc); } YY_BREAK case 56: YY_RULE_SETUP -#line 103 "lexer.lpp" +#line 107 "lexer.lpp" { return iw5::parser::make_DOUBLECOLON(loc); } YY_BREAK case 57: YY_RULE_SETUP -#line 104 "lexer.lpp" +#line 108 "lexer.lpp" { return iw5::parser::make_COLON(loc); } YY_BREAK case 58: YY_RULE_SETUP -#line 105 "lexer.lpp" +#line 109 "lexer.lpp" { return iw5::parser::make_SEMICOLON(loc); } YY_BREAK case 59: YY_RULE_SETUP -#line 106 "lexer.lpp" +#line 110 "lexer.lpp" { return iw5::parser::make_QMARK(loc); } YY_BREAK case 60: YY_RULE_SETUP -#line 107 "lexer.lpp" +#line 111 "lexer.lpp" { return iw5::parser::make_INCREMENT(loc); } YY_BREAK case 61: YY_RULE_SETUP -#line 108 "lexer.lpp" +#line 112 "lexer.lpp" { return iw5::parser::make_DECREMENT(loc); } YY_BREAK case 62: YY_RULE_SETUP -#line 109 "lexer.lpp" +#line 113 "lexer.lpp" { return iw5::parser::make_ASSIGN_LSHIFT(loc); } YY_BREAK case 63: YY_RULE_SETUP -#line 110 "lexer.lpp" +#line 114 "lexer.lpp" { return iw5::parser::make_ASSIGN_RSHIFT(loc); } YY_BREAK case 64: YY_RULE_SETUP -#line 111 "lexer.lpp" +#line 115 "lexer.lpp" { return iw5::parser::make_LSHIFT(loc); } YY_BREAK case 65: YY_RULE_SETUP -#line 112 "lexer.lpp" +#line 116 "lexer.lpp" { return iw5::parser::make_RSHIFT(loc); } YY_BREAK case 66: YY_RULE_SETUP -#line 113 "lexer.lpp" +#line 117 "lexer.lpp" { return iw5::parser::make_OR(loc); } YY_BREAK case 67: YY_RULE_SETUP -#line 114 "lexer.lpp" +#line 118 "lexer.lpp" { return iw5::parser::make_AND(loc); } YY_BREAK case 68: YY_RULE_SETUP -#line 115 "lexer.lpp" +#line 119 "lexer.lpp" { return iw5::parser::make_EQUALITY(loc); } YY_BREAK case 69: YY_RULE_SETUP -#line 116 "lexer.lpp" +#line 120 "lexer.lpp" { return iw5::parser::make_INEQUALITY(loc); } YY_BREAK case 70: YY_RULE_SETUP -#line 117 "lexer.lpp" +#line 121 "lexer.lpp" { return iw5::parser::make_LESS_EQUAL(loc); } YY_BREAK case 71: YY_RULE_SETUP -#line 118 "lexer.lpp" +#line 122 "lexer.lpp" { return iw5::parser::make_GREATER_EQUAL(loc); } YY_BREAK case 72: YY_RULE_SETUP -#line 119 "lexer.lpp" +#line 123 "lexer.lpp" { return iw5::parser::make_LESS(loc); } YY_BREAK case 73: YY_RULE_SETUP -#line 120 "lexer.lpp" +#line 124 "lexer.lpp" { return iw5::parser::make_GREATER(loc); } YY_BREAK case 74: YY_RULE_SETUP -#line 121 "lexer.lpp" +#line 125 "lexer.lpp" { return iw5::parser::make_ASSIGN_ADD(loc); } YY_BREAK case 75: YY_RULE_SETUP -#line 122 "lexer.lpp" +#line 126 "lexer.lpp" { return iw5::parser::make_ASSIGN_SUB(loc); } YY_BREAK case 76: YY_RULE_SETUP -#line 123 "lexer.lpp" +#line 127 "lexer.lpp" { return iw5::parser::make_ASSIGN_MULT(loc); } YY_BREAK case 77: YY_RULE_SETUP -#line 124 "lexer.lpp" +#line 128 "lexer.lpp" { return iw5::parser::make_ASSIGN_DIV(loc); } YY_BREAK case 78: YY_RULE_SETUP -#line 125 "lexer.lpp" +#line 129 "lexer.lpp" { return iw5::parser::make_ASSIGN_MOD(loc); } YY_BREAK case 79: YY_RULE_SETUP -#line 126 "lexer.lpp" +#line 130 "lexer.lpp" { return iw5::parser::make_ASSIGN_BITWISE_OR(loc); } YY_BREAK case 80: YY_RULE_SETUP -#line 127 "lexer.lpp" +#line 131 "lexer.lpp" { return iw5::parser::make_ASSIGN_BITWISE_AND(loc); } YY_BREAK case 81: YY_RULE_SETUP -#line 128 "lexer.lpp" +#line 132 "lexer.lpp" { return iw5::parser::make_ASSIGN_BITWISE_EXOR(loc); } YY_BREAK case 82: YY_RULE_SETUP -#line 129 "lexer.lpp" +#line 133 "lexer.lpp" { return iw5::parser::make_ASSIGN(loc); } YY_BREAK case 83: YY_RULE_SETUP -#line 130 "lexer.lpp" +#line 134 "lexer.lpp" { return iw5::parser::make_ADD(loc); } YY_BREAK case 84: YY_RULE_SETUP -#line 131 "lexer.lpp" +#line 135 "lexer.lpp" { return iw5::parser::make_SUB(loc); } YY_BREAK case 85: YY_RULE_SETUP -#line 132 "lexer.lpp" +#line 136 "lexer.lpp" { return iw5::parser::make_MULT(loc); } YY_BREAK case 86: YY_RULE_SETUP -#line 133 "lexer.lpp" +#line 137 "lexer.lpp" { return iw5::parser::make_DIV(loc); } YY_BREAK case 87: YY_RULE_SETUP -#line 134 "lexer.lpp" +#line 138 "lexer.lpp" { return iw5::parser::make_MOD(loc); } YY_BREAK case 88: YY_RULE_SETUP -#line 135 "lexer.lpp" +#line 139 "lexer.lpp" { return iw5::parser::make_NOT(loc); } YY_BREAK case 89: YY_RULE_SETUP -#line 136 "lexer.lpp" +#line 140 "lexer.lpp" { return iw5::parser::make_COMPLEMENT(loc); } YY_BREAK case 90: YY_RULE_SETUP -#line 137 "lexer.lpp" +#line 141 "lexer.lpp" { return iw5::parser::make_BITWISE_OR(loc); } YY_BREAK case 91: YY_RULE_SETUP -#line 138 "lexer.lpp" +#line 142 "lexer.lpp" { return iw5::parser::make_BITWISE_AND(loc); } YY_BREAK case 92: YY_RULE_SETUP -#line 139 "lexer.lpp" +#line 143 "lexer.lpp" { return iw5::parser::make_BITWISE_EXOR(loc); } YY_BREAK case 93: YY_RULE_SETUP -#line 140 "lexer.lpp" +#line 144 "lexer.lpp" { return iw5::parser::make_FILE(utils::string::fordslash(yytext), loc); } YY_BREAK case 94: YY_RULE_SETUP -#line 141 "lexer.lpp" +#line 145 "lexer.lpp" { return iw5::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); } YY_BREAK case 95: /* rule 95 can match eol */ YY_RULE_SETUP -#line 142 "lexer.lpp" +#line 146 "lexer.lpp" { return iw5::parser::make_ISTRING(std::string(yytext).substr(1), loc); } YY_BREAK case 96: /* rule 96 can match eol */ YY_RULE_SETUP -#line 143 "lexer.lpp" +#line 147 "lexer.lpp" { return iw5::parser::make_STRING(std::string(yytext), loc); } YY_BREAK case 97: YY_RULE_SETUP -#line 144 "lexer.lpp" -{ return iw5::parser::make_FLOAT(std::string(yytext), loc); } +#line 148 "lexer.lpp" +{ return iw5::parser::make_COLOR(std::string(yytext).substr(1), loc); } YY_BREAK case 98: YY_RULE_SETUP -#line 145 "lexer.lpp" -{ return iw5::parser::make_INTEGER(std::string(yytext), loc); } +#line 149 "lexer.lpp" +{ return iw5::parser::make_FLOAT(std::string(yytext), loc); } + YY_BREAK +case 99: +YY_RULE_SETUP +#line 150 "lexer.lpp" +{ return iw5::parser::make_INT_OCT(utils::string::oct_to_dec(yytext), loc); } + YY_BREAK +case 100: +YY_RULE_SETUP +#line 151 "lexer.lpp" +{ return iw5::parser::make_INT_BIN(utils::string::bin_to_dec(yytext), loc); } + YY_BREAK +case 101: +YY_RULE_SETUP +#line 152 "lexer.lpp" +{ return iw5::parser::make_INT_HEX(utils::string::hex_to_dec(yytext), loc); } + YY_BREAK +case 102: +YY_RULE_SETUP +#line 153 "lexer.lpp" +{ return iw5::parser::make_INT_DEC(std::string(yytext), loc); } YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT_BLOCK_STATE): case YY_STATE_EOF(DEVELOPER_BLOCK_STATE): -#line 146 "lexer.lpp" +#line 154 "lexer.lpp" { return iw5::parser::make_IW5EOF(loc); } YY_BREAK -case 99: -/* rule 99 can match eol */ +case 103: +/* rule 103 can match eol */ YY_RULE_SETUP -#line 147 "lexer.lpp" +#line 155 "lexer.lpp" { throw iw5::parser::syntax_error(loc, "bad token: '" + std::string(yytext) + "'"); } YY_BREAK -case 100: +case 104: YY_RULE_SETUP -#line 149 "lexer.lpp" +#line 157 "lexer.lpp" ECHO; YY_BREAK -#line 1721 "lexer.cpp" +#line 1772 "lexer.cpp" case YY_END_OF_BUFFER: { @@ -2016,7 +2067,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 301 ) + if ( yy_current_state >= 314 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2045,11 +2096,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 301 ) + if ( yy_current_state >= 314 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 300); + yy_is_jam = (yy_current_state == 313); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -2848,6 +2899,6 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 149 "lexer.lpp" +#line 157 "lexer.lpp" diff --git a/src/iw5/xsk/lexer.hpp b/src/iw5/xsk/lexer.hpp index c4a60c54..a9159b1b 100644 --- a/src/iw5/xsk/lexer.hpp +++ b/src/iw5/xsk/lexer.hpp @@ -700,7 +700,7 @@ extern int yylex (yyscan_t yyscanner); #undef yyTABLES_NAME #endif -#line 149 "lexer.lpp" +#line 157 "lexer.lpp" #line 706 "lexer.hpp" diff --git a/src/iw5/xsk/parser.cpp b/src/iw5/xsk/parser.cpp index e096f516..d52fa763 100644 --- a/src/iw5/xsk/parser.cpp +++ b/src/iw5/xsk/parser.cpp @@ -228,6 +228,10 @@ namespace xsk { namespace gsc { namespace iw5 { value.YY_MOVE_OR_COPY< animtree_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_color: // color + value.YY_MOVE_OR_COPY< color_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_constant: // constant value.YY_MOVE_OR_COPY< constant_ptr > (YY_MOVE (that.value)); break; @@ -278,7 +282,6 @@ namespace xsk { namespace gsc { namespace iw5 { value.YY_MOVE_OR_COPY< file_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.YY_MOVE_OR_COPY< float_ptr > (YY_MOVE (that.value)); break; @@ -291,7 +294,6 @@ namespace xsk { namespace gsc { namespace iw5 { value.YY_MOVE_OR_COPY< include_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.YY_MOVE_OR_COPY< integer_ptr > (YY_MOVE (that.value)); break; @@ -333,8 +335,12 @@ namespace xsk { namespace gsc { namespace iw5 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value)); break; @@ -491,6 +497,10 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< animtree_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_color: // color + value.move< color_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_constant: // constant value.move< constant_ptr > (YY_MOVE (that.value)); break; @@ -541,7 +551,6 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< file_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.move< float_ptr > (YY_MOVE (that.value)); break; @@ -554,7 +563,6 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< include_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.move< integer_ptr > (YY_MOVE (that.value)); break; @@ -596,8 +604,12 @@ namespace xsk { namespace gsc { namespace iw5 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.move< std::string > (YY_MOVE (that.value)); break; @@ -754,6 +766,10 @@ namespace xsk { namespace gsc { namespace iw5 { value.copy< animtree_ptr > (that.value); break; + case symbol_kind::S_color: // color + value.copy< color_ptr > (that.value); + break; + case symbol_kind::S_constant: // constant value.copy< constant_ptr > (that.value); break; @@ -804,7 +820,6 @@ namespace xsk { namespace gsc { namespace iw5 { value.copy< file_ptr > (that.value); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.copy< float_ptr > (that.value); break; @@ -817,7 +832,6 @@ namespace xsk { namespace gsc { namespace iw5 { value.copy< include_ptr > (that.value); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.copy< integer_ptr > (that.value); break; @@ -859,8 +873,12 @@ namespace xsk { namespace gsc { namespace iw5 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.copy< std::string > (that.value); break; @@ -1016,6 +1034,10 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< animtree_ptr > (that.value); break; + case symbol_kind::S_color: // color + value.move< color_ptr > (that.value); + break; + case symbol_kind::S_constant: // constant value.move< constant_ptr > (that.value); break; @@ -1066,7 +1088,6 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< file_ptr > (that.value); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.move< float_ptr > (that.value); break; @@ -1079,7 +1100,6 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< include_ptr > (that.value); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.move< integer_ptr > (that.value); break; @@ -1121,8 +1141,12 @@ namespace xsk { namespace gsc { namespace iw5 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.move< std::string > (that.value); break; @@ -1533,6 +1557,10 @@ namespace xsk { namespace gsc { namespace iw5 { yylhs.value.emplace< animtree_ptr > (); break; + case symbol_kind::S_color: // color + yylhs.value.emplace< color_ptr > (); + break; + case symbol_kind::S_constant: // constant yylhs.value.emplace< constant_ptr > (); break; @@ -1583,7 +1611,6 @@ namespace xsk { namespace gsc { namespace iw5 { yylhs.value.emplace< file_ptr > (); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float yylhs.value.emplace< float_ptr > (); break; @@ -1596,7 +1623,6 @@ namespace xsk { namespace gsc { namespace iw5 { yylhs.value.emplace< include_ptr > (); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer yylhs.value.emplace< integer_ptr > (); break; @@ -1638,8 +1664,12 @@ namespace xsk { namespace gsc { namespace iw5 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" yylhs.value.emplace< std::string > (); break; @@ -1790,1207 +1820,1219 @@ namespace xsk { namespace gsc { namespace iw5 { switch (yyn) { case 2: // root: program -#line 241 "parser.ypp" +#line 244 "parser.ypp" { ast = std::move(yystack_[0].value.as < program_ptr > ()); } -#line 1796 "parser.cpp" - break; - - case 3: // root: %empty -#line 242 "parser.ypp" - { ast = std::make_unique(yylhs.location); } -#line 1802 "parser.cpp" - break; - - case 4: // program: program include -#line 247 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } -#line 1808 "parser.cpp" - break; - - case 5: // program: program define -#line 249 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } -#line 1814 "parser.cpp" - break; - - case 6: // program: include -#line 251 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } -#line 1820 "parser.cpp" - break; - - case 7: // program: define -#line 253 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1826 "parser.cpp" break; - case 8: // include: "#include" file ";" -#line 258 "parser.ypp" - { yylhs.value.as < include_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < file_ptr > ())); } + case 3: // root: %empty +#line 245 "parser.ypp" + { ast = std::make_unique(yylhs.location); } #line 1832 "parser.cpp" break; - case 9: // define: usingtree -#line 262 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_usingtree = std::move(yystack_[0].value.as < usingtree_ptr > ()); } + case 4: // program: program include +#line 250 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } #line 1838 "parser.cpp" break; - case 10: // define: constant -#line 263 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_constant = std::move(yystack_[0].value.as < constant_ptr > ()); } + case 5: // program: program define +#line 252 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1844 "parser.cpp" break; - case 11: // define: thread -#line 264 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_thread = std::move(yystack_[0].value.as < thread_ptr > ()); } + case 6: // program: include +#line 254 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } #line 1850 "parser.cpp" break; - case 12: // usingtree: "#using_animtree" "(" string ")" ";" -#line 269 "parser.ypp" - { yylhs.value.as < usingtree_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < string_ptr > ())); } + case 7: // program: define +#line 256 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1856 "parser.cpp" break; - case 13: // constant: name "=" expr ";" -#line 274 "parser.ypp" - { yylhs.value.as < constant_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 8: // include: "#include" file ";" +#line 261 "parser.ypp" + { yylhs.value.as < include_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < file_ptr > ())); } #line 1862 "parser.cpp" break; - case 14: // thread: name "(" parameters ")" stmt_block -#line 279 "parser.ypp" - { yylhs.value.as < thread_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < name_ptr > ()), std::move(yystack_[2].value.as < parameters_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } + case 9: // define: usingtree +#line 265 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_usingtree = std::move(yystack_[0].value.as < usingtree_ptr > ()); } #line 1868 "parser.cpp" break; - case 15: // parameters: parameters "," name -#line 284 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::move(yystack_[2].value.as < parameters_ptr > ()); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } + case 10: // define: constant +#line 266 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_constant = std::move(yystack_[0].value.as < constant_ptr > ()); } #line 1874 "parser.cpp" break; - case 16: // parameters: name -#line 286 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } + case 11: // define: thread +#line 267 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_thread = std::move(yystack_[0].value.as < thread_ptr > ()); } #line 1880 "parser.cpp" break; - case 17: // parameters: %empty -#line 288 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); } + case 12: // usingtree: "#using_animtree" "(" string ")" ";" +#line 272 "parser.ypp" + { yylhs.value.as < usingtree_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < string_ptr > ())); } #line 1886 "parser.cpp" break; - case 18: // stmt: stmt_block -#line 292 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_list = std::move(yystack_[0].value.as < stmt_list_ptr > ()); } + case 13: // constant: name "=" expr ";" +#line 277 "parser.ypp" + { yylhs.value.as < constant_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } #line 1892 "parser.cpp" break; - case 19: // stmt: stmt_call -#line 293 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_call = std::move(yystack_[0].value.as < stmt_call_ptr > ()); } + case 14: // thread: name "(" parameters ")" stmt_block +#line 282 "parser.ypp" + { yylhs.value.as < thread_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < name_ptr > ()), std::move(yystack_[2].value.as < parameters_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } #line 1898 "parser.cpp" break; - case 20: // stmt: stmt_assign -#line 294 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_assign = std::move(yystack_[0].value.as < stmt_assign_ptr > ()); } + case 15: // parameters: parameters "," name +#line 287 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::move(yystack_[2].value.as < parameters_ptr > ()); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } #line 1904 "parser.cpp" break; - case 21: // stmt: stmt_endon -#line 295 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_endon = std::move(yystack_[0].value.as < stmt_endon_ptr > ()); } + case 16: // parameters: name +#line 289 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } #line 1910 "parser.cpp" break; - case 22: // stmt: stmt_notify -#line 296 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_notify = std::move(yystack_[0].value.as < stmt_notify_ptr > ()); } + case 17: // parameters: %empty +#line 291 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); } #line 1916 "parser.cpp" break; - case 23: // stmt: stmt_wait -#line 297 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_wait = std::move(yystack_[0].value.as < stmt_wait_ptr > ()); } + case 18: // stmt: stmt_block +#line 295 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_list = std::move(yystack_[0].value.as < stmt_list_ptr > ()); } #line 1922 "parser.cpp" break; - case 24: // stmt: stmt_waittill -#line 298 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill_ptr > ()); } + case 19: // stmt: stmt_call +#line 296 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_call = std::move(yystack_[0].value.as < stmt_call_ptr > ()); } #line 1928 "parser.cpp" break; - case 25: // stmt: stmt_waittillmatch -#line 299 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch_ptr > ()); } + case 20: // stmt: stmt_assign +#line 297 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_assign = std::move(yystack_[0].value.as < stmt_assign_ptr > ()); } #line 1934 "parser.cpp" break; - case 26: // stmt: stmt_waittillframeend -#line 300 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend_ptr > ()); } + case 21: // stmt: stmt_endon +#line 298 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_endon = std::move(yystack_[0].value.as < stmt_endon_ptr > ()); } #line 1940 "parser.cpp" break; - case 27: // stmt: stmt_if -#line 301 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_if = std::move(yystack_[0].value.as < stmt_if_ptr > ()); } + case 22: // stmt: stmt_notify +#line 299 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_notify = std::move(yystack_[0].value.as < stmt_notify_ptr > ()); } #line 1946 "parser.cpp" break; - case 28: // stmt: stmt_ifelse -#line 302 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse_ptr > ()); } + case 23: // stmt: stmt_wait +#line 300 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_wait = std::move(yystack_[0].value.as < stmt_wait_ptr > ()); } #line 1952 "parser.cpp" break; - case 29: // stmt: stmt_while -#line 303 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_while = std::move(yystack_[0].value.as < stmt_while_ptr > ()); } + case 24: // stmt: stmt_waittill +#line 301 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill_ptr > ()); } #line 1958 "parser.cpp" break; - case 30: // stmt: stmt_for -#line 304 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_for = std::move(yystack_[0].value.as < stmt_for_ptr > ()); } + case 25: // stmt: stmt_waittillmatch +#line 302 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch_ptr > ()); } #line 1964 "parser.cpp" break; - case 31: // stmt: stmt_foreach -#line 305 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach_ptr > ()); } + case 26: // stmt: stmt_waittillframeend +#line 303 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend_ptr > ()); } #line 1970 "parser.cpp" break; - case 32: // stmt: stmt_switch -#line 306 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_switch = std::move(yystack_[0].value.as < stmt_switch_ptr > ()); } + case 27: // stmt: stmt_if +#line 304 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_if = std::move(yystack_[0].value.as < stmt_if_ptr > ()); } #line 1976 "parser.cpp" break; - case 33: // stmt: stmt_case -#line 307 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_case = std::move(yystack_[0].value.as < stmt_case_ptr > ()); } + case 28: // stmt: stmt_ifelse +#line 305 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse_ptr > ()); } #line 1982 "parser.cpp" break; - case 34: // stmt: stmt_default -#line 308 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_default = std::move(yystack_[0].value.as < stmt_default_ptr > ()); } + case 29: // stmt: stmt_while +#line 306 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_while = std::move(yystack_[0].value.as < stmt_while_ptr > ()); } #line 1988 "parser.cpp" break; - case 35: // stmt: stmt_break -#line 309 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_break = std::move(yystack_[0].value.as < stmt_break_ptr > ()); } + case 30: // stmt: stmt_for +#line 307 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_for = std::move(yystack_[0].value.as < stmt_for_ptr > ()); } #line 1994 "parser.cpp" break; - case 36: // stmt: stmt_continue -#line 310 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_continue = std::move(yystack_[0].value.as < stmt_continue_ptr > ()); } + case 31: // stmt: stmt_foreach +#line 308 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach_ptr > ()); } #line 2000 "parser.cpp" break; - case 37: // stmt: stmt_return -#line 311 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_return = std::move(yystack_[0].value.as < stmt_return_ptr > ()); } + case 32: // stmt: stmt_switch +#line 309 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_switch = std::move(yystack_[0].value.as < stmt_switch_ptr > ()); } #line 2006 "parser.cpp" break; - case 38: // stmt: stmt_breakpoint -#line 312 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_breakpoint = std::move(yystack_[0].value.as < stmt_breakpoint_ptr > ()); } + case 33: // stmt: stmt_case +#line 310 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_case = std::move(yystack_[0].value.as < stmt_case_ptr > ()); } #line 2012 "parser.cpp" break; - case 39: // stmt: stmt_prof_begin -#line 313 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_prof_begin = std::move(yystack_[0].value.as < stmt_prof_begin_ptr > ()); } + case 34: // stmt: stmt_default +#line 311 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_default = std::move(yystack_[0].value.as < stmt_default_ptr > ()); } #line 2018 "parser.cpp" break; - case 40: // stmt: stmt_prof_end -#line 314 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_prof_end = std::move(yystack_[0].value.as < stmt_prof_end_ptr > ()); } + case 35: // stmt: stmt_break +#line 312 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_break = std::move(yystack_[0].value.as < stmt_break_ptr > ()); } #line 2024 "parser.cpp" break; - case 41: // stmt_block: "{" stmt_list "}" -#line 318 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); } + case 36: // stmt: stmt_continue +#line 313 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_continue = std::move(yystack_[0].value.as < stmt_continue_ptr > ()); } #line 2030 "parser.cpp" break; - case 42: // stmt_block: "{" "}" -#line 319 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); } + case 37: // stmt: stmt_return +#line 314 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_return = std::move(yystack_[0].value.as < stmt_return_ptr > ()); } #line 2036 "parser.cpp" break; - case 43: // stmt_list: stmt_list stmt -#line 324 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 38: // stmt: stmt_breakpoint +#line 315 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_breakpoint = std::move(yystack_[0].value.as < stmt_breakpoint_ptr > ()); } #line 2042 "parser.cpp" break; - case 44: // stmt_list: stmt -#line 326 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 39: // stmt: stmt_prof_begin +#line 316 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_prof_begin = std::move(yystack_[0].value.as < stmt_prof_begin_ptr > ()); } #line 2048 "parser.cpp" break; - case 45: // stmt_call: expr_call ";" -#line 331 "parser.ypp" - { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } + case 40: // stmt: stmt_prof_end +#line 317 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_prof_end = std::move(yystack_[0].value.as < stmt_prof_end_ptr > ()); } #line 2054 "parser.cpp" break; - case 46: // stmt_call: expr_call_thread ";" -#line 333 "parser.ypp" - { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } + case 41: // stmt_block: "{" stmt_list "}" +#line 321 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); } #line 2060 "parser.cpp" break; - case 47: // stmt_assign: expr_assign ";" -#line 338 "parser.ypp" - { yylhs.value.as < stmt_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_assign_ptr > ())); } + case 42: // stmt_block: "{" "}" +#line 322 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); } #line 2066 "parser.cpp" break; - case 48: // stmt_endon: object "endon" "(" expr ")" ";" -#line 343 "parser.ypp" - { yylhs.value.as < stmt_endon_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ())); } + case 43: // stmt_list: stmt_list stmt +#line 327 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2072 "parser.cpp" break; - case 49: // stmt_notify: object "notify" "(" expr "," expr_arguments ")" ";" -#line 348 "parser.ypp" - { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 44: // stmt_list: stmt +#line 329 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2078 "parser.cpp" break; - case 50: // stmt_notify: object "notify" "(" expr ")" ";" -#line 350 "parser.ypp" - { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 45: // stmt_call: expr_call ";" +#line 334 "parser.ypp" + { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } #line 2084 "parser.cpp" break; - case 51: // stmt_wait: "wait" expr ";" -#line 355 "parser.ypp" - { yylhs.value.as < stmt_wait_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } + case 46: // stmt_call: expr_call_thread ";" +#line 336 "parser.ypp" + { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } #line 2090 "parser.cpp" break; - case 52: // stmt_waittill: object "waittill" "(" expr "," expr_arguments ")" ";" -#line 360 "parser.ypp" - { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 47: // stmt_assign: expr_assign ";" +#line 341 "parser.ypp" + { yylhs.value.as < stmt_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_assign_ptr > ())); } #line 2096 "parser.cpp" break; - case 53: // stmt_waittill: object "waittill" "(" expr ")" ";" -#line 362 "parser.ypp" - { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 48: // stmt_endon: object "endon" "(" expr ")" ";" +#line 346 "parser.ypp" + { yylhs.value.as < stmt_endon_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ())); } #line 2102 "parser.cpp" break; - case 54: // stmt_waittillmatch: object "waittillmatch" "(" expr "," expr_arguments ")" ";" -#line 367 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 49: // stmt_notify: object "notify" "(" expr "," expr_arguments ")" ";" +#line 351 "parser.ypp" + { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2108 "parser.cpp" break; - case 55: // stmt_waittillmatch: object "waittillmatch" "(" expr ")" ";" -#line 369 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 50: // stmt_notify: object "notify" "(" expr ")" ";" +#line 353 "parser.ypp" + { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2114 "parser.cpp" break; - case 56: // stmt_waittillframeend: "waittillframeend" ";" -#line 374 "parser.ypp" - { yylhs.value.as < stmt_waittillframeend_ptr > () = std::make_unique(yylhs.location); } + case 51: // stmt_wait: "wait" expr ";" +#line 358 "parser.ypp" + { yylhs.value.as < stmt_wait_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2120 "parser.cpp" break; - case 57: // stmt_if: "if" "(" expr ")" stmt -#line 379 "parser.ypp" - { yylhs.value.as < stmt_if_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 52: // stmt_waittill: object "waittill" "(" expr "," expr_arguments ")" ";" +#line 363 "parser.ypp" + { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2126 "parser.cpp" break; - case 58: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 384 "parser.ypp" - { yylhs.value.as < stmt_ifelse_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 53: // stmt_waittill: object "waittill" "(" expr ")" ";" +#line 365 "parser.ypp" + { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2132 "parser.cpp" break; - case 59: // stmt_while: "while" "(" expr ")" stmt -#line 389 "parser.ypp" - { yylhs.value.as < stmt_while_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 54: // stmt_waittillmatch: object "waittillmatch" "(" expr "," expr_arguments ")" ";" +#line 370 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2138 "parser.cpp" break; - case 60: // stmt_for: "for" "(" for_stmt ";" for_expr ";" for_stmt ")" stmt -#line 394 "parser.ypp" - { yylhs.value.as < stmt_for_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[6].value.as < stmt_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 55: // stmt_waittillmatch: object "waittillmatch" "(" expr ")" ";" +#line 372 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2144 "parser.cpp" break; - case 61: // stmt_foreach: "foreach" "(" name "in" expr ")" stmt -#line 399 "parser.ypp" - { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 56: // stmt_waittillframeend: "waittillframeend" ";" +#line 377 "parser.ypp" + { yylhs.value.as < stmt_waittillframeend_ptr > () = std::make_unique(yylhs.location); } #line 2150 "parser.cpp" break; - case 62: // stmt_foreach: "foreach" "(" name "," name "in" expr ")" stmt -#line 401 "parser.ypp" - { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[6].value.as < name_ptr > ())), expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 57: // stmt_if: "if" "(" expr ")" stmt +#line 382 "parser.ypp" + { yylhs.value.as < stmt_if_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2156 "parser.cpp" break; - case 63: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 406 "parser.ypp" - { yylhs.value.as < stmt_switch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } + case 58: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 387 "parser.ypp" + { yylhs.value.as < stmt_ifelse_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2162 "parser.cpp" break; - case 64: // stmt_case: "case" integer ":" -#line 411 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } + case 59: // stmt_while: "while" "(" expr ")" stmt +#line 392 "parser.ypp" + { yylhs.value.as < stmt_while_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2168 "parser.cpp" break; - case 65: // stmt_case: "case" neg_integer ":" -#line 413 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } + case 60: // stmt_for: "for" "(" for_stmt ";" for_expr ";" for_stmt ")" stmt +#line 397 "parser.ypp" + { yylhs.value.as < stmt_for_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[6].value.as < stmt_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2174 "parser.cpp" break; - case 66: // stmt_case: "case" string ":" -#line 415 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < string_ptr > ())), std::make_unique(yylhs.location)); } + case 61: // stmt_foreach: "foreach" "(" name "in" expr ")" stmt +#line 402 "parser.ypp" + { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2180 "parser.cpp" break; - case 67: // stmt_default: "default" ":" -#line 420 "parser.ypp" - { yylhs.value.as < stmt_default_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } + case 62: // stmt_foreach: "foreach" "(" name "," name "in" expr ")" stmt +#line 404 "parser.ypp" + { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[6].value.as < name_ptr > ())), expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2186 "parser.cpp" break; - case 68: // stmt_break: "break" ";" -#line 425 "parser.ypp" - { yylhs.value.as < stmt_break_ptr > () = std::make_unique(yylhs.location); } + case 63: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 409 "parser.ypp" + { yylhs.value.as < stmt_switch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } #line 2192 "parser.cpp" break; - case 69: // stmt_continue: "continue" ";" -#line 430 "parser.ypp" - { yylhs.value.as < stmt_continue_ptr > () = std::make_unique(yylhs.location); } + case 64: // stmt_case: "case" integer ":" +#line 414 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } #line 2198 "parser.cpp" break; - case 70: // stmt_return: "return" expr ";" -#line 435 "parser.ypp" - { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } + case 65: // stmt_case: "case" string ":" +#line 416 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < string_ptr > ())), std::make_unique(yylhs.location)); } #line 2204 "parser.cpp" break; - case 71: // stmt_return: "return" ";" -#line 437 "parser.ypp" - { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } + case 66: // stmt_default: "default" ":" +#line 421 "parser.ypp" + { yylhs.value.as < stmt_default_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2210 "parser.cpp" break; - case 72: // stmt_breakpoint: "breakpoint" ";" -#line 442 "parser.ypp" - { yylhs.value.as < stmt_breakpoint_ptr > () = std::make_unique(yylhs.location); } + case 67: // stmt_break: "break" ";" +#line 426 "parser.ypp" + { yylhs.value.as < stmt_break_ptr > () = std::make_unique(yylhs.location); } #line 2216 "parser.cpp" break; - case 73: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 447 "parser.ypp" - { yylhs.value.as < stmt_prof_begin_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 68: // stmt_continue: "continue" ";" +#line 431 "parser.ypp" + { yylhs.value.as < stmt_continue_ptr > () = std::make_unique(yylhs.location); } #line 2222 "parser.cpp" break; - case 74: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 452 "parser.ypp" - { yylhs.value.as < stmt_prof_end_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 69: // stmt_return: "return" expr ";" +#line 436 "parser.ypp" + { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2228 "parser.cpp" break; - case 75: // for_stmt: expr_assign -#line 456 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_list = std::make_unique(yylhs.location); yylhs.value.as < stmt_ptr > ().as_list->stmts.push_back(stmt_ptr(std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_assign_ptr > ())))); } + case 70: // stmt_return: "return" ";" +#line 438 "parser.ypp" + { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2234 "parser.cpp" break; - case 76: // for_stmt: %empty -#line 457 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_node = std::make_unique(yylhs.location); } + case 71: // stmt_breakpoint: "breakpoint" ";" +#line 443 "parser.ypp" + { yylhs.value.as < stmt_breakpoint_ptr > () = std::make_unique(yylhs.location); } #line 2240 "parser.cpp" break; - case 77: // for_expr: expr -#line 461 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 72: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" +#line 448 "parser.ypp" + { yylhs.value.as < stmt_prof_begin_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2246 "parser.cpp" break; - case 78: // for_expr: %empty -#line 462 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location); } + case 73: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" +#line 453 "parser.ypp" + { yylhs.value.as < stmt_prof_end_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2252 "parser.cpp" break; - case 79: // expr: expr_compare -#line 466 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 74: // for_stmt: expr_assign +#line 457 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_list = std::make_unique(yylhs.location); yylhs.value.as < stmt_ptr > ().as_list->stmts.push_back(stmt_ptr(std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_assign_ptr > ())))); } #line 2258 "parser.cpp" break; - case 80: // expr: expr_ternary -#line 467 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 75: // for_stmt: %empty +#line 458 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_node = std::make_unique(yylhs.location); } #line 2264 "parser.cpp" break; - case 81: // expr: expr_binary -#line 468 "parser.ypp" + case 76: // for_expr: expr +#line 462 "parser.ypp" { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2270 "parser.cpp" break; - case 82: // expr: expr_primitive -#line 469 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 77: // for_expr: %empty +#line 463 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location); } #line 2276 "parser.cpp" break; - case 83: // expr_assign: "++" object -#line 473 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } + case 78: // expr: expr_compare +#line 467 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2282 "parser.cpp" break; - case 84: // expr_assign: "--" object -#line 474 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } + case 79: // expr: expr_ternary +#line 468 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2288 "parser.cpp" break; - case 85: // expr_assign: object "++" -#line 475 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 80: // expr: expr_binary +#line 469 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2294 "parser.cpp" break; - case 86: // expr_assign: object "--" -#line 476 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 81: // expr: expr_primitive +#line 470 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2300 "parser.cpp" break; - case 87: // expr_assign: object "=" expr -#line 477 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 82: // expr_assign: "++" object +#line 474 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } #line 2306 "parser.cpp" break; - case 88: // expr_assign: object "|=" expr -#line 478 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 83: // expr_assign: "--" object +#line 475 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } #line 2312 "parser.cpp" break; - case 89: // expr_assign: object "&=" expr -#line 479 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 84: // expr_assign: object "++" +#line 476 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2318 "parser.cpp" break; - case 90: // expr_assign: object "^=" expr -#line 480 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 85: // expr_assign: object "--" +#line 477 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2324 "parser.cpp" break; - case 91: // expr_assign: object "<<=" expr -#line 481 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()),std::move( yystack_[0].value.as < expr_ptr > ())); } + case 86: // expr_assign: object "=" expr +#line 478 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2330 "parser.cpp" break; - case 92: // expr_assign: object ">>=" expr -#line 482 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 87: // expr_assign: object "|=" expr +#line 479 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2336 "parser.cpp" break; - case 93: // expr_assign: object "+=" expr -#line 483 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 88: // expr_assign: object "&=" expr +#line 480 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2342 "parser.cpp" break; - case 94: // expr_assign: object "-=" expr -#line 484 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 89: // expr_assign: object "^=" expr +#line 481 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2348 "parser.cpp" break; - case 95: // expr_assign: object "*=" expr -#line 485 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 90: // expr_assign: object "<<=" expr +#line 482 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()),std::move( yystack_[0].value.as < expr_ptr > ())); } #line 2354 "parser.cpp" break; - case 96: // expr_assign: object "/=" expr -#line 486 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 91: // expr_assign: object ">>=" expr +#line 483 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2360 "parser.cpp" break; - case 97: // expr_assign: object "%=" expr -#line 487 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 92: // expr_assign: object "+=" expr +#line 484 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2366 "parser.cpp" break; - case 98: // expr_compare: expr "||" expr -#line 491 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 93: // expr_assign: object "-=" expr +#line 485 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2372 "parser.cpp" break; - case 99: // expr_compare: expr "&&" expr -#line 492 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 94: // expr_assign: object "*=" expr +#line 486 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2378 "parser.cpp" break; - case 100: // expr_compare: expr "==" expr -#line 493 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 95: // expr_assign: object "/=" expr +#line 487 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2384 "parser.cpp" break; - case 101: // expr_compare: expr "!=" expr -#line 494 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 96: // expr_assign: object "%=" expr +#line 488 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2390 "parser.cpp" break; - case 102: // expr_compare: expr "<=" expr -#line 495 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 97: // expr_compare: expr "||" expr +#line 492 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2396 "parser.cpp" break; - case 103: // expr_compare: expr ">=" expr -#line 496 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 98: // expr_compare: expr "&&" expr +#line 493 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2402 "parser.cpp" break; - case 104: // expr_compare: expr "<" expr -#line 497 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 99: // expr_compare: expr "==" expr +#line 494 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2408 "parser.cpp" break; - case 105: // expr_compare: expr ">" expr -#line 498 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 100: // expr_compare: expr "!=" expr +#line 495 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2414 "parser.cpp" break; - case 106: // expr_ternary: expr "?" expr ":" expr -#line 502 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 101: // expr_compare: expr "<=" expr +#line 496 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2420 "parser.cpp" break; - case 107: // expr_binary: expr "|" expr -#line 506 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 102: // expr_compare: expr ">=" expr +#line 497 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2426 "parser.cpp" break; - case 108: // expr_binary: expr "&" expr -#line 507 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 103: // expr_compare: expr "<" expr +#line 498 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2432 "parser.cpp" break; - case 109: // expr_binary: expr "^" expr -#line 508 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 104: // expr_compare: expr ">" expr +#line 499 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2438 "parser.cpp" break; - case 110: // expr_binary: expr "<<" expr -#line 509 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 105: // expr_ternary: expr "?" expr ":" expr +#line 503 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2444 "parser.cpp" break; - case 111: // expr_binary: expr ">>" expr -#line 510 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 106: // expr_binary: expr "|" expr +#line 507 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2450 "parser.cpp" break; - case 112: // expr_binary: expr "+" expr -#line 511 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 107: // expr_binary: expr "&" expr +#line 508 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2456 "parser.cpp" break; - case 113: // expr_binary: expr "-" expr -#line 512 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 108: // expr_binary: expr "^" expr +#line 509 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2462 "parser.cpp" break; - case 114: // expr_binary: expr "*" expr -#line 513 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 109: // expr_binary: expr "<<" expr +#line 510 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2468 "parser.cpp" break; - case 115: // expr_binary: expr "/" expr -#line 514 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 110: // expr_binary: expr ">>" expr +#line 511 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2474 "parser.cpp" break; - case 116: // expr_binary: expr "%" expr -#line 515 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 111: // expr_binary: expr "+" expr +#line 512 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2480 "parser.cpp" break; - case 117: // expr_primitive: "(" expr ")" -#line 519 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[1].value.as < expr_ptr > ()); } + case 112: // expr_binary: expr "-" expr +#line 513 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2486 "parser.cpp" break; - case 118: // expr_primitive: "~" expr -#line 520 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } + case 113: // expr_binary: expr "*" expr +#line 514 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2492 "parser.cpp" break; - case 119: // expr_primitive: "!" expr -#line 521 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } + case 114: // expr_binary: expr "/" expr +#line 515 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2498 "parser.cpp" break; - case 120: // expr_primitive: expr_call -#line 522 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 115: // expr_binary: expr "%" expr +#line 516 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2504 "parser.cpp" break; - case 121: // expr_primitive: expr_call_thread -#line 523 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 116: // expr_primitive: "(" expr ")" +#line 520 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[1].value.as < expr_ptr > ()); } #line 2510 "parser.cpp" break; - case 122: // expr_primitive: expr_call_childthread -#line 524 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 117: // expr_primitive: "~" expr +#line 521 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2516 "parser.cpp" break; - case 123: // expr_primitive: expr_function -#line 525 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 118: // expr_primitive: "!" expr +#line 522 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2522 "parser.cpp" break; - case 124: // expr_primitive: expr_add_array -#line 526 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 119: // expr_primitive: expr_call +#line 523 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2528 "parser.cpp" break; - case 125: // expr_primitive: expr_array -#line 527 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 120: // expr_primitive: expr_call_thread +#line 524 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2534 "parser.cpp" break; - case 126: // expr_primitive: expr_field -#line 528 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 121: // expr_primitive: expr_call_childthread +#line 525 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2540 "parser.cpp" break; - case 127: // expr_primitive: expr_size -#line 529 "parser.ypp" + case 122: // expr_primitive: expr_function +#line 526 "parser.ypp" { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2546 "parser.cpp" break; - case 128: // expr_primitive: thisthread -#line 530 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < thisthread_ptr > ()); } + case 123: // expr_primitive: expr_add_array +#line 527 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2552 "parser.cpp" break; - case 129: // expr_primitive: empty_array -#line 531 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < empty_array_ptr > ()); } + case 124: // expr_primitive: expr_array +#line 528 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2558 "parser.cpp" break; - case 130: // expr_primitive: undefined -#line 532 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < undefined_ptr > ()); } + case 125: // expr_primitive: expr_field +#line 529 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2564 "parser.cpp" break; - case 131: // expr_primitive: game -#line 533 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < game_ptr > ()); } + case 126: // expr_primitive: expr_size +#line 530 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2570 "parser.cpp" break; - case 132: // expr_primitive: self -#line 534 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < self_ptr > ()); } + case 127: // expr_primitive: thisthread +#line 531 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < thisthread_ptr > ()); } #line 2576 "parser.cpp" break; - case 133: // expr_primitive: anim -#line 535 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < anim_ptr > ()); } + case 128: // expr_primitive: empty_array +#line 532 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < empty_array_ptr > ()); } #line 2582 "parser.cpp" break; - case 134: // expr_primitive: level -#line 536 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < level_ptr > ()); } + case 129: // expr_primitive: undefined +#line 533 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < undefined_ptr > ()); } #line 2588 "parser.cpp" break; - case 135: // expr_primitive: animation -#line 537 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animation_ptr > ()); } + case 130: // expr_primitive: game +#line 534 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < game_ptr > ()); } #line 2594 "parser.cpp" break; - case 136: // expr_primitive: animtree -#line 538 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animtree_ptr > ()); } + case 131: // expr_primitive: self +#line 535 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < self_ptr > ()); } #line 2600 "parser.cpp" break; - case 137: // expr_primitive: name -#line 539 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < name_ptr > ()); } + case 132: // expr_primitive: anim +#line 536 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < anim_ptr > ()); } #line 2606 "parser.cpp" break; - case 138: // expr_primitive: istring -#line 540 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < istring_ptr > ()); } + case 133: // expr_primitive: level +#line 537 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < level_ptr > ()); } #line 2612 "parser.cpp" break; - case 139: // expr_primitive: string -#line 541 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < string_ptr > ()); } + case 134: // expr_primitive: animation +#line 538 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animation_ptr > ()); } #line 2618 "parser.cpp" break; - case 140: // expr_primitive: vector -#line 542 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < vector_ptr > ()); } + case 135: // expr_primitive: animtree +#line 539 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animtree_ptr > ()); } #line 2624 "parser.cpp" break; - case 141: // expr_primitive: neg_float -#line 543 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } + case 136: // expr_primitive: name +#line 540 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < name_ptr > ()); } #line 2630 "parser.cpp" break; - case 142: // expr_primitive: neg_integer -#line 544 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } + case 137: // expr_primitive: istring +#line 541 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < istring_ptr > ()); } #line 2636 "parser.cpp" break; - case 143: // expr_primitive: float -#line 545 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } + case 138: // expr_primitive: string +#line 542 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < string_ptr > ()); } #line 2642 "parser.cpp" break; - case 144: // expr_primitive: integer -#line 546 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } + case 139: // expr_primitive: color +#line 543 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < color_ptr > ()); } #line 2648 "parser.cpp" break; - case 145: // expr_primitive: false -#line 547 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < false_ptr > ()); } + case 140: // expr_primitive: vector +#line 544 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < vector_ptr > ()); } #line 2654 "parser.cpp" break; - case 146: // expr_primitive: true -#line 548 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < true_ptr > ()); } + case 141: // expr_primitive: float +#line 545 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } #line 2660 "parser.cpp" break; - case 147: // expr_call: expr_call_function -#line 552 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 142: // expr_primitive: integer +#line 546 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } #line 2666 "parser.cpp" break; - case 148: // expr_call: expr_call_pointer -#line 553 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 143: // expr_primitive: false +#line 547 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < false_ptr > ()); } #line 2672 "parser.cpp" break; - case 149: // expr_call: object expr_call_function -#line 554 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 144: // expr_primitive: true +#line 548 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < true_ptr > ()); } #line 2678 "parser.cpp" break; - case 150: // expr_call: object expr_call_pointer -#line 555 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 145: // expr_call: expr_call_function +#line 552 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2684 "parser.cpp" break; - case 151: // expr_call_thread: "thread" expr_call_function -#line 559 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 146: // expr_call: expr_call_pointer +#line 553 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2690 "parser.cpp" break; - case 152: // expr_call_thread: "thread" expr_call_pointer -#line 560 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 147: // expr_call: object expr_call_function +#line 554 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2696 "parser.cpp" break; - case 153: // expr_call_thread: object "thread" expr_call_function -#line 561 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 148: // expr_call: object expr_call_pointer +#line 555 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2702 "parser.cpp" break; - case 154: // expr_call_thread: object "thread" expr_call_pointer -#line 562 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 149: // expr_call_thread: "thread" expr_call_function +#line 559 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2708 "parser.cpp" break; - case 155: // expr_call_childthread: "childthread" expr_call_function -#line 566 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 150: // expr_call_thread: "thread" expr_call_pointer +#line 560 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2714 "parser.cpp" break; - case 156: // expr_call_childthread: "childthread" expr_call_pointer -#line 567 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 151: // expr_call_thread: object "thread" expr_call_function +#line 561 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2720 "parser.cpp" break; - case 157: // expr_call_childthread: object "childthread" expr_call_function -#line 568 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 152: // expr_call_thread: object "thread" expr_call_pointer +#line 562 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2726 "parser.cpp" break; - case 158: // expr_call_childthread: object "childthread" expr_call_pointer -#line 569 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 153: // expr_call_childthread: "childthread" expr_call_function +#line 566 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2732 "parser.cpp" break; - case 159: // expr_call_function: name "(" expr_arguments ")" -#line 574 "parser.ypp" - {yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::make_unique(), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 154: // expr_call_childthread: "childthread" expr_call_pointer +#line 567 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2738 "parser.cpp" break; - case 160: // expr_call_function: file "::" name "(" expr_arguments ")" -#line 576 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < file_ptr > ()), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 155: // expr_call_childthread: object "childthread" expr_call_function +#line 568 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2744 "parser.cpp" break; - case 161: // expr_call_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 581 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, false, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 156: // expr_call_childthread: object "childthread" expr_call_pointer +#line 569 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2750 "parser.cpp" break; - case 162: // expr_call_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 583 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, true, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 157: // expr_call_function: name "(" expr_arguments ")" +#line 574 "parser.ypp" + {yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::make_unique(), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2756 "parser.cpp" break; - case 163: // expr_arguments: expr_arguments_filled -#line 587 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } + case 158: // expr_call_function: file "::" name "(" expr_arguments ")" +#line 576 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < file_ptr > ()), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2762 "parser.cpp" break; - case 164: // expr_arguments: expr_arguments_empty -#line 588 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } + case 159: // expr_call_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 581 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, false, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2768 "parser.cpp" break; - case 165: // expr_arguments_filled: expr_arguments_filled "," expr -#line 593 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[2].value.as < expr_arguments_ptr > ()); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } + case 160: // expr_call_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 583 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, true, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2774 "parser.cpp" break; - case 166: // expr_arguments_filled: expr -#line 595 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } + case 161: // expr_arguments: expr_arguments_filled +#line 587 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } #line 2780 "parser.cpp" break; - case 167: // expr_arguments_empty: %empty -#line 600 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); } + case 162: // expr_arguments: expr_arguments_empty +#line 588 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } #line 2786 "parser.cpp" break; - case 168: // expr_function: "::" name -#line 605 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < name_ptr > ())); } + case 163: // expr_arguments_filled: expr_arguments_filled "," expr +#line 593 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[2].value.as < expr_arguments_ptr > ()); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2792 "parser.cpp" break; - case 169: // expr_function: file "::" name -#line 607 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < file_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } + case 164: // expr_arguments_filled: expr +#line 595 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2798 "parser.cpp" break; - case 170: // expr_add_array: "[" expr_arguments_filled "]" -#line 612 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 165: // expr_arguments_empty: %empty +#line 600 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); } #line 2804 "parser.cpp" break; - case 171: // expr_array: object "[" expr "]" -#line 617 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < node_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 166: // expr_function: "::" name +#line 605 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2810 "parser.cpp" break; - case 172: // expr_field: object "." name -#line 622 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } + case 167: // expr_function: file "::" name +#line 607 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < file_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2816 "parser.cpp" break; - case 173: // expr_size: object ".size" -#line 627 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 168: // expr_add_array: "[" expr_arguments_filled "]" +#line 612 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2822 "parser.cpp" break; - case 174: // object: expr_call -#line 631 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 169: // expr_array: object "[" expr "]" +#line 617 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < node_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2828 "parser.cpp" break; - case 175: // object: expr_array -#line 632 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } + case 170: // expr_field: object "." name +#line 622 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2834 "parser.cpp" break; - case 176: // object: expr_field -#line 633 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } + case 171: // expr_size: object ".size" +#line 627 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2840 "parser.cpp" break; - case 177: // object: game -#line 634 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < game_ptr > ()); } + case 172: // object: expr_call +#line 631 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2846 "parser.cpp" break; - case 178: // object: self -#line 635 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < self_ptr > ()); } + case 173: // object: expr_array +#line 632 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2852 "parser.cpp" break; - case 179: // object: anim -#line 636 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < anim_ptr > ()); } + case 174: // object: expr_field +#line 633 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2858 "parser.cpp" break; - case 180: // object: level -#line 637 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < level_ptr > ()); } + case 175: // object: game +#line 634 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < game_ptr > ()); } #line 2864 "parser.cpp" break; - case 181: // object: name -#line 638 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < name_ptr > ()); } + case 176: // object: self +#line 635 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < self_ptr > ()); } #line 2870 "parser.cpp" break; - case 182: // thisthread: "thisthread" -#line 641 "parser.ypp" - { yylhs.value.as < thisthread_ptr > () = std::make_unique(yylhs.location); } + case 177: // object: anim +#line 636 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < anim_ptr > ()); } #line 2876 "parser.cpp" break; - case 183: // empty_array: "[" "]" -#line 642 "parser.ypp" - { yylhs.value.as < empty_array_ptr > () = std::make_unique(yylhs.location); } + case 178: // object: level +#line 637 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < level_ptr > ()); } #line 2882 "parser.cpp" break; - case 184: // undefined: "undefined" -#line 643 "parser.ypp" - { yylhs.value.as < undefined_ptr > () = std::make_unique(yylhs.location); } + case 179: // object: name +#line 638 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < name_ptr > ()); } #line 2888 "parser.cpp" break; - case 185: // game: "game" -#line 644 "parser.ypp" - { yylhs.value.as < game_ptr > () = std::make_unique(yylhs.location); } + case 180: // float: "-" "float" +#line 642 "parser.ypp" + { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 2894 "parser.cpp" break; - case 186: // self: "self" -#line 645 "parser.ypp" - { yylhs.value.as < self_ptr > () = std::make_unique(yylhs.location); } + case 181: // float: "float" +#line 643 "parser.ypp" + { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2900 "parser.cpp" break; - case 187: // anim: "anim" -#line 646 "parser.ypp" - { yylhs.value.as < anim_ptr > () = std::make_unique(yylhs.location); } + case 182: // integer: "-" "int" +#line 647 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 2906 "parser.cpp" break; - case 188: // level: "level" -#line 647 "parser.ypp" - { yylhs.value.as < level_ptr > () = std::make_unique(yylhs.location); } + case 183: // integer: "int" +#line 648 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2912 "parser.cpp" break; - case 189: // animation: "%" "identifier" -#line 648 "parser.ypp" - { yylhs.value.as < animation_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 184: // integer: "octal int" +#line 649 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2918 "parser.cpp" break; - case 190: // animtree: "#animtree" -#line 649 "parser.ypp" - { yylhs.value.as < animtree_ptr > () = std::make_unique(yylhs.location); } + case 185: // integer: "binary int" +#line 650 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2924 "parser.cpp" break; - case 191: // name: "identifier" -#line 650 "parser.ypp" - { yylhs.value.as < name_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 186: // integer: "hexadecimal int" +#line 651 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2930 "parser.cpp" break; - case 192: // file: "file path" -#line 651 "parser.ypp" - { yylhs.value.as < file_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 187: // thisthread: "thisthread" +#line 654 "parser.ypp" + { yylhs.value.as < thisthread_ptr > () = std::make_unique(yylhs.location); } #line 2936 "parser.cpp" break; - case 193: // istring: "localized string" -#line 652 "parser.ypp" - { yylhs.value.as < istring_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 188: // empty_array: "[" "]" +#line 655 "parser.ypp" + { yylhs.value.as < empty_array_ptr > () = std::make_unique(yylhs.location); } #line 2942 "parser.cpp" break; - case 194: // string: "string literal" -#line 653 "parser.ypp" - { yylhs.value.as < string_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 189: // undefined: "undefined" +#line 656 "parser.ypp" + { yylhs.value.as < undefined_ptr > () = std::make_unique(yylhs.location); } #line 2948 "parser.cpp" break; - case 195: // vector: "(" expr "," expr "," expr ")" -#line 654 "parser.ypp" - { yylhs.value.as < vector_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[3].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 190: // game: "game" +#line 657 "parser.ypp" + { yylhs.value.as < game_ptr > () = std::make_unique(yylhs.location); } #line 2954 "parser.cpp" break; - case 196: // neg_float: "-" "float" -#line 655 "parser.ypp" - { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 191: // self: "self" +#line 658 "parser.ypp" + { yylhs.value.as < self_ptr > () = std::make_unique(yylhs.location); } #line 2960 "parser.cpp" break; - case 197: // neg_integer: "-" "int" -#line 656 "parser.ypp" - { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 192: // anim: "anim" +#line 659 "parser.ypp" + { yylhs.value.as < anim_ptr > () = std::make_unique(yylhs.location); } #line 2966 "parser.cpp" break; - case 198: // float: "float" -#line 657 "parser.ypp" - { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 193: // level: "level" +#line 660 "parser.ypp" + { yylhs.value.as < level_ptr > () = std::make_unique(yylhs.location); } #line 2972 "parser.cpp" break; - case 199: // integer: "int" -#line 658 "parser.ypp" - { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 194: // animation: "%" "identifier" +#line 661 "parser.ypp" + { yylhs.value.as < animation_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2978 "parser.cpp" break; - case 200: // false: "false" -#line 659 "parser.ypp" - { yylhs.value.as < false_ptr > () = std::make_unique(yylhs.location); } + case 195: // animtree: "#animtree" +#line 662 "parser.ypp" + { yylhs.value.as < animtree_ptr > () = std::make_unique(yylhs.location); } #line 2984 "parser.cpp" break; - case 201: // true: "true" -#line 660 "parser.ypp" - { yylhs.value.as < true_ptr > () = std::make_unique(yylhs.location); } + case 196: // name: "identifier" +#line 663 "parser.ypp" + { yylhs.value.as < name_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2990 "parser.cpp" break; + case 197: // file: "file path" +#line 664 "parser.ypp" + { yylhs.value.as < file_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2996 "parser.cpp" + break; -#line 2994 "parser.cpp" + case 198: // istring: "localized string" +#line 665 "parser.ypp" + { yylhs.value.as < istring_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3002 "parser.cpp" + break; + + case 199: // string: "string literal" +#line 666 "parser.ypp" + { yylhs.value.as < string_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3008 "parser.cpp" + break; + + case 200: // color: "color" +#line 667 "parser.ypp" + { yylhs.value.as < color_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3014 "parser.cpp" + break; + + case 201: // vector: "(" expr "," expr "," expr ")" +#line 668 "parser.ypp" + { yylhs.value.as < vector_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[3].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } +#line 3020 "parser.cpp" + break; + + case 202: // false: "false" +#line 669 "parser.ypp" + { yylhs.value.as < false_ptr > () = std::make_unique(yylhs.location); } +#line 3026 "parser.cpp" + break; + + case 203: // true: "true" +#line 670 "parser.ypp" + { yylhs.value.as < true_ptr > () = std::make_unique(yylhs.location); } +#line 3032 "parser.cpp" + break; + + +#line 3036 "parser.cpp" default: break; @@ -3184,25 +3226,25 @@ namespace xsk { namespace gsc { namespace iw5 { "++", "--", "<<", ">>", "||", "&&", "==", "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", "%", "file path", "identifier", - "string literal", "localized string", "float", "int", "ADD_ARRAY", - "THEN", "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", - "POSTDEC", "$accept", "root", "program", "include", "define", - "usingtree", "constant", "thread", "parameters", "stmt", "stmt_block", - "stmt_list", "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", - "stmt_wait", "stmt_waittill", "stmt_waittillmatch", - "stmt_waittillframeend", "stmt_if", "stmt_ifelse", "stmt_while", - "stmt_for", "stmt_foreach", "stmt_switch", "stmt_case", "stmt_default", - "stmt_break", "stmt_continue", "stmt_return", "stmt_breakpoint", - "stmt_prof_begin", "stmt_prof_end", "for_stmt", "for_expr", "expr", - "expr_assign", "expr_compare", "expr_ternary", "expr_binary", - "expr_primitive", "expr_call", "expr_call_thread", - "expr_call_childthread", "expr_call_function", "expr_call_pointer", - "expr_arguments", "expr_arguments_filled", "expr_arguments_empty", - "expr_function", "expr_add_array", "expr_array", "expr_field", - "expr_size", "object", "thisthread", "empty_array", "undefined", "game", + "string literal", "localized string", "color", "float", "int", + "octal int", "binary int", "hexadecimal int", "ADD_ARRAY", "THEN", + "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", + "$accept", "root", "program", "include", "define", "usingtree", + "constant", "thread", "parameters", "stmt", "stmt_block", "stmt_list", + "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", "stmt_wait", + "stmt_waittill", "stmt_waittillmatch", "stmt_waittillframeend", + "stmt_if", "stmt_ifelse", "stmt_while", "stmt_for", "stmt_foreach", + "stmt_switch", "stmt_case", "stmt_default", "stmt_break", + "stmt_continue", "stmt_return", "stmt_breakpoint", "stmt_prof_begin", + "stmt_prof_end", "for_stmt", "for_expr", "expr", "expr_assign", + "expr_compare", "expr_ternary", "expr_binary", "expr_primitive", + "expr_call", "expr_call_thread", "expr_call_childthread", + "expr_call_function", "expr_call_pointer", "expr_arguments", + "expr_arguments_filled", "expr_arguments_empty", "expr_function", + "expr_add_array", "expr_array", "expr_field", "expr_size", "object", + "float", "integer", "thisthread", "empty_array", "undefined", "game", "self", "anim", "level", "animation", "animtree", "name", "file", - "istring", "string", "vector", "neg_float", "neg_integer", "float", - "integer", "false", "true", YY_NULLPTR + "istring", "string", "color", "vector", "false", "true", YY_NULLPTR }; return yy_sname[yysymbol]; } @@ -3467,579 +3509,566 @@ namespace xsk { namespace gsc { namespace iw5 { } - const short parser::yypact_ninf_ = -237; + const short parser::yypact_ninf_ = -240; - const short parser::yytable_ninf_ = -182; + const short parser::yytable_ninf_ = -180; const short parser::yypact_[] = { - 7, -62, -15, -237, 36, 7, -237, -237, -237, -237, - -237, -6, -237, -5, -48, -237, -237, -237, -36, 821, - -237, -237, 11, -10, -237, -237, -14, -14, -237, 20, - -237, -237, -237, -237, -237, -237, -237, 821, 695, -36, - 821, 821, -68, -27, -237, -237, -237, 1613, -237, -237, - -237, -237, 377, -237, -237, -237, -237, -237, -237, 401, - 438, -237, 469, -237, -237, -237, 718, 781, 789, 848, - -237, -237, 18, 19, -237, -237, -237, -237, -237, -237, - -237, -237, -237, 16, 32, -36, 33, -237, -237, 42, - 28, -237, -237, 39, 1013, 695, -237, 1696, -4, -237, - -237, -237, -237, -237, -237, -237, 821, 821, 821, 821, - 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, - 821, 821, 821, 821, 821, -14, -14, -237, 884, -36, - -237, -237, 821, -36, -237, 579, -237, -237, 821, -36, - 821, -237, 821, 1423, -237, 821, 1578, 29, 29, 1727, - 1737, 476, 476, 15, 15, 15, 15, 1768, 1809, 1778, - -28, -28, -237, -237, -237, -237, -237, -237, -237, 1463, - -237, 44, 46, -237, 47, 38, 54, 60, 821, 56, - 75, 76, 77, 82, 84, -61, 69, 79, 87, 758, - -237, 171, 171, -237, -237, 624, -237, -237, -237, -237, - -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, - -237, -237, -237, -237, -237, -237, -237, -237, 88, 89, - 92, -237, -237, 931, -237, -237, -237, -237, 42, 1423, - 47, 1503, 1542, 80, 1696, 821, -237, -237, 821, -237, - 821, 821, 1648, -237, 821, 821, 496, -36, 821, 53, - 114, 115, 116, -237, -237, -237, -237, 1683, -237, 4, - 4, -237, -237, -237, -237, -237, 127, 128, 129, 132, - -237, -237, 821, 821, 821, 821, 821, 821, 821, 821, - 821, 821, 821, 83, 821, 133, 1696, 138, 140, 141, - -237, 1179, 1213, 134, -237, 977, -3, 1247, -237, -237, - -237, -237, 821, 821, 821, 821, 1696, 1696, 1696, 1696, - 1696, 1696, 1696, 1696, 1696, 1696, 1696, 145, 1281, 821, - -237, 136, 137, 669, 669, 821, 821, -36, 32, 1315, - 1057, 1101, 1145, 821, -237, 147, -237, -237, 174, -237, - 144, 1696, 1349, 179, -237, 153, 156, 821, 161, 821, - 167, 821, 163, -237, 669, 496, 669, 821, -237, -237, - 177, -237, 178, -237, 180, -237, -237, 182, -237, 1383, - 176, 181, 196, 669, 669, -237, -237, -237, -237, -237 + 10, -73, -26, -240, 25, 10, -240, -240, -240, -240, + -240, -20, -240, -27, -58, -240, -240, -240, -55, 613, + -240, -240, -7, -16, -240, -240, 22, 22, -240, -3, + -240, -240, -240, -240, -240, -240, -240, 613, 475, -55, + 613, 613, -17, -36, -240, -240, -240, -240, -240, -240, + -240, 1534, -240, -240, -240, -240, 8, -240, -240, -240, + -240, -240, -240, 56, 253, -240, 452, -240, -240, -240, + -240, -240, 569, 574, 636, 641, -240, -240, 16, 6, + -240, -240, -240, -240, -240, -240, 9, 38, -55, 39, + -240, -240, 42, 47, -240, -240, 46, 874, 475, -240, + 1617, 67, -240, -240, -240, -240, -240, -240, -240, 613, + 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, + 613, 613, 613, 613, 613, 613, 613, 613, 22, 22, + -240, 680, -55, -240, -240, 613, -55, -240, 771, -240, + -240, 613, -55, 613, -240, 613, 1344, -240, 613, 1499, + 317, 317, 1648, 1658, 1730, 1730, 358, 358, 358, 358, + 1689, 348, 1699, 15, 15, -240, -240, -240, -240, -240, + -240, -240, 1384, -240, 45, 63, -240, 74, 69, 77, + 81, 613, 73, 85, 86, 87, 88, 91, -23, 83, + 90, 96, 546, -240, 174, 174, -240, -240, 816, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, 116, 117, 120, -240, -240, 896, -240, -240, -240, + -240, 42, 1344, 74, 1424, 1463, 93, 1617, 613, -240, + -240, 613, -240, 613, 613, 1569, -240, 613, 613, 694, + -55, 613, 54, 124, 125, -240, -240, -240, -240, 1604, + -240, -9, -9, -240, -240, -240, -240, -240, 136, 137, + 138, 140, -240, -240, 613, 613, 613, 613, 613, 613, + 613, 613, 613, 613, 613, 142, 613, 145, 1617, 141, + 147, 148, -240, 1100, 1134, 143, -240, 942, 3, 1168, + -240, -240, -240, 613, 613, 613, 613, 1617, 1617, 1617, + 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 150, 1202, + 613, -240, 144, 153, 861, 861, 613, 613, -55, 38, + 1236, 978, 1022, 1066, 613, -240, 157, -240, -240, 189, + -240, 159, 1617, 1270, 186, -240, 166, 167, 613, 170, + 613, 171, 613, 184, -240, 861, 694, 861, 613, -240, + -240, 188, -240, 190, -240, 192, -240, -240, 194, -240, + 1304, 198, 202, 206, 861, 861, -240, -240, -240, -240, + -240 }; const unsigned char parser::yydefact_[] = { - 3, 0, 0, 191, 0, 2, 6, 7, 9, 10, - 11, 0, 192, 0, 0, 1, 4, 5, 17, 0, - 8, 194, 0, 0, 16, 190, 0, 0, 182, 0, - 201, 200, 184, 185, 186, 187, 188, 0, 0, 0, - 0, 0, 0, 0, 193, 198, 199, 0, 79, 80, - 81, 82, 120, 121, 122, 147, 148, 123, 124, 125, - 126, 127, 0, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 0, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 0, 0, 0, 0, 151, 152, 0, - 0, 155, 156, 0, 0, 0, 183, 166, 0, 168, - 119, 118, 196, 197, 189, 13, 0, 0, 0, 0, + 3, 0, 0, 196, 0, 2, 6, 7, 9, 10, + 11, 0, 197, 0, 0, 1, 4, 5, 17, 0, + 8, 199, 0, 0, 16, 195, 0, 0, 187, 0, + 203, 202, 189, 190, 191, 192, 193, 0, 0, 0, + 0, 0, 0, 0, 198, 200, 181, 183, 184, 185, + 186, 0, 78, 79, 80, 81, 119, 120, 121, 145, + 146, 122, 123, 124, 125, 126, 0, 141, 142, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 0, + 137, 138, 139, 140, 143, 144, 0, 0, 0, 0, + 149, 150, 0, 0, 153, 154, 0, 0, 0, 188, + 164, 0, 166, 118, 117, 180, 182, 194, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 173, 0, 0, - 149, 150, 167, 0, 12, 0, 14, 15, 0, 0, - 0, 117, 0, 166, 170, 0, 0, 110, 111, 98, - 99, 100, 101, 102, 103, 104, 105, 107, 108, 109, - 112, 113, 114, 115, 116, 153, 154, 157, 158, 0, - 172, 0, 163, 164, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 42, 0, 0, 44, 18, 0, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 0, 174, - 0, 175, 176, 0, 177, 178, 179, 180, 181, 0, - 0, 0, 0, 0, 165, 0, 171, 159, 167, 72, - 167, 167, 0, 56, 0, 0, 76, 0, 0, 0, - 0, 0, 0, 67, 68, 69, 71, 0, 174, 83, - 84, 41, 43, 47, 45, 46, 0, 0, 0, 0, - 85, 86, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, - 51, 0, 0, 0, 75, 0, 0, 0, 66, 65, - 64, 70, 0, 0, 0, 0, 87, 93, 94, 95, - 96, 97, 88, 89, 90, 92, 91, 0, 0, 167, - 160, 0, 0, 0, 0, 78, 0, 0, 0, 0, - 0, 0, 0, 167, 195, 0, 73, 74, 57, 59, - 0, 77, 0, 0, 63, 0, 0, 167, 0, 167, - 0, 167, 0, 161, 0, 76, 0, 0, 48, 50, - 0, 53, 0, 55, 0, 162, 58, 0, 61, 0, - 0, 0, 0, 0, 0, 49, 52, 54, 60, 62 + 171, 0, 0, 147, 148, 165, 0, 12, 0, 14, + 15, 0, 0, 0, 116, 0, 164, 168, 0, 0, + 109, 110, 97, 98, 99, 100, 101, 102, 103, 104, + 106, 107, 108, 111, 112, 113, 114, 115, 151, 152, + 155, 156, 0, 170, 0, 161, 162, 167, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 42, 0, 0, 44, 18, 0, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 0, 172, 0, 173, 174, 0, 175, 176, 177, + 178, 179, 0, 0, 0, 0, 0, 163, 0, 169, + 157, 165, 71, 165, 165, 0, 56, 0, 0, 75, + 0, 0, 0, 0, 0, 66, 67, 68, 70, 0, + 172, 82, 83, 41, 43, 47, 45, 46, 0, 0, + 0, 0, 84, 85, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, + 0, 0, 51, 0, 0, 0, 74, 0, 0, 0, + 64, 65, 69, 0, 0, 0, 0, 86, 92, 93, + 94, 95, 96, 87, 88, 89, 91, 90, 0, 0, + 165, 158, 0, 0, 0, 0, 77, 0, 0, 0, + 0, 0, 0, 0, 165, 201, 0, 72, 73, 57, + 59, 0, 76, 0, 0, 63, 0, 0, 165, 0, + 165, 0, 165, 0, 159, 0, 75, 0, 0, 48, + 50, 0, 53, 0, 55, 0, 160, 58, 0, 61, + 0, 0, 0, 0, 0, 0, 49, 52, 54, 60, + 62 }; const short parser::yypgoto_[] = { - -237, -237, -237, 189, 222, -237, -237, -237, -237, -135, - -80, -237, -237, -237, -237, -237, -237, -237, -237, -237, - -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, - -237, -237, -237, -237, -126, -237, 37, -236, -237, -237, - -237, -237, -112, 78, -237, -25, -19, -229, -23, -237, - -237, -237, -22, 41, -237, 102, -237, -237, -237, 154, - 190, 195, 218, -237, -237, 0, 5, -237, -11, -237, - -237, 64, -237, 65, -237, -237 + -240, -240, -240, 230, 234, -240, -240, -240, -240, -111, + -84, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -99, -240, 37, -239, -240, -240, + -240, -240, -134, 29, -240, -25, -19, -229, -18, -240, + -240, -240, -24, 58, -240, 95, -240, 72, -240, -240, + -240, 100, 110, 172, 196, -240, -240, 0, 5, -240, + -5, -240, -240, -240, -240 }; const short parser::yydefgoto_[] = { - 0, 4, 5, 6, 7, 8, 9, 10, 23, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 293, 340, 97, 218, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 171, 172, 173, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82 + 0, 4, 5, 6, 7, 8, 9, 10, 23, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 295, 341, 100, 221, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 174, 175, 176, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85 }; const short parser::yytable_[] = { - 11, 87, 91, 22, 136, 11, 13, 88, 92, 287, - 294, 288, 289, 1, 2, 98, 29, 326, 24, 249, - 102, 103, 12, 219, 14, 21, 89, 89, 46, 86, - 84, 90, 90, 18, 29, 85, 15, 130, 21, 99, - 144, 145, 327, 131, 20, -181, -181, 128, -181, 3, - 129, 83, -181, 122, 123, 124, 47, 132, 104, 19, - 262, -181, 89, 93, -181, 134, 133, 90, 107, 108, - 12, 3, 98, 135, 94, 139, 138, 100, 101, 258, - 258, 132, 140, 219, 237, 137, 238, 239, 12, 3, - 335, 145, 3, 240, 120, 121, 122, 123, 124, 241, - 165, 167, -181, -181, 352, 243, 166, 168, 120, 121, - 122, 123, 124, 221, 244, 245, 246, 253, 360, 294, - 362, 247, 364, 248, 285, 89, 89, 317, 254, 170, - 90, 90, 143, 174, 258, 228, 255, 263, 264, 230, - 90, 265, 103, 146, 147, 148, 149, 150, 151, 152, + 11, 90, 94, 139, 222, 11, 13, 91, 95, 22, + 296, 12, 289, 14, 290, 291, 1, 2, 24, 18, + 101, 29, 20, 327, 87, 15, 92, 92, 21, 88, + 3, 93, 93, 86, 131, -172, -172, 132, -172, 102, + 96, 133, -172, -179, -179, 19, -179, 134, 328, 107, + -179, -172, 29, 136, -172, 135, 51, 252, 137, -179, + 260, 260, -179, 21, 222, 89, 92, 47, 48, 49, + 50, 93, 105, 106, 97, 12, 3, 103, 104, 138, + 101, 135, 141, -173, -173, 240, -173, 264, 140, 143, + -173, 336, -172, -172, 142, 3, 125, 126, 127, -173, + -179, -179, -173, 168, 170, 353, 12, 3, 148, 169, + 171, 147, 148, 241, 224, 260, 243, 296, 242, 361, + 244, 363, 246, 365, 247, 248, 249, 250, 92, 92, + 251, 255, 173, 93, 93, 146, 177, 287, 231, 256, + -173, -173, 233, 93, 106, 257, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 298, 299, 300, 169, 302, 303, 304, 221, - 221, 305, 319, 221, 250, 229, 222, 231, 320, 232, - 321, 322, 234, 325, 333, 336, 337, 353, 338, 339, - 354, 228, 228, 355, 16, 228, 90, 90, 130, 357, - 90, 29, 358, 365, 131, 359, 33, 34, 35, 36, - 361, 219, 219, 220, 86, 242, 363, 370, 371, 366, - 372, 368, 373, 89, 221, 375, 257, 17, 90, 367, - 376, 0, 222, 222, 130, 130, 222, 223, 378, 379, - 131, 131, 219, 258, 219, 377, 228, 296, 344, 251, - 252, 90, 0, 0, 0, 12, 3, 0, 0, 89, - 89, 219, 219, 0, 90, 90, 0, 0, 0, 0, - 130, 0, 286, 220, 0, 0, 131, 0, 0, 0, - 0, 291, 292, 0, 0, 297, 0, 222, 0, 224, - 0, 0, 0, 259, 260, 89, 0, 223, 0, 0, - 90, 221, 221, 0, 0, 0, 0, 0, 0, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 0, 318, 0, 228, 228, 225, 0, 343, 90, 90, - 226, 0, 221, 221, 221, 0, 0, 0, 0, 329, - 330, 331, 332, 0, 0, 224, 224, 0, 295, 224, - 0, 221, 221, 227, 228, 228, 228, 0, 0, 90, - 90, 90, 341, 342, 222, 222, 0, 0, 0, 0, - 0, 0, 0, 228, 228, 0, 0, 0, 90, 90, - 0, 225, 225, 0, 0, 225, 226, 226, 0, 0, - 226, 0, 0, 0, 369, 222, 222, 222, 0, 0, - 224, 220, 220, 0, -174, -174, 0, -174, 0, 227, - 227, -174, 0, 227, 222, 222, 0, 0, 0, 0, - -174, 0, 0, -174, 0, 223, 223, 0, -175, -175, - 0, -175, 220, 0, 220, -175, 225, 0, 0, 0, - 0, 226, 0, 0, -175, 0, 0, -175, 0, 0, - 0, 220, 220, 0, 0, 0, 223, 295, 223, 0, - 0, -174, -174, 0, 227, -176, -176, 0, -176, 0, - 0, 0, -176, 0, 0, 223, 223, 224, 224, 0, - 0, -176, 0, 0, -176, -175, -175, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 125, 126, 0, 29, - 0, 0, 0, 127, 0, 0, 0, 0, 224, 224, - 224, 0, 128, 225, 225, 129, 0, 0, 226, 226, - 0, 0, -176, -176, 0, 0, 29, 224, 224, 107, - 108, 33, 34, 35, 36, 113, 114, 115, 116, 86, - 0, 227, 227, 0, 225, 225, 225, 191, 192, 226, - 226, 226, 0, 12, 3, 120, 121, 122, 123, 124, - 0, 0, 0, 225, 225, 0, 0, 0, 226, 226, - 0, 0, 227, 227, 227, 0, 0, 0, 0, 0, - 12, 3, 175, 176, 177, 0, 0, 0, 0, 0, - 178, 227, 227, 179, 180, 0, 181, 182, 183, 0, - 184, 185, 186, 187, 188, 189, 26, 0, 0, 29, - 0, 0, 0, 0, 33, 34, 35, 36, 0, 0, - 135, 190, 86, 0, 0, 0, 0, 175, 176, 177, - 191, 192, 0, 0, 0, 178, 0, 0, 179, 180, - 0, 181, 182, 183, 0, 184, 185, 186, 187, 188, - 189, 26, 0, 0, 29, 0, 0, 0, 0, 33, - 34, 35, 36, 12, 3, 135, 261, 86, 0, 0, - 0, 0, 175, 176, 177, 191, 192, 0, 0, 0, - 178, 0, 0, 179, 180, 0, 181, 182, 183, 0, - 184, 185, 186, 187, 188, 189, 26, 0, 0, 29, - 0, 0, 0, 25, 33, 34, 35, 36, 12, 3, - 135, 0, 86, 0, 0, 0, 0, 0, 0, 0, - 191, 192, 26, 27, 28, 29, 30, 31, 32, 0, - 33, 34, 35, 36, 37, 0, 0, 0, 95, 96, - 0, 0, 39, 0, 0, -177, -177, 0, -177, 0, - 0, 0, -177, 12, 3, 0, 0, 0, 40, 41, - 0, -177, 0, 0, -177, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 42, 0, 0, 43, 12, - 3, 21, 44, 45, 46, 26, 27, 28, 29, 30, - 31, 32, 0, 33, 34, 35, 36, 37, 0, 0, - 0, 38, -177, -177, 0, 39, 0, 256, -178, -178, - 0, -178, 0, 0, 0, -178, -179, -179, 0, -179, - 0, 40, 41, -179, -178, 0, 0, -178, 0, 25, - 0, 0, -179, 0, 0, -179, 0, 0, 42, 0, - 0, 43, 12, 3, 21, 44, 45, 46, 26, 27, - 28, 29, 30, 31, 32, 0, 33, 34, 35, 36, - 37, 0, 0, 0, 38, -178, -178, 0, 39, 0, - 0, 0, 0, -179, -179, -180, -180, 0, -180, 0, - 0, 0, -180, 0, 40, 41, 0, 0, 0, 0, - 0, -180, 25, 0, -180, 0, 0, 0, 0, 0, - 0, 42, 0, 0, 43, 12, 3, 21, 44, 45, - 46, 26, 27, 28, 29, 30, 31, 32, 0, 33, - 34, 35, 36, 37, 0, 0, 0, 95, 0, 0, - 0, 39, -180, -180, 0, 0, 0, 0, 0, 0, - 266, 267, 0, 268, 269, 0, 0, 40, 41, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 125, 0, - 0, 29, 0, 0, 42, 0, 0, 43, 12, 3, - 21, 44, 45, 46, 128, 0, 0, 129, 0, 0, - 0, 0, 270, 271, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 29, 0, 0, - 0, 0, 0, 0, 0, 12, 3, 0, 0, 0, - 128, 0, 0, 129, 0, 0, 0, 0, 270, 271, + 163, 164, 165, 166, 167, 265, 266, 223, 172, 267, + 224, 224, 300, 301, 224, 303, 304, 305, 232, 306, + 234, 321, 235, 254, 320, 237, 318, 322, 323, 334, + 222, 222, 326, 337, 231, 231, 225, 354, 231, 93, + 93, 133, 338, 93, 29, 355, 358, 134, 356, 33, + 34, 35, 36, 339, 340, 359, 360, 89, 245, 362, + 364, 222, 260, 222, 366, 224, 92, 223, 371, 259, + 372, 93, 373, 226, 374, 16, 133, 133, 227, 17, + 222, 222, 134, 134, 367, 345, 369, 376, 228, 231, + 298, 377, 225, 225, 93, 378, 225, 368, 12, 3, + 253, 92, 92, 379, 380, 0, 93, 93, 0, 0, + 0, 0, 133, 0, 0, 288, 0, 0, 134, 0, + -174, -174, 0, -174, 293, 294, 0, -174, 299, 261, + 262, 0, 0, 226, 227, 227, -174, 92, 227, -174, + 224, 224, 93, 0, 228, 228, 0, 225, 228, 0, + 229, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 0, 319, 231, 231, 0, 0, 344, 93, + 93, 224, 224, 224, 230, 0, 0, -174, -174, 0, + 330, 331, 332, 333, 297, 0, 0, 0, 0, 227, + 224, 224, 0, 223, 223, 231, 231, 231, 0, 228, + 93, 93, 93, 342, 343, 0, 229, 229, 0, 0, + 229, 0, 0, 0, 231, 231, 0, 0, 0, 93, + 93, 0, 225, 225, 223, 0, 223, 0, 0, 0, + 230, 230, 0, 0, 230, 370, 123, 124, 125, 126, + 127, 110, 111, 223, 223, 114, 115, 116, 117, 118, + 119, 110, 111, 225, 225, 225, 0, 0, 0, 226, + 226, 229, 0, 0, 227, 227, 0, 123, 124, 125, + 126, 127, 225, 225, 228, 228, 0, 123, 124, 125, + 126, 127, 0, 0, 0, 230, 0, 0, 0, 0, + 226, 297, 226, 0, 0, 227, 227, 227, 0, 0, + 0, 0, 0, 0, 0, 228, 228, 228, 0, 226, + 226, 0, 0, 0, 227, 227, 0, 0, 0, 128, + 129, 0, 29, 25, 228, 228, 130, 0, 0, 0, + 0, 0, 0, 0, 0, 131, 229, 229, 132, 0, + 0, 0, 26, 27, 28, 29, 30, 31, 32, 0, + 33, 34, 35, 36, 37, 0, 0, 0, 98, 99, + 230, 230, 39, 0, 0, 0, 0, 229, 229, 229, + 0, 0, 0, 0, 0, 0, 12, 3, 40, 41, + 0, 0, 0, 0, 0, 0, 229, 229, 0, 0, + 0, 230, 230, 230, 25, 42, 0, 0, 43, 12, + 3, 21, 44, 45, 46, 47, 48, 49, 50, 0, + 230, 230, 0, 26, 27, 28, 29, 30, 31, 32, + 0, 33, 34, 35, 36, 37, 0, 0, 0, 38, + 0, 0, 0, 39, 0, 258, -175, -175, 0, -175, + 0, -176, -176, -175, -176, 0, 0, 0, -176, 40, + 41, 0, -175, 0, 0, -175, 0, -176, 0, 0, + -176, 25, 0, 0, 0, 0, 42, 0, 0, 43, + 12, 3, 21, 44, 45, 46, 47, 48, 49, 50, + 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, + 35, 36, 37, -175, -175, 0, 38, 0, -176, -176, + 39, 0, 0, -177, -177, 0, -177, 0, -178, -178, + -177, -178, 0, 0, 0, -178, 40, 41, 0, -177, + 0, 0, -177, 0, -178, 0, 0, -178, 25, 0, + 0, 0, 0, 42, 0, 0, 43, 12, 3, 21, + 44, 45, 46, 47, 48, 49, 50, 26, 27, 28, + 29, 30, 31, 32, 0, 33, 34, 35, 36, 37, + -177, -177, 0, 98, 29, -178, -178, 39, 0, 33, + 34, 35, 36, 0, 0, 0, 0, 89, 0, 0, + 0, 0, 0, 40, 41, 194, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 141, 0, 0, 0, 0, 142, 0, - 0, 12, 3, 106, 0, 0, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 346, 0, 0, - 0, 0, 347, 0, 0, 0, 0, 106, 0, 0, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 348, 0, 0, 0, 0, 349, 0, 0, 0, - 0, 106, 0, 0, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, - 120, 121, 122, 123, 124, 350, 0, 0, 0, 0, - 351, 0, 0, 0, 0, 106, 0, 0, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 323, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 106, - 0, 0, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 324, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 106, 0, 0, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 328, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 106, 0, 0, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 334, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 106, 0, 0, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 345, 0, 117, 118, 119, - 120, 121, 122, 123, 124, 106, 0, 0, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 356, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 106, - 0, 0, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 374, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 106, 0, 0, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 233, 0, 0, - 0, 0, 0, 106, 0, 0, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 236, 0, 0, - 0, 0, 0, 106, 0, 0, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 283, 0, 0, - 0, 0, 0, 106, 0, 0, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 284, 0, 0, - 0, 0, 106, 0, 0, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, - 119, 120, 121, 122, 123, 124, 235, 0, 106, 0, - 0, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 117, 118, 119, 120, 121, 122, - 123, 124, 105, 106, 0, 0, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 290, 106, 0, - 0, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 117, 118, 119, 120, 121, 122, - 123, 124, 301, 106, 0, 0, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 106, 0, 0, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 0, 0, 0, - 0, 0, 117, 118, 119, 120, 121, 122, 123, 124, - 107, 108, 0, 110, 111, 112, 113, 114, 115, 116, - 107, 108, 0, 0, 111, 112, 113, 114, 115, 116, - 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 107, 108, 0, 0, 111, 112, 113, 114, 115, - 116, 107, 108, 0, 0, 111, 112, 113, 114, 115, - 116, 0, 0, 0, 0, 118, 119, 120, 121, 122, - 123, 124, 0, 0, 0, 118, 0, 120, 121, 122, - 123, 124, 107, 108, 0, 0, 111, 112, 113, 114, - 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, + 42, 0, 0, 43, 12, 3, 21, 44, 45, 46, + 47, 48, 49, 50, 178, 179, 180, 0, 12, 3, + 0, 0, 181, 0, 0, 182, 183, 0, 184, 185, + 186, 0, 187, 188, 189, 190, 191, 192, 26, 0, + 0, 29, 0, 0, 0, 0, 33, 34, 35, 36, + 0, 0, 138, 193, 89, 0, 0, 0, 0, 178, + 179, 180, 194, 195, 0, 0, 0, 181, 0, 0, + 182, 183, 0, 184, 185, 186, 0, 187, 188, 189, + 190, 191, 192, 26, 0, 0, 29, 0, 0, 0, + 0, 33, 34, 35, 36, 12, 3, 138, 263, 89, + 0, 0, 0, 0, 178, 179, 180, 194, 195, 0, + 0, 0, 181, 0, 0, 182, 183, 0, 184, 185, + 186, 0, 187, 188, 189, 190, 191, 192, 26, 0, + 0, 29, 0, 0, 0, 0, 33, 34, 35, 36, + 12, 3, 138, 0, 89, 268, 269, 0, 270, 271, + 0, 0, 194, 195, 144, 0, 0, 0, 0, 145, + 0, 0, 0, 128, 109, 0, 29, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 0, 0, 131, + 0, 0, 132, 0, 0, 12, 3, 272, 273, 0, + 120, 121, 122, 123, 124, 125, 126, 127, 0, 0, + 0, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 29, 0, 0, 0, 0, 0, 0, 0, + 12, 3, 0, 0, 0, 131, 0, 0, 132, 0, + 0, 0, 0, 272, 273, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 347, 0, + 0, 0, 0, 348, 0, 0, 12, 3, 109, 0, + 0, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 120, 121, 122, 123, 124, 125, + 126, 127, 349, 0, 0, 0, 0, 350, 0, 0, + 0, 0, 109, 0, 0, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 121, - 122, 123, 124 + 122, 123, 124, 125, 126, 127, 351, 0, 0, 0, + 0, 352, 0, 0, 0, 0, 109, 0, 0, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 324, 0, 120, 121, 122, 123, 124, 125, 126, 127, + 109, 0, 0, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 325, 0, 120, 121, 122, 123, + 124, 125, 126, 127, 109, 0, 0, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 329, 0, + 120, 121, 122, 123, 124, 125, 126, 127, 109, 0, + 0, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 335, 0, 120, 121, 122, 123, 124, 125, + 126, 127, 109, 0, 0, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 346, 0, 120, 121, + 122, 123, 124, 125, 126, 127, 109, 0, 0, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 357, 0, 120, 121, 122, 123, 124, 125, 126, 127, + 109, 0, 0, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 375, 0, 120, 121, 122, 123, + 124, 125, 126, 127, 109, 0, 0, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 120, 121, 122, 123, 124, 125, 126, 127, 236, 0, + 0, 0, 0, 0, 109, 0, 0, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 120, 121, 122, 123, 124, 125, 126, 127, 239, 0, + 0, 0, 0, 0, 109, 0, 0, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 120, 121, 122, 123, 124, 125, 126, 127, 285, 0, + 0, 0, 0, 0, 109, 0, 0, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 120, 121, 122, 123, 124, 125, 126, 127, 286, 0, + 0, 0, 0, 109, 0, 0, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, + 121, 122, 123, 124, 125, 126, 127, 238, 0, 109, + 0, 0, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 120, 121, 122, 123, 124, + 125, 126, 127, 108, 109, 0, 0, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 120, 121, 122, 123, 124, 125, 126, 127, 292, 109, + 0, 0, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 120, 121, 122, 123, 124, + 125, 126, 127, 302, 109, 0, 0, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 109, 0, 0, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 0, 0, + 0, 0, 0, 120, 121, 122, 123, 124, 125, 126, + 127, 110, 111, 0, 113, 114, 115, 116, 117, 118, + 119, 110, 111, 0, 0, 114, 115, 116, 117, 118, + 119, 0, 0, 0, 120, 121, 122, 123, 124, 125, + 126, 127, 0, 0, 120, 121, 122, 123, 124, 125, + 126, 127, 110, 111, 0, 0, 114, 115, 116, 117, + 118, 119, 110, 111, 0, 0, 114, 115, 116, 117, + 118, 119, 0, 0, 0, 0, 121, 122, 123, 124, + 125, 126, 127, 0, 0, 0, 121, 0, 123, 124, + 125, 126, 127, 110, 111, 0, 0, 0, 0, 116, + 117, 118, 119, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 123, + 124, 125, 126, 127 }; const short parser::yycheck_[] = { - 0, 26, 27, 14, 84, 5, 1, 26, 27, 238, - 246, 240, 241, 6, 7, 38, 30, 20, 18, 80, - 88, 89, 84, 135, 39, 86, 26, 27, 89, 43, - 40, 26, 27, 39, 30, 45, 0, 62, 86, 39, - 44, 45, 45, 62, 49, 27, 28, 43, 30, 85, - 46, 40, 34, 81, 82, 83, 19, 39, 85, 65, - 195, 43, 62, 43, 46, 49, 47, 62, 53, 54, - 84, 85, 95, 41, 37, 47, 43, 40, 41, 191, - 192, 39, 43, 195, 40, 85, 39, 49, 84, 85, - 319, 45, 85, 39, 79, 80, 81, 82, 83, 39, - 125, 126, 84, 85, 333, 49, 125, 126, 79, 80, - 81, 82, 83, 135, 39, 39, 39, 48, 347, 355, - 349, 39, 351, 39, 44, 125, 126, 44, 49, 129, - 125, 126, 95, 133, 246, 135, 49, 49, 49, 139, - 135, 49, 89, 106, 107, 108, 109, 110, 111, 112, + 0, 26, 27, 87, 138, 5, 1, 26, 27, 14, + 249, 84, 241, 39, 243, 244, 6, 7, 18, 39, + 38, 30, 49, 20, 40, 0, 26, 27, 86, 45, + 85, 26, 27, 40, 43, 27, 28, 46, 30, 39, + 43, 66, 34, 27, 28, 65, 30, 66, 45, 85, + 34, 43, 30, 47, 46, 39, 19, 80, 49, 43, + 194, 195, 46, 86, 198, 43, 66, 90, 91, 92, + 93, 66, 89, 90, 37, 84, 85, 40, 41, 41, + 98, 39, 43, 27, 28, 40, 30, 198, 88, 43, + 34, 320, 84, 85, 47, 85, 81, 82, 83, 43, + 84, 85, 46, 128, 129, 334, 84, 85, 45, 128, + 129, 44, 45, 39, 138, 249, 39, 356, 49, 348, + 39, 350, 49, 352, 39, 39, 39, 39, 128, 129, + 39, 48, 132, 128, 129, 98, 136, 44, 138, 49, + 84, 85, 142, 138, 90, 49, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 48, 48, 48, 128, 39, 39, 39, 191, - 192, 39, 39, 195, 185, 138, 135, 140, 40, 142, - 40, 40, 145, 49, 39, 49, 49, 40, 323, 324, - 16, 191, 192, 49, 5, 195, 191, 192, 223, 20, - 195, 30, 49, 40, 223, 49, 35, 36, 37, 38, - 49, 323, 324, 135, 43, 178, 49, 40, 40, 354, - 40, 356, 40, 223, 246, 49, 189, 5, 223, 355, - 49, -1, 191, 192, 259, 260, 195, 135, 373, 374, - 259, 260, 354, 355, 356, 49, 246, 247, 328, 185, - 185, 246, -1, -1, -1, 84, 85, -1, -1, 259, - 260, 373, 374, -1, 259, 260, -1, -1, -1, -1, - 295, -1, 235, 195, -1, -1, 295, -1, -1, -1, - -1, 244, 245, -1, -1, 248, -1, 246, -1, 135, - -1, -1, -1, 191, 192, 295, -1, 195, -1, -1, - 295, 323, 324, -1, -1, -1, -1, -1, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - -1, 284, -1, 323, 324, 135, -1, 327, 323, 324, - 135, -1, 354, 355, 356, -1, -1, -1, -1, 302, - 303, 304, 305, -1, -1, 191, 192, -1, 246, 195, - -1, 373, 374, 135, 354, 355, 356, -1, -1, 354, - 355, 356, 325, 326, 323, 324, -1, -1, -1, -1, - -1, -1, -1, 373, 374, -1, -1, -1, 373, 374, - -1, 191, 192, -1, -1, 195, 191, 192, -1, -1, - 195, -1, -1, -1, 357, 354, 355, 356, -1, -1, - 246, 323, 324, -1, 27, 28, -1, 30, -1, 191, - 192, 34, -1, 195, 373, 374, -1, -1, -1, -1, - 43, -1, -1, 46, -1, 323, 324, -1, 27, 28, - -1, 30, 354, -1, 356, 34, 246, -1, -1, -1, - -1, 246, -1, -1, 43, -1, -1, 46, -1, -1, - -1, 373, 374, -1, -1, -1, 354, 355, 356, -1, - -1, 84, 85, -1, 246, 27, 28, -1, 30, -1, - -1, -1, 34, -1, -1, 373, 374, 323, 324, -1, - -1, 43, -1, -1, 46, 84, 85, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 27, 28, -1, 30, - -1, -1, -1, 34, -1, -1, -1, -1, 354, 355, - 356, -1, 43, 323, 324, 46, -1, -1, 323, 324, - -1, -1, 84, 85, -1, -1, 30, 373, 374, 53, - 54, 35, 36, 37, 38, 59, 60, 61, 62, 43, - -1, 323, 324, -1, 354, 355, 356, 51, 52, 354, - 355, 356, -1, 84, 85, 79, 80, 81, 82, 83, - -1, -1, -1, 373, 374, -1, -1, -1, 373, 374, - -1, -1, 354, 355, 356, -1, -1, -1, -1, -1, - 84, 85, 3, 4, 5, -1, -1, -1, -1, -1, - 11, 373, 374, 14, 15, -1, 17, 18, 19, -1, - 21, 22, 23, 24, 25, 26, 27, -1, -1, 30, - -1, -1, -1, -1, 35, 36, 37, 38, -1, -1, - 41, 42, 43, -1, -1, -1, -1, 3, 4, 5, - 51, 52, -1, -1, -1, 11, -1, -1, 14, 15, - -1, 17, 18, 19, -1, 21, 22, 23, 24, 25, - 26, 27, -1, -1, 30, -1, -1, -1, -1, 35, - 36, 37, 38, 84, 85, 41, 42, 43, -1, -1, - -1, -1, 3, 4, 5, 51, 52, -1, -1, -1, - 11, -1, -1, 14, 15, -1, 17, 18, 19, -1, - 21, 22, 23, 24, 25, 26, 27, -1, -1, 30, - -1, -1, -1, 8, 35, 36, 37, 38, 84, 85, - 41, -1, 43, -1, -1, -1, -1, -1, -1, -1, - 51, 52, 27, 28, 29, 30, 31, 32, 33, -1, + 123, 124, 125, 126, 127, 49, 49, 138, 131, 49, + 194, 195, 48, 48, 198, 39, 39, 39, 141, 39, + 143, 40, 145, 188, 39, 148, 44, 40, 40, 39, + 324, 325, 49, 49, 194, 195, 138, 40, 198, 194, + 195, 226, 49, 198, 30, 16, 20, 226, 49, 35, + 36, 37, 38, 324, 325, 49, 49, 43, 181, 49, + 49, 355, 356, 357, 40, 249, 226, 198, 40, 192, + 40, 226, 40, 138, 40, 5, 261, 262, 138, 5, + 374, 375, 261, 262, 355, 329, 357, 49, 138, 249, + 250, 49, 194, 195, 249, 49, 198, 356, 84, 85, + 188, 261, 262, 374, 375, -1, 261, 262, -1, -1, + -1, -1, 297, -1, -1, 238, -1, -1, 297, -1, + 27, 28, -1, 30, 247, 248, -1, 34, 251, 194, + 195, -1, -1, 198, 194, 195, 43, 297, 198, 46, + 324, 325, 297, -1, 194, 195, -1, 249, 198, -1, + 138, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, -1, 286, 324, 325, -1, -1, 328, 324, + 325, 355, 356, 357, 138, -1, -1, 84, 85, -1, + 303, 304, 305, 306, 249, -1, -1, -1, -1, 249, + 374, 375, -1, 324, 325, 355, 356, 357, -1, 249, + 355, 356, 357, 326, 327, -1, 194, 195, -1, -1, + 198, -1, -1, -1, 374, 375, -1, -1, -1, 374, + 375, -1, 324, 325, 355, -1, 357, -1, -1, -1, + 194, 195, -1, -1, 198, 358, 79, 80, 81, 82, + 83, 53, 54, 374, 375, 57, 58, 59, 60, 61, + 62, 53, 54, 355, 356, 357, -1, -1, -1, 324, + 325, 249, -1, -1, 324, 325, -1, 79, 80, 81, + 82, 83, 374, 375, 324, 325, -1, 79, 80, 81, + 82, 83, -1, -1, -1, 249, -1, -1, -1, -1, + 355, 356, 357, -1, -1, 355, 356, 357, -1, -1, + -1, -1, -1, -1, -1, 355, 356, 357, -1, 374, + 375, -1, -1, -1, 374, 375, -1, -1, -1, 27, + 28, -1, 30, 8, 374, 375, 34, -1, -1, -1, + -1, -1, -1, -1, -1, 43, 324, 325, 46, -1, + -1, -1, 27, 28, 29, 30, 31, 32, 33, -1, 35, 36, 37, 38, 39, -1, -1, -1, 43, 44, - -1, -1, 47, -1, -1, 27, 28, -1, 30, -1, - -1, -1, 34, 84, 85, -1, -1, -1, 63, 64, - -1, 43, -1, -1, 46, -1, 8, -1, -1, -1, - -1, -1, -1, -1, -1, 80, -1, -1, 83, 84, - 85, 86, 87, 88, 89, 27, 28, 29, 30, 31, - 32, 33, -1, 35, 36, 37, 38, 39, -1, -1, - -1, 43, 84, 85, -1, 47, -1, 49, 27, 28, - -1, 30, -1, -1, -1, 34, 27, 28, -1, 30, - -1, 63, 64, 34, 43, -1, -1, 46, -1, 8, - -1, -1, 43, -1, -1, 46, -1, -1, 80, -1, - -1, 83, 84, 85, 86, 87, 88, 89, 27, 28, - 29, 30, 31, 32, 33, -1, 35, 36, 37, 38, - 39, -1, -1, -1, 43, 84, 85, -1, 47, -1, - -1, -1, -1, 84, 85, 27, 28, -1, 30, -1, - -1, -1, 34, -1, 63, 64, -1, -1, -1, -1, - -1, 43, 8, -1, 46, -1, -1, -1, -1, -1, - -1, 80, -1, -1, 83, 84, 85, 86, 87, 88, - 89, 27, 28, 29, 30, 31, 32, 33, -1, 35, - 36, 37, 38, 39, -1, -1, -1, 43, -1, -1, - -1, 47, 84, 85, -1, -1, -1, -1, -1, -1, - 9, 10, -1, 12, 13, -1, -1, 63, 64, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 27, -1, - -1, 30, -1, -1, 80, -1, -1, 83, 84, 85, - 86, 87, 88, 89, 43, -1, -1, 46, -1, -1, - -1, -1, 51, 52, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 30, -1, -1, - -1, -1, -1, -1, -1, 84, 85, -1, -1, -1, - 43, -1, -1, 46, -1, -1, -1, -1, 51, 52, + 324, 325, 47, -1, -1, -1, -1, 355, 356, 357, + -1, -1, -1, -1, -1, -1, 84, 85, 63, 64, + -1, -1, -1, -1, -1, -1, 374, 375, -1, -1, + -1, 355, 356, 357, 8, 80, -1, -1, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, + 374, 375, -1, 27, 28, 29, 30, 31, 32, 33, + -1, 35, 36, 37, 38, 39, -1, -1, -1, 43, + -1, -1, -1, 47, -1, 49, 27, 28, -1, 30, + -1, 27, 28, 34, 30, -1, -1, -1, 34, 63, + 64, -1, 43, -1, -1, 46, -1, 43, -1, -1, + 46, 8, -1, -1, -1, -1, 80, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 27, 28, 29, 30, 31, 32, 33, -1, 35, 36, + 37, 38, 39, 84, 85, -1, 43, -1, 84, 85, + 47, -1, -1, 27, 28, -1, 30, -1, 27, 28, + 34, 30, -1, -1, -1, 34, 63, 64, -1, 43, + -1, -1, 46, -1, 43, -1, -1, 46, 8, -1, + -1, -1, -1, 80, -1, -1, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 27, 28, 29, + 30, 31, 32, 33, -1, 35, 36, 37, 38, 39, + 84, 85, -1, 43, 30, 84, 85, 47, -1, 35, + 36, 37, 38, -1, -1, -1, -1, 43, -1, -1, + -1, -1, -1, 63, 64, 51, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 40, -1, -1, -1, -1, 45, -1, - -1, 84, 85, 50, -1, -1, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, - 77, 78, 79, 80, 81, 82, 83, 40, -1, -1, - -1, -1, 45, -1, -1, -1, -1, 50, -1, -1, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 76, 77, 78, 79, 80, 81, 82, - 83, 40, -1, -1, -1, -1, 45, -1, -1, -1, - -1, 50, -1, -1, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 76, 77, 78, - 79, 80, 81, 82, 83, 40, -1, -1, -1, -1, - 45, -1, -1, -1, -1, 50, -1, -1, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, - -1, 76, 77, 78, 79, 80, 81, 82, 83, 50, - -1, -1, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 40, -1, 76, 77, 78, 79, 80, - 81, 82, 83, 50, -1, -1, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 40, -1, 76, - 77, 78, 79, 80, 81, 82, 83, 50, -1, -1, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 40, -1, 76, 77, 78, 79, 80, 81, 82, - 83, 50, -1, -1, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 40, -1, 76, 77, 78, - 79, 80, 81, 82, 83, 50, -1, -1, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, - -1, 76, 77, 78, 79, 80, 81, 82, 83, 50, - -1, -1, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 40, -1, 76, 77, 78, 79, 80, - 81, 82, 83, 50, -1, -1, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, - 77, 78, 79, 80, 81, 82, 83, 44, -1, -1, - -1, -1, -1, 50, -1, -1, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, - 77, 78, 79, 80, 81, 82, 83, 44, -1, -1, - -1, -1, -1, 50, -1, -1, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, - 77, 78, 79, 80, 81, 82, 83, 44, -1, -1, - -1, -1, -1, 50, -1, -1, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, - 77, 78, 79, 80, 81, 82, 83, 45, -1, -1, + 80, -1, -1, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 3, 4, 5, -1, 84, 85, + -1, -1, 11, -1, -1, 14, 15, -1, 17, 18, + 19, -1, 21, 22, 23, 24, 25, 26, 27, -1, + -1, 30, -1, -1, -1, -1, 35, 36, 37, 38, + -1, -1, 41, 42, 43, -1, -1, -1, -1, 3, + 4, 5, 51, 52, -1, -1, -1, 11, -1, -1, + 14, 15, -1, 17, 18, 19, -1, 21, 22, 23, + 24, 25, 26, 27, -1, -1, 30, -1, -1, -1, + -1, 35, 36, 37, 38, 84, 85, 41, 42, 43, + -1, -1, -1, -1, 3, 4, 5, 51, 52, -1, + -1, -1, 11, -1, -1, 14, 15, -1, 17, 18, + 19, -1, 21, 22, 23, 24, 25, 26, 27, -1, + -1, 30, -1, -1, -1, -1, 35, 36, 37, 38, + 84, 85, 41, -1, 43, 9, 10, -1, 12, 13, + -1, -1, 51, 52, 40, -1, -1, -1, -1, 45, + -1, -1, -1, 27, 50, -1, 30, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, -1, -1, 43, + -1, -1, 46, -1, -1, 84, 85, 51, 52, -1, + 76, 77, 78, 79, 80, 81, 82, 83, -1, -1, + -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 30, -1, -1, -1, -1, -1, -1, -1, + 84, 85, -1, -1, -1, 43, -1, -1, 46, -1, + -1, -1, -1, 51, 52, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 40, -1, + -1, -1, -1, 45, -1, -1, 84, 85, 50, -1, + -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 76, 77, 78, 79, 80, 81, + 82, 83, 40, -1, -1, -1, -1, 45, -1, -1, -1, -1, 50, -1, -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, 77, - 78, 79, 80, 81, 82, 83, 48, -1, 50, -1, + 78, 79, 80, 81, 82, 83, 40, -1, -1, -1, + -1, 45, -1, -1, -1, -1, 50, -1, -1, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 40, -1, 76, 77, 78, 79, 80, 81, 82, 83, + 50, -1, -1, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 40, -1, 76, 77, 78, 79, + 80, 81, 82, 83, 50, -1, -1, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, + 76, 77, 78, 79, 80, 81, 82, 83, 50, -1, -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 76, 77, 78, 79, 80, 81, - 82, 83, 49, 50, -1, -1, 53, 54, 55, 56, + -1, -1, 40, -1, 76, 77, 78, 79, 80, 81, + 82, 83, 50, -1, -1, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 40, -1, 76, 77, + 78, 79, 80, 81, 82, 83, 50, -1, -1, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 40, -1, 76, 77, 78, 79, 80, 81, 82, 83, + 50, -1, -1, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 40, -1, 76, 77, 78, 79, + 80, 81, 82, 83, 50, -1, -1, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 76, 77, 78, 79, 80, 81, 82, 83, 44, -1, + -1, -1, -1, -1, 50, -1, -1, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 76, 77, 78, 79, 80, 81, 82, 83, 44, -1, + -1, -1, -1, -1, 50, -1, -1, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 76, 77, 78, 79, 80, 81, 82, 83, 44, -1, + -1, -1, -1, -1, 50, -1, -1, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 76, 77, 78, 79, 80, 81, 82, 83, 45, -1, + -1, -1, -1, 50, -1, -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, - 77, 78, 79, 80, 81, 82, 83, 49, 50, -1, - -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 76, 77, 78, 79, 80, 81, - 82, 83, 49, 50, -1, -1, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 50, -1, -1, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 76, - 77, 78, 79, 80, 81, 82, 83, -1, -1, -1, - -1, -1, 76, 77, 78, 79, 80, 81, 82, 83, - 53, 54, -1, 56, 57, 58, 59, 60, 61, 62, - 53, 54, -1, -1, 57, 58, 59, 60, 61, 62, - -1, -1, -1, 76, 77, 78, 79, 80, 81, 82, - 83, -1, -1, 76, 77, 78, 79, 80, 81, 82, - 83, 53, 54, -1, -1, 57, 58, 59, 60, 61, - 62, 53, 54, -1, -1, 57, 58, 59, 60, 61, - 62, -1, -1, -1, -1, 77, 78, 79, 80, 81, - 82, 83, -1, -1, -1, 77, -1, 79, 80, 81, - 82, 83, 53, 54, -1, -1, 57, 58, 59, 60, + 77, 78, 79, 80, 81, 82, 83, 48, -1, 50, + -1, -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 79, 80, - 81, 82, 83 + -1, -1, -1, -1, -1, 76, 77, 78, 79, 80, + 81, 82, 83, 49, 50, -1, -1, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 76, 77, 78, 79, 80, 81, 82, 83, 49, 50, + -1, -1, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 76, 77, 78, 79, 80, + 81, 82, 83, 49, 50, -1, -1, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 50, -1, -1, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 76, 77, 78, 79, 80, 81, 82, 83, -1, -1, + -1, -1, -1, 76, 77, 78, 79, 80, 81, 82, + 83, 53, 54, -1, 56, 57, 58, 59, 60, 61, + 62, 53, 54, -1, -1, 57, 58, 59, 60, 61, + 62, -1, -1, -1, 76, 77, 78, 79, 80, 81, + 82, 83, -1, -1, 76, 77, 78, 79, 80, 81, + 82, 83, 53, 54, -1, -1, 57, 58, 59, 60, + 61, 62, 53, 54, -1, -1, 57, 58, 59, 60, + 61, 62, -1, -1, -1, -1, 77, 78, 79, 80, + 81, 82, 83, -1, -1, -1, 77, -1, 79, 80, + 81, 82, 83, 53, 54, -1, -1, -1, -1, 59, + 60, 61, 62, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 79, + 80, 81, 82, 83 }; const unsigned char parser::yystos_[] = { - 0, 6, 7, 85, 100, 101, 102, 103, 104, 105, - 106, 164, 84, 165, 39, 0, 102, 103, 39, 65, - 49, 86, 167, 107, 164, 8, 27, 28, 29, 30, + 0, 6, 7, 85, 104, 105, 106, 107, 108, 109, + 110, 170, 84, 171, 39, 0, 106, 107, 39, 65, + 49, 86, 173, 111, 170, 8, 27, 28, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 43, 47, - 63, 64, 80, 83, 87, 88, 89, 135, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 63, 64, 80, 83, 87, 88, 89, 90, 91, 92, + 93, 139, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 40, 40, 45, 43, 144, 145, 164, - 165, 144, 145, 43, 135, 43, 44, 135, 147, 164, - 135, 135, 88, 89, 85, 49, 50, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 76, 77, 78, - 79, 80, 81, 82, 83, 27, 28, 34, 43, 46, - 144, 145, 39, 47, 49, 41, 109, 164, 43, 47, - 43, 40, 45, 135, 44, 45, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 144, 145, 144, 145, 135, - 164, 146, 147, 148, 164, 3, 4, 5, 11, 14, - 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, - 42, 51, 52, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 136, 141, - 142, 151, 152, 154, 158, 159, 160, 161, 164, 135, - 164, 135, 135, 44, 135, 48, 44, 40, 39, 49, - 39, 39, 135, 49, 39, 39, 39, 39, 39, 80, - 167, 170, 172, 48, 49, 49, 49, 135, 141, 154, - 154, 42, 108, 49, 49, 49, 9, 10, 12, 13, - 51, 52, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 44, 45, 44, 135, 146, 146, 146, - 49, 135, 135, 133, 136, 154, 164, 135, 48, 48, - 48, 49, 39, 39, 39, 39, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 44, 135, 39, - 40, 40, 40, 40, 40, 49, 20, 45, 40, 135, - 135, 135, 135, 39, 40, 146, 49, 49, 108, 108, - 134, 135, 135, 164, 109, 40, 40, 45, 40, 45, - 40, 45, 146, 40, 16, 49, 40, 20, 49, 49, - 146, 49, 146, 49, 146, 40, 108, 133, 108, 135, - 40, 40, 40, 40, 40, 49, 49, 49, 108, 108 + 172, 173, 174, 175, 176, 177, 40, 40, 45, 43, + 148, 149, 170, 171, 148, 149, 43, 139, 43, 44, + 139, 151, 170, 139, 139, 89, 90, 85, 49, 50, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 76, 77, 78, 79, 80, 81, 82, 83, 27, 28, + 34, 43, 46, 148, 149, 39, 47, 49, 41, 113, + 170, 43, 47, 43, 40, 45, 139, 44, 45, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 148, 149, + 148, 149, 139, 170, 150, 151, 152, 170, 3, 4, + 5, 11, 14, 15, 17, 18, 19, 21, 22, 23, + 24, 25, 26, 42, 51, 52, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 140, 145, 146, 155, 156, 158, 164, 165, 166, + 167, 170, 139, 170, 139, 139, 44, 139, 48, 44, + 40, 39, 49, 39, 39, 139, 49, 39, 39, 39, + 39, 39, 80, 160, 173, 48, 49, 49, 49, 139, + 145, 158, 158, 42, 112, 49, 49, 49, 9, 10, + 12, 13, 51, 52, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 44, 45, 44, 139, 150, + 150, 150, 49, 139, 139, 137, 140, 158, 170, 139, + 48, 48, 49, 39, 39, 39, 39, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 44, 139, + 39, 40, 40, 40, 40, 40, 49, 20, 45, 40, + 139, 139, 139, 139, 39, 40, 150, 49, 49, 112, + 112, 138, 139, 139, 170, 113, 40, 40, 45, 40, + 45, 40, 45, 150, 40, 16, 49, 40, 20, 49, + 49, 150, 49, 150, 49, 150, 40, 112, 137, 112, + 139, 40, 40, 40, 40, 40, 49, 49, 49, 112, + 112 }; const unsigned char parser::yyr1_[] = { - 0, 99, 100, 100, 101, 101, 101, 101, 102, 103, - 103, 103, 104, 105, 106, 107, 107, 107, 108, 108, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, - 108, 109, 109, 110, 110, 111, 111, 112, 113, 114, - 114, 115, 116, 116, 117, 117, 118, 119, 120, 121, - 122, 123, 123, 124, 125, 125, 125, 126, 127, 128, - 129, 129, 130, 131, 132, 133, 133, 134, 134, 135, - 135, 135, 135, 136, 136, 136, 136, 136, 136, 136, - 136, 136, 136, 136, 136, 136, 136, 136, 137, 137, - 137, 137, 137, 137, 137, 137, 138, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 0, 103, 104, 104, 105, 105, 105, 105, 106, 107, + 107, 107, 108, 109, 110, 111, 111, 111, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 113, 113, 114, 114, 115, 115, 116, 117, 118, + 118, 119, 120, 120, 121, 121, 122, 123, 124, 125, + 126, 127, 127, 128, 129, 129, 130, 131, 132, 133, + 133, 134, 135, 136, 137, 137, 138, 138, 139, 139, + 139, 139, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 141, 141, 141, - 141, 142, 142, 142, 142, 143, 143, 143, 143, 144, - 144, 145, 145, 146, 146, 147, 147, 148, 149, 149, - 150, 151, 152, 153, 154, 154, 154, 154, 154, 154, - 154, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174 + 141, 141, 141, 141, 141, 142, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 145, 145, 145, 145, 146, + 146, 146, 146, 147, 147, 147, 147, 148, 148, 149, + 149, 150, 150, 151, 151, 152, 153, 153, 154, 155, + 156, 157, 158, 158, 158, 158, 158, 158, 158, 158, + 159, 159, 160, 160, 160, 160, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177 }; const signed char @@ -4051,21 +4080,21 @@ namespace xsk { namespace gsc { namespace iw5 { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 1, 2, 2, 2, 6, 8, 6, 3, 8, 6, 8, 6, 2, 5, 7, 5, - 9, 7, 9, 5, 3, 3, 3, 2, 2, 2, - 3, 2, 2, 5, 5, 1, 0, 1, 0, 1, - 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, + 9, 7, 9, 5, 3, 3, 2, 2, 2, 3, + 2, 2, 5, 5, 1, 0, 1, 0, 1, 1, + 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, + 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 3, 3, 2, 2, 3, 3, 4, - 6, 8, 9, 1, 1, 3, 1, 0, 2, 3, - 3, 4, 3, 2, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, - 1, 1, 1, 1, 1, 7, 2, 2, 1, 1, - 1, 1 + 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, + 2, 3, 3, 2, 2, 3, 3, 4, 6, 8, + 9, 1, 1, 3, 1, 0, 2, 3, 3, 4, + 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 1, 2, 1, 1, 1, 1, 1, 2, 1, + 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, + 1, 7, 1, 1 }; @@ -4075,27 +4104,27 @@ namespace xsk { namespace gsc { namespace iw5 { const short parser::yyrline_[] = { - 0, 241, 241, 242, 246, 248, 250, 252, 257, 262, - 263, 264, 268, 273, 278, 283, 285, 288, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 318, 319, 323, 325, 330, 332, 337, 342, 347, - 349, 354, 359, 361, 366, 368, 373, 378, 383, 388, - 393, 398, 400, 405, 410, 412, 414, 419, 424, 429, - 434, 436, 441, 446, 451, 456, 457, 461, 462, 466, - 467, 468, 469, 473, 474, 475, 476, 477, 478, 479, - 480, 481, 482, 483, 484, 485, 486, 487, 491, 492, - 493, 494, 495, 496, 497, 498, 502, 506, 507, 508, - 509, 510, 511, 512, 513, 514, 515, 519, 520, 521, - 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, - 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 552, 553, 554, - 555, 559, 560, 561, 562, 566, 567, 568, 569, 573, - 575, 580, 582, 587, 588, 592, 594, 600, 604, 606, - 611, 616, 621, 626, 631, 632, 633, 634, 635, 636, - 637, 638, 641, 642, 643, 644, 645, 646, 647, 648, - 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, - 659, 660 + 0, 244, 244, 245, 249, 251, 253, 255, 260, 265, + 266, 267, 271, 276, 281, 286, 288, 291, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 321, 322, 326, 328, 333, 335, 340, 345, 350, + 352, 357, 362, 364, 369, 371, 376, 381, 386, 391, + 396, 401, 403, 408, 413, 415, 420, 425, 430, 435, + 437, 442, 447, 452, 457, 458, 462, 463, 467, 468, + 469, 470, 474, 475, 476, 477, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 492, 493, 494, + 495, 496, 497, 498, 499, 503, 507, 508, 509, 510, + 511, 512, 513, 514, 515, 516, 520, 521, 522, 523, + 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 552, 553, 554, 555, 559, + 560, 561, 562, 566, 567, 568, 569, 573, 575, 580, + 582, 587, 588, 592, 594, 600, 604, 606, 611, 616, + 621, 626, 631, 632, 633, 634, 635, 636, 637, 638, + 642, 643, 647, 648, 649, 650, 651, 654, 655, 656, + 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, + 667, 668, 669, 670 }; void @@ -4128,9 +4157,9 @@ namespace xsk { namespace gsc { namespace iw5 { #line 13 "parser.ypp" } } } // xsk::gsc::iw5 -#line 4132 "parser.cpp" +#line 4161 "parser.cpp" -#line 662 "parser.ypp" +#line 672 "parser.ypp" void xsk::gsc::iw5::parser::error(const xsk::gsc::location& loc, const std::string& msg) diff --git a/src/iw5/xsk/parser.hpp b/src/iw5/xsk/parser.hpp index c64f52ec..ec56fc04 100644 --- a/src/iw5/xsk/parser.hpp +++ b/src/iw5/xsk/parser.hpp @@ -417,31 +417,34 @@ namespace xsk { namespace gsc { namespace iw5 { // animtree char dummy3[sizeof (animtree_ptr)]; + // color + char dummy4[sizeof (color_ptr)]; + // constant - char dummy4[sizeof (constant_ptr)]; + char dummy5[sizeof (constant_ptr)]; // define - char dummy5[sizeof (define_ptr)]; + char dummy6[sizeof (define_ptr)]; // empty_array - char dummy6[sizeof (empty_array_ptr)]; + char dummy7[sizeof (empty_array_ptr)]; // expr_arguments // expr_arguments_filled // expr_arguments_empty - char dummy7[sizeof (expr_arguments_ptr)]; + char dummy8[sizeof (expr_arguments_ptr)]; // expr_assign - char dummy8[sizeof (expr_assign_ptr)]; + char dummy9[sizeof (expr_assign_ptr)]; // expr_call // expr_call_thread // expr_call_childthread - char dummy9[sizeof (expr_call_ptr)]; + char dummy10[sizeof (expr_call_ptr)]; // expr_call_function // expr_call_pointer - char dummy10[sizeof (expr_call_type_ptr)]; + char dummy11[sizeof (expr_call_type_ptr)]; // for_expr // expr @@ -449,36 +452,34 @@ namespace xsk { namespace gsc { namespace iw5 { // expr_ternary // expr_binary // expr_primitive - char dummy11[sizeof (expr_ptr)]; + char dummy12[sizeof (expr_ptr)]; // false - char dummy12[sizeof (false_ptr)]; + char dummy13[sizeof (false_ptr)]; // file - char dummy13[sizeof (file_ptr)]; + char dummy14[sizeof (file_ptr)]; - // neg_float // float - char dummy14[sizeof (float_ptr)]; + char dummy15[sizeof (float_ptr)]; // game - char dummy15[sizeof (game_ptr)]; + char dummy16[sizeof (game_ptr)]; // include - char dummy16[sizeof (include_ptr)]; + char dummy17[sizeof (include_ptr)]; - // neg_integer // integer - char dummy17[sizeof (integer_ptr)]; + char dummy18[sizeof (integer_ptr)]; // istring - char dummy18[sizeof (istring_ptr)]; + char dummy19[sizeof (istring_ptr)]; // level - char dummy19[sizeof (level_ptr)]; + char dummy20[sizeof (level_ptr)]; // name - char dummy20[sizeof (name_ptr)]; + char dummy21[sizeof (name_ptr)]; // expr_function // expr_add_array @@ -486,119 +487,123 @@ namespace xsk { namespace gsc { namespace iw5 { // expr_field // expr_size // object - char dummy21[sizeof (node_ptr)]; + char dummy22[sizeof (node_ptr)]; // parameters - char dummy22[sizeof (parameters_ptr)]; + char dummy23[sizeof (parameters_ptr)]; // program - char dummy23[sizeof (program_ptr)]; + char dummy24[sizeof (program_ptr)]; // self - char dummy24[sizeof (self_ptr)]; + char dummy25[sizeof (self_ptr)]; // "file path" // "identifier" // "string literal" // "localized string" + // "color" // "float" // "int" - char dummy25[sizeof (std::string)]; + // "octal int" + // "binary int" + // "hexadecimal int" + char dummy26[sizeof (std::string)]; // stmt_assign - char dummy26[sizeof (stmt_assign_ptr)]; + char dummy27[sizeof (stmt_assign_ptr)]; // stmt_break - char dummy27[sizeof (stmt_break_ptr)]; + char dummy28[sizeof (stmt_break_ptr)]; // stmt_breakpoint - char dummy28[sizeof (stmt_breakpoint_ptr)]; + char dummy29[sizeof (stmt_breakpoint_ptr)]; // stmt_call - char dummy29[sizeof (stmt_call_ptr)]; + char dummy30[sizeof (stmt_call_ptr)]; // stmt_case - char dummy30[sizeof (stmt_case_ptr)]; + char dummy31[sizeof (stmt_case_ptr)]; // stmt_continue - char dummy31[sizeof (stmt_continue_ptr)]; + char dummy32[sizeof (stmt_continue_ptr)]; // stmt_default - char dummy32[sizeof (stmt_default_ptr)]; + char dummy33[sizeof (stmt_default_ptr)]; // stmt_endon - char dummy33[sizeof (stmt_endon_ptr)]; + char dummy34[sizeof (stmt_endon_ptr)]; // stmt_for - char dummy34[sizeof (stmt_for_ptr)]; + char dummy35[sizeof (stmt_for_ptr)]; // stmt_foreach - char dummy35[sizeof (stmt_foreach_ptr)]; + char dummy36[sizeof (stmt_foreach_ptr)]; // stmt_if - char dummy36[sizeof (stmt_if_ptr)]; + char dummy37[sizeof (stmt_if_ptr)]; // stmt_ifelse - char dummy37[sizeof (stmt_ifelse_ptr)]; + char dummy38[sizeof (stmt_ifelse_ptr)]; // stmt_block // stmt_list - char dummy38[sizeof (stmt_list_ptr)]; + char dummy39[sizeof (stmt_list_ptr)]; // stmt_notify - char dummy39[sizeof (stmt_notify_ptr)]; + char dummy40[sizeof (stmt_notify_ptr)]; // stmt_prof_begin - char dummy40[sizeof (stmt_prof_begin_ptr)]; + char dummy41[sizeof (stmt_prof_begin_ptr)]; // stmt_prof_end - char dummy41[sizeof (stmt_prof_end_ptr)]; + char dummy42[sizeof (stmt_prof_end_ptr)]; // stmt // for_stmt - char dummy42[sizeof (stmt_ptr)]; + char dummy43[sizeof (stmt_ptr)]; // stmt_return - char dummy43[sizeof (stmt_return_ptr)]; + char dummy44[sizeof (stmt_return_ptr)]; // stmt_switch - char dummy44[sizeof (stmt_switch_ptr)]; + char dummy45[sizeof (stmt_switch_ptr)]; // stmt_wait - char dummy45[sizeof (stmt_wait_ptr)]; + char dummy46[sizeof (stmt_wait_ptr)]; // stmt_waittill - char dummy46[sizeof (stmt_waittill_ptr)]; + char dummy47[sizeof (stmt_waittill_ptr)]; // stmt_waittillframeend - char dummy47[sizeof (stmt_waittillframeend_ptr)]; + char dummy48[sizeof (stmt_waittillframeend_ptr)]; // stmt_waittillmatch - char dummy48[sizeof (stmt_waittillmatch_ptr)]; + char dummy49[sizeof (stmt_waittillmatch_ptr)]; // stmt_while - char dummy49[sizeof (stmt_while_ptr)]; + char dummy50[sizeof (stmt_while_ptr)]; // string - char dummy50[sizeof (string_ptr)]; + char dummy51[sizeof (string_ptr)]; // thisthread - char dummy51[sizeof (thisthread_ptr)]; + char dummy52[sizeof (thisthread_ptr)]; // thread - char dummy52[sizeof (thread_ptr)]; + char dummy53[sizeof (thread_ptr)]; // true - char dummy53[sizeof (true_ptr)]; + char dummy54[sizeof (true_ptr)]; // undefined - char dummy54[sizeof (undefined_ptr)]; + char dummy55[sizeof (undefined_ptr)]; // usingtree - char dummy55[sizeof (usingtree_ptr)]; + char dummy56[sizeof (usingtree_ptr)]; // vector - char dummy56[sizeof (vector_ptr)]; + char dummy57[sizeof (vector_ptr)]; }; /// The size of the largest semantic type. @@ -735,17 +740,21 @@ namespace xsk { namespace gsc { namespace iw5 { NAME = 85, // "identifier" STRING = 86, // "string literal" ISTRING = 87, // "localized string" - FLOAT = 88, // "float" - INTEGER = 89, // "int" - ADD_ARRAY = 90, // ADD_ARRAY - THEN = 91, // THEN - TERN = 92, // TERN - NEG = 93, // NEG - ANIMREF = 94, // ANIMREF - PREINC = 95, // PREINC - PREDEC = 96, // PREDEC - POSTINC = 97, // POSTINC - POSTDEC = 98 // POSTDEC + COLOR = 88, // "color" + FLOAT = 89, // "float" + INT_DEC = 90, // "int" + INT_OCT = 91, // "octal int" + INT_BIN = 92, // "binary int" + INT_HEX = 93, // "hexadecimal int" + ADD_ARRAY = 94, // ADD_ARRAY + THEN = 95, // THEN + TERN = 96, // TERN + NEG = 97, // NEG + ANIMREF = 98, // ANIMREF + PREINC = 99, // PREINC + PREDEC = 100, // PREDEC + POSTINC = 101, // POSTINC + POSTDEC = 102 // POSTDEC }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; @@ -762,7 +771,7 @@ namespace xsk { namespace gsc { namespace iw5 { { enum symbol_kind_type { - YYNTOKENS = 99, ///< Number of tokens. + YYNTOKENS = 103, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error @@ -852,93 +861,96 @@ namespace xsk { namespace gsc { namespace iw5 { S_NAME = 85, // "identifier" S_STRING = 86, // "string literal" S_ISTRING = 87, // "localized string" - S_FLOAT = 88, // "float" - S_INTEGER = 89, // "int" - S_ADD_ARRAY = 90, // ADD_ARRAY - S_THEN = 91, // THEN - S_TERN = 92, // TERN - S_NEG = 93, // NEG - S_ANIMREF = 94, // ANIMREF - S_PREINC = 95, // PREINC - S_PREDEC = 96, // PREDEC - S_POSTINC = 97, // POSTINC - S_POSTDEC = 98, // POSTDEC - S_YYACCEPT = 99, // $accept - S_root = 100, // root - S_program = 101, // program - S_include = 102, // include - S_define = 103, // define - S_usingtree = 104, // usingtree - S_constant = 105, // constant - S_thread = 106, // thread - S_parameters = 107, // parameters - S_stmt = 108, // stmt - S_stmt_block = 109, // stmt_block - S_stmt_list = 110, // stmt_list - S_stmt_call = 111, // stmt_call - S_stmt_assign = 112, // stmt_assign - S_stmt_endon = 113, // stmt_endon - S_stmt_notify = 114, // stmt_notify - S_stmt_wait = 115, // stmt_wait - S_stmt_waittill = 116, // stmt_waittill - S_stmt_waittillmatch = 117, // stmt_waittillmatch - S_stmt_waittillframeend = 118, // stmt_waittillframeend - S_stmt_if = 119, // stmt_if - S_stmt_ifelse = 120, // stmt_ifelse - S_stmt_while = 121, // stmt_while - S_stmt_for = 122, // stmt_for - S_stmt_foreach = 123, // stmt_foreach - S_stmt_switch = 124, // stmt_switch - S_stmt_case = 125, // stmt_case - S_stmt_default = 126, // stmt_default - S_stmt_break = 127, // stmt_break - S_stmt_continue = 128, // stmt_continue - S_stmt_return = 129, // stmt_return - S_stmt_breakpoint = 130, // stmt_breakpoint - S_stmt_prof_begin = 131, // stmt_prof_begin - S_stmt_prof_end = 132, // stmt_prof_end - S_for_stmt = 133, // for_stmt - S_for_expr = 134, // for_expr - S_expr = 135, // expr - S_expr_assign = 136, // expr_assign - S_expr_compare = 137, // expr_compare - S_expr_ternary = 138, // expr_ternary - S_expr_binary = 139, // expr_binary - S_expr_primitive = 140, // expr_primitive - S_expr_call = 141, // expr_call - S_expr_call_thread = 142, // expr_call_thread - S_expr_call_childthread = 143, // expr_call_childthread - S_expr_call_function = 144, // expr_call_function - S_expr_call_pointer = 145, // expr_call_pointer - S_expr_arguments = 146, // expr_arguments - S_expr_arguments_filled = 147, // expr_arguments_filled - S_expr_arguments_empty = 148, // expr_arguments_empty - S_expr_function = 149, // expr_function - S_expr_add_array = 150, // expr_add_array - S_expr_array = 151, // expr_array - S_expr_field = 152, // expr_field - S_expr_size = 153, // expr_size - S_object = 154, // object - S_thisthread = 155, // thisthread - S_empty_array = 156, // empty_array - S_undefined = 157, // undefined - S_game = 158, // game - S_self = 159, // self - S_anim = 160, // anim - S_level = 161, // level - S_animation = 162, // animation - S_animtree = 163, // animtree - S_name = 164, // name - S_file = 165, // file - S_istring = 166, // istring - S_string = 167, // string - S_vector = 168, // vector - S_neg_float = 169, // neg_float - S_neg_integer = 170, // neg_integer - S_float = 171, // float - S_integer = 172, // integer - S_false = 173, // false - S_true = 174 // true + S_COLOR = 88, // "color" + S_FLOAT = 89, // "float" + S_INT_DEC = 90, // "int" + S_INT_OCT = 91, // "octal int" + S_INT_BIN = 92, // "binary int" + S_INT_HEX = 93, // "hexadecimal int" + S_ADD_ARRAY = 94, // ADD_ARRAY + S_THEN = 95, // THEN + S_TERN = 96, // TERN + S_NEG = 97, // NEG + S_ANIMREF = 98, // ANIMREF + S_PREINC = 99, // PREINC + S_PREDEC = 100, // PREDEC + S_POSTINC = 101, // POSTINC + S_POSTDEC = 102, // POSTDEC + S_YYACCEPT = 103, // $accept + S_root = 104, // root + S_program = 105, // program + S_include = 106, // include + S_define = 107, // define + S_usingtree = 108, // usingtree + S_constant = 109, // constant + S_thread = 110, // thread + S_parameters = 111, // parameters + S_stmt = 112, // stmt + S_stmt_block = 113, // stmt_block + S_stmt_list = 114, // stmt_list + S_stmt_call = 115, // stmt_call + S_stmt_assign = 116, // stmt_assign + S_stmt_endon = 117, // stmt_endon + S_stmt_notify = 118, // stmt_notify + S_stmt_wait = 119, // stmt_wait + S_stmt_waittill = 120, // stmt_waittill + S_stmt_waittillmatch = 121, // stmt_waittillmatch + S_stmt_waittillframeend = 122, // stmt_waittillframeend + S_stmt_if = 123, // stmt_if + S_stmt_ifelse = 124, // stmt_ifelse + S_stmt_while = 125, // stmt_while + S_stmt_for = 126, // stmt_for + S_stmt_foreach = 127, // stmt_foreach + S_stmt_switch = 128, // stmt_switch + S_stmt_case = 129, // stmt_case + S_stmt_default = 130, // stmt_default + S_stmt_break = 131, // stmt_break + S_stmt_continue = 132, // stmt_continue + S_stmt_return = 133, // stmt_return + S_stmt_breakpoint = 134, // stmt_breakpoint + S_stmt_prof_begin = 135, // stmt_prof_begin + S_stmt_prof_end = 136, // stmt_prof_end + S_for_stmt = 137, // for_stmt + S_for_expr = 138, // for_expr + S_expr = 139, // expr + S_expr_assign = 140, // expr_assign + S_expr_compare = 141, // expr_compare + S_expr_ternary = 142, // expr_ternary + S_expr_binary = 143, // expr_binary + S_expr_primitive = 144, // expr_primitive + S_expr_call = 145, // expr_call + S_expr_call_thread = 146, // expr_call_thread + S_expr_call_childthread = 147, // expr_call_childthread + S_expr_call_function = 148, // expr_call_function + S_expr_call_pointer = 149, // expr_call_pointer + S_expr_arguments = 150, // expr_arguments + S_expr_arguments_filled = 151, // expr_arguments_filled + S_expr_arguments_empty = 152, // expr_arguments_empty + S_expr_function = 153, // expr_function + S_expr_add_array = 154, // expr_add_array + S_expr_array = 155, // expr_array + S_expr_field = 156, // expr_field + S_expr_size = 157, // expr_size + S_object = 158, // object + S_float = 159, // float + S_integer = 160, // integer + S_thisthread = 161, // thisthread + S_empty_array = 162, // empty_array + S_undefined = 163, // undefined + S_game = 164, // game + S_self = 165, // self + S_anim = 166, // anim + S_level = 167, // level + S_animation = 168, // animation + S_animtree = 169, // animtree + S_name = 170, // name + S_file = 171, // file + S_istring = 172, // istring + S_string = 173, // string + S_color = 174, // color + S_vector = 175, // vector + S_false = 176, // false + S_true = 177 // true }; }; @@ -987,6 +999,10 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< animtree_ptr > (std::move (that.value)); break; + case symbol_kind::S_color: // color + value.move< color_ptr > (std::move (that.value)); + break; + case symbol_kind::S_constant: // constant value.move< constant_ptr > (std::move (that.value)); break; @@ -1037,7 +1053,6 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< file_ptr > (std::move (that.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.move< float_ptr > (std::move (that.value)); break; @@ -1050,7 +1065,6 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< include_ptr > (std::move (that.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.move< integer_ptr > (std::move (that.value)); break; @@ -1092,8 +1106,12 @@ namespace xsk { namespace gsc { namespace iw5 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.move< std::string > (std::move (that.value)); break; @@ -1288,6 +1306,20 @@ namespace xsk { namespace gsc { namespace iw5 { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, color_ptr&& v, location_type&& l) + : Base (t) + , value (std::move (v)) + , location (std::move (l)) + {} +#else + basic_symbol (typename Base::kind_type t, const color_ptr& v, const location_type& l) + : Base (t) + , value (v) + , location (l) + {} +#endif + #if 201103L <= YY_CPLUSPLUS basic_symbol (typename Base::kind_type t, constant_ptr&& v, location_type&& l) : Base (t) @@ -2064,6 +2096,10 @@ switch (yykind) value.template destroy< animtree_ptr > (); break; + case symbol_kind::S_color: // color + value.template destroy< color_ptr > (); + break; + case symbol_kind::S_constant: // constant value.template destroy< constant_ptr > (); break; @@ -2114,7 +2150,6 @@ switch (yykind) value.template destroy< file_ptr > (); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.template destroy< float_ptr > (); break; @@ -2127,7 +2162,6 @@ switch (yykind) value.template destroy< include_ptr > (); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.template destroy< integer_ptr > (); break; @@ -2169,8 +2203,12 @@ switch (yykind) case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.template destroy< std::string > (); break; @@ -2406,7 +2444,7 @@ switch (yykind) : super_type(token_type (tok), v, l) #endif { - IW5_ASSERT ((token::FILE <= tok && tok <= token::INTEGER)); + IW5_ASSERT ((token::FILE <= tok && tok <= token::INT_HEX)); } }; @@ -3776,6 +3814,21 @@ switch (yykind) return symbol_type (token::ISTRING, v, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_COLOR (std::string v, location_type l) + { + return symbol_type (token::COLOR, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_COLOR (const std::string& v, const location_type& l) + { + return symbol_type (token::COLOR, v, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -3794,16 +3847,61 @@ switch (yykind) #if 201103L <= YY_CPLUSPLUS static symbol_type - make_INTEGER (std::string v, location_type l) + make_INT_DEC (std::string v, location_type l) { - return symbol_type (token::INTEGER, std::move (v), std::move (l)); + return symbol_type (token::INT_DEC, std::move (v), std::move (l)); } #else static symbol_type - make_INTEGER (const std::string& v, const location_type& l) + make_INT_DEC (const std::string& v, const location_type& l) { - return symbol_type (token::INTEGER, v, l); + return symbol_type (token::INT_DEC, v, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_INT_OCT (std::string v, location_type l) + { + return symbol_type (token::INT_OCT, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_INT_OCT (const std::string& v, const location_type& l) + { + return symbol_type (token::INT_OCT, v, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_INT_BIN (std::string v, location_type l) + { + return symbol_type (token::INT_BIN, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_INT_BIN (const std::string& v, const location_type& l) + { + return symbol_type (token::INT_BIN, v, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_INT_HEX (std::string v, location_type l) + { + return symbol_type (token::INT_HEX, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_INT_HEX (const std::string& v, const location_type& l) + { + return symbol_type (token::INT_HEX, v, l); } #endif #if 201103L <= YY_CPLUSPLUS @@ -4285,8 +4383,8 @@ switch (yykind) /// Constants. enum { - yylast_ = 1892, ///< Last index in yytable_. - yynnts_ = 76, ///< Number of nonterminal symbols. + yylast_ = 1813, ///< Last index in yytable_. + yynnts_ = 75, ///< Number of nonterminal symbols. yyfinal_ = 15 ///< Termination state number. }; @@ -4326,6 +4424,10 @@ switch (yykind) value.copy< animtree_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_color: // color + value.copy< color_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_constant: // constant value.copy< constant_ptr > (YY_MOVE (that.value)); break; @@ -4376,7 +4478,6 @@ switch (yykind) value.copy< file_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.copy< float_ptr > (YY_MOVE (that.value)); break; @@ -4389,7 +4490,6 @@ switch (yykind) value.copy< include_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.copy< integer_ptr > (YY_MOVE (that.value)); break; @@ -4431,8 +4531,12 @@ switch (yykind) case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.copy< std::string > (YY_MOVE (that.value)); break; @@ -4603,6 +4707,10 @@ switch (yykind) value.move< animtree_ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_color: // color + value.move< color_ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_constant: // constant value.move< constant_ptr > (YY_MOVE (s.value)); break; @@ -4653,7 +4761,6 @@ switch (yykind) value.move< file_ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.move< float_ptr > (YY_MOVE (s.value)); break; @@ -4666,7 +4773,6 @@ switch (yykind) value.move< include_ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.move< integer_ptr > (YY_MOVE (s.value)); break; @@ -4708,8 +4814,12 @@ switch (yykind) case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.move< std::string > (YY_MOVE (s.value)); break; @@ -4902,7 +5012,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::iw5 -#line 4906 "parser.hpp" +#line 5016 "parser.hpp" diff --git a/src/iw6/xsk/compiler.cpp b/src/iw6/xsk/compiler.cpp index b860969f..60304d3b 100644 --- a/src/iw6/xsk/compiler.cpp +++ b/src/iw6/xsk/compiler.cpp @@ -785,6 +785,7 @@ void compiler::emit_expr(const gsc::context_ptr& ctx, const gsc::expr_ptr& expr) case gsc::node_t::data_name: emit_local_variable(ctx, expr.as_name); break; case gsc::node_t::data_istring: emit_istring(ctx, expr.as_istring); break; case gsc::node_t::data_string: emit_string(ctx, expr.as_string); break; + case gsc::node_t::data_color: emit_color(ctx, expr.as_color); break; case gsc::node_t::data_vector: emit_vector(ctx, expr.as_vector); break; case gsc::node_t::data_float: emit_float(ctx, expr.as_float); break; case gsc::node_t::data_integer: emit_integer(ctx, expr.as_integer); break; @@ -1606,6 +1607,30 @@ void compiler::emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& s emit_opcode(ctx, opcode::OP_GetString, str->value); } +void compiler::emit_color(const gsc::context_ptr& ctx, const gsc::color_ptr& color) +{ + std::vector data; + std::string x, y, z; + + if(color->value.size() == 3) + { + x = "0x" + color->value.substr(0, 1) + color->value.substr(0, 1); + y = "0x" + color->value.substr(1, 1) + color->value.substr(1, 1); + z = "0x" + color->value.substr(2, 1) + color->value.substr(2, 1); + } + else + { + x = "0x" + color->value.substr(0, 2); + y = "0x" + color->value.substr(2, 2); + z = "0x" + color->value.substr(4, 2); + } + + data.push_back(gsc::utils::string::hex_to_dec(x.data())); + data.push_back(gsc::utils::string::hex_to_dec(y.data())); + data.push_back(gsc::utils::string::hex_to_dec(z.data())); + emit_opcode(ctx, opcode::OP_GetVector, data); +} + void compiler::emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec) { std::vector data; diff --git a/src/iw6/xsk/compiler.hpp b/src/iw6/xsk/compiler.hpp index bdf1fa7d..097cc371 100644 --- a/src/iw6/xsk/compiler.hpp +++ b/src/iw6/xsk/compiler.hpp @@ -101,6 +101,7 @@ private: void emit_animation(const gsc::context_ptr& ctx, const gsc::animation_ptr& animation); void emit_istring(const gsc::context_ptr& ctx, const gsc::istring_ptr& str); void emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& str); + void emit_color(const gsc::context_ptr& ctx, const gsc::color_ptr& color); void emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec); void emit_float(const gsc::context_ptr& ctx, const gsc::float_ptr& num); void emit_integer(const gsc::context_ptr& ctx, const gsc::integer_ptr& num); diff --git a/src/iw6/xsk/lexer.cpp b/src/iw6/xsk/lexer.cpp index e07bae1f..5076229b 100644 --- a/src/iw6/xsk/lexer.cpp +++ b/src/iw6/xsk/lexer.cpp @@ -553,8 +553,8 @@ static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 100 -#define YY_END_OF_BUFFER 101 +#define YY_NUM_RULES 104 +#define YY_END_OF_BUFFER 105 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -562,41 +562,43 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[301] = +static const flex_int16_t yy_accept[314] = { 0, - 0, 0, 0, 0, 0, 0, 101, 99, 1, 2, - 88, 99, 99, 87, 91, 99, 48, 49, 85, 83, - 54, 84, 55, 86, 98, 57, 58, 72, 82, 73, - 59, 94, 52, 53, 92, 94, 94, 94, 94, 94, + 0, 0, 0, 0, 0, 0, 105, 103, 1, 2, + 88, 103, 103, 87, 91, 103, 48, 49, 85, 83, + 54, 84, 55, 86, 102, 102, 57, 58, 72, 82, + 73, 59, 94, 52, 53, 92, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, - 94, 50, 90, 51, 89, 5, 6, 5, 9, 10, - 9, 69, 0, 96, 0, 0, 0, 0, 78, 0, - 67, 0, 80, 0, 0, 76, 60, 74, 61, 75, - 97, 0, 8, 4, 3, 77, 97, 98, 0, 0, - 56, 64, 70, 68, 71, 65, 94, 81, 94, 94, + 94, 94, 50, 90, 51, 89, 5, 6, 5, 9, + 10, 9, 69, 0, 96, 0, 0, 0, 0, 0, + 78, 0, 67, 0, 80, 0, 0, 76, 60, 74, + 61, 75, 98, 0, 8, 4, 3, 77, 98, 102, + 99, 0, 0, 0, 0, 56, 64, 70, 68, 71, - 94, 94, 94, 94, 94, 94, 94, 94, 94, 24, - 29, 94, 94, 94, 94, 94, 94, 94, 94, 94, - 94, 94, 79, 66, 7, 11, 0, 96, 0, 0, - 0, 0, 0, 95, 0, 0, 0, 0, 96, 0, - 97, 0, 3, 97, 97, 93, 62, 63, 94, 94, - 94, 94, 94, 94, 94, 94, 94, 94, 27, 94, + 65, 94, 81, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 24, 29, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 79, 66, 7, + 11, 0, 96, 0, 0, 0, 0, 0, 0, 95, + 0, 0, 0, 0, 96, 0, 98, 0, 3, 98, + 98, 99, 100, 101, 93, 62, 63, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 27, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, - 94, 94, 0, 0, 0, 0, 95, 0, 0, 95, + 94, 97, 0, 0, 0, 0, 95, 0, 0, 95, 0, 0, 46, 94, 39, 31, 94, 94, 94, 25, + 94, 94, 94, 44, 94, 94, 94, 94, 45, 94, + 94, 94, 40, 94, 20, 94, 0, 0, 0, 0, + 43, 33, 94, 94, 94, 18, 41, 94, 47, 94, + 94, 94, 94, 94, 94, 94, 94, 26, 0, 0, + 0, 0, 94, 94, 94, 94, 94, 19, 94, 94, + 35, 30, 94, 36, 94, 94, 97, 0, 0, 0, + 94, 94, 94, 32, 28, 94, 94, 94, 94, 94, + 0, 15, 0, 94, 94, 34, 94, 14, 94, 94, + 21, 17, 0, 94, 94, 94, 94, 42, 94, 94, + 0, 12, 94, 13, 38, 94, 94, 0, 37, 94, - 94, 94, 40, 94, 20, 94, 0, 0, 0, 43, - 33, 94, 94, 94, 18, 41, 94, 47, 94, 94, - 94, 94, 94, 94, 94, 94, 26, 0, 0, 0, - 94, 94, 94, 94, 94, 19, 94, 94, 35, 30, - 94, 36, 94, 94, 0, 0, 0, 94, 94, 94, - 32, 28, 94, 94, 94, 94, 94, 0, 15, 0, - 94, 94, 34, 94, 14, 94, 94, 21, 17, 0, - 94, 94, 94, 94, 42, 94, 94, 0, 12, 94, - 13, 38, 94, 94, 0, 37, 94, 94, 0, 94, - 94, 0, 94, 22, 0, 94, 16, 94, 23, 0 - + 94, 0, 94, 94, 0, 94, 22, 0, 94, 16, + 94, 23, 0 } ; static const YY_CHAR yy_ec[256] = @@ -605,16 +607,16 @@ static const YY_CHAR yy_ec[256] = 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 5, 6, 1, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, - 22, 23, 24, 1, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 26, 27, 28, 29, 30, 1, 31, 32, 33, 34, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 20, 20, 20, 20, 20, 21, 21, 22, 23, 24, + 25, 26, 27, 1, 28, 29, 28, 28, 28, 28, + 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 31, 30, 30, + 32, 33, 34, 35, 36, 1, 37, 38, 39, 40, - 35, 36, 37, 38, 39, 25, 40, 41, 42, 43, - 44, 45, 25, 46, 47, 48, 49, 50, 51, 25, - 52, 53, 54, 55, 56, 57, 1, 1, 1, 1, + 41, 42, 43, 44, 45, 30, 46, 47, 48, 49, + 50, 51, 30, 52, 53, 54, 55, 56, 57, 31, + 58, 59, 60, 61, 62, 63, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -631,238 +633,267 @@ static const YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static const YY_CHAR yy_meta[58] = +static const YY_CHAR yy_meta[64] = { 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 1, 4, 1, 1, - 1, 1, 1, 1, 4, 1, 5, 1, 1, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 1, 1, 1, 1 + 1, 1, 1, 1, 1, 3, 1, 4, 4, 4, + 4, 1, 1, 1, 1, 1, 1, 4, 4, 5, + 5, 1, 6, 1, 1, 5, 4, 4, 4, 4, + 4, 4, 5, 5, 7, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 7, 5, 5, 5, 5, 1, + 1, 1, 1 } ; -static const flex_int16_t yy_base[315] = +static const flex_int16_t yy_base[334] = { 0, - 0, 0, 55, 56, 57, 58, 565, 566, 566, 566, - 542, 57, 34, 541, 66, 60, 566, 566, 540, 57, - 566, 63, 48, 74, 74, 542, 566, 55, 538, 59, - 566, 532, 566, 566, 536, 62, 66, 71, 72, 67, - 73, 87, 70, 76, 89, 92, 93, 94, 96, 97, - 99, 566, 100, 566, 566, 566, 566, 540, 566, 566, - 539, 566, 120, 566, 136, 512, 511, 506, 566, 122, - 566, 123, 566, 126, 143, 566, 566, 566, 566, 566, - 118, 513, 566, 566, 0, 566, 125, 140, 132, 0, - 566, 529, 566, 566, 566, 528, 522, 566, 130, 133, + 0, 0, 61, 62, 63, 64, 667, 668, 668, 668, + 641, 63, 34, 640, 67, 68, 668, 668, 639, 65, + 668, 66, 64, 81, 89, 95, 641, 668, 70, 637, + 74, 668, 628, 668, 668, 635, 53, 71, 88, 47, + 86, 93, 103, 104, 98, 79, 108, 101, 111, 112, + 114, 117, 668, 123, 668, 668, 668, 668, 642, 668, + 668, 641, 668, 144, 668, 152, 0, 608, 607, 602, + 668, 146, 668, 149, 668, 150, 162, 668, 668, 668, + 668, 668, 154, 609, 668, 668, 0, 668, 168, 181, + 187, 160, 193, 211, 0, 668, 628, 668, 668, 668, - 124, 135, 137, 139, 145, 149, 146, 150, 151, 521, - 520, 152, 155, 154, 157, 158, 161, 162, 163, 170, - 167, 168, 566, 566, 566, 566, 186, 204, 211, 507, - 512, 505, 205, 566, 212, 202, 215, 210, 213, 217, - 566, 490, 0, 205, 566, 515, 566, 566, 194, 203, - 206, 200, 216, 198, 218, 221, 223, 224, 225, 226, - 227, 231, 228, 232, 236, 238, 241, 239, 242, 248, - 246, 249, 499, 499, 496, 273, 274, 277, 275, 276, - 284, 503, 510, 104, 509, 508, 262, 268, 264, 507, - 265, 270, 279, 506, 271, 282, 287, 288, 505, 289, + 627, 618, 668, 133, 129, 171, 136, 184, 180, 182, + 158, 147, 186, 188, 617, 616, 134, 70, 192, 183, + 208, 201, 212, 210, 214, 223, 225, 668, 668, 668, + 668, 254, 255, 258, 0, 603, 608, 601, 257, 668, + 264, 262, 263, 265, 266, 270, 668, 586, 0, 262, + 668, 289, 295, 0, 611, 668, 668, 244, 252, 253, + 243, 268, 269, 279, 284, 285, 273, 286, 288, 291, + 297, 298, 300, 301, 287, 303, 304, 305, 306, 311, + 315, 0, 595, 595, 592, 344, 345, 348, 343, 349, + 351, 599, 606, 324, 605, 604, 326, 328, 330, 603, - 272, 292, 504, 294, 297, 298, 482, 480, 491, 566, - 299, 300, 304, 301, 500, 499, 302, 498, 305, 311, - 309, 312, 313, 322, 314, 327, 497, 477, 488, 491, - 328, 331, 310, 333, 335, 493, 336, 334, 492, 491, - 337, 490, 341, 338, 481, 480, 483, 343, 340, 353, - 486, 485, 348, 360, 362, 363, 351, 476, 566, 467, - 364, 366, 482, 369, 481, 368, 375, 376, 566, 455, - 373, 379, 377, 388, 419, 378, 386, 403, 417, 389, - 416, 414, 398, 384, 392, 412, 392, 400, 368, 401, - 399, 341, 403, 347, 193, 404, 566, 408, 159, 566, + 245, 331, 334, 602, 336, 346, 353, 335, 601, 341, + 342, 357, 600, 358, 359, 360, 0, 578, 576, 587, + 668, 364, 362, 365, 370, 596, 595, 366, 594, 369, + 371, 373, 374, 375, 388, 378, 387, 593, 0, 573, + 584, 587, 391, 392, 393, 377, 396, 589, 397, 400, + 588, 587, 401, 586, 402, 409, 668, 577, 576, 579, + 410, 406, 404, 582, 581, 411, 417, 419, 426, 414, + 572, 668, 563, 413, 430, 578, 431, 577, 432, 433, + 435, 668, 564, 437, 441, 439, 442, 575, 446, 447, + 559, 558, 452, 550, 503, 453, 448, 481, 478, 456, - 447, 452, 457, 462, 465, 467, 472, 477, 482, 487, - 492, 68, 497, 502 + 454, 458, 462, 461, 468, 466, 473, 459, 463, 668, + 468, 464, 668, 512, 519, 526, 530, 537, 542, 546, + 553, 289, 560, 567, 574, 581, 585, 224, 592, 599, + 219, 188, 93 } ; -static const flex_int16_t yy_def[315] = +static const flex_int16_t yy_def[334] = { 0, - 300, 1, 301, 301, 302, 302, 300, 300, 300, 300, - 300, 303, 300, 300, 300, 304, 300, 300, 300, 300, - 300, 300, 300, 300, 305, 300, 300, 300, 300, 300, - 300, 306, 300, 300, 300, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 303, 300, 307, 300, 300, 300, 300, 308, - 300, 309, 300, 304, 310, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 311, 300, 300, 305, 305, 312, - 300, 300, 300, 300, 300, 300, 306, 300, 306, 306, + 313, 1, 314, 314, 315, 315, 313, 313, 313, 313, + 313, 316, 317, 313, 313, 318, 313, 313, 313, 313, + 313, 313, 313, 313, 319, 319, 313, 313, 313, 313, + 313, 313, 320, 313, 313, 313, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 316, 313, 321, 322, 322, 313, 313, + 313, 323, 313, 324, 313, 318, 325, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 326, 313, 313, 319, + 319, 319, 319, 319, 327, 313, 313, 313, 313, 313, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 300, 300, 300, 300, 303, 303, 307, 300, - 300, 300, 308, 300, 313, 309, 314, 304, 304, 310, - 300, 300, 311, 300, 300, 312, 300, 300, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 300, 300, 300, 308, 308, 313, 309, 309, - 314, 300, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 313, 320, 313, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 313, 313, 313, + 313, 316, 316, 321, 328, 313, 313, 313, 323, 313, + 329, 324, 330, 318, 318, 325, 313, 313, 326, 313, + 313, 319, 319, 94, 327, 313, 313, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 331, 313, 313, 313, 323, 323, 329, 324, 324, + 330, 313, 320, 320, 320, 320, 320, 320, 320, 320, - 306, 306, 306, 306, 306, 306, 300, 300, 300, 300, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 300, 300, 300, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 300, 300, 300, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 300, 300, 300, - 306, 306, 306, 306, 306, 306, 306, 306, 300, 300, - 306, 306, 306, 306, 306, 306, 306, 300, 306, 306, - 306, 306, 306, 306, 300, 306, 306, 306, 300, 306, - 306, 300, 306, 306, 300, 306, 300, 306, 306, 0, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 332, 313, 313, 313, + 313, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 333, 313, + 313, 313, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 313, 313, 313, 313, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 313, 313, 313, 320, 320, 320, 320, 320, 320, 320, + 320, 313, 313, 320, 320, 320, 320, 320, 320, 320, + 313, 320, 320, 320, 320, 320, 320, 313, 320, 320, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300 + 320, 313, 320, 320, 313, 320, 320, 313, 320, 313, + 320, 320, 0, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313 } ; -static const flex_int16_t yy_nxt[624] = +static const flex_int16_t yy_nxt[732] = { 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 8, 34, 35, 32, - 36, 37, 38, 39, 40, 41, 42, 32, 43, 32, - 44, 32, 45, 32, 46, 47, 48, 49, 50, 32, - 51, 32, 32, 52, 53, 54, 55, 57, 57, 60, - 60, 64, 61, 61, 66, 81, 58, 58, 64, 77, - 70, 146, 67, 71, 72, 92, 93, 79, 78, 83, - 95, 96, 68, 65, 80, 84, 75, 73, 90, 87, - 85, 88, 90, 90, 82, 86, 90, 90, 90, 90, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 26, + 26, 27, 28, 29, 30, 31, 32, 33, 33, 33, + 33, 34, 8, 35, 36, 33, 37, 38, 39, 40, + 41, 42, 43, 33, 44, 33, 45, 33, 46, 33, + 47, 48, 49, 50, 51, 33, 52, 33, 33, 53, + 54, 55, 56, 58, 58, 61, 61, 65, 62, 62, + 68, 72, 59, 59, 73, 74, 65, 79, 69, 95, + 81, 83, 83, 83, 83, 95, 85, 109, 70, 80, + 82, 75, 86, 97, 98, 66, 257, 87, 100, 101, - 90, 101, 90, 107, 99, 110, 104, 105, 102, 106, - 112, 100, 111, 90, 103, 90, 108, 109, 90, 90, - 90, 123, 90, 90, 64, 90, 134, 115, 116, 121, - 90, 134, 113, 118, 64, 81, 122, 114, 63, 120, - 128, 119, 144, 211, 117, 74, 65, 300, 135, 137, - 90, 139, 75, 141, 124, 87, 90, 88, 90, 90, - 145, 90, 129, 90, 151, 90, 90, 150, 149, 140, - 152, 90, 90, 153, 155, 90, 90, 90, 90, 154, - 90, 90, 157, 90, 90, 90, 158, 90, 90, 90, - 64, 156, 160, 90, 90, 159, 90, 163, 165, 166, + 77, 104, 95, 95, 89, 88, 90, 91, 91, 90, + 89, 95, 90, 90, 90, 90, 84, 93, 95, 94, + 95, 95, 105, 171, 106, 95, 93, 95, 118, 112, + 95, 107, 110, 95, 111, 95, 95, 108, 117, 114, + 95, 120, 113, 95, 95, 115, 95, 128, 65, 95, + 140, 121, 116, 126, 64, 123, 133, 140, 65, 119, + 127, 95, 125, 124, 76, 95, 95, 122, 95, 159, + 145, 83, 83, 83, 83, 313, 66, 158, 141, 95, + 162, 143, 77, 129, 134, 150, 150, 150, 150, 170, + 95, 239, 95, 167, 146, 147, 89, 166, 90, 90, - 167, 161, 162, 170, 164, 171, 172, 168, 64, 134, - 134, 169, 65, 63, 133, 128, 177, 136, 64, 74, - 90, 64, 144, 180, 90, 139, 90, 297, 137, 90, - 65, 135, 90, 184, 186, 183, 75, 129, 178, 75, - 145, 181, 90, 140, 90, 188, 185, 90, 189, 90, - 90, 90, 90, 90, 90, 190, 187, 90, 90, 193, - 194, 195, 90, 197, 90, 90, 191, 90, 90, 196, - 192, 199, 90, 202, 90, 90, 203, 134, 134, 133, - 198, 177, 204, 134, 134, 200, 136, 201, 90, 206, - 90, 90, 180, 205, 90, 212, 90, 90, 90, 135, + 90, 90, 89, 95, 152, 152, 152, 90, 313, 151, + 153, 153, 95, 95, 95, 95, 95, 160, 95, 95, + 95, 164, 217, 161, 95, 95, 313, 182, 154, 154, + 154, 154, 163, 95, 165, 169, 173, 168, 154, 154, + 95, 172, 95, 95, 95, 175, 95, 154, 154, 154, + 154, 154, 154, 179, 174, 95, 176, 95, 65, 65, + 64, 140, 133, 177, 178, 142, 139, 180, 187, 181, + 140, 190, 76, 65, 65, 95, 95, 95, 145, 150, + 150, 150, 150, 196, 95, 95, 66, 66, 194, 141, + 134, 193, 135, 226, 143, 191, 188, 77, 77, 195, - 135, 137, 137, 178, 216, 90, 213, 215, 90, 217, - 181, 218, 214, 90, 90, 90, 220, 219, 90, 223, - 90, 222, 224, 90, 90, 90, 90, 90, 90, 225, - 90, 90, 227, 221, 235, 90, 90, 90, 90, 90, - 90, 234, 237, 231, 226, 238, 233, 232, 90, 240, - 241, 239, 243, 90, 90, 242, 236, 90, 250, 90, - 90, 90, 90, 90, 90, 244, 90, 90, 249, 90, - 253, 248, 252, 90, 90, 295, 254, 90, 257, 90, - 251, 261, 255, 256, 264, 262, 90, 263, 90, 90, - 90, 268, 90, 265, 90, 90, 266, 267, 274, 90, + 95, 95, 146, 151, 89, 95, 152, 152, 152, 90, + 313, 95, 153, 153, 197, 199, 95, 95, 95, 95, + 95, 95, 198, 95, 200, 202, 203, 95, 204, 95, + 95, 205, 95, 95, 201, 95, 95, 95, 95, 207, + 210, 206, 209, 95, 212, 213, 214, 95, 140, 140, + 139, 140, 187, 142, 208, 211, 95, 140, 95, 190, + 95, 216, 95, 95, 215, 223, 95, 95, 95, 222, + 228, 227, 224, 95, 95, 143, 141, 141, 95, 233, + 188, 143, 229, 191, 225, 95, 232, 230, 231, 95, + 95, 95, 95, 235, 95, 234, 95, 95, 95, 236, - 272, 90, 90, 90, 90, 90, 271, 273, 275, 280, - 90, 276, 90, 292, 90, 90, 284, 277, 90, 281, - 279, 282, 286, 283, 90, 90, 90, 90, 287, 90, - 90, 288, 291, 290, 90, 293, 294, 296, 90, 289, - 90, 299, 90, 90, 285, 90, 298, 56, 56, 56, - 56, 56, 59, 59, 59, 59, 59, 63, 63, 63, - 63, 63, 74, 74, 74, 74, 74, 89, 89, 89, - 97, 97, 127, 127, 127, 127, 127, 133, 133, 133, - 133, 133, 136, 136, 136, 136, 136, 138, 138, 138, - 138, 138, 143, 278, 143, 143, 143, 176, 176, 176, + 238, 95, 95, 95, 247, 95, 95, 95, 249, 95, + 95, 250, 237, 245, 243, 244, 246, 252, 253, 95, + 95, 251, 255, 95, 95, 95, 248, 254, 95, 95, + 264, 256, 95, 95, 95, 262, 95, 266, 95, 265, + 261, 95, 95, 95, 276, 95, 95, 263, 267, 95, + 269, 95, 268, 277, 274, 270, 278, 275, 95, 279, + 281, 284, 95, 95, 95, 95, 280, 95, 287, 95, + 285, 95, 288, 95, 95, 286, 289, 293, 95, 95, + 95, 295, 290, 297, 95, 95, 95, 294, 95, 300, + 292, 299, 304, 95, 95, 95, 95, 296, 95, 310, - 176, 176, 179, 179, 179, 179, 179, 90, 90, 270, - 269, 90, 90, 260, 259, 258, 90, 90, 90, 90, - 247, 246, 245, 90, 90, 90, 90, 230, 229, 228, - 90, 90, 90, 90, 90, 90, 90, 210, 209, 208, - 207, 90, 182, 175, 174, 173, 90, 90, 90, 148, - 147, 142, 132, 131, 130, 126, 125, 98, 90, 94, - 91, 76, 69, 62, 300, 7, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + 95, 301, 306, 303, 307, 95, 309, 312, 308, 305, + 95, 311, 57, 57, 57, 57, 57, 57, 57, 60, + 60, 60, 60, 60, 60, 60, 64, 64, 64, 64, + 64, 64, 64, 67, 302, 95, 67, 76, 76, 76, + 76, 76, 76, 76, 92, 92, 92, 92, 92, 102, + 102, 102, 102, 132, 132, 132, 132, 132, 132, 132, + 139, 139, 139, 139, 139, 139, 139, 142, 142, 142, + 142, 142, 142, 142, 144, 144, 144, 144, 144, 144, + 144, 149, 95, 149, 149, 149, 149, 149, 155, 155, + 95, 155, 186, 186, 186, 186, 186, 186, 186, 189, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300 + 189, 189, 189, 189, 189, 189, 298, 95, 291, 95, + 95, 283, 282, 95, 95, 273, 272, 271, 95, 95, + 95, 95, 260, 259, 258, 95, 95, 95, 95, 242, + 241, 240, 95, 95, 95, 95, 95, 95, 95, 221, + 220, 219, 218, 95, 192, 185, 184, 183, 95, 95, + 95, 157, 156, 148, 138, 137, 136, 131, 130, 103, + 95, 99, 96, 78, 71, 63, 313, 7, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313 } ; -static const flex_int16_t yy_chk[624] = +static const flex_int16_t yy_chk[732] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 3, 4, 5, - 6, 12, 5, 6, 13, 23, 3, 4, 16, 20, - 15, 312, 13, 15, 15, 28, 28, 22, 20, 24, - 30, 30, 13, 12, 22, 24, 16, 15, 36, 25, - 24, 25, 37, 40, 23, 24, 43, 38, 39, 41, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 4, 5, 6, 12, 5, 6, + 13, 15, 3, 4, 15, 15, 16, 20, 13, 40, + 22, 23, 23, 23, 23, 37, 24, 40, 13, 20, + 22, 15, 24, 29, 29, 12, 333, 24, 31, 31, - 25, 38, 44, 41, 36, 43, 39, 40, 38, 40, - 44, 37, 43, 42, 38, 45, 41, 42, 46, 47, - 48, 53, 49, 50, 63, 51, 70, 47, 48, 51, - 184, 72, 45, 49, 74, 81, 51, 46, 65, 50, - 65, 49, 87, 184, 48, 75, 63, 89, 70, 72, - 101, 75, 74, 81, 53, 88, 99, 88, 89, 100, - 87, 102, 65, 103, 101, 104, 88, 100, 99, 75, - 101, 105, 107, 102, 104, 106, 108, 109, 112, 103, - 114, 113, 106, 115, 116, 299, 107, 117, 118, 119, - 127, 105, 109, 121, 122, 108, 120, 114, 116, 117, + 16, 37, 118, 38, 25, 24, 25, 25, 25, 25, + 26, 46, 26, 26, 26, 26, 23, 25, 41, 25, + 39, 25, 38, 118, 39, 42, 25, 26, 46, 42, + 45, 39, 41, 48, 41, 43, 44, 39, 45, 43, + 47, 48, 42, 49, 50, 44, 51, 54, 64, 52, + 72, 49, 44, 52, 66, 50, 66, 74, 76, 47, + 52, 105, 51, 50, 77, 104, 117, 49, 107, 105, + 77, 83, 83, 83, 83, 92, 64, 104, 72, 112, + 107, 74, 76, 54, 66, 89, 89, 89, 89, 117, + 111, 332, 92, 112, 77, 83, 90, 111, 90, 90, - 118, 112, 113, 120, 115, 121, 122, 118, 128, 133, - 136, 119, 127, 129, 135, 129, 135, 137, 138, 140, - 149, 139, 144, 137, 154, 140, 152, 295, 136, 150, - 128, 133, 151, 150, 152, 149, 138, 129, 135, 139, - 144, 137, 153, 140, 155, 154, 151, 156, 155, 157, - 158, 159, 160, 161, 163, 156, 153, 162, 164, 159, - 160, 161, 165, 163, 166, 168, 157, 167, 169, 162, - 158, 165, 171, 168, 170, 172, 169, 176, 177, 178, - 164, 178, 170, 179, 180, 166, 181, 167, 187, 172, - 189, 191, 181, 171, 188, 187, 192, 195, 201, 176, + 90, 90, 91, 106, 91, 91, 91, 91, 93, 89, + 93, 93, 109, 90, 110, 120, 108, 106, 113, 91, + 114, 109, 331, 106, 119, 93, 94, 328, 94, 94, + 94, 94, 108, 122, 110, 114, 120, 113, 94, 94, + 121, 119, 124, 94, 123, 122, 125, 94, 94, 94, + 94, 94, 94, 125, 121, 126, 123, 127, 132, 133, + 134, 139, 134, 123, 124, 143, 141, 126, 141, 127, + 142, 143, 146, 144, 145, 161, 158, 201, 146, 150, + 150, 150, 150, 161, 159, 160, 132, 133, 159, 139, + 134, 158, 322, 201, 142, 143, 141, 144, 145, 160, - 177, 179, 180, 178, 192, 193, 188, 191, 196, 193, - 181, 195, 189, 197, 198, 200, 197, 196, 202, 201, - 204, 200, 202, 205, 206, 211, 212, 214, 217, 204, - 213, 219, 206, 198, 217, 221, 233, 220, 222, 223, - 225, 214, 220, 211, 205, 220, 213, 212, 224, 222, - 223, 221, 225, 226, 231, 224, 219, 232, 233, 234, - 238, 235, 237, 241, 244, 226, 249, 243, 232, 248, - 237, 231, 235, 294, 253, 292, 238, 257, 244, 250, - 234, 248, 241, 243, 253, 249, 254, 250, 255, 256, - 261, 257, 262, 254, 266, 264, 255, 256, 266, 271, + 162, 163, 146, 150, 152, 167, 152, 152, 152, 152, + 153, 164, 153, 153, 162, 164, 165, 166, 168, 175, + 169, 152, 163, 170, 165, 167, 168, 153, 169, 171, + 172, 170, 173, 174, 166, 176, 177, 178, 179, 172, + 175, 171, 174, 180, 177, 178, 179, 181, 186, 187, + 188, 189, 188, 191, 173, 176, 194, 190, 197, 191, + 198, 181, 199, 202, 180, 197, 203, 208, 205, 194, + 203, 202, 198, 210, 211, 189, 186, 187, 206, 210, + 188, 190, 205, 191, 199, 207, 208, 206, 207, 212, + 214, 215, 216, 212, 223, 211, 222, 224, 228, 214, - 262, 267, 268, 273, 276, 272, 261, 264, 267, 272, - 284, 268, 277, 289, 274, 280, 277, 268, 287, 273, - 271, 274, 280, 276, 283, 291, 288, 290, 283, 293, - 296, 284, 288, 287, 298, 290, 291, 293, 286, 285, - 282, 298, 281, 279, 278, 275, 296, 301, 301, 301, - 301, 301, 302, 302, 302, 302, 302, 303, 303, 303, - 303, 303, 304, 304, 304, 304, 304, 305, 305, 305, - 306, 306, 307, 307, 307, 307, 307, 308, 308, 308, - 308, 308, 309, 309, 309, 309, 309, 310, 310, 310, - 310, 310, 311, 270, 311, 311, 311, 313, 313, 313, + 216, 230, 225, 231, 228, 232, 233, 234, 231, 246, + 236, 231, 215, 224, 222, 223, 225, 233, 234, 237, + 235, 232, 236, 243, 244, 245, 230, 235, 247, 249, + 246, 237, 250, 253, 255, 244, 263, 249, 262, 247, + 243, 256, 261, 266, 263, 274, 270, 245, 250, 267, + 255, 268, 253, 266, 261, 256, 267, 262, 269, 268, + 270, 274, 275, 277, 279, 280, 269, 281, 279, 284, + 275, 286, 280, 285, 287, 277, 281, 285, 289, 290, + 297, 287, 281, 290, 293, 296, 301, 286, 300, 296, + 284, 293, 301, 304, 303, 309, 312, 289, 306, 308, - 313, 313, 314, 314, 314, 314, 314, 265, 263, 260, - 258, 252, 251, 247, 246, 245, 242, 240, 239, 236, - 230, 229, 228, 227, 218, 216, 215, 209, 208, 207, - 203, 199, 194, 190, 186, 185, 183, 182, 175, 174, - 173, 146, 142, 132, 131, 130, 111, 110, 97, 96, - 92, 82, 68, 67, 66, 61, 58, 35, 32, 29, - 26, 19, 14, 11, 7, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + 311, 297, 303, 300, 304, 307, 306, 311, 305, 302, + 299, 309, 314, 314, 314, 314, 314, 314, 314, 315, + 315, 315, 315, 315, 315, 315, 316, 316, 316, 316, + 316, 316, 316, 317, 298, 295, 317, 318, 318, 318, + 318, 318, 318, 318, 319, 319, 319, 319, 319, 320, + 320, 320, 320, 321, 321, 321, 321, 321, 321, 321, + 323, 323, 323, 323, 323, 323, 323, 324, 324, 324, + 324, 324, 324, 324, 325, 325, 325, 325, 325, 325, + 325, 326, 294, 326, 326, 326, 326, 326, 327, 327, + 292, 327, 329, 329, 329, 329, 329, 329, 329, 330, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300 + 330, 330, 330, 330, 330, 330, 291, 288, 283, 278, + 276, 273, 271, 265, 264, 260, 259, 258, 254, 252, + 251, 248, 242, 241, 240, 238, 229, 227, 226, 220, + 219, 218, 213, 209, 204, 200, 196, 195, 193, 192, + 185, 184, 183, 155, 148, 138, 137, 136, 116, 115, + 102, 101, 97, 84, 70, 69, 68, 62, 59, 36, + 33, 30, 27, 19, 14, 11, 7, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313 } ; /* The intent behind this definition is that it'll catch @@ -883,9 +914,9 @@ static const flex_int16_t yy_chk[624] = #line 23 "lexer.lpp" #define YY_USER_ACTION loc.columns(yyleng); -#line 886 "lexer.cpp" +#line 917 "lexer.cpp" -#line 888 "lexer.cpp" +#line 919 "lexer.cpp" #define INITIAL 0 #define COMMENT_BLOCK_STATE 1 @@ -1145,15 +1176,15 @@ YY_DECL } { -#line 36 "lexer.lpp" +#line 40 "lexer.lpp" -#line 40 "lexer.lpp" +#line 44 "lexer.lpp" loc.step(); -#line 1156 "lexer.cpp" +#line 1187 "lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1180,13 +1211,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 301 ) + if ( yy_current_state >= 314 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 300 ); + while ( yy_current_state != 313 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -1208,517 +1239,537 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 43 "lexer.lpp" +#line 47 "lexer.lpp" { loc.step(); } YY_BREAK case 2: /* rule 2 can match eol */ YY_RULE_SETUP -#line 45 "lexer.lpp" +#line 49 "lexer.lpp" { loc.lines(yyleng); loc.step(); } YY_BREAK case 3: YY_RULE_SETUP -#line 47 "lexer.lpp" +#line 51 "lexer.lpp" YY_BREAK case 4: YY_RULE_SETUP -#line 49 "lexer.lpp" +#line 53 "lexer.lpp" { BEGIN(COMMENT_BLOCK_STATE); } YY_BREAK case 5: YY_RULE_SETUP -#line 50 "lexer.lpp" +#line 54 "lexer.lpp" YY_BREAK case 6: /* rule 6 can match eol */ YY_RULE_SETUP -#line 51 "lexer.lpp" +#line 55 "lexer.lpp" { loc.lines(yyleng); loc.step(); } YY_BREAK case 7: YY_RULE_SETUP -#line 52 "lexer.lpp" +#line 56 "lexer.lpp" { BEGIN(INITIAL); } YY_BREAK case 8: YY_RULE_SETUP -#line 54 "lexer.lpp" +#line 58 "lexer.lpp" { BEGIN(DEVELOPER_BLOCK_STATE); } YY_BREAK case 9: YY_RULE_SETUP -#line 55 "lexer.lpp" +#line 59 "lexer.lpp" YY_BREAK case 10: /* rule 10 can match eol */ YY_RULE_SETUP -#line 56 "lexer.lpp" +#line 60 "lexer.lpp" { loc.lines(yyleng); loc.step(); } YY_BREAK case 11: YY_RULE_SETUP -#line 57 "lexer.lpp" +#line 61 "lexer.lpp" { BEGIN(INITIAL); } YY_BREAK case 12: YY_RULE_SETUP -#line 59 "lexer.lpp" +#line 63 "lexer.lpp" { return iw6::parser::make_BREAKPOINT(loc); } YY_BREAK case 13: YY_RULE_SETUP -#line 60 "lexer.lpp" +#line 64 "lexer.lpp" { return iw6::parser::make_PROFBEGIN(loc); } YY_BREAK case 14: YY_RULE_SETUP -#line 61 "lexer.lpp" +#line 65 "lexer.lpp" { return iw6::parser::make_PROFEND(loc); } YY_BREAK case 15: YY_RULE_SETUP -#line 62 "lexer.lpp" +#line 66 "lexer.lpp" { return iw6::parser::make_INCLUDE(loc); } YY_BREAK case 16: YY_RULE_SETUP -#line 63 "lexer.lpp" +#line 67 "lexer.lpp" { return iw6::parser::make_USINGTREE(loc); } YY_BREAK case 17: YY_RULE_SETUP -#line 64 "lexer.lpp" +#line 68 "lexer.lpp" { return iw6::parser::make_ANIMTREE(loc); } YY_BREAK case 18: YY_RULE_SETUP -#line 65 "lexer.lpp" +#line 69 "lexer.lpp" { return iw6::parser::make_ENDON(loc); } YY_BREAK case 19: YY_RULE_SETUP -#line 66 "lexer.lpp" +#line 70 "lexer.lpp" { return iw6::parser::make_NOTIFY(loc); } YY_BREAK case 20: YY_RULE_SETUP -#line 67 "lexer.lpp" +#line 71 "lexer.lpp" { return iw6::parser::make_WAIT(loc); } YY_BREAK case 21: YY_RULE_SETUP -#line 68 "lexer.lpp" +#line 72 "lexer.lpp" { return iw6::parser::make_WAITTILL(loc); } YY_BREAK case 22: YY_RULE_SETUP -#line 69 "lexer.lpp" +#line 73 "lexer.lpp" { return iw6::parser::make_WAITTILLMATCH(loc); } YY_BREAK case 23: YY_RULE_SETUP -#line 70 "lexer.lpp" +#line 74 "lexer.lpp" { return iw6::parser::make_WAITTILLFRAMEEND(loc); } YY_BREAK case 24: YY_RULE_SETUP -#line 71 "lexer.lpp" +#line 75 "lexer.lpp" { return iw6::parser::make_IF(loc); } YY_BREAK case 25: YY_RULE_SETUP -#line 72 "lexer.lpp" +#line 76 "lexer.lpp" { return iw6::parser::make_ELSE(loc); } YY_BREAK case 26: YY_RULE_SETUP -#line 73 "lexer.lpp" +#line 77 "lexer.lpp" { return iw6::parser::make_WHILE(loc); } YY_BREAK case 27: YY_RULE_SETUP -#line 74 "lexer.lpp" +#line 78 "lexer.lpp" { return iw6::parser::make_FOR(loc); } YY_BREAK case 28: YY_RULE_SETUP -#line 75 "lexer.lpp" +#line 79 "lexer.lpp" { return iw6::parser::make_FOREACH(loc); } YY_BREAK case 29: YY_RULE_SETUP -#line 76 "lexer.lpp" +#line 80 "lexer.lpp" { return iw6::parser::make_IN(loc); } YY_BREAK case 30: YY_RULE_SETUP -#line 77 "lexer.lpp" +#line 81 "lexer.lpp" { return iw6::parser::make_SWITCH(loc); } YY_BREAK case 31: YY_RULE_SETUP -#line 78 "lexer.lpp" +#line 82 "lexer.lpp" { return iw6::parser::make_CASE(loc); } YY_BREAK case 32: YY_RULE_SETUP -#line 79 "lexer.lpp" +#line 83 "lexer.lpp" { return iw6::parser::make_DEFAULT(loc); } YY_BREAK case 33: YY_RULE_SETUP -#line 80 "lexer.lpp" +#line 84 "lexer.lpp" { return iw6::parser::make_BREAK(loc); } YY_BREAK case 34: YY_RULE_SETUP -#line 81 "lexer.lpp" +#line 85 "lexer.lpp" { return iw6::parser::make_CONTINUE(loc); } YY_BREAK case 35: YY_RULE_SETUP -#line 82 "lexer.lpp" +#line 86 "lexer.lpp" { return iw6::parser::make_RETURN(loc); } YY_BREAK case 36: YY_RULE_SETUP -#line 83 "lexer.lpp" +#line 87 "lexer.lpp" { return iw6::parser::make_THREAD(loc); } YY_BREAK case 37: YY_RULE_SETUP -#line 84 "lexer.lpp" +#line 88 "lexer.lpp" { return iw6::parser::make_CHILDTHREAD(loc); } YY_BREAK case 38: YY_RULE_SETUP -#line 85 "lexer.lpp" +#line 89 "lexer.lpp" { return iw6::parser::make_THISTHREAD(loc); } YY_BREAK case 39: YY_RULE_SETUP -#line 86 "lexer.lpp" +#line 90 "lexer.lpp" { return iw6::parser::make_CALL(loc); } YY_BREAK case 40: YY_RULE_SETUP -#line 87 "lexer.lpp" +#line 91 "lexer.lpp" { return iw6::parser::make_TRUE(loc); } YY_BREAK case 41: YY_RULE_SETUP -#line 88 "lexer.lpp" +#line 92 "lexer.lpp" { return iw6::parser::make_FALSE(loc); } YY_BREAK case 42: YY_RULE_SETUP -#line 89 "lexer.lpp" +#line 93 "lexer.lpp" { return iw6::parser::make_UNDEFINED(loc); } YY_BREAK case 43: YY_RULE_SETUP -#line 90 "lexer.lpp" +#line 94 "lexer.lpp" { return iw6::parser::make_SIZE(loc); } YY_BREAK case 44: YY_RULE_SETUP -#line 91 "lexer.lpp" +#line 95 "lexer.lpp" { return iw6::parser::make_GAME(loc); } YY_BREAK case 45: YY_RULE_SETUP -#line 92 "lexer.lpp" +#line 96 "lexer.lpp" { return iw6::parser::make_SELF(loc); } YY_BREAK case 46: YY_RULE_SETUP -#line 93 "lexer.lpp" +#line 97 "lexer.lpp" { return iw6::parser::make_ANIM(loc); } YY_BREAK case 47: YY_RULE_SETUP -#line 94 "lexer.lpp" +#line 98 "lexer.lpp" { return iw6::parser::make_LEVEL(loc); } YY_BREAK case 48: YY_RULE_SETUP -#line 95 "lexer.lpp" +#line 99 "lexer.lpp" { return iw6::parser::make_LPAREN(loc); } YY_BREAK case 49: YY_RULE_SETUP -#line 96 "lexer.lpp" +#line 100 "lexer.lpp" { return iw6::parser::make_RPAREN(loc); } YY_BREAK case 50: YY_RULE_SETUP -#line 97 "lexer.lpp" +#line 101 "lexer.lpp" { return iw6::parser::make_LBRACE(loc); } YY_BREAK case 51: YY_RULE_SETUP -#line 98 "lexer.lpp" +#line 102 "lexer.lpp" { return iw6::parser::make_RBRACE(loc); } YY_BREAK case 52: YY_RULE_SETUP -#line 99 "lexer.lpp" +#line 103 "lexer.lpp" { return iw6::parser::make_LBRACKET(loc); } YY_BREAK case 53: YY_RULE_SETUP -#line 100 "lexer.lpp" +#line 104 "lexer.lpp" { return iw6::parser::make_RBRACKET(loc); } YY_BREAK case 54: YY_RULE_SETUP -#line 101 "lexer.lpp" +#line 105 "lexer.lpp" { return iw6::parser::make_COMMA(loc); } YY_BREAK case 55: YY_RULE_SETUP -#line 102 "lexer.lpp" +#line 106 "lexer.lpp" { return iw6::parser::make_DOT(loc); } YY_BREAK case 56: YY_RULE_SETUP -#line 103 "lexer.lpp" +#line 107 "lexer.lpp" { return iw6::parser::make_DOUBLECOLON(loc); } YY_BREAK case 57: YY_RULE_SETUP -#line 104 "lexer.lpp" +#line 108 "lexer.lpp" { return iw6::parser::make_COLON(loc); } YY_BREAK case 58: YY_RULE_SETUP -#line 105 "lexer.lpp" +#line 109 "lexer.lpp" { return iw6::parser::make_SEMICOLON(loc); } YY_BREAK case 59: YY_RULE_SETUP -#line 106 "lexer.lpp" +#line 110 "lexer.lpp" { return iw6::parser::make_QMARK(loc); } YY_BREAK case 60: YY_RULE_SETUP -#line 107 "lexer.lpp" +#line 111 "lexer.lpp" { return iw6::parser::make_INCREMENT(loc); } YY_BREAK case 61: YY_RULE_SETUP -#line 108 "lexer.lpp" +#line 112 "lexer.lpp" { return iw6::parser::make_DECREMENT(loc); } YY_BREAK case 62: YY_RULE_SETUP -#line 109 "lexer.lpp" +#line 113 "lexer.lpp" { return iw6::parser::make_ASSIGN_LSHIFT(loc); } YY_BREAK case 63: YY_RULE_SETUP -#line 110 "lexer.lpp" +#line 114 "lexer.lpp" { return iw6::parser::make_ASSIGN_RSHIFT(loc); } YY_BREAK case 64: YY_RULE_SETUP -#line 111 "lexer.lpp" +#line 115 "lexer.lpp" { return iw6::parser::make_LSHIFT(loc); } YY_BREAK case 65: YY_RULE_SETUP -#line 112 "lexer.lpp" +#line 116 "lexer.lpp" { return iw6::parser::make_RSHIFT(loc); } YY_BREAK case 66: YY_RULE_SETUP -#line 113 "lexer.lpp" +#line 117 "lexer.lpp" { return iw6::parser::make_OR(loc); } YY_BREAK case 67: YY_RULE_SETUP -#line 114 "lexer.lpp" +#line 118 "lexer.lpp" { return iw6::parser::make_AND(loc); } YY_BREAK case 68: YY_RULE_SETUP -#line 115 "lexer.lpp" +#line 119 "lexer.lpp" { return iw6::parser::make_EQUALITY(loc); } YY_BREAK case 69: YY_RULE_SETUP -#line 116 "lexer.lpp" +#line 120 "lexer.lpp" { return iw6::parser::make_INEQUALITY(loc); } YY_BREAK case 70: YY_RULE_SETUP -#line 117 "lexer.lpp" +#line 121 "lexer.lpp" { return iw6::parser::make_LESS_EQUAL(loc); } YY_BREAK case 71: YY_RULE_SETUP -#line 118 "lexer.lpp" +#line 122 "lexer.lpp" { return iw6::parser::make_GREATER_EQUAL(loc); } YY_BREAK case 72: YY_RULE_SETUP -#line 119 "lexer.lpp" +#line 123 "lexer.lpp" { return iw6::parser::make_LESS(loc); } YY_BREAK case 73: YY_RULE_SETUP -#line 120 "lexer.lpp" +#line 124 "lexer.lpp" { return iw6::parser::make_GREATER(loc); } YY_BREAK case 74: YY_RULE_SETUP -#line 121 "lexer.lpp" +#line 125 "lexer.lpp" { return iw6::parser::make_ASSIGN_ADD(loc); } YY_BREAK case 75: YY_RULE_SETUP -#line 122 "lexer.lpp" +#line 126 "lexer.lpp" { return iw6::parser::make_ASSIGN_SUB(loc); } YY_BREAK case 76: YY_RULE_SETUP -#line 123 "lexer.lpp" +#line 127 "lexer.lpp" { return iw6::parser::make_ASSIGN_MULT(loc); } YY_BREAK case 77: YY_RULE_SETUP -#line 124 "lexer.lpp" +#line 128 "lexer.lpp" { return iw6::parser::make_ASSIGN_DIV(loc); } YY_BREAK case 78: YY_RULE_SETUP -#line 125 "lexer.lpp" +#line 129 "lexer.lpp" { return iw6::parser::make_ASSIGN_MOD(loc); } YY_BREAK case 79: YY_RULE_SETUP -#line 126 "lexer.lpp" +#line 130 "lexer.lpp" { return iw6::parser::make_ASSIGN_BITWISE_OR(loc); } YY_BREAK case 80: YY_RULE_SETUP -#line 127 "lexer.lpp" +#line 131 "lexer.lpp" { return iw6::parser::make_ASSIGN_BITWISE_AND(loc); } YY_BREAK case 81: YY_RULE_SETUP -#line 128 "lexer.lpp" +#line 132 "lexer.lpp" { return iw6::parser::make_ASSIGN_BITWISE_EXOR(loc); } YY_BREAK case 82: YY_RULE_SETUP -#line 129 "lexer.lpp" +#line 133 "lexer.lpp" { return iw6::parser::make_ASSIGN(loc); } YY_BREAK case 83: YY_RULE_SETUP -#line 130 "lexer.lpp" +#line 134 "lexer.lpp" { return iw6::parser::make_ADD(loc); } YY_BREAK case 84: YY_RULE_SETUP -#line 131 "lexer.lpp" +#line 135 "lexer.lpp" { return iw6::parser::make_SUB(loc); } YY_BREAK case 85: YY_RULE_SETUP -#line 132 "lexer.lpp" +#line 136 "lexer.lpp" { return iw6::parser::make_MULT(loc); } YY_BREAK case 86: YY_RULE_SETUP -#line 133 "lexer.lpp" +#line 137 "lexer.lpp" { return iw6::parser::make_DIV(loc); } YY_BREAK case 87: YY_RULE_SETUP -#line 134 "lexer.lpp" +#line 138 "lexer.lpp" { return iw6::parser::make_MOD(loc); } YY_BREAK case 88: YY_RULE_SETUP -#line 135 "lexer.lpp" +#line 139 "lexer.lpp" { return iw6::parser::make_NOT(loc); } YY_BREAK case 89: YY_RULE_SETUP -#line 136 "lexer.lpp" +#line 140 "lexer.lpp" { return iw6::parser::make_COMPLEMENT(loc); } YY_BREAK case 90: YY_RULE_SETUP -#line 137 "lexer.lpp" +#line 141 "lexer.lpp" { return iw6::parser::make_BITWISE_OR(loc); } YY_BREAK case 91: YY_RULE_SETUP -#line 138 "lexer.lpp" +#line 142 "lexer.lpp" { return iw6::parser::make_BITWISE_AND(loc); } YY_BREAK case 92: YY_RULE_SETUP -#line 139 "lexer.lpp" +#line 143 "lexer.lpp" { return iw6::parser::make_BITWISE_EXOR(loc); } YY_BREAK case 93: YY_RULE_SETUP -#line 140 "lexer.lpp" +#line 144 "lexer.lpp" { return iw6::parser::make_FILE(utils::string::fordslash(yytext), loc); } YY_BREAK case 94: YY_RULE_SETUP -#line 141 "lexer.lpp" +#line 145 "lexer.lpp" { return iw6::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); } YY_BREAK case 95: /* rule 95 can match eol */ YY_RULE_SETUP -#line 142 "lexer.lpp" +#line 146 "lexer.lpp" { return iw6::parser::make_ISTRING(std::string(yytext).substr(1), loc); } YY_BREAK case 96: /* rule 96 can match eol */ YY_RULE_SETUP -#line 143 "lexer.lpp" +#line 147 "lexer.lpp" { return iw6::parser::make_STRING(std::string(yytext), loc); } YY_BREAK case 97: YY_RULE_SETUP -#line 144 "lexer.lpp" -{ return iw6::parser::make_FLOAT(std::string(yytext), loc); } +#line 148 "lexer.lpp" +{ return iw6::parser::make_COLOR(std::string(yytext).substr(1), loc); } YY_BREAK case 98: YY_RULE_SETUP -#line 145 "lexer.lpp" -{ return iw6::parser::make_INTEGER(std::string(yytext), loc); } +#line 149 "lexer.lpp" +{ return iw6::parser::make_FLOAT(std::string(yytext), loc); } + YY_BREAK +case 99: +YY_RULE_SETUP +#line 150 "lexer.lpp" +{ return iw6::parser::make_INT_OCT(utils::string::oct_to_dec(yytext), loc); } + YY_BREAK +case 100: +YY_RULE_SETUP +#line 151 "lexer.lpp" +{ return iw6::parser::make_INT_BIN(utils::string::bin_to_dec(yytext), loc); } + YY_BREAK +case 101: +YY_RULE_SETUP +#line 152 "lexer.lpp" +{ return iw6::parser::make_INT_HEX(utils::string::hex_to_dec(yytext), loc); } + YY_BREAK +case 102: +YY_RULE_SETUP +#line 153 "lexer.lpp" +{ return iw6::parser::make_INT_DEC(std::string(yytext), loc); } YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT_BLOCK_STATE): case YY_STATE_EOF(DEVELOPER_BLOCK_STATE): -#line 146 "lexer.lpp" +#line 154 "lexer.lpp" { return iw6::parser::make_IW6EOF(loc); } YY_BREAK -case 99: -/* rule 99 can match eol */ +case 103: +/* rule 103 can match eol */ YY_RULE_SETUP -#line 147 "lexer.lpp" +#line 155 "lexer.lpp" { throw iw6::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); } YY_BREAK -case 100: +case 104: YY_RULE_SETUP -#line 149 "lexer.lpp" +#line 157 "lexer.lpp" ECHO; YY_BREAK -#line 1721 "lexer.cpp" +#line 1772 "lexer.cpp" case YY_END_OF_BUFFER: { @@ -2016,7 +2067,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 301 ) + if ( yy_current_state >= 314 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2045,11 +2096,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 301 ) + if ( yy_current_state >= 314 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 300); + yy_is_jam = (yy_current_state == 313); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -2848,6 +2899,6 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 149 "lexer.lpp" +#line 157 "lexer.lpp" diff --git a/src/iw6/xsk/lexer.hpp b/src/iw6/xsk/lexer.hpp index 96a74962..51afb447 100644 --- a/src/iw6/xsk/lexer.hpp +++ b/src/iw6/xsk/lexer.hpp @@ -700,7 +700,7 @@ extern int yylex (yyscan_t yyscanner); #undef yyTABLES_NAME #endif -#line 149 "lexer.lpp" +#line 157 "lexer.lpp" #line 706 "lexer.hpp" diff --git a/src/iw6/xsk/parser.cpp b/src/iw6/xsk/parser.cpp index 9a7dec1f..36a7e0da 100644 --- a/src/iw6/xsk/parser.cpp +++ b/src/iw6/xsk/parser.cpp @@ -228,6 +228,10 @@ namespace xsk { namespace gsc { namespace iw6 { value.YY_MOVE_OR_COPY< animtree_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_color: // color + value.YY_MOVE_OR_COPY< color_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_constant: // constant value.YY_MOVE_OR_COPY< constant_ptr > (YY_MOVE (that.value)); break; @@ -278,7 +282,6 @@ namespace xsk { namespace gsc { namespace iw6 { value.YY_MOVE_OR_COPY< file_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.YY_MOVE_OR_COPY< float_ptr > (YY_MOVE (that.value)); break; @@ -291,7 +294,6 @@ namespace xsk { namespace gsc { namespace iw6 { value.YY_MOVE_OR_COPY< include_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.YY_MOVE_OR_COPY< integer_ptr > (YY_MOVE (that.value)); break; @@ -333,8 +335,12 @@ namespace xsk { namespace gsc { namespace iw6 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value)); break; @@ -491,6 +497,10 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< animtree_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_color: // color + value.move< color_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_constant: // constant value.move< constant_ptr > (YY_MOVE (that.value)); break; @@ -541,7 +551,6 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< file_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.move< float_ptr > (YY_MOVE (that.value)); break; @@ -554,7 +563,6 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< include_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.move< integer_ptr > (YY_MOVE (that.value)); break; @@ -596,8 +604,12 @@ namespace xsk { namespace gsc { namespace iw6 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.move< std::string > (YY_MOVE (that.value)); break; @@ -754,6 +766,10 @@ namespace xsk { namespace gsc { namespace iw6 { value.copy< animtree_ptr > (that.value); break; + case symbol_kind::S_color: // color + value.copy< color_ptr > (that.value); + break; + case symbol_kind::S_constant: // constant value.copy< constant_ptr > (that.value); break; @@ -804,7 +820,6 @@ namespace xsk { namespace gsc { namespace iw6 { value.copy< file_ptr > (that.value); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.copy< float_ptr > (that.value); break; @@ -817,7 +832,6 @@ namespace xsk { namespace gsc { namespace iw6 { value.copy< include_ptr > (that.value); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.copy< integer_ptr > (that.value); break; @@ -859,8 +873,12 @@ namespace xsk { namespace gsc { namespace iw6 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.copy< std::string > (that.value); break; @@ -1016,6 +1034,10 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< animtree_ptr > (that.value); break; + case symbol_kind::S_color: // color + value.move< color_ptr > (that.value); + break; + case symbol_kind::S_constant: // constant value.move< constant_ptr > (that.value); break; @@ -1066,7 +1088,6 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< file_ptr > (that.value); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.move< float_ptr > (that.value); break; @@ -1079,7 +1100,6 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< include_ptr > (that.value); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.move< integer_ptr > (that.value); break; @@ -1121,8 +1141,12 @@ namespace xsk { namespace gsc { namespace iw6 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.move< std::string > (that.value); break; @@ -1533,6 +1557,10 @@ namespace xsk { namespace gsc { namespace iw6 { yylhs.value.emplace< animtree_ptr > (); break; + case symbol_kind::S_color: // color + yylhs.value.emplace< color_ptr > (); + break; + case symbol_kind::S_constant: // constant yylhs.value.emplace< constant_ptr > (); break; @@ -1583,7 +1611,6 @@ namespace xsk { namespace gsc { namespace iw6 { yylhs.value.emplace< file_ptr > (); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float yylhs.value.emplace< float_ptr > (); break; @@ -1596,7 +1623,6 @@ namespace xsk { namespace gsc { namespace iw6 { yylhs.value.emplace< include_ptr > (); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer yylhs.value.emplace< integer_ptr > (); break; @@ -1638,8 +1664,12 @@ namespace xsk { namespace gsc { namespace iw6 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" yylhs.value.emplace< std::string > (); break; @@ -1790,1207 +1820,1219 @@ namespace xsk { namespace gsc { namespace iw6 { switch (yyn) { case 2: // root: program -#line 241 "parser.ypp" +#line 244 "parser.ypp" { ast = std::move(yystack_[0].value.as < program_ptr > ()); } -#line 1796 "parser.cpp" - break; - - case 3: // root: %empty -#line 242 "parser.ypp" - { ast = std::make_unique(yylhs.location); } -#line 1802 "parser.cpp" - break; - - case 4: // program: program include -#line 247 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } -#line 1808 "parser.cpp" - break; - - case 5: // program: program define -#line 249 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } -#line 1814 "parser.cpp" - break; - - case 6: // program: include -#line 251 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } -#line 1820 "parser.cpp" - break; - - case 7: // program: define -#line 253 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1826 "parser.cpp" break; - case 8: // include: "#include" file ";" -#line 258 "parser.ypp" - { yylhs.value.as < include_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < file_ptr > ())); } + case 3: // root: %empty +#line 245 "parser.ypp" + { ast = std::make_unique(yylhs.location); } #line 1832 "parser.cpp" break; - case 9: // define: usingtree -#line 262 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_usingtree = std::move(yystack_[0].value.as < usingtree_ptr > ()); } + case 4: // program: program include +#line 250 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } #line 1838 "parser.cpp" break; - case 10: // define: constant -#line 263 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_constant = std::move(yystack_[0].value.as < constant_ptr > ()); } + case 5: // program: program define +#line 252 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1844 "parser.cpp" break; - case 11: // define: thread -#line 264 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_thread = std::move(yystack_[0].value.as < thread_ptr > ()); } + case 6: // program: include +#line 254 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } #line 1850 "parser.cpp" break; - case 12: // usingtree: "#using_animtree" "(" string ")" ";" -#line 269 "parser.ypp" - { yylhs.value.as < usingtree_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < string_ptr > ())); } + case 7: // program: define +#line 256 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1856 "parser.cpp" break; - case 13: // constant: name "=" expr ";" -#line 274 "parser.ypp" - { yylhs.value.as < constant_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 8: // include: "#include" file ";" +#line 261 "parser.ypp" + { yylhs.value.as < include_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < file_ptr > ())); } #line 1862 "parser.cpp" break; - case 14: // thread: name "(" parameters ")" stmt_block -#line 279 "parser.ypp" - { yylhs.value.as < thread_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < name_ptr > ()), std::move(yystack_[2].value.as < parameters_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } + case 9: // define: usingtree +#line 265 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_usingtree = std::move(yystack_[0].value.as < usingtree_ptr > ()); } #line 1868 "parser.cpp" break; - case 15: // parameters: parameters "," name -#line 284 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::move(yystack_[2].value.as < parameters_ptr > ()); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } + case 10: // define: constant +#line 266 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_constant = std::move(yystack_[0].value.as < constant_ptr > ()); } #line 1874 "parser.cpp" break; - case 16: // parameters: name -#line 286 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } + case 11: // define: thread +#line 267 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_thread = std::move(yystack_[0].value.as < thread_ptr > ()); } #line 1880 "parser.cpp" break; - case 17: // parameters: %empty -#line 288 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); } + case 12: // usingtree: "#using_animtree" "(" string ")" ";" +#line 272 "parser.ypp" + { yylhs.value.as < usingtree_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < string_ptr > ())); } #line 1886 "parser.cpp" break; - case 18: // stmt: stmt_block -#line 292 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_list = std::move(yystack_[0].value.as < stmt_list_ptr > ()); } + case 13: // constant: name "=" expr ";" +#line 277 "parser.ypp" + { yylhs.value.as < constant_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } #line 1892 "parser.cpp" break; - case 19: // stmt: stmt_call -#line 293 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_call = std::move(yystack_[0].value.as < stmt_call_ptr > ()); } + case 14: // thread: name "(" parameters ")" stmt_block +#line 282 "parser.ypp" + { yylhs.value.as < thread_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < name_ptr > ()), std::move(yystack_[2].value.as < parameters_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } #line 1898 "parser.cpp" break; - case 20: // stmt: stmt_assign -#line 294 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_assign = std::move(yystack_[0].value.as < stmt_assign_ptr > ()); } + case 15: // parameters: parameters "," name +#line 287 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::move(yystack_[2].value.as < parameters_ptr > ()); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } #line 1904 "parser.cpp" break; - case 21: // stmt: stmt_endon -#line 295 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_endon = std::move(yystack_[0].value.as < stmt_endon_ptr > ()); } + case 16: // parameters: name +#line 289 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } #line 1910 "parser.cpp" break; - case 22: // stmt: stmt_notify -#line 296 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_notify = std::move(yystack_[0].value.as < stmt_notify_ptr > ()); } + case 17: // parameters: %empty +#line 291 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); } #line 1916 "parser.cpp" break; - case 23: // stmt: stmt_wait -#line 297 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_wait = std::move(yystack_[0].value.as < stmt_wait_ptr > ()); } + case 18: // stmt: stmt_block +#line 295 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_list = std::move(yystack_[0].value.as < stmt_list_ptr > ()); } #line 1922 "parser.cpp" break; - case 24: // stmt: stmt_waittill -#line 298 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill_ptr > ()); } + case 19: // stmt: stmt_call +#line 296 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_call = std::move(yystack_[0].value.as < stmt_call_ptr > ()); } #line 1928 "parser.cpp" break; - case 25: // stmt: stmt_waittillmatch -#line 299 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch_ptr > ()); } + case 20: // stmt: stmt_assign +#line 297 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_assign = std::move(yystack_[0].value.as < stmt_assign_ptr > ()); } #line 1934 "parser.cpp" break; - case 26: // stmt: stmt_waittillframeend -#line 300 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend_ptr > ()); } + case 21: // stmt: stmt_endon +#line 298 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_endon = std::move(yystack_[0].value.as < stmt_endon_ptr > ()); } #line 1940 "parser.cpp" break; - case 27: // stmt: stmt_if -#line 301 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_if = std::move(yystack_[0].value.as < stmt_if_ptr > ()); } + case 22: // stmt: stmt_notify +#line 299 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_notify = std::move(yystack_[0].value.as < stmt_notify_ptr > ()); } #line 1946 "parser.cpp" break; - case 28: // stmt: stmt_ifelse -#line 302 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse_ptr > ()); } + case 23: // stmt: stmt_wait +#line 300 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_wait = std::move(yystack_[0].value.as < stmt_wait_ptr > ()); } #line 1952 "parser.cpp" break; - case 29: // stmt: stmt_while -#line 303 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_while = std::move(yystack_[0].value.as < stmt_while_ptr > ()); } + case 24: // stmt: stmt_waittill +#line 301 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill_ptr > ()); } #line 1958 "parser.cpp" break; - case 30: // stmt: stmt_for -#line 304 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_for = std::move(yystack_[0].value.as < stmt_for_ptr > ()); } + case 25: // stmt: stmt_waittillmatch +#line 302 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch_ptr > ()); } #line 1964 "parser.cpp" break; - case 31: // stmt: stmt_foreach -#line 305 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach_ptr > ()); } + case 26: // stmt: stmt_waittillframeend +#line 303 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend_ptr > ()); } #line 1970 "parser.cpp" break; - case 32: // stmt: stmt_switch -#line 306 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_switch = std::move(yystack_[0].value.as < stmt_switch_ptr > ()); } + case 27: // stmt: stmt_if +#line 304 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_if = std::move(yystack_[0].value.as < stmt_if_ptr > ()); } #line 1976 "parser.cpp" break; - case 33: // stmt: stmt_case -#line 307 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_case = std::move(yystack_[0].value.as < stmt_case_ptr > ()); } + case 28: // stmt: stmt_ifelse +#line 305 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse_ptr > ()); } #line 1982 "parser.cpp" break; - case 34: // stmt: stmt_default -#line 308 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_default = std::move(yystack_[0].value.as < stmt_default_ptr > ()); } + case 29: // stmt: stmt_while +#line 306 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_while = std::move(yystack_[0].value.as < stmt_while_ptr > ()); } #line 1988 "parser.cpp" break; - case 35: // stmt: stmt_break -#line 309 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_break = std::move(yystack_[0].value.as < stmt_break_ptr > ()); } + case 30: // stmt: stmt_for +#line 307 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_for = std::move(yystack_[0].value.as < stmt_for_ptr > ()); } #line 1994 "parser.cpp" break; - case 36: // stmt: stmt_continue -#line 310 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_continue = std::move(yystack_[0].value.as < stmt_continue_ptr > ()); } + case 31: // stmt: stmt_foreach +#line 308 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach_ptr > ()); } #line 2000 "parser.cpp" break; - case 37: // stmt: stmt_return -#line 311 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_return = std::move(yystack_[0].value.as < stmt_return_ptr > ()); } + case 32: // stmt: stmt_switch +#line 309 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_switch = std::move(yystack_[0].value.as < stmt_switch_ptr > ()); } #line 2006 "parser.cpp" break; - case 38: // stmt: stmt_breakpoint -#line 312 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_breakpoint = std::move(yystack_[0].value.as < stmt_breakpoint_ptr > ()); } + case 33: // stmt: stmt_case +#line 310 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_case = std::move(yystack_[0].value.as < stmt_case_ptr > ()); } #line 2012 "parser.cpp" break; - case 39: // stmt: stmt_prof_begin -#line 313 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_prof_begin = std::move(yystack_[0].value.as < stmt_prof_begin_ptr > ()); } + case 34: // stmt: stmt_default +#line 311 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_default = std::move(yystack_[0].value.as < stmt_default_ptr > ()); } #line 2018 "parser.cpp" break; - case 40: // stmt: stmt_prof_end -#line 314 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_prof_end = std::move(yystack_[0].value.as < stmt_prof_end_ptr > ()); } + case 35: // stmt: stmt_break +#line 312 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_break = std::move(yystack_[0].value.as < stmt_break_ptr > ()); } #line 2024 "parser.cpp" break; - case 41: // stmt_block: "{" stmt_list "}" -#line 318 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); } + case 36: // stmt: stmt_continue +#line 313 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_continue = std::move(yystack_[0].value.as < stmt_continue_ptr > ()); } #line 2030 "parser.cpp" break; - case 42: // stmt_block: "{" "}" -#line 319 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); } + case 37: // stmt: stmt_return +#line 314 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_return = std::move(yystack_[0].value.as < stmt_return_ptr > ()); } #line 2036 "parser.cpp" break; - case 43: // stmt_list: stmt_list stmt -#line 324 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 38: // stmt: stmt_breakpoint +#line 315 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_breakpoint = std::move(yystack_[0].value.as < stmt_breakpoint_ptr > ()); } #line 2042 "parser.cpp" break; - case 44: // stmt_list: stmt -#line 326 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 39: // stmt: stmt_prof_begin +#line 316 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_prof_begin = std::move(yystack_[0].value.as < stmt_prof_begin_ptr > ()); } #line 2048 "parser.cpp" break; - case 45: // stmt_call: expr_call ";" -#line 331 "parser.ypp" - { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } + case 40: // stmt: stmt_prof_end +#line 317 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_prof_end = std::move(yystack_[0].value.as < stmt_prof_end_ptr > ()); } #line 2054 "parser.cpp" break; - case 46: // stmt_call: expr_call_thread ";" -#line 333 "parser.ypp" - { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } + case 41: // stmt_block: "{" stmt_list "}" +#line 321 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); } #line 2060 "parser.cpp" break; - case 47: // stmt_assign: expr_assign ";" -#line 338 "parser.ypp" - { yylhs.value.as < stmt_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_assign_ptr > ())); } + case 42: // stmt_block: "{" "}" +#line 322 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); } #line 2066 "parser.cpp" break; - case 48: // stmt_endon: object "endon" "(" expr ")" ";" -#line 343 "parser.ypp" - { yylhs.value.as < stmt_endon_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ())); } + case 43: // stmt_list: stmt_list stmt +#line 327 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2072 "parser.cpp" break; - case 49: // stmt_notify: object "notify" "(" expr "," expr_arguments ")" ";" -#line 348 "parser.ypp" - { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 44: // stmt_list: stmt +#line 329 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2078 "parser.cpp" break; - case 50: // stmt_notify: object "notify" "(" expr ")" ";" -#line 350 "parser.ypp" - { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 45: // stmt_call: expr_call ";" +#line 334 "parser.ypp" + { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } #line 2084 "parser.cpp" break; - case 51: // stmt_wait: "wait" expr ";" -#line 355 "parser.ypp" - { yylhs.value.as < stmt_wait_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } + case 46: // stmt_call: expr_call_thread ";" +#line 336 "parser.ypp" + { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } #line 2090 "parser.cpp" break; - case 52: // stmt_waittill: object "waittill" "(" expr "," expr_arguments ")" ";" -#line 360 "parser.ypp" - { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 47: // stmt_assign: expr_assign ";" +#line 341 "parser.ypp" + { yylhs.value.as < stmt_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_assign_ptr > ())); } #line 2096 "parser.cpp" break; - case 53: // stmt_waittill: object "waittill" "(" expr ")" ";" -#line 362 "parser.ypp" - { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 48: // stmt_endon: object "endon" "(" expr ")" ";" +#line 346 "parser.ypp" + { yylhs.value.as < stmt_endon_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ())); } #line 2102 "parser.cpp" break; - case 54: // stmt_waittillmatch: object "waittillmatch" "(" expr "," expr_arguments ")" ";" -#line 367 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 49: // stmt_notify: object "notify" "(" expr "," expr_arguments ")" ";" +#line 351 "parser.ypp" + { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2108 "parser.cpp" break; - case 55: // stmt_waittillmatch: object "waittillmatch" "(" expr ")" ";" -#line 369 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 50: // stmt_notify: object "notify" "(" expr ")" ";" +#line 353 "parser.ypp" + { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2114 "parser.cpp" break; - case 56: // stmt_waittillframeend: "waittillframeend" ";" -#line 374 "parser.ypp" - { yylhs.value.as < stmt_waittillframeend_ptr > () = std::make_unique(yylhs.location); } + case 51: // stmt_wait: "wait" expr ";" +#line 358 "parser.ypp" + { yylhs.value.as < stmt_wait_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2120 "parser.cpp" break; - case 57: // stmt_if: "if" "(" expr ")" stmt -#line 379 "parser.ypp" - { yylhs.value.as < stmt_if_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 52: // stmt_waittill: object "waittill" "(" expr "," expr_arguments ")" ";" +#line 363 "parser.ypp" + { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2126 "parser.cpp" break; - case 58: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 384 "parser.ypp" - { yylhs.value.as < stmt_ifelse_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 53: // stmt_waittill: object "waittill" "(" expr ")" ";" +#line 365 "parser.ypp" + { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2132 "parser.cpp" break; - case 59: // stmt_while: "while" "(" expr ")" stmt -#line 389 "parser.ypp" - { yylhs.value.as < stmt_while_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 54: // stmt_waittillmatch: object "waittillmatch" "(" expr "," expr_arguments ")" ";" +#line 370 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2138 "parser.cpp" break; - case 60: // stmt_for: "for" "(" for_stmt ";" for_expr ";" for_stmt ")" stmt -#line 394 "parser.ypp" - { yylhs.value.as < stmt_for_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[6].value.as < stmt_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 55: // stmt_waittillmatch: object "waittillmatch" "(" expr ")" ";" +#line 372 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2144 "parser.cpp" break; - case 61: // stmt_foreach: "foreach" "(" name "in" expr ")" stmt -#line 399 "parser.ypp" - { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 56: // stmt_waittillframeend: "waittillframeend" ";" +#line 377 "parser.ypp" + { yylhs.value.as < stmt_waittillframeend_ptr > () = std::make_unique(yylhs.location); } #line 2150 "parser.cpp" break; - case 62: // stmt_foreach: "foreach" "(" name "," name "in" expr ")" stmt -#line 401 "parser.ypp" - { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[6].value.as < name_ptr > ())), expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 57: // stmt_if: "if" "(" expr ")" stmt +#line 382 "parser.ypp" + { yylhs.value.as < stmt_if_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2156 "parser.cpp" break; - case 63: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 406 "parser.ypp" - { yylhs.value.as < stmt_switch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } + case 58: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 387 "parser.ypp" + { yylhs.value.as < stmt_ifelse_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2162 "parser.cpp" break; - case 64: // stmt_case: "case" integer ":" -#line 411 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } + case 59: // stmt_while: "while" "(" expr ")" stmt +#line 392 "parser.ypp" + { yylhs.value.as < stmt_while_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2168 "parser.cpp" break; - case 65: // stmt_case: "case" neg_integer ":" -#line 413 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } + case 60: // stmt_for: "for" "(" for_stmt ";" for_expr ";" for_stmt ")" stmt +#line 397 "parser.ypp" + { yylhs.value.as < stmt_for_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[6].value.as < stmt_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2174 "parser.cpp" break; - case 66: // stmt_case: "case" string ":" -#line 415 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < string_ptr > ())), std::make_unique(yylhs.location)); } + case 61: // stmt_foreach: "foreach" "(" name "in" expr ")" stmt +#line 402 "parser.ypp" + { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2180 "parser.cpp" break; - case 67: // stmt_default: "default" ":" -#line 420 "parser.ypp" - { yylhs.value.as < stmt_default_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } + case 62: // stmt_foreach: "foreach" "(" name "," name "in" expr ")" stmt +#line 404 "parser.ypp" + { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[6].value.as < name_ptr > ())), expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2186 "parser.cpp" break; - case 68: // stmt_break: "break" ";" -#line 425 "parser.ypp" - { yylhs.value.as < stmt_break_ptr > () = std::make_unique(yylhs.location); } + case 63: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 409 "parser.ypp" + { yylhs.value.as < stmt_switch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } #line 2192 "parser.cpp" break; - case 69: // stmt_continue: "continue" ";" -#line 430 "parser.ypp" - { yylhs.value.as < stmt_continue_ptr > () = std::make_unique(yylhs.location); } + case 64: // stmt_case: "case" integer ":" +#line 414 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } #line 2198 "parser.cpp" break; - case 70: // stmt_return: "return" expr ";" -#line 435 "parser.ypp" - { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } + case 65: // stmt_case: "case" string ":" +#line 416 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < string_ptr > ())), std::make_unique(yylhs.location)); } #line 2204 "parser.cpp" break; - case 71: // stmt_return: "return" ";" -#line 437 "parser.ypp" - { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } + case 66: // stmt_default: "default" ":" +#line 421 "parser.ypp" + { yylhs.value.as < stmt_default_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2210 "parser.cpp" break; - case 72: // stmt_breakpoint: "breakpoint" ";" -#line 442 "parser.ypp" - { yylhs.value.as < stmt_breakpoint_ptr > () = std::make_unique(yylhs.location); } + case 67: // stmt_break: "break" ";" +#line 426 "parser.ypp" + { yylhs.value.as < stmt_break_ptr > () = std::make_unique(yylhs.location); } #line 2216 "parser.cpp" break; - case 73: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 447 "parser.ypp" - { yylhs.value.as < stmt_prof_begin_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 68: // stmt_continue: "continue" ";" +#line 431 "parser.ypp" + { yylhs.value.as < stmt_continue_ptr > () = std::make_unique(yylhs.location); } #line 2222 "parser.cpp" break; - case 74: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 452 "parser.ypp" - { yylhs.value.as < stmt_prof_end_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 69: // stmt_return: "return" expr ";" +#line 436 "parser.ypp" + { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2228 "parser.cpp" break; - case 75: // for_stmt: expr_assign -#line 456 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_list = std::make_unique(yylhs.location); yylhs.value.as < stmt_ptr > ().as_list->stmts.push_back(stmt_ptr(std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_assign_ptr > ())))); } + case 70: // stmt_return: "return" ";" +#line 438 "parser.ypp" + { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2234 "parser.cpp" break; - case 76: // for_stmt: %empty -#line 457 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_node = std::make_unique(yylhs.location); } + case 71: // stmt_breakpoint: "breakpoint" ";" +#line 443 "parser.ypp" + { yylhs.value.as < stmt_breakpoint_ptr > () = std::make_unique(yylhs.location); } #line 2240 "parser.cpp" break; - case 77: // for_expr: expr -#line 461 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 72: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" +#line 448 "parser.ypp" + { yylhs.value.as < stmt_prof_begin_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2246 "parser.cpp" break; - case 78: // for_expr: %empty -#line 462 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location); } + case 73: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" +#line 453 "parser.ypp" + { yylhs.value.as < stmt_prof_end_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2252 "parser.cpp" break; - case 79: // expr: expr_compare -#line 466 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 74: // for_stmt: expr_assign +#line 457 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_list = std::make_unique(yylhs.location); yylhs.value.as < stmt_ptr > ().as_list->stmts.push_back(stmt_ptr(std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_assign_ptr > ())))); } #line 2258 "parser.cpp" break; - case 80: // expr: expr_ternary -#line 467 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 75: // for_stmt: %empty +#line 458 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_node = std::make_unique(yylhs.location); } #line 2264 "parser.cpp" break; - case 81: // expr: expr_binary -#line 468 "parser.ypp" + case 76: // for_expr: expr +#line 462 "parser.ypp" { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2270 "parser.cpp" break; - case 82: // expr: expr_primitive -#line 469 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 77: // for_expr: %empty +#line 463 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location); } #line 2276 "parser.cpp" break; - case 83: // expr_assign: "++" object -#line 473 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } + case 78: // expr: expr_compare +#line 467 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2282 "parser.cpp" break; - case 84: // expr_assign: "--" object -#line 474 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } + case 79: // expr: expr_ternary +#line 468 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2288 "parser.cpp" break; - case 85: // expr_assign: object "++" -#line 475 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 80: // expr: expr_binary +#line 469 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2294 "parser.cpp" break; - case 86: // expr_assign: object "--" -#line 476 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 81: // expr: expr_primitive +#line 470 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2300 "parser.cpp" break; - case 87: // expr_assign: object "=" expr -#line 477 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 82: // expr_assign: "++" object +#line 474 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } #line 2306 "parser.cpp" break; - case 88: // expr_assign: object "|=" expr -#line 478 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 83: // expr_assign: "--" object +#line 475 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } #line 2312 "parser.cpp" break; - case 89: // expr_assign: object "&=" expr -#line 479 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 84: // expr_assign: object "++" +#line 476 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2318 "parser.cpp" break; - case 90: // expr_assign: object "^=" expr -#line 480 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 85: // expr_assign: object "--" +#line 477 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2324 "parser.cpp" break; - case 91: // expr_assign: object "<<=" expr -#line 481 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()),std::move( yystack_[0].value.as < expr_ptr > ())); } + case 86: // expr_assign: object "=" expr +#line 478 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2330 "parser.cpp" break; - case 92: // expr_assign: object ">>=" expr -#line 482 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 87: // expr_assign: object "|=" expr +#line 479 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2336 "parser.cpp" break; - case 93: // expr_assign: object "+=" expr -#line 483 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 88: // expr_assign: object "&=" expr +#line 480 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2342 "parser.cpp" break; - case 94: // expr_assign: object "-=" expr -#line 484 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 89: // expr_assign: object "^=" expr +#line 481 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2348 "parser.cpp" break; - case 95: // expr_assign: object "*=" expr -#line 485 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 90: // expr_assign: object "<<=" expr +#line 482 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()),std::move( yystack_[0].value.as < expr_ptr > ())); } #line 2354 "parser.cpp" break; - case 96: // expr_assign: object "/=" expr -#line 486 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 91: // expr_assign: object ">>=" expr +#line 483 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2360 "parser.cpp" break; - case 97: // expr_assign: object "%=" expr -#line 487 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 92: // expr_assign: object "+=" expr +#line 484 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2366 "parser.cpp" break; - case 98: // expr_compare: expr "||" expr -#line 491 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 93: // expr_assign: object "-=" expr +#line 485 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2372 "parser.cpp" break; - case 99: // expr_compare: expr "&&" expr -#line 492 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 94: // expr_assign: object "*=" expr +#line 486 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2378 "parser.cpp" break; - case 100: // expr_compare: expr "==" expr -#line 493 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 95: // expr_assign: object "/=" expr +#line 487 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2384 "parser.cpp" break; - case 101: // expr_compare: expr "!=" expr -#line 494 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 96: // expr_assign: object "%=" expr +#line 488 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2390 "parser.cpp" break; - case 102: // expr_compare: expr "<=" expr -#line 495 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 97: // expr_compare: expr "||" expr +#line 492 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2396 "parser.cpp" break; - case 103: // expr_compare: expr ">=" expr -#line 496 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 98: // expr_compare: expr "&&" expr +#line 493 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2402 "parser.cpp" break; - case 104: // expr_compare: expr "<" expr -#line 497 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 99: // expr_compare: expr "==" expr +#line 494 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2408 "parser.cpp" break; - case 105: // expr_compare: expr ">" expr -#line 498 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 100: // expr_compare: expr "!=" expr +#line 495 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2414 "parser.cpp" break; - case 106: // expr_ternary: expr "?" expr ":" expr -#line 502 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 101: // expr_compare: expr "<=" expr +#line 496 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2420 "parser.cpp" break; - case 107: // expr_binary: expr "|" expr -#line 506 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 102: // expr_compare: expr ">=" expr +#line 497 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2426 "parser.cpp" break; - case 108: // expr_binary: expr "&" expr -#line 507 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 103: // expr_compare: expr "<" expr +#line 498 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2432 "parser.cpp" break; - case 109: // expr_binary: expr "^" expr -#line 508 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 104: // expr_compare: expr ">" expr +#line 499 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2438 "parser.cpp" break; - case 110: // expr_binary: expr "<<" expr -#line 509 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 105: // expr_ternary: expr "?" expr ":" expr +#line 503 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2444 "parser.cpp" break; - case 111: // expr_binary: expr ">>" expr -#line 510 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 106: // expr_binary: expr "|" expr +#line 507 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2450 "parser.cpp" break; - case 112: // expr_binary: expr "+" expr -#line 511 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 107: // expr_binary: expr "&" expr +#line 508 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2456 "parser.cpp" break; - case 113: // expr_binary: expr "-" expr -#line 512 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 108: // expr_binary: expr "^" expr +#line 509 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2462 "parser.cpp" break; - case 114: // expr_binary: expr "*" expr -#line 513 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 109: // expr_binary: expr "<<" expr +#line 510 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2468 "parser.cpp" break; - case 115: // expr_binary: expr "/" expr -#line 514 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 110: // expr_binary: expr ">>" expr +#line 511 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2474 "parser.cpp" break; - case 116: // expr_binary: expr "%" expr -#line 515 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 111: // expr_binary: expr "+" expr +#line 512 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2480 "parser.cpp" break; - case 117: // expr_primitive: "(" expr ")" -#line 519 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[1].value.as < expr_ptr > ()); } + case 112: // expr_binary: expr "-" expr +#line 513 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2486 "parser.cpp" break; - case 118: // expr_primitive: "~" expr -#line 520 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } + case 113: // expr_binary: expr "*" expr +#line 514 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2492 "parser.cpp" break; - case 119: // expr_primitive: "!" expr -#line 521 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } + case 114: // expr_binary: expr "/" expr +#line 515 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2498 "parser.cpp" break; - case 120: // expr_primitive: expr_call -#line 522 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 115: // expr_binary: expr "%" expr +#line 516 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2504 "parser.cpp" break; - case 121: // expr_primitive: expr_call_thread -#line 523 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 116: // expr_primitive: "(" expr ")" +#line 520 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[1].value.as < expr_ptr > ()); } #line 2510 "parser.cpp" break; - case 122: // expr_primitive: expr_call_childthread -#line 524 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 117: // expr_primitive: "~" expr +#line 521 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2516 "parser.cpp" break; - case 123: // expr_primitive: expr_function -#line 525 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 118: // expr_primitive: "!" expr +#line 522 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2522 "parser.cpp" break; - case 124: // expr_primitive: expr_add_array -#line 526 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 119: // expr_primitive: expr_call +#line 523 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2528 "parser.cpp" break; - case 125: // expr_primitive: expr_array -#line 527 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 120: // expr_primitive: expr_call_thread +#line 524 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2534 "parser.cpp" break; - case 126: // expr_primitive: expr_field -#line 528 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 121: // expr_primitive: expr_call_childthread +#line 525 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2540 "parser.cpp" break; - case 127: // expr_primitive: expr_size -#line 529 "parser.ypp" + case 122: // expr_primitive: expr_function +#line 526 "parser.ypp" { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2546 "parser.cpp" break; - case 128: // expr_primitive: thisthread -#line 530 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < thisthread_ptr > ()); } + case 123: // expr_primitive: expr_add_array +#line 527 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2552 "parser.cpp" break; - case 129: // expr_primitive: empty_array -#line 531 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < empty_array_ptr > ()); } + case 124: // expr_primitive: expr_array +#line 528 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2558 "parser.cpp" break; - case 130: // expr_primitive: undefined -#line 532 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < undefined_ptr > ()); } + case 125: // expr_primitive: expr_field +#line 529 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2564 "parser.cpp" break; - case 131: // expr_primitive: game -#line 533 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < game_ptr > ()); } + case 126: // expr_primitive: expr_size +#line 530 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2570 "parser.cpp" break; - case 132: // expr_primitive: self -#line 534 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < self_ptr > ()); } + case 127: // expr_primitive: thisthread +#line 531 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < thisthread_ptr > ()); } #line 2576 "parser.cpp" break; - case 133: // expr_primitive: anim -#line 535 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < anim_ptr > ()); } + case 128: // expr_primitive: empty_array +#line 532 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < empty_array_ptr > ()); } #line 2582 "parser.cpp" break; - case 134: // expr_primitive: level -#line 536 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < level_ptr > ()); } + case 129: // expr_primitive: undefined +#line 533 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < undefined_ptr > ()); } #line 2588 "parser.cpp" break; - case 135: // expr_primitive: animation -#line 537 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animation_ptr > ()); } + case 130: // expr_primitive: game +#line 534 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < game_ptr > ()); } #line 2594 "parser.cpp" break; - case 136: // expr_primitive: animtree -#line 538 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animtree_ptr > ()); } + case 131: // expr_primitive: self +#line 535 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < self_ptr > ()); } #line 2600 "parser.cpp" break; - case 137: // expr_primitive: name -#line 539 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < name_ptr > ()); } + case 132: // expr_primitive: anim +#line 536 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < anim_ptr > ()); } #line 2606 "parser.cpp" break; - case 138: // expr_primitive: istring -#line 540 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < istring_ptr > ()); } + case 133: // expr_primitive: level +#line 537 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < level_ptr > ()); } #line 2612 "parser.cpp" break; - case 139: // expr_primitive: string -#line 541 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < string_ptr > ()); } + case 134: // expr_primitive: animation +#line 538 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animation_ptr > ()); } #line 2618 "parser.cpp" break; - case 140: // expr_primitive: vector -#line 542 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < vector_ptr > ()); } + case 135: // expr_primitive: animtree +#line 539 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animtree_ptr > ()); } #line 2624 "parser.cpp" break; - case 141: // expr_primitive: neg_float -#line 543 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } + case 136: // expr_primitive: name +#line 540 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < name_ptr > ()); } #line 2630 "parser.cpp" break; - case 142: // expr_primitive: neg_integer -#line 544 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } + case 137: // expr_primitive: istring +#line 541 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < istring_ptr > ()); } #line 2636 "parser.cpp" break; - case 143: // expr_primitive: float -#line 545 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } + case 138: // expr_primitive: string +#line 542 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < string_ptr > ()); } #line 2642 "parser.cpp" break; - case 144: // expr_primitive: integer -#line 546 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } + case 139: // expr_primitive: color +#line 543 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < color_ptr > ()); } #line 2648 "parser.cpp" break; - case 145: // expr_primitive: false -#line 547 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < false_ptr > ()); } + case 140: // expr_primitive: vector +#line 544 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < vector_ptr > ()); } #line 2654 "parser.cpp" break; - case 146: // expr_primitive: true -#line 548 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < true_ptr > ()); } + case 141: // expr_primitive: float +#line 545 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } #line 2660 "parser.cpp" break; - case 147: // expr_call: expr_call_function -#line 552 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 142: // expr_primitive: integer +#line 546 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } #line 2666 "parser.cpp" break; - case 148: // expr_call: expr_call_pointer -#line 553 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 143: // expr_primitive: false +#line 547 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < false_ptr > ()); } #line 2672 "parser.cpp" break; - case 149: // expr_call: object expr_call_function -#line 554 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 144: // expr_primitive: true +#line 548 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < true_ptr > ()); } #line 2678 "parser.cpp" break; - case 150: // expr_call: object expr_call_pointer -#line 555 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 145: // expr_call: expr_call_function +#line 552 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2684 "parser.cpp" break; - case 151: // expr_call_thread: "thread" expr_call_function -#line 559 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 146: // expr_call: expr_call_pointer +#line 553 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2690 "parser.cpp" break; - case 152: // expr_call_thread: "thread" expr_call_pointer -#line 560 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 147: // expr_call: object expr_call_function +#line 554 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2696 "parser.cpp" break; - case 153: // expr_call_thread: object "thread" expr_call_function -#line 561 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 148: // expr_call: object expr_call_pointer +#line 555 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2702 "parser.cpp" break; - case 154: // expr_call_thread: object "thread" expr_call_pointer -#line 562 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 149: // expr_call_thread: "thread" expr_call_function +#line 559 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2708 "parser.cpp" break; - case 155: // expr_call_childthread: "childthread" expr_call_function -#line 566 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 150: // expr_call_thread: "thread" expr_call_pointer +#line 560 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2714 "parser.cpp" break; - case 156: // expr_call_childthread: "childthread" expr_call_pointer -#line 567 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 151: // expr_call_thread: object "thread" expr_call_function +#line 561 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2720 "parser.cpp" break; - case 157: // expr_call_childthread: object "childthread" expr_call_function -#line 568 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 152: // expr_call_thread: object "thread" expr_call_pointer +#line 562 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2726 "parser.cpp" break; - case 158: // expr_call_childthread: object "childthread" expr_call_pointer -#line 569 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 153: // expr_call_childthread: "childthread" expr_call_function +#line 566 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2732 "parser.cpp" break; - case 159: // expr_call_function: name "(" expr_arguments ")" -#line 574 "parser.ypp" - {yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::make_unique(), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 154: // expr_call_childthread: "childthread" expr_call_pointer +#line 567 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2738 "parser.cpp" break; - case 160: // expr_call_function: file "::" name "(" expr_arguments ")" -#line 576 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < file_ptr > ()), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 155: // expr_call_childthread: object "childthread" expr_call_function +#line 568 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2744 "parser.cpp" break; - case 161: // expr_call_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 581 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, false, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 156: // expr_call_childthread: object "childthread" expr_call_pointer +#line 569 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2750 "parser.cpp" break; - case 162: // expr_call_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 583 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, true, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 157: // expr_call_function: name "(" expr_arguments ")" +#line 574 "parser.ypp" + {yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::make_unique(), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2756 "parser.cpp" break; - case 163: // expr_arguments: expr_arguments_filled -#line 587 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } + case 158: // expr_call_function: file "::" name "(" expr_arguments ")" +#line 576 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < file_ptr > ()), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2762 "parser.cpp" break; - case 164: // expr_arguments: expr_arguments_empty -#line 588 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } + case 159: // expr_call_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 581 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, false, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2768 "parser.cpp" break; - case 165: // expr_arguments_filled: expr_arguments "," expr -#line 593 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[2].value.as < expr_arguments_ptr > ()); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } + case 160: // expr_call_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 583 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, true, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2774 "parser.cpp" break; - case 166: // expr_arguments_filled: expr -#line 595 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } + case 161: // expr_arguments: expr_arguments_filled +#line 587 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } #line 2780 "parser.cpp" break; - case 167: // expr_arguments_empty: %empty -#line 600 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); } + case 162: // expr_arguments: expr_arguments_empty +#line 588 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } #line 2786 "parser.cpp" break; - case 168: // expr_function: "::" name -#line 605 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < name_ptr > ())); } + case 163: // expr_arguments_filled: expr_arguments "," expr +#line 593 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[2].value.as < expr_arguments_ptr > ()); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2792 "parser.cpp" break; - case 169: // expr_function: file "::" name -#line 607 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < file_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } + case 164: // expr_arguments_filled: expr +#line 595 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2798 "parser.cpp" break; - case 170: // expr_add_array: "[" expr_arguments_filled "]" -#line 612 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 165: // expr_arguments_empty: %empty +#line 600 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); } #line 2804 "parser.cpp" break; - case 171: // expr_array: object "[" expr "]" -#line 617 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < node_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 166: // expr_function: "::" name +#line 605 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2810 "parser.cpp" break; - case 172: // expr_field: object "." name -#line 622 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } + case 167: // expr_function: file "::" name +#line 607 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < file_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2816 "parser.cpp" break; - case 173: // expr_size: object ".size" -#line 627 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 168: // expr_add_array: "[" expr_arguments_filled "]" +#line 612 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2822 "parser.cpp" break; - case 174: // object: expr_call -#line 631 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 169: // expr_array: object "[" expr "]" +#line 617 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < node_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2828 "parser.cpp" break; - case 175: // object: expr_array -#line 632 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } + case 170: // expr_field: object "." name +#line 622 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2834 "parser.cpp" break; - case 176: // object: expr_field -#line 633 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } + case 171: // expr_size: object ".size" +#line 627 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2840 "parser.cpp" break; - case 177: // object: game -#line 634 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < game_ptr > ()); } + case 172: // object: expr_call +#line 631 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2846 "parser.cpp" break; - case 178: // object: self -#line 635 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < self_ptr > ()); } + case 173: // object: expr_array +#line 632 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2852 "parser.cpp" break; - case 179: // object: anim -#line 636 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < anim_ptr > ()); } + case 174: // object: expr_field +#line 633 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2858 "parser.cpp" break; - case 180: // object: level -#line 637 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < level_ptr > ()); } + case 175: // object: game +#line 634 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < game_ptr > ()); } #line 2864 "parser.cpp" break; - case 181: // object: name -#line 638 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < name_ptr > ()); } + case 176: // object: self +#line 635 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < self_ptr > ()); } #line 2870 "parser.cpp" break; - case 182: // thisthread: "thisthread" -#line 641 "parser.ypp" - { yylhs.value.as < thisthread_ptr > () = std::make_unique(yylhs.location); } + case 177: // object: anim +#line 636 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < anim_ptr > ()); } #line 2876 "parser.cpp" break; - case 183: // empty_array: "[" "]" -#line 642 "parser.ypp" - { yylhs.value.as < empty_array_ptr > () = std::make_unique(yylhs.location); } + case 178: // object: level +#line 637 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < level_ptr > ()); } #line 2882 "parser.cpp" break; - case 184: // undefined: "undefined" -#line 643 "parser.ypp" - { yylhs.value.as < undefined_ptr > () = std::make_unique(yylhs.location); } + case 179: // object: name +#line 638 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < name_ptr > ()); } #line 2888 "parser.cpp" break; - case 185: // game: "game" -#line 644 "parser.ypp" - { yylhs.value.as < game_ptr > () = std::make_unique(yylhs.location); } + case 180: // float: "-" "float" +#line 642 "parser.ypp" + { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 2894 "parser.cpp" break; - case 186: // self: "self" -#line 645 "parser.ypp" - { yylhs.value.as < self_ptr > () = std::make_unique(yylhs.location); } + case 181: // float: "float" +#line 643 "parser.ypp" + { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2900 "parser.cpp" break; - case 187: // anim: "anim" -#line 646 "parser.ypp" - { yylhs.value.as < anim_ptr > () = std::make_unique(yylhs.location); } + case 182: // integer: "-" "int" +#line 647 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 2906 "parser.cpp" break; - case 188: // level: "level" -#line 647 "parser.ypp" - { yylhs.value.as < level_ptr > () = std::make_unique(yylhs.location); } + case 183: // integer: "int" +#line 648 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2912 "parser.cpp" break; - case 189: // animation: "%" "identifier" -#line 648 "parser.ypp" - { yylhs.value.as < animation_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 184: // integer: "octal int" +#line 649 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2918 "parser.cpp" break; - case 190: // animtree: "#animtree" -#line 649 "parser.ypp" - { yylhs.value.as < animtree_ptr > () = std::make_unique(yylhs.location); } + case 185: // integer: "binary int" +#line 650 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2924 "parser.cpp" break; - case 191: // name: "identifier" -#line 650 "parser.ypp" - { yylhs.value.as < name_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 186: // integer: "hexadecimal int" +#line 651 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2930 "parser.cpp" break; - case 192: // file: "file path" -#line 651 "parser.ypp" - { yylhs.value.as < file_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 187: // thisthread: "thisthread" +#line 654 "parser.ypp" + { yylhs.value.as < thisthread_ptr > () = std::make_unique(yylhs.location); } #line 2936 "parser.cpp" break; - case 193: // istring: "localized string" -#line 652 "parser.ypp" - { yylhs.value.as < istring_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 188: // empty_array: "[" "]" +#line 655 "parser.ypp" + { yylhs.value.as < empty_array_ptr > () = std::make_unique(yylhs.location); } #line 2942 "parser.cpp" break; - case 194: // string: "string literal" -#line 653 "parser.ypp" - { yylhs.value.as < string_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 189: // undefined: "undefined" +#line 656 "parser.ypp" + { yylhs.value.as < undefined_ptr > () = std::make_unique(yylhs.location); } #line 2948 "parser.cpp" break; - case 195: // vector: "(" expr "," expr "," expr ")" -#line 654 "parser.ypp" - { yylhs.value.as < vector_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[3].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 190: // game: "game" +#line 657 "parser.ypp" + { yylhs.value.as < game_ptr > () = std::make_unique(yylhs.location); } #line 2954 "parser.cpp" break; - case 196: // neg_float: "-" "float" -#line 655 "parser.ypp" - { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 191: // self: "self" +#line 658 "parser.ypp" + { yylhs.value.as < self_ptr > () = std::make_unique(yylhs.location); } #line 2960 "parser.cpp" break; - case 197: // neg_integer: "-" "int" -#line 656 "parser.ypp" - { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 192: // anim: "anim" +#line 659 "parser.ypp" + { yylhs.value.as < anim_ptr > () = std::make_unique(yylhs.location); } #line 2966 "parser.cpp" break; - case 198: // float: "float" -#line 657 "parser.ypp" - { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 193: // level: "level" +#line 660 "parser.ypp" + { yylhs.value.as < level_ptr > () = std::make_unique(yylhs.location); } #line 2972 "parser.cpp" break; - case 199: // integer: "int" -#line 658 "parser.ypp" - { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 194: // animation: "%" "identifier" +#line 661 "parser.ypp" + { yylhs.value.as < animation_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2978 "parser.cpp" break; - case 200: // false: "false" -#line 659 "parser.ypp" - { yylhs.value.as < false_ptr > () = std::make_unique(yylhs.location); } + case 195: // animtree: "#animtree" +#line 662 "parser.ypp" + { yylhs.value.as < animtree_ptr > () = std::make_unique(yylhs.location); } #line 2984 "parser.cpp" break; - case 201: // true: "true" -#line 660 "parser.ypp" - { yylhs.value.as < true_ptr > () = std::make_unique(yylhs.location); } + case 196: // name: "identifier" +#line 663 "parser.ypp" + { yylhs.value.as < name_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2990 "parser.cpp" break; + case 197: // file: "file path" +#line 664 "parser.ypp" + { yylhs.value.as < file_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2996 "parser.cpp" + break; -#line 2994 "parser.cpp" + case 198: // istring: "localized string" +#line 665 "parser.ypp" + { yylhs.value.as < istring_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3002 "parser.cpp" + break; + + case 199: // string: "string literal" +#line 666 "parser.ypp" + { yylhs.value.as < string_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3008 "parser.cpp" + break; + + case 200: // color: "color" +#line 667 "parser.ypp" + { yylhs.value.as < color_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3014 "parser.cpp" + break; + + case 201: // vector: "(" expr "," expr "," expr ")" +#line 668 "parser.ypp" + { yylhs.value.as < vector_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[3].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } +#line 3020 "parser.cpp" + break; + + case 202: // false: "false" +#line 669 "parser.ypp" + { yylhs.value.as < false_ptr > () = std::make_unique(yylhs.location); } +#line 3026 "parser.cpp" + break; + + case 203: // true: "true" +#line 670 "parser.ypp" + { yylhs.value.as < true_ptr > () = std::make_unique(yylhs.location); } +#line 3032 "parser.cpp" + break; + + +#line 3036 "parser.cpp" default: break; @@ -3184,25 +3226,25 @@ namespace xsk { namespace gsc { namespace iw6 { "++", "--", "<<", ">>", "||", "&&", "==", "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", "%", "file path", "identifier", - "string literal", "localized string", "float", "int", "ADD_ARRAY", - "THEN", "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", - "POSTDEC", "$accept", "root", "program", "include", "define", - "usingtree", "constant", "thread", "parameters", "stmt", "stmt_block", - "stmt_list", "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", - "stmt_wait", "stmt_waittill", "stmt_waittillmatch", - "stmt_waittillframeend", "stmt_if", "stmt_ifelse", "stmt_while", - "stmt_for", "stmt_foreach", "stmt_switch", "stmt_case", "stmt_default", - "stmt_break", "stmt_continue", "stmt_return", "stmt_breakpoint", - "stmt_prof_begin", "stmt_prof_end", "for_stmt", "for_expr", "expr", - "expr_assign", "expr_compare", "expr_ternary", "expr_binary", - "expr_primitive", "expr_call", "expr_call_thread", - "expr_call_childthread", "expr_call_function", "expr_call_pointer", - "expr_arguments", "expr_arguments_filled", "expr_arguments_empty", - "expr_function", "expr_add_array", "expr_array", "expr_field", - "expr_size", "object", "thisthread", "empty_array", "undefined", "game", + "string literal", "localized string", "color", "float", "int", + "octal int", "binary int", "hexadecimal int", "ADD_ARRAY", "THEN", + "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", + "$accept", "root", "program", "include", "define", "usingtree", + "constant", "thread", "parameters", "stmt", "stmt_block", "stmt_list", + "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", "stmt_wait", + "stmt_waittill", "stmt_waittillmatch", "stmt_waittillframeend", + "stmt_if", "stmt_ifelse", "stmt_while", "stmt_for", "stmt_foreach", + "stmt_switch", "stmt_case", "stmt_default", "stmt_break", + "stmt_continue", "stmt_return", "stmt_breakpoint", "stmt_prof_begin", + "stmt_prof_end", "for_stmt", "for_expr", "expr", "expr_assign", + "expr_compare", "expr_ternary", "expr_binary", "expr_primitive", + "expr_call", "expr_call_thread", "expr_call_childthread", + "expr_call_function", "expr_call_pointer", "expr_arguments", + "expr_arguments_filled", "expr_arguments_empty", "expr_function", + "expr_add_array", "expr_array", "expr_field", "expr_size", "object", + "float", "integer", "thisthread", "empty_array", "undefined", "game", "self", "anim", "level", "animation", "animtree", "name", "file", - "istring", "string", "vector", "neg_float", "neg_integer", "float", - "integer", "false", "true", YY_NULLPTR + "istring", "string", "color", "vector", "false", "true", YY_NULLPTR }; return yy_sname[yysymbol]; } @@ -3467,480 +3509,472 @@ namespace xsk { namespace gsc { namespace iw6 { } - const short parser::yypact_ninf_ = -245; + const short parser::yypact_ninf_ = -242; - const short parser::yytable_ninf_ = -182; + const short parser::yytable_ninf_ = -180; const short parser::yypact_[] = { - 3, -50, -3, -245, 20, 3, -245, -245, -245, -245, - -245, -20, -245, -2, -37, -245, -245, -245, -31, 762, - -245, -245, 23, -16, -245, -245, -15, -15, -245, 21, - -245, -245, -245, -245, -245, -245, -245, 762, 480, -31, - 762, 762, -76, 4, -245, -245, -245, 1588, -245, -245, - -245, -245, 31, -245, -245, -245, -245, -245, -245, 393, - 508, -245, 722, -245, -245, -245, 785, 793, 921, 931, - -245, -245, 14, 19, -245, -245, -245, -245, -245, -245, - -245, -245, -245, 43, 49, -31, 52, -245, -245, 57, - 53, -245, -245, 63, 988, 480, -245, 1671, 62, 66, - -245, -245, -245, -245, -245, -245, -245, -245, 762, 762, - 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, - 762, 762, 762, 762, 762, 762, 762, -15, -15, -245, - 825, -31, -245, -245, 762, -31, -245, 583, -245, -245, - 762, -31, 762, -245, 762, 1398, 762, -245, 1553, 75, - 75, 1702, 1712, 85, 85, 70, 70, 70, 70, 930, - 1753, 1743, 79, 79, -245, -245, -245, -245, -245, -245, - -245, 1438, -245, -5, -245, 74, 65, 78, 81, 762, - 69, 87, 90, 91, 95, 97, -64, 77, 94, 120, - 699, -245, 410, 410, -245, -245, 628, -245, -245, -245, - -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, - -245, -245, -245, -245, -245, -245, -245, -245, -245, 121, - 122, 142, -245, -245, 872, -245, -245, -245, -245, 57, - 1398, 74, 1478, 1517, 96, 1671, 762, -245, -245, 762, - -245, 762, 762, 1623, -245, 762, 762, 496, -31, 762, - 113, 155, 159, 161, -245, -245, -245, -245, 1658, -245, - -13, -13, -245, -245, -245, -245, -245, 172, 173, 174, - 176, -245, -245, 762, 762, 762, 762, 762, 762, 762, - 762, 762, 762, 762, 177, 762, 178, 1671, 10, 11, - 33, -245, 1154, 1188, 167, -245, 952, 1, 1222, -245, - -245, -245, -245, 762, 762, 762, 762, 1671, 1671, 1671, - 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 181, 1256, - 762, -245, 182, 184, 673, 673, 762, 762, -31, 49, - 1290, 1032, 1076, 1120, 762, -245, 35, -245, -245, 211, - -245, 185, 1671, 1324, 224, -245, 196, 197, 762, 201, - 762, 202, 762, 36, -245, 673, 496, 673, 762, -245, - -245, 39, -245, 42, -245, 46, -245, -245, 213, -245, - 1358, 206, 210, 214, 673, 673, -245, -245, -245, -245, - -245 + 4, -71, -9, -242, 23, 4, -242, -242, -242, -242, + -242, -27, -242, -13, -37, -242, -242, -242, -33, 642, + -242, -242, 15, -26, -242, -242, 18, 18, -242, 25, + -242, -242, -242, -242, -242, -242, -242, 642, 508, -33, + 642, 642, -56, -15, -242, -242, -242, -242, -242, -242, + -242, 1563, -242, -242, -242, -242, 363, -242, -242, -242, + -242, -242, -242, 371, 531, -242, 536, -242, -242, -242, + -242, -242, 598, 603, 665, 670, -242, -242, 35, 28, + -242, -242, -242, -242, -242, -242, 31, 36, -33, 44, + -242, -242, 51, 47, -242, -242, 64, 903, 508, -242, + 1646, 59, 85, -242, -242, -242, -242, -242, -242, -242, + -242, 642, 642, 642, 642, 642, 642, 642, 642, 642, + 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, + 18, 18, -242, 709, -33, -242, -242, 642, -33, -242, + 800, -242, -242, 642, -33, 642, -242, 642, 1373, 642, + -242, 1528, 45, 45, 704, 1677, 414, 414, 3, 3, + 3, 3, 1687, 1728, 1718, 74, 74, -242, -242, -242, + -242, -242, -242, -242, 1413, -242, -24, -242, 69, 72, + 93, 94, 642, 88, 100, 103, 104, 107, 109, 61, + 101, 110, 111, 575, -242, 406, 406, -242, -242, 845, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, 114, 116, 117, -242, -242, 925, -242, -242, + -242, -242, 51, 1373, 69, 1453, 1492, 123, 1646, 642, + -242, -242, 642, -242, 642, 642, 1598, -242, 642, 642, + 7, -33, 642, 79, 120, 122, -242, -242, -242, -242, + 1633, -242, 30, 30, -242, -242, -242, -242, -242, 152, + 158, 159, 167, -242, -242, 642, 642, 642, 642, 642, + 642, 642, 642, 642, 642, 642, 169, 642, 175, 1646, + -23, -20, -16, -242, 1129, 1163, 166, -242, 971, 8, + 1197, -242, -242, -242, 642, 642, 642, 642, 1646, 1646, + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 177, + 1231, 642, -242, 170, 171, 890, 890, 642, 642, -33, + 36, 1265, 1007, 1051, 1095, 642, -242, 6, -242, -242, + 201, -242, 172, 1646, 1299, 198, -242, 179, 180, 642, + 181, 642, 182, 642, 27, -242, 890, 7, 890, 642, + -242, -242, 53, -242, 77, -242, 78, -242, -242, 183, + -242, 1333, 184, 185, 186, 890, 890, -242, -242, -242, + -242, -242 }; const unsigned char parser::yydefact_[] = { - 3, 0, 0, 191, 0, 2, 6, 7, 9, 10, - 11, 0, 192, 0, 0, 1, 4, 5, 17, 0, - 8, 194, 0, 0, 16, 190, 0, 0, 182, 0, - 201, 200, 184, 185, 186, 187, 188, 0, 167, 0, - 0, 0, 0, 0, 193, 198, 199, 0, 79, 80, - 81, 82, 120, 121, 122, 147, 148, 123, 124, 125, - 126, 127, 0, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 0, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 0, 0, 0, 0, 151, 152, 0, - 0, 155, 156, 0, 0, 167, 183, 166, 0, 163, - 164, 168, 119, 118, 196, 197, 189, 13, 0, 0, + 3, 0, 0, 196, 0, 2, 6, 7, 9, 10, + 11, 0, 197, 0, 0, 1, 4, 5, 17, 0, + 8, 199, 0, 0, 16, 195, 0, 0, 187, 0, + 203, 202, 189, 190, 191, 192, 193, 0, 165, 0, + 0, 0, 0, 0, 198, 200, 181, 183, 184, 185, + 186, 0, 78, 79, 80, 81, 119, 120, 121, 145, + 146, 122, 123, 124, 125, 126, 0, 141, 142, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 0, + 137, 138, 139, 140, 143, 144, 0, 0, 0, 0, + 149, 150, 0, 0, 153, 154, 0, 0, 165, 188, + 164, 0, 161, 162, 166, 118, 117, 180, 182, 194, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, - 0, 0, 149, 150, 167, 0, 12, 0, 14, 15, - 0, 0, 0, 117, 0, 166, 0, 170, 0, 110, - 111, 98, 99, 100, 101, 102, 103, 104, 105, 107, - 108, 109, 112, 113, 114, 115, 116, 153, 154, 157, - 158, 0, 172, 0, 163, 169, 0, 0, 0, 0, + 0, 0, 171, 0, 0, 147, 148, 165, 0, 12, + 0, 14, 15, 0, 0, 0, 116, 0, 164, 0, + 168, 0, 109, 110, 97, 98, 99, 100, 101, 102, + 103, 104, 106, 107, 108, 111, 112, 113, 114, 115, + 151, 152, 155, 156, 0, 170, 0, 161, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 42, 0, 0, 44, 18, 0, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, - 174, 0, 175, 176, 0, 177, 178, 179, 180, 181, - 0, 0, 0, 0, 0, 165, 0, 171, 159, 167, - 72, 167, 167, 0, 56, 0, 0, 76, 0, 0, - 0, 0, 0, 0, 67, 68, 69, 71, 0, 174, - 83, 84, 41, 43, 47, 45, 46, 0, 0, 0, - 0, 85, 86, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, - 0, 51, 0, 0, 0, 75, 0, 0, 0, 66, - 65, 64, 70, 0, 0, 0, 0, 87, 93, 94, - 95, 96, 97, 88, 89, 90, 92, 91, 0, 0, - 167, 160, 0, 0, 0, 0, 78, 0, 0, 0, - 0, 0, 0, 0, 167, 195, 0, 73, 74, 57, - 59, 0, 77, 0, 0, 63, 0, 0, 167, 0, - 167, 0, 167, 0, 161, 0, 76, 0, 0, 48, - 50, 0, 53, 0, 55, 0, 162, 58, 0, 61, - 0, 0, 0, 0, 0, 0, 49, 52, 54, 60, - 62 + 0, 0, 0, 0, 42, 0, 0, 44, 18, 0, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 0, 172, 0, 173, 174, 0, 175, 176, + 177, 178, 179, 0, 0, 0, 0, 0, 163, 0, + 169, 157, 165, 71, 165, 165, 0, 56, 0, 0, + 75, 0, 0, 0, 0, 0, 66, 67, 68, 70, + 0, 172, 82, 83, 41, 43, 47, 45, 46, 0, + 0, 0, 0, 84, 85, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, + 0, 0, 0, 51, 0, 0, 0, 74, 0, 0, + 0, 64, 65, 69, 0, 0, 0, 0, 86, 92, + 93, 94, 95, 96, 87, 88, 89, 91, 90, 0, + 0, 165, 158, 0, 0, 0, 0, 77, 0, 0, + 0, 0, 0, 0, 0, 165, 201, 0, 72, 73, + 57, 59, 0, 76, 0, 0, 63, 0, 0, 165, + 0, 165, 0, 165, 0, 159, 0, 75, 0, 0, + 48, 50, 0, 53, 0, 55, 0, 160, 58, 0, + 61, 0, 0, 0, 0, 0, 0, 49, 52, 54, + 60, 62 }; const short parser::yypgoto_[] = { - -245, -245, -245, 259, 263, -245, -245, -245, -245, 41, - -80, -245, -245, -245, -245, -245, -245, -245, -245, -245, - -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, - -245, -245, -245, -245, -87, -245, 64, -244, -245, -245, - -245, -245, -99, -85, -245, -25, -19, -120, -27, -245, - -245, -245, 26, 86, -245, 101, -245, -245, -245, 125, - 130, 216, 221, -245, -245, 0, 5, -245, 9, -245, - -245, 88, -245, 98, -245, -245 + -242, -242, -242, 219, 236, -242, -242, -242, -242, -164, + -84, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -110, -242, 60, -241, -242, -242, + -242, -242, -100, 108, -242, -25, -19, 168, -34, -242, + -242, -242, -86, 70, -242, 82, -242, 63, -242, -242, + -242, 96, 105, 153, 174, -242, -242, 0, 5, -242, + 1, -242, -242, -242, -242 }; const short parser::yydefgoto_[] = { - 0, 4, 5, 6, 7, 8, 9, 10, 23, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 294, 341, 97, 219, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 98, 174, 100, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82 + 0, 4, 5, 6, 7, 8, 9, 10, 23, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 296, 342, 100, 222, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 101, 177, 103, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85 }; const short parser::yytable_[] = { - 11, 87, 91, 295, 138, 11, 13, 88, 92, 1, - 2, 99, 104, 105, 173, 29, 250, 29, 24, 18, - 15, 327, 21, 22, 84, 46, 89, 89, 86, 85, - 130, 90, 90, 131, 12, 238, 14, 132, 220, 101, - 146, -181, -181, 133, -181, 19, 328, 20, -181, 21, - 321, 322, 221, 134, 3, 146, 146, -181, -174, -174, - -181, -174, 89, 83, 93, -174, 135, 90, 99, 12, - 3, 12, 3, 323, -174, 354, 366, -174, 146, 371, - 146, 146, 372, 47, 146, 139, 373, 146, 3, 106, - 137, 146, 136, 259, 259, 140, 134, 220, -181, -181, - 141, 94, 167, 169, 102, 103, 142, 146, 168, 170, - 147, 221, 295, 239, 240, -174, -174, 241, 244, 288, - 242, 289, 290, 109, 110, 254, 245, 89, 89, 246, - 247, 172, 90, 90, 248, 175, 249, 229, 109, 110, - 286, 231, 90, 255, 115, 116, 117, 118, 259, 122, - 123, 124, 125, 126, 122, 123, 124, 125, 126, 145, - 124, 125, 126, 222, 122, 123, 124, 125, 126, 256, - 264, 265, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 266, 229, 229, 171, 251, 229, 90, 90, 132, - 336, 90, 105, 299, 230, 133, 232, 300, 233, 301, - 235, 303, 304, 305, 353, 306, 326, 320, 222, 222, - 334, 318, 222, 223, 89, 220, 220, 355, 361, 90, - 363, 337, 365, 338, 356, 132, 132, 263, 224, 221, - 221, 133, 133, 243, 358, 359, 360, 229, 297, 345, - 362, 364, 90, 374, 258, 376, 220, 259, 220, 377, - 89, 89, 225, 378, 16, 90, 90, 226, 17, 368, - 221, 132, 221, 222, 252, 220, 220, 133, 223, 223, - 0, 0, 223, 0, 253, 0, 0, 0, 0, 221, - 221, 0, 0, 260, 261, 0, 89, 224, 0, 0, - 287, 90, 0, 0, 0, 0, 0, 0, 0, 292, - 293, 0, 0, 298, 0, 0, 0, 225, 225, 0, - 0, 225, 226, 226, 229, 229, 226, 0, 344, 90, - 90, 0, 0, 223, 0, 0, 0, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 296, 319, - 222, 222, 0, 227, 0, 229, 229, 229, 228, 0, - 90, 90, 90, 0, 0, 339, 340, 330, 331, 332, - 333, 0, 225, 0, 229, 229, 0, 226, 0, 90, - 90, 222, 222, 222, 0, 0, 0, 0, 0, 0, - 342, 343, 0, 0, 0, 0, 367, 0, 369, 0, - 222, 222, 0, 0, 0, 0, 0, 0, 227, 227, - 223, 223, 227, 228, 228, 379, 380, 228, 0, 0, - -175, -175, 370, -175, 0, 224, 224, -175, 0, 0, - 0, 0, 0, 0, 0, 0, -175, 0, 0, -175, - 29, 223, 223, 223, 0, 33, 34, 35, 36, 225, - 225, 0, 0, 86, 226, 226, 224, 296, 224, 0, - 223, 223, 0, 227, 0, 0, 0, 0, 228, 0, - 0, 0, 0, 0, 0, 224, 224, -175, -175, 0, - 225, 225, 225, 0, 0, 226, 226, 226, 25, 0, - 0, 0, 0, 0, 12, 3, 0, 0, 0, 225, - 225, 0, 0, 0, 226, 226, 0, 26, 27, 28, - 29, 30, 31, 32, 0, 33, 34, 35, 36, 37, - 0, 0, 0, 95, 96, 0, 29, 39, 0, 0, - 0, 33, 34, 35, 36, -176, -176, 0, -176, 86, - 227, 227, -176, 40, 41, 228, 228, 192, 193, 0, - 0, -176, 0, 0, -176, 0, 0, 0, 0, 0, - 42, 0, 0, 43, 12, 3, 21, 44, 45, 46, - 0, 227, 227, 227, 0, 0, 228, 228, 228, 0, - 12, 3, 0, 0, 0, 0, 176, 177, 178, 0, - 227, 227, -176, -176, 179, 228, 228, 180, 181, 0, - 182, 183, 184, 0, 185, 186, 187, 188, 189, 190, - 26, 0, 0, 29, 0, 0, 0, 0, 33, 34, - 35, 36, 0, 0, 137, 191, 86, 0, 0, 0, - 0, 176, 177, 178, 192, 193, 0, 0, 0, 179, - 0, 0, 180, 181, 0, 182, 183, 184, 0, 185, - 186, 187, 188, 189, 190, 26, 0, 0, 29, 0, - 0, 0, 0, 33, 34, 35, 36, 12, 3, 137, - 262, 86, 0, 0, 0, 0, 176, 177, 178, 192, - 193, 0, 0, 0, 179, 0, 0, 180, 181, 0, - 182, 183, 184, 0, 185, 186, 187, 188, 189, 190, - 26, 0, 0, 29, 0, 0, 0, 25, 33, 34, - 35, 36, 12, 3, 137, 0, 86, 0, 0, 0, - 0, 0, 0, 0, 192, 193, 26, 27, 28, 29, - 30, 31, 32, 0, 33, 34, 35, 36, 37, 0, - 0, 0, 38, 0, 0, 0, 39, 0, 257, 127, - 128, 0, 29, 0, 0, 0, 129, 12, 3, 0, - 0, 0, 40, 41, 0, 130, 0, 0, 131, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 42, - 0, 0, 43, 12, 3, 21, 44, 45, 46, 26, + 11, 90, 94, 141, 102, 11, 13, 91, 95, 297, + 1, 2, 18, 12, 87, 22, 241, 322, 24, 88, + 323, 149, 149, 15, 324, 149, 92, 92, 328, 149, + 14, 93, 93, 107, 108, 265, 20, 29, 19, 104, + 223, 135, 33, 34, 35, 36, 355, 136, 29, 21, + 89, 149, 3, 329, 225, 86, 112, 113, 195, 196, + 29, 89, -179, -179, 102, -179, 92, 367, 96, -179, + 109, 93, 149, 133, 137, 138, 134, 140, -179, 51, + 139, -179, 125, 126, 127, 128, 129, 143, 142, 3, + 137, 12, 3, 372, 144, 261, 261, 97, 149, 223, + 105, 106, 12, 3, 149, 170, 172, 145, 242, 225, + 225, 171, 173, 225, 12, 3, 297, 373, 374, -179, + -179, 243, 149, 149, 125, 126, 127, 128, 129, 150, + 92, 92, 244, 245, 175, 93, 93, 247, 178, 248, + 232, 253, 249, 250, 234, 93, 251, 21, 252, 256, + 261, 47, 48, 49, 50, 127, 128, 129, 148, 257, + 258, 340, 341, 266, 225, 267, 268, 288, 301, 108, + 302, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 255, 304, 368, 174, 370, 232, 232, 305, 306, 232, + 93, 93, 135, 233, 93, 235, 307, 236, 136, 238, + 226, 380, 381, 319, 321, 327, 335, 356, 359, 338, + 339, 357, 227, 375, 16, 223, 223, 92, 360, 361, + 363, 365, 93, 377, 378, 379, 228, 135, 135, 225, + 225, 17, 246, 136, 136, 229, 346, 369, 224, 0, + 232, 299, 254, 260, 0, 93, 223, 261, 223, 0, + 0, 0, 92, 92, 0, 226, 226, 93, 93, 226, + 225, 225, 225, 135, 0, 223, 223, 262, 263, 136, + 0, 227, 0, 0, 0, 0, 0, 0, 0, 225, + 225, 228, 228, 230, 0, 228, 0, 0, 92, 289, + 229, 229, 0, 93, 229, 176, 0, 224, 294, 295, + 0, 0, 300, 0, 231, 0, 0, 0, 0, 0, + 226, 0, 0, 0, 0, 232, 232, 0, 0, 345, + 93, 93, 298, 0, 0, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 228, 320, 230, 230, + 0, 0, 230, 0, 0, 229, 232, 232, 232, 0, + 0, 93, 93, 93, 331, 332, 333, 334, 0, 231, + 231, 0, 0, 231, 0, 232, 232, 0, 0, 0, + 93, 93, 0, 0, 0, 0, 0, 343, 344, 0, + -172, -172, 0, -172, 0, 226, 226, -172, -173, -173, + 0, -173, 0, 230, 0, -173, -172, 227, 227, -172, + 290, 0, 291, 292, -173, 0, 0, -173, 0, 371, + 0, 228, 228, 0, 231, 0, 226, 226, 226, 0, + 229, 229, 0, 224, 224, 0, 29, 0, 227, 298, + 227, 33, 34, 35, 36, 226, 226, -172, -172, 89, + 0, 0, 228, 228, 228, -173, -173, 227, 227, 0, + 0, 229, 229, 229, 224, 0, 224, 112, 113, 0, + 0, 228, 228, 118, 119, 120, 121, 0, 230, 230, + 229, 229, 0, 224, 224, 0, 0, 0, 0, 337, + 12, 3, 0, 125, 126, 127, 128, 129, 0, 231, + 231, 0, 0, 354, 0, 0, 0, 0, 0, 230, + 230, 230, 0, 0, 0, 0, 25, 362, 0, 364, + 0, 366, 0, 0, 0, 0, 0, 0, 230, 230, + 231, 231, 231, 0, 0, 26, 27, 28, 29, 30, + 31, 32, 0, 33, 34, 35, 36, 37, 0, 231, + 231, 98, 99, 0, 0, 39, 0, 0, -174, -174, + 0, -174, 0, 130, 131, -174, 29, 0, 0, 0, + 132, 40, 41, 0, -174, 0, 0, -174, 0, 133, + 0, 0, 134, 25, 0, 0, 0, 0, 42, 0, + 0, 43, 12, 3, 21, 44, 45, 46, 47, 48, + 49, 50, 26, 27, 28, 29, 30, 31, 32, 0, + 33, 34, 35, 36, 37, -174, -174, 0, 38, 0, + 12, 3, 39, 0, 259, -175, -175, 0, -175, 0, + -176, -176, -175, -176, 0, 0, 0, -176, 40, 41, + 0, -175, 0, 0, -175, 0, -176, 0, 0, -176, + 25, 0, 0, 0, 0, 42, 0, 0, 43, 12, + 3, 21, 44, 45, 46, 47, 48, 49, 50, 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, 35, - 36, 37, 0, 0, 0, 38, 12, 3, 0, 39, - 0, 0, -177, -177, 0, -177, 0, 0, 0, -177, - -178, -178, 0, -178, 0, 40, 41, -178, -177, 0, - 0, -177, 0, 25, 0, 0, -178, 0, 0, -178, + 36, 37, -175, -175, 0, 38, 0, -176, -176, 39, + 0, 0, -177, -177, 0, -177, 0, -178, -178, -177, + -178, 0, 0, 0, -178, 40, 41, 0, -177, 0, + 0, -177, 0, -178, 0, 0, -178, 25, 0, 0, 0, 0, 42, 0, 0, 43, 12, 3, 21, 44, - 45, 46, 26, 27, 28, 29, 30, 31, 32, 0, - 33, 34, 35, 36, 37, 0, 0, 0, 95, -177, - -177, 0, 39, 0, 0, 0, 0, -178, -178, 0, - 0, 267, 268, 0, 269, 270, 0, 0, 40, 41, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, - 0, 0, 29, 0, 0, 42, 0, 0, 43, 12, - 3, 21, 44, 45, 46, 130, 0, 0, 131, 0, - 0, 0, 0, 271, 272, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, -179, -179, - 0, -179, 0, 0, 0, -179, 12, 3, -180, -180, - 0, -180, 0, 0, -179, -180, 0, -179, 0, 0, - 0, 0, 0, 0, -180, 0, 0, -180, 0, 0, - 0, 0, 29, 109, 110, 0, 0, 113, 114, 115, - 116, 117, 118, 0, 0, 130, 0, 0, 131, 0, - 0, 0, 0, 271, 272, -179, -179, 120, 121, 122, - 123, 124, 125, 126, 0, -180, -180, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 143, 0, - 0, 0, 0, 144, 0, 0, 12, 3, 108, 0, - 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, - 125, 126, 347, 0, 0, 0, 0, 348, 0, 0, - 0, 0, 108, 0, 0, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, - 121, 122, 123, 124, 125, 126, 349, 0, 0, 0, - 0, 350, 0, 0, 0, 0, 108, 0, 0, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 0, + 45, 46, 47, 48, 49, 50, 26, 27, 28, 29, + 30, 31, 32, 0, 33, 34, 35, 36, 37, -177, + -177, 0, 98, 0, -178, -178, 39, 112, 113, 0, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, + 0, 0, 40, 41, 0, 0, 0, 0, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 0, 42, + 0, 0, 43, 12, 3, 21, 44, 45, 46, 47, + 48, 49, 50, 179, 180, 181, 0, 0, 0, 0, + 0, 182, 0, 0, 183, 184, 0, 185, 186, 187, + 0, 188, 189, 190, 191, 192, 193, 26, 0, 0, + 29, 0, 0, 0, 0, 33, 34, 35, 36, 0, + 0, 140, 194, 89, 0, 0, 0, 0, 179, 180, + 181, 195, 196, 0, 0, 0, 182, 0, 0, 183, + 184, 0, 185, 186, 187, 0, 188, 189, 190, 191, + 192, 193, 26, 0, 0, 29, 0, 0, 0, 0, + 33, 34, 35, 36, 12, 3, 140, 264, 89, 0, + 0, 0, 0, 179, 180, 181, 195, 196, 0, 0, + 0, 182, 0, 0, 183, 184, 0, 185, 186, 187, + 0, 188, 189, 190, 191, 192, 193, 26, 0, 0, + 29, 0, 0, 0, 0, 33, 34, 35, 36, 12, + 3, 140, 0, 89, 269, 270, 0, 271, 272, 0, + 0, 195, 196, 146, 0, 0, 0, 0, 147, 0, + 0, 0, 130, 111, 0, 29, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 0, 0, 133, 0, + 0, 134, 0, 0, 12, 3, 273, 274, 0, 122, + 123, 124, 125, 126, 127, 128, 129, 0, 0, 0, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 29, 0, 0, 0, 0, 0, 0, 0, 12, + 3, 0, 0, 0, 133, 0, 0, 134, 0, 0, + 0, 0, 273, 274, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 348, 0, 0, + 0, 0, 349, 0, 0, 12, 3, 111, 0, 0, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, - 351, 0, 0, 0, 0, 352, 0, 0, 0, 0, - 108, 0, 0, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 324, 0, 119, 120, 121, 122, - 123, 124, 125, 126, 108, 0, 0, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 325, 0, - 119, 120, 121, 122, 123, 124, 125, 126, 108, 0, - 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 329, 0, 119, 120, 121, 122, 123, 124, - 125, 126, 108, 0, 0, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 335, 0, 119, 120, - 121, 122, 123, 124, 125, 126, 108, 0, 0, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 0, + 0, 0, 0, 122, 123, 124, 125, 126, 127, 128, + 129, 350, 0, 0, 0, 0, 351, 0, 0, 0, + 0, 111, 0, 0, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 122, 123, 124, + 125, 126, 127, 128, 129, 352, 0, 0, 0, 0, + 353, 0, 0, 0, 0, 111, 0, 0, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 325, + 0, 122, 123, 124, 125, 126, 127, 128, 129, 111, + 0, 0, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 326, 0, 122, 123, 124, 125, 126, + 127, 128, 129, 111, 0, 0, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 330, 0, 122, + 123, 124, 125, 126, 127, 128, 129, 111, 0, 0, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 346, 0, 119, 120, 121, 122, 123, 124, 125, 126, - 108, 0, 0, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 357, 0, 119, 120, 121, 122, - 123, 124, 125, 126, 108, 0, 0, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 375, 0, - 119, 120, 121, 122, 123, 124, 125, 126, 108, 0, - 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, - 125, 126, 234, 0, 0, 0, 0, 0, 108, 0, - 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, - 125, 126, 237, 0, 0, 0, 0, 0, 108, 0, - 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, - 125, 126, 284, 0, 0, 0, 0, 0, 108, 0, - 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, - 125, 126, 285, 0, 0, 0, 0, 108, 0, 0, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 236, 0, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 107, 108, 0, - 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, - 125, 126, 291, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 302, 108, 0, - 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 108, 0, 0, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 0, 0, 0, 0, 0, 119, 120, 121, - 122, 123, 124, 125, 126, 109, 110, 0, 112, 113, - 114, 115, 116, 117, 118, 109, 110, 0, 0, 113, - 114, 115, 116, 117, 118, 0, 0, 0, 119, 120, - 121, 122, 123, 124, 125, 126, 0, 0, 119, 120, - 121, 122, 123, 124, 125, 126, 109, 110, 0, 0, - 113, 114, 115, 116, 117, 118, 109, 110, 0, 0, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 120, 0, 122, 123, 124, 125, 126, 0, 0, 0, - 0, 0, 122, 123, 124, 125, 126 + 0, 336, 0, 122, 123, 124, 125, 126, 127, 128, + 129, 111, 0, 0, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 347, 0, 122, 123, 124, + 125, 126, 127, 128, 129, 111, 0, 0, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 358, + 0, 122, 123, 124, 125, 126, 127, 128, 129, 111, + 0, 0, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 376, 0, 122, 123, 124, 125, 126, + 127, 128, 129, 111, 0, 0, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, + 123, 124, 125, 126, 127, 128, 129, 237, 0, 0, + 0, 0, 0, 111, 0, 0, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, + 123, 124, 125, 126, 127, 128, 129, 240, 0, 0, + 0, 0, 0, 111, 0, 0, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, + 123, 124, 125, 126, 127, 128, 129, 286, 0, 0, + 0, 0, 0, 111, 0, 0, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, + 123, 124, 125, 126, 127, 128, 129, 287, 0, 0, + 0, 0, 111, 0, 0, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 122, 123, + 124, 125, 126, 127, 128, 129, 239, 0, 111, 0, + 0, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 122, 123, 124, 125, 126, 127, + 128, 129, 110, 111, 0, 0, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, + 123, 124, 125, 126, 127, 128, 129, 293, 111, 0, + 0, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 122, 123, 124, 125, 126, 127, + 128, 129, 303, 111, 0, 0, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 111, 0, 0, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 0, 0, 0, + 0, 0, 122, 123, 124, 125, 126, 127, 128, 129, + 112, 113, 0, 0, 116, 117, 118, 119, 120, 121, + 112, 113, 0, 0, 116, 117, 118, 119, 120, 121, + 0, 0, 0, 122, 123, 124, 125, 126, 127, 128, + 129, 0, 0, 0, 123, 124, 125, 126, 127, 128, + 129, 112, 113, 0, 0, 116, 117, 118, 119, 120, + 121, 112, 113, 0, 0, 116, 117, 118, 119, 120, + 121, 0, 0, 0, 0, 123, 0, 125, 126, 127, + 128, 129, 0, 0, 0, 0, 0, 125, 126, 127, + 128, 129 }; const short parser::yycheck_[] = { - 0, 26, 27, 247, 84, 5, 1, 26, 27, 6, - 7, 38, 88, 89, 134, 30, 80, 30, 18, 39, - 0, 20, 86, 14, 40, 89, 26, 27, 43, 45, - 43, 26, 27, 46, 84, 40, 39, 62, 137, 39, - 45, 27, 28, 62, 30, 65, 45, 49, 34, 86, - 40, 40, 137, 39, 85, 45, 45, 43, 27, 28, - 46, 30, 62, 40, 43, 34, 47, 62, 95, 84, - 85, 84, 85, 40, 43, 40, 40, 46, 45, 40, - 45, 45, 40, 19, 45, 85, 40, 45, 85, 85, - 41, 45, 49, 192, 193, 43, 39, 196, 84, 85, - 47, 37, 127, 128, 40, 41, 43, 45, 127, 128, - 44, 196, 356, 39, 49, 84, 85, 39, 49, 239, - 39, 241, 242, 53, 54, 48, 39, 127, 128, 39, - 39, 131, 127, 128, 39, 135, 39, 137, 53, 54, - 44, 141, 137, 49, 59, 60, 61, 62, 247, 79, - 80, 81, 82, 83, 79, 80, 81, 82, 83, 95, - 81, 82, 83, 137, 79, 80, 81, 82, 83, 49, - 49, 49, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 49, 192, 193, 130, 186, 196, 192, 193, 224, - 320, 196, 89, 48, 140, 224, 142, 48, 144, 48, - 146, 39, 39, 39, 334, 39, 49, 39, 192, 193, - 39, 44, 196, 137, 224, 324, 325, 16, 348, 224, - 350, 49, 352, 49, 49, 260, 261, 196, 137, 324, - 325, 260, 261, 179, 20, 49, 49, 247, 248, 329, - 49, 49, 247, 40, 190, 49, 355, 356, 357, 49, - 260, 261, 137, 49, 5, 260, 261, 137, 5, 356, - 355, 296, 357, 247, 186, 374, 375, 296, 192, 193, - -1, -1, 196, -1, 186, -1, -1, -1, -1, 374, - 375, -1, -1, 192, 193, -1, 296, 196, -1, -1, - 236, 296, -1, -1, -1, -1, -1, -1, -1, 245, - 246, -1, -1, 249, -1, -1, -1, 192, 193, -1, - -1, 196, 192, 193, 324, 325, 196, -1, 328, 324, - 325, -1, -1, 247, -1, -1, -1, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 247, 285, - 324, 325, -1, 137, -1, 355, 356, 357, 137, -1, - 355, 356, 357, -1, -1, 324, 325, 303, 304, 305, - 306, -1, 247, -1, 374, 375, -1, 247, -1, 374, - 375, 355, 356, 357, -1, -1, -1, -1, -1, -1, - 326, 327, -1, -1, -1, -1, 355, -1, 357, -1, - 374, 375, -1, -1, -1, -1, -1, -1, 192, 193, - 324, 325, 196, 192, 193, 374, 375, 196, -1, -1, - 27, 28, 358, 30, -1, 324, 325, 34, -1, -1, - -1, -1, -1, -1, -1, -1, 43, -1, -1, 46, - 30, 355, 356, 357, -1, 35, 36, 37, 38, 324, - 325, -1, -1, 43, 324, 325, 355, 356, 357, -1, - 374, 375, -1, 247, -1, -1, -1, -1, 247, -1, - -1, -1, -1, -1, -1, 374, 375, 84, 85, -1, - 355, 356, 357, -1, -1, 355, 356, 357, 8, -1, - -1, -1, -1, -1, 84, 85, -1, -1, -1, 374, - 375, -1, -1, -1, 374, 375, -1, 27, 28, 29, - 30, 31, 32, 33, -1, 35, 36, 37, 38, 39, - -1, -1, -1, 43, 44, -1, 30, 47, -1, -1, - -1, 35, 36, 37, 38, 27, 28, -1, 30, 43, - 324, 325, 34, 63, 64, 324, 325, 51, 52, -1, - -1, 43, -1, -1, 46, -1, -1, -1, -1, -1, - 80, -1, -1, 83, 84, 85, 86, 87, 88, 89, - -1, 355, 356, 357, -1, -1, 355, 356, 357, -1, - 84, 85, -1, -1, -1, -1, 3, 4, 5, -1, - 374, 375, 84, 85, 11, 374, 375, 14, 15, -1, - 17, 18, 19, -1, 21, 22, 23, 24, 25, 26, - 27, -1, -1, 30, -1, -1, -1, -1, 35, 36, - 37, 38, -1, -1, 41, 42, 43, -1, -1, -1, - -1, 3, 4, 5, 51, 52, -1, -1, -1, 11, - -1, -1, 14, 15, -1, 17, 18, 19, -1, 21, - 22, 23, 24, 25, 26, 27, -1, -1, 30, -1, - -1, -1, -1, 35, 36, 37, 38, 84, 85, 41, - 42, 43, -1, -1, -1, -1, 3, 4, 5, 51, - 52, -1, -1, -1, 11, -1, -1, 14, 15, -1, - 17, 18, 19, -1, 21, 22, 23, 24, 25, 26, - 27, -1, -1, 30, -1, -1, -1, 8, 35, 36, - 37, 38, 84, 85, 41, -1, 43, -1, -1, -1, - -1, -1, -1, -1, 51, 52, 27, 28, 29, 30, - 31, 32, 33, -1, 35, 36, 37, 38, 39, -1, - -1, -1, 43, -1, -1, -1, 47, -1, 49, 27, - 28, -1, 30, -1, -1, -1, 34, 84, 85, -1, - -1, -1, 63, 64, -1, 43, -1, -1, 46, -1, - 8, -1, -1, -1, -1, -1, -1, -1, -1, 80, - -1, -1, 83, 84, 85, 86, 87, 88, 89, 27, + 0, 26, 27, 87, 38, 5, 1, 26, 27, 250, + 6, 7, 39, 84, 40, 14, 40, 40, 18, 45, + 40, 45, 45, 0, 40, 45, 26, 27, 20, 45, + 39, 26, 27, 89, 90, 199, 49, 30, 65, 39, + 140, 66, 35, 36, 37, 38, 40, 66, 30, 86, + 43, 45, 85, 45, 140, 40, 53, 54, 51, 52, + 30, 43, 27, 28, 98, 30, 66, 40, 43, 34, + 85, 66, 45, 43, 39, 47, 46, 41, 43, 19, + 49, 46, 79, 80, 81, 82, 83, 43, 88, 85, + 39, 84, 85, 40, 47, 195, 196, 37, 45, 199, + 40, 41, 84, 85, 45, 130, 131, 43, 39, 195, + 196, 130, 131, 199, 84, 85, 357, 40, 40, 84, + 85, 49, 45, 45, 79, 80, 81, 82, 83, 44, + 130, 131, 39, 39, 134, 130, 131, 49, 138, 39, + 140, 80, 39, 39, 144, 140, 39, 86, 39, 48, + 250, 90, 91, 92, 93, 81, 82, 83, 98, 49, + 49, 325, 326, 49, 250, 49, 49, 44, 48, 90, + 48, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 189, 39, 356, 133, 358, 195, 196, 39, 39, 199, + 195, 196, 227, 143, 199, 145, 39, 147, 227, 149, + 140, 375, 376, 44, 39, 49, 39, 16, 20, 49, + 49, 49, 140, 40, 5, 325, 326, 227, 49, 49, + 49, 49, 227, 49, 49, 49, 140, 262, 263, 325, + 326, 5, 182, 262, 263, 140, 330, 357, 140, -1, + 250, 251, 189, 193, -1, 250, 356, 357, 358, -1, + -1, -1, 262, 263, -1, 195, 196, 262, 263, 199, + 356, 357, 358, 298, -1, 375, 376, 195, 196, 298, + -1, 199, -1, -1, -1, -1, -1, -1, -1, 375, + 376, 195, 196, 140, -1, 199, -1, -1, 298, 239, + 195, 196, -1, 298, 199, 137, -1, 199, 248, 249, + -1, -1, 252, -1, 140, -1, -1, -1, -1, -1, + 250, -1, -1, -1, -1, 325, 326, -1, -1, 329, + 325, 326, 250, -1, -1, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 250, 287, 195, 196, + -1, -1, 199, -1, -1, 250, 356, 357, 358, -1, + -1, 356, 357, 358, 304, 305, 306, 307, -1, 195, + 196, -1, -1, 199, -1, 375, 376, -1, -1, -1, + 375, 376, -1, -1, -1, -1, -1, 327, 328, -1, + 27, 28, -1, 30, -1, 325, 326, 34, 27, 28, + -1, 30, -1, 250, -1, 34, 43, 325, 326, 46, + 242, -1, 244, 245, 43, -1, -1, 46, -1, 359, + -1, 325, 326, -1, 250, -1, 356, 357, 358, -1, + 325, 326, -1, 325, 326, -1, 30, -1, 356, 357, + 358, 35, 36, 37, 38, 375, 376, 84, 85, 43, + -1, -1, 356, 357, 358, 84, 85, 375, 376, -1, + -1, 356, 357, 358, 356, -1, 358, 53, 54, -1, + -1, 375, 376, 59, 60, 61, 62, -1, 325, 326, + 375, 376, -1, 375, 376, -1, -1, -1, -1, 321, + 84, 85, -1, 79, 80, 81, 82, 83, -1, 325, + 326, -1, -1, 335, -1, -1, -1, -1, -1, 356, + 357, 358, -1, -1, -1, -1, 8, 349, -1, 351, + -1, 353, -1, -1, -1, -1, -1, -1, 375, 376, + 356, 357, 358, -1, -1, 27, 28, 29, 30, 31, + 32, 33, -1, 35, 36, 37, 38, 39, -1, 375, + 376, 43, 44, -1, -1, 47, -1, -1, 27, 28, + -1, 30, -1, 27, 28, 34, 30, -1, -1, -1, + 34, 63, 64, -1, 43, -1, -1, 46, -1, 43, + -1, -1, 46, 8, -1, -1, -1, -1, 80, -1, + -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 27, 28, 29, 30, 31, 32, 33, -1, + 35, 36, 37, 38, 39, 84, 85, -1, 43, -1, + 84, 85, 47, -1, 49, 27, 28, -1, 30, -1, + 27, 28, 34, 30, -1, -1, -1, 34, 63, 64, + -1, 43, -1, -1, 46, -1, 43, -1, -1, 46, + 8, -1, -1, -1, -1, 80, -1, -1, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 27, 28, 29, 30, 31, 32, 33, -1, 35, 36, 37, - 38, 39, -1, -1, -1, 43, 84, 85, -1, 47, - -1, -1, 27, 28, -1, 30, -1, -1, -1, 34, - 27, 28, -1, 30, -1, 63, 64, 34, 43, -1, - -1, 46, -1, 8, -1, -1, 43, -1, -1, 46, + 38, 39, 84, 85, -1, 43, -1, 84, 85, 47, + -1, -1, 27, 28, -1, 30, -1, 27, 28, 34, + 30, -1, -1, -1, 34, 63, 64, -1, 43, -1, + -1, 46, -1, 43, -1, -1, 46, 8, -1, -1, -1, -1, 80, -1, -1, 83, 84, 85, 86, 87, - 88, 89, 27, 28, 29, 30, 31, 32, 33, -1, - 35, 36, 37, 38, 39, -1, -1, -1, 43, 84, - 85, -1, 47, -1, -1, -1, -1, 84, 85, -1, - -1, 9, 10, -1, 12, 13, -1, -1, 63, 64, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 27, - -1, -1, 30, -1, -1, 80, -1, -1, 83, 84, - 85, 86, 87, 88, 89, 43, -1, -1, 46, -1, - -1, -1, -1, 51, 52, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 27, 28, - -1, 30, -1, -1, -1, 34, 84, 85, 27, 28, - -1, 30, -1, -1, 43, 34, -1, 46, -1, -1, - -1, -1, -1, -1, 43, -1, -1, 46, -1, -1, - -1, -1, 30, 53, 54, -1, -1, 57, 58, 59, - 60, 61, 62, -1, -1, 43, -1, -1, 46, -1, - -1, -1, -1, 51, 52, 84, 85, 77, 78, 79, - 80, 81, 82, 83, -1, 84, 85, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 40, -1, - -1, -1, -1, 45, -1, -1, 84, 85, 50, -1, - -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 76, 77, 78, 79, 80, 81, - 82, 83, 40, -1, -1, -1, -1, 45, -1, -1, - -1, -1, 50, -1, -1, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 76, 77, - 78, 79, 80, 81, 82, 83, 40, -1, -1, -1, - -1, 45, -1, -1, -1, -1, 50, -1, -1, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 76, 77, 78, 79, 80, 81, 82, 83, - 40, -1, -1, -1, -1, 45, -1, -1, -1, -1, - 50, -1, -1, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 40, -1, 76, 77, 78, 79, - 80, 81, 82, 83, 50, -1, -1, 53, 54, 55, + 88, 89, 90, 91, 92, 93, 27, 28, 29, 30, + 31, 32, 33, -1, 35, 36, 37, 38, 39, 84, + 85, -1, 43, -1, 84, 85, 47, 53, 54, -1, 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, - 76, 77, 78, 79, 80, 81, 82, 83, 50, -1, - -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 40, -1, 76, 77, 78, 79, 80, 81, - 82, 83, 50, -1, -1, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 40, -1, 76, 77, - 78, 79, 80, 81, 82, 83, 50, -1, -1, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 40, -1, 76, 77, 78, 79, 80, 81, 82, 83, - 50, -1, -1, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 40, -1, 76, 77, 78, 79, - 80, 81, 82, 83, 50, -1, -1, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, - 76, 77, 78, 79, 80, 81, 82, 83, 50, -1, - -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 76, 77, 78, 79, 80, 81, - 82, 83, 44, -1, -1, -1, -1, -1, 50, -1, - -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 76, 77, 78, 79, 80, 81, - 82, 83, 44, -1, -1, -1, -1, -1, 50, -1, - -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 76, 77, 78, 79, 80, 81, - 82, 83, 44, -1, -1, -1, -1, -1, 50, -1, - -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 76, 77, 78, 79, 80, 81, - 82, 83, 45, -1, -1, -1, -1, 50, -1, -1, + -1, -1, 63, 64, -1, -1, -1, -1, -1, -1, + 76, 77, 78, 79, 80, 81, 82, 83, -1, 80, + -1, -1, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 3, 4, 5, -1, -1, -1, -1, + -1, 11, -1, -1, 14, 15, -1, 17, 18, 19, + -1, 21, 22, 23, 24, 25, 26, 27, -1, -1, + 30, -1, -1, -1, -1, 35, 36, 37, 38, -1, + -1, 41, 42, 43, -1, -1, -1, -1, 3, 4, + 5, 51, 52, -1, -1, -1, 11, -1, -1, 14, + 15, -1, 17, 18, 19, -1, 21, 22, 23, 24, + 25, 26, 27, -1, -1, 30, -1, -1, -1, -1, + 35, 36, 37, 38, 84, 85, 41, 42, 43, -1, + -1, -1, -1, 3, 4, 5, 51, 52, -1, -1, + -1, 11, -1, -1, 14, 15, -1, 17, 18, 19, + -1, 21, 22, 23, 24, 25, 26, 27, -1, -1, + 30, -1, -1, -1, -1, 35, 36, 37, 38, 84, + 85, 41, -1, 43, 9, 10, -1, 12, 13, -1, + -1, 51, 52, 40, -1, -1, -1, -1, 45, -1, + -1, -1, 27, 50, -1, 30, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, -1, -1, 43, -1, + -1, 46, -1, -1, 84, 85, 51, 52, -1, 76, + 77, 78, 79, 80, 81, 82, 83, -1, -1, -1, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 30, -1, -1, -1, -1, -1, -1, -1, 84, + 85, -1, -1, -1, 43, -1, -1, 46, -1, -1, + -1, -1, 51, 52, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 40, -1, -1, + -1, -1, 45, -1, -1, 84, 85, 50, -1, -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, 77, 78, 79, 80, 81, 82, - 83, 48, -1, 50, -1, -1, 53, 54, 55, 56, + 83, 40, -1, -1, -1, -1, 45, -1, -1, -1, + -1, 50, -1, -1, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 76, 77, 78, + 79, 80, 81, 82, 83, 40, -1, -1, -1, -1, + 45, -1, -1, -1, -1, 50, -1, -1, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, + -1, 76, 77, 78, 79, 80, 81, 82, 83, 50, + -1, -1, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 40, -1, 76, 77, 78, 79, 80, + 81, 82, 83, 50, -1, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 40, -1, 76, + 77, 78, 79, 80, 81, 82, 83, 50, -1, -1, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 40, -1, 76, 77, 78, 79, 80, 81, 82, + 83, 50, -1, -1, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 40, -1, 76, 77, 78, + 79, 80, 81, 82, 83, 50, -1, -1, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, + -1, 76, 77, 78, 79, 80, 81, 82, 83, 50, + -1, -1, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 40, -1, 76, 77, 78, 79, 80, + 81, 82, 83, 50, -1, -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, - 77, 78, 79, 80, 81, 82, 83, 49, 50, -1, + 77, 78, 79, 80, 81, 82, 83, 44, -1, -1, + -1, -1, -1, 50, -1, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, + 77, 78, 79, 80, 81, 82, 83, 44, -1, -1, + -1, -1, -1, 50, -1, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, + 77, 78, 79, 80, 81, 82, 83, 44, -1, -1, + -1, -1, -1, 50, -1, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, + 77, 78, 79, 80, 81, 82, 83, 45, -1, -1, + -1, -1, 50, -1, -1, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 76, 77, + 78, 79, 80, 81, 82, 83, 48, -1, 50, -1, -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, 77, 78, 79, 80, 81, @@ -3949,88 +3983,92 @@ namespace xsk { namespace gsc { namespace iw6 { -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, 77, 78, 79, 80, 81, 82, 83, 49, 50, -1, -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 50, -1, -1, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 76, 77, 78, 79, 80, 81, - 82, 83, -1, -1, -1, -1, -1, 76, 77, 78, - 79, 80, 81, 82, 83, 53, 54, -1, 56, 57, - 58, 59, 60, 61, 62, 53, 54, -1, -1, 57, - 58, 59, 60, 61, 62, -1, -1, -1, 76, 77, - 78, 79, 80, 81, 82, 83, -1, -1, 76, 77, - 78, 79, 80, 81, 82, 83, 53, 54, -1, -1, - 57, 58, 59, 60, 61, 62, 53, 54, -1, -1, - 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, - 77, -1, 79, 80, 81, 82, 83, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83 + 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 76, 77, 78, 79, 80, 81, + 82, 83, 49, 50, -1, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 50, -1, -1, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 76, + 77, 78, 79, 80, 81, 82, 83, -1, -1, -1, + -1, -1, 76, 77, 78, 79, 80, 81, 82, 83, + 53, 54, -1, -1, 57, 58, 59, 60, 61, 62, + 53, 54, -1, -1, 57, 58, 59, 60, 61, 62, + -1, -1, -1, 76, 77, 78, 79, 80, 81, 82, + 83, -1, -1, -1, 77, 78, 79, 80, 81, 82, + 83, 53, 54, -1, -1, 57, 58, 59, 60, 61, + 62, 53, 54, -1, -1, 57, 58, 59, 60, 61, + 62, -1, -1, -1, -1, 77, -1, 79, 80, 81, + 82, 83, -1, -1, -1, -1, -1, 79, 80, 81, + 82, 83 }; const unsigned char parser::yystos_[] = { - 0, 6, 7, 85, 100, 101, 102, 103, 104, 105, - 106, 164, 84, 165, 39, 0, 102, 103, 39, 65, - 49, 86, 167, 107, 164, 8, 27, 28, 29, 30, + 0, 6, 7, 85, 104, 105, 106, 107, 108, 109, + 110, 170, 84, 171, 39, 0, 106, 107, 39, 65, + 49, 86, 173, 111, 170, 8, 27, 28, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 43, 47, - 63, 64, 80, 83, 87, 88, 89, 135, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 63, 64, 80, 83, 87, 88, 89, 90, 91, 92, + 93, 139, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 40, 40, 45, 43, 144, 145, 164, - 165, 144, 145, 43, 135, 43, 44, 135, 146, 147, - 148, 164, 135, 135, 88, 89, 85, 49, 50, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 76, - 77, 78, 79, 80, 81, 82, 83, 27, 28, 34, - 43, 46, 144, 145, 39, 47, 49, 41, 109, 164, - 43, 47, 43, 40, 45, 135, 45, 44, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 144, 145, 144, - 145, 135, 164, 146, 147, 164, 3, 4, 5, 11, - 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, - 26, 42, 51, 52, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 136, - 141, 142, 151, 152, 154, 158, 159, 160, 161, 164, - 135, 164, 135, 135, 44, 135, 48, 44, 40, 39, - 49, 39, 39, 135, 49, 39, 39, 39, 39, 39, - 80, 167, 170, 172, 48, 49, 49, 49, 135, 141, - 154, 154, 42, 108, 49, 49, 49, 9, 10, 12, - 13, 51, 52, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 44, 45, 44, 135, 146, 146, - 146, 49, 135, 135, 133, 136, 154, 164, 135, 48, - 48, 48, 49, 39, 39, 39, 39, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 44, 135, - 39, 40, 40, 40, 40, 40, 49, 20, 45, 40, - 135, 135, 135, 135, 39, 40, 146, 49, 49, 108, - 108, 134, 135, 135, 164, 109, 40, 40, 45, 40, - 45, 40, 45, 146, 40, 16, 49, 40, 20, 49, - 49, 146, 49, 146, 49, 146, 40, 108, 133, 108, - 135, 40, 40, 40, 40, 40, 49, 49, 49, 108, - 108 + 172, 173, 174, 175, 176, 177, 40, 40, 45, 43, + 148, 149, 170, 171, 148, 149, 43, 139, 43, 44, + 139, 150, 151, 152, 170, 139, 139, 89, 90, 85, + 49, 50, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 76, 77, 78, 79, 80, 81, 82, 83, + 27, 28, 34, 43, 46, 148, 149, 39, 47, 49, + 41, 113, 170, 43, 47, 43, 40, 45, 139, 45, + 44, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 148, 149, 148, 149, 139, 170, 150, 151, 170, 3, + 4, 5, 11, 14, 15, 17, 18, 19, 21, 22, + 23, 24, 25, 26, 42, 51, 52, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 140, 145, 146, 155, 156, 158, 164, 165, + 166, 167, 170, 139, 170, 139, 139, 44, 139, 48, + 44, 40, 39, 49, 39, 39, 139, 49, 39, 39, + 39, 39, 39, 80, 160, 173, 48, 49, 49, 49, + 139, 145, 158, 158, 42, 112, 49, 49, 49, 9, + 10, 12, 13, 51, 52, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 44, 45, 44, 139, + 150, 150, 150, 49, 139, 139, 137, 140, 158, 170, + 139, 48, 48, 49, 39, 39, 39, 39, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 44, + 139, 39, 40, 40, 40, 40, 40, 49, 20, 45, + 40, 139, 139, 139, 139, 39, 40, 150, 49, 49, + 112, 112, 138, 139, 139, 170, 113, 40, 40, 45, + 40, 45, 40, 45, 150, 40, 16, 49, 40, 20, + 49, 49, 150, 49, 150, 49, 150, 40, 112, 137, + 112, 139, 40, 40, 40, 40, 40, 49, 49, 49, + 112, 112 }; const unsigned char parser::yyr1_[] = { - 0, 99, 100, 100, 101, 101, 101, 101, 102, 103, - 103, 103, 104, 105, 106, 107, 107, 107, 108, 108, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, - 108, 109, 109, 110, 110, 111, 111, 112, 113, 114, - 114, 115, 116, 116, 117, 117, 118, 119, 120, 121, - 122, 123, 123, 124, 125, 125, 125, 126, 127, 128, - 129, 129, 130, 131, 132, 133, 133, 134, 134, 135, - 135, 135, 135, 136, 136, 136, 136, 136, 136, 136, - 136, 136, 136, 136, 136, 136, 136, 136, 137, 137, - 137, 137, 137, 137, 137, 137, 138, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 0, 103, 104, 104, 105, 105, 105, 105, 106, 107, + 107, 107, 108, 109, 110, 111, 111, 111, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 113, 113, 114, 114, 115, 115, 116, 117, 118, + 118, 119, 120, 120, 121, 121, 122, 123, 124, 125, + 126, 127, 127, 128, 129, 129, 130, 131, 132, 133, + 133, 134, 135, 136, 137, 137, 138, 138, 139, 139, + 139, 139, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 141, 141, 141, - 141, 142, 142, 142, 142, 143, 143, 143, 143, 144, - 144, 145, 145, 146, 146, 147, 147, 148, 149, 149, - 150, 151, 152, 153, 154, 154, 154, 154, 154, 154, - 154, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174 + 141, 141, 141, 141, 141, 142, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 145, 145, 145, 145, 146, + 146, 146, 146, 147, 147, 147, 147, 148, 148, 149, + 149, 150, 150, 151, 151, 152, 153, 153, 154, 155, + 156, 157, 158, 158, 158, 158, 158, 158, 158, 158, + 159, 159, 160, 160, 160, 160, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177 }; const signed char @@ -4042,21 +4080,21 @@ namespace xsk { namespace gsc { namespace iw6 { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 1, 2, 2, 2, 6, 8, 6, 3, 8, 6, 8, 6, 2, 5, 7, 5, - 9, 7, 9, 5, 3, 3, 3, 2, 2, 2, - 3, 2, 2, 5, 5, 1, 0, 1, 0, 1, - 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, + 9, 7, 9, 5, 3, 3, 2, 2, 2, 3, + 2, 2, 5, 5, 1, 0, 1, 0, 1, 1, + 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, + 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 3, 3, 2, 2, 3, 3, 4, - 6, 8, 9, 1, 1, 3, 1, 0, 2, 3, - 3, 4, 3, 2, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, - 1, 1, 1, 1, 1, 7, 2, 2, 1, 1, - 1, 1 + 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, + 2, 3, 3, 2, 2, 3, 3, 4, 6, 8, + 9, 1, 1, 3, 1, 0, 2, 3, 3, 4, + 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 1, 2, 1, 1, 1, 1, 1, 2, 1, + 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, + 1, 7, 1, 1 }; @@ -4066,27 +4104,27 @@ namespace xsk { namespace gsc { namespace iw6 { const short parser::yyrline_[] = { - 0, 241, 241, 242, 246, 248, 250, 252, 257, 262, - 263, 264, 268, 273, 278, 283, 285, 288, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 318, 319, 323, 325, 330, 332, 337, 342, 347, - 349, 354, 359, 361, 366, 368, 373, 378, 383, 388, - 393, 398, 400, 405, 410, 412, 414, 419, 424, 429, - 434, 436, 441, 446, 451, 456, 457, 461, 462, 466, - 467, 468, 469, 473, 474, 475, 476, 477, 478, 479, - 480, 481, 482, 483, 484, 485, 486, 487, 491, 492, - 493, 494, 495, 496, 497, 498, 502, 506, 507, 508, - 509, 510, 511, 512, 513, 514, 515, 519, 520, 521, - 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, - 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 552, 553, 554, - 555, 559, 560, 561, 562, 566, 567, 568, 569, 573, - 575, 580, 582, 587, 588, 592, 594, 600, 604, 606, - 611, 616, 621, 626, 631, 632, 633, 634, 635, 636, - 637, 638, 641, 642, 643, 644, 645, 646, 647, 648, - 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, - 659, 660 + 0, 244, 244, 245, 249, 251, 253, 255, 260, 265, + 266, 267, 271, 276, 281, 286, 288, 291, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 321, 322, 326, 328, 333, 335, 340, 345, 350, + 352, 357, 362, 364, 369, 371, 376, 381, 386, 391, + 396, 401, 403, 408, 413, 415, 420, 425, 430, 435, + 437, 442, 447, 452, 457, 458, 462, 463, 467, 468, + 469, 470, 474, 475, 476, 477, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 492, 493, 494, + 495, 496, 497, 498, 499, 503, 507, 508, 509, 510, + 511, 512, 513, 514, 515, 516, 520, 521, 522, 523, + 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 552, 553, 554, 555, 559, + 560, 561, 562, 566, 567, 568, 569, 573, 575, 580, + 582, 587, 588, 592, 594, 600, 604, 606, 611, 616, + 621, 626, 631, 632, 633, 634, 635, 636, 637, 638, + 642, 643, 647, 648, 649, 650, 651, 654, 655, 656, + 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, + 667, 668, 669, 670 }; void @@ -4119,9 +4157,9 @@ namespace xsk { namespace gsc { namespace iw6 { #line 13 "parser.ypp" } } } // xsk::gsc::iw6 -#line 4123 "parser.cpp" +#line 4161 "parser.cpp" -#line 662 "parser.ypp" +#line 672 "parser.ypp" void xsk::gsc::iw6::parser::error(const xsk::gsc::location& loc, const std::string& msg) diff --git a/src/iw6/xsk/parser.hpp b/src/iw6/xsk/parser.hpp index 43e90e16..75ad2abc 100644 --- a/src/iw6/xsk/parser.hpp +++ b/src/iw6/xsk/parser.hpp @@ -417,31 +417,34 @@ namespace xsk { namespace gsc { namespace iw6 { // animtree char dummy3[sizeof (animtree_ptr)]; + // color + char dummy4[sizeof (color_ptr)]; + // constant - char dummy4[sizeof (constant_ptr)]; + char dummy5[sizeof (constant_ptr)]; // define - char dummy5[sizeof (define_ptr)]; + char dummy6[sizeof (define_ptr)]; // empty_array - char dummy6[sizeof (empty_array_ptr)]; + char dummy7[sizeof (empty_array_ptr)]; // expr_arguments // expr_arguments_filled // expr_arguments_empty - char dummy7[sizeof (expr_arguments_ptr)]; + char dummy8[sizeof (expr_arguments_ptr)]; // expr_assign - char dummy8[sizeof (expr_assign_ptr)]; + char dummy9[sizeof (expr_assign_ptr)]; // expr_call // expr_call_thread // expr_call_childthread - char dummy9[sizeof (expr_call_ptr)]; + char dummy10[sizeof (expr_call_ptr)]; // expr_call_function // expr_call_pointer - char dummy10[sizeof (expr_call_type_ptr)]; + char dummy11[sizeof (expr_call_type_ptr)]; // for_expr // expr @@ -449,36 +452,34 @@ namespace xsk { namespace gsc { namespace iw6 { // expr_ternary // expr_binary // expr_primitive - char dummy11[sizeof (expr_ptr)]; + char dummy12[sizeof (expr_ptr)]; // false - char dummy12[sizeof (false_ptr)]; + char dummy13[sizeof (false_ptr)]; // file - char dummy13[sizeof (file_ptr)]; + char dummy14[sizeof (file_ptr)]; - // neg_float // float - char dummy14[sizeof (float_ptr)]; + char dummy15[sizeof (float_ptr)]; // game - char dummy15[sizeof (game_ptr)]; + char dummy16[sizeof (game_ptr)]; // include - char dummy16[sizeof (include_ptr)]; + char dummy17[sizeof (include_ptr)]; - // neg_integer // integer - char dummy17[sizeof (integer_ptr)]; + char dummy18[sizeof (integer_ptr)]; // istring - char dummy18[sizeof (istring_ptr)]; + char dummy19[sizeof (istring_ptr)]; // level - char dummy19[sizeof (level_ptr)]; + char dummy20[sizeof (level_ptr)]; // name - char dummy20[sizeof (name_ptr)]; + char dummy21[sizeof (name_ptr)]; // expr_function // expr_add_array @@ -486,119 +487,123 @@ namespace xsk { namespace gsc { namespace iw6 { // expr_field // expr_size // object - char dummy21[sizeof (node_ptr)]; + char dummy22[sizeof (node_ptr)]; // parameters - char dummy22[sizeof (parameters_ptr)]; + char dummy23[sizeof (parameters_ptr)]; // program - char dummy23[sizeof (program_ptr)]; + char dummy24[sizeof (program_ptr)]; // self - char dummy24[sizeof (self_ptr)]; + char dummy25[sizeof (self_ptr)]; // "file path" // "identifier" // "string literal" // "localized string" + // "color" // "float" // "int" - char dummy25[sizeof (std::string)]; + // "octal int" + // "binary int" + // "hexadecimal int" + char dummy26[sizeof (std::string)]; // stmt_assign - char dummy26[sizeof (stmt_assign_ptr)]; + char dummy27[sizeof (stmt_assign_ptr)]; // stmt_break - char dummy27[sizeof (stmt_break_ptr)]; + char dummy28[sizeof (stmt_break_ptr)]; // stmt_breakpoint - char dummy28[sizeof (stmt_breakpoint_ptr)]; + char dummy29[sizeof (stmt_breakpoint_ptr)]; // stmt_call - char dummy29[sizeof (stmt_call_ptr)]; + char dummy30[sizeof (stmt_call_ptr)]; // stmt_case - char dummy30[sizeof (stmt_case_ptr)]; + char dummy31[sizeof (stmt_case_ptr)]; // stmt_continue - char dummy31[sizeof (stmt_continue_ptr)]; + char dummy32[sizeof (stmt_continue_ptr)]; // stmt_default - char dummy32[sizeof (stmt_default_ptr)]; + char dummy33[sizeof (stmt_default_ptr)]; // stmt_endon - char dummy33[sizeof (stmt_endon_ptr)]; + char dummy34[sizeof (stmt_endon_ptr)]; // stmt_for - char dummy34[sizeof (stmt_for_ptr)]; + char dummy35[sizeof (stmt_for_ptr)]; // stmt_foreach - char dummy35[sizeof (stmt_foreach_ptr)]; + char dummy36[sizeof (stmt_foreach_ptr)]; // stmt_if - char dummy36[sizeof (stmt_if_ptr)]; + char dummy37[sizeof (stmt_if_ptr)]; // stmt_ifelse - char dummy37[sizeof (stmt_ifelse_ptr)]; + char dummy38[sizeof (stmt_ifelse_ptr)]; // stmt_block // stmt_list - char dummy38[sizeof (stmt_list_ptr)]; + char dummy39[sizeof (stmt_list_ptr)]; // stmt_notify - char dummy39[sizeof (stmt_notify_ptr)]; + char dummy40[sizeof (stmt_notify_ptr)]; // stmt_prof_begin - char dummy40[sizeof (stmt_prof_begin_ptr)]; + char dummy41[sizeof (stmt_prof_begin_ptr)]; // stmt_prof_end - char dummy41[sizeof (stmt_prof_end_ptr)]; + char dummy42[sizeof (stmt_prof_end_ptr)]; // stmt // for_stmt - char dummy42[sizeof (stmt_ptr)]; + char dummy43[sizeof (stmt_ptr)]; // stmt_return - char dummy43[sizeof (stmt_return_ptr)]; + char dummy44[sizeof (stmt_return_ptr)]; // stmt_switch - char dummy44[sizeof (stmt_switch_ptr)]; + char dummy45[sizeof (stmt_switch_ptr)]; // stmt_wait - char dummy45[sizeof (stmt_wait_ptr)]; + char dummy46[sizeof (stmt_wait_ptr)]; // stmt_waittill - char dummy46[sizeof (stmt_waittill_ptr)]; + char dummy47[sizeof (stmt_waittill_ptr)]; // stmt_waittillframeend - char dummy47[sizeof (stmt_waittillframeend_ptr)]; + char dummy48[sizeof (stmt_waittillframeend_ptr)]; // stmt_waittillmatch - char dummy48[sizeof (stmt_waittillmatch_ptr)]; + char dummy49[sizeof (stmt_waittillmatch_ptr)]; // stmt_while - char dummy49[sizeof (stmt_while_ptr)]; + char dummy50[sizeof (stmt_while_ptr)]; // string - char dummy50[sizeof (string_ptr)]; + char dummy51[sizeof (string_ptr)]; // thisthread - char dummy51[sizeof (thisthread_ptr)]; + char dummy52[sizeof (thisthread_ptr)]; // thread - char dummy52[sizeof (thread_ptr)]; + char dummy53[sizeof (thread_ptr)]; // true - char dummy53[sizeof (true_ptr)]; + char dummy54[sizeof (true_ptr)]; // undefined - char dummy54[sizeof (undefined_ptr)]; + char dummy55[sizeof (undefined_ptr)]; // usingtree - char dummy55[sizeof (usingtree_ptr)]; + char dummy56[sizeof (usingtree_ptr)]; // vector - char dummy56[sizeof (vector_ptr)]; + char dummy57[sizeof (vector_ptr)]; }; /// The size of the largest semantic type. @@ -735,17 +740,21 @@ namespace xsk { namespace gsc { namespace iw6 { NAME = 85, // "identifier" STRING = 86, // "string literal" ISTRING = 87, // "localized string" - FLOAT = 88, // "float" - INTEGER = 89, // "int" - ADD_ARRAY = 90, // ADD_ARRAY - THEN = 91, // THEN - TERN = 92, // TERN - NEG = 93, // NEG - ANIMREF = 94, // ANIMREF - PREINC = 95, // PREINC - PREDEC = 96, // PREDEC - POSTINC = 97, // POSTINC - POSTDEC = 98 // POSTDEC + COLOR = 88, // "color" + FLOAT = 89, // "float" + INT_DEC = 90, // "int" + INT_OCT = 91, // "octal int" + INT_BIN = 92, // "binary int" + INT_HEX = 93, // "hexadecimal int" + ADD_ARRAY = 94, // ADD_ARRAY + THEN = 95, // THEN + TERN = 96, // TERN + NEG = 97, // NEG + ANIMREF = 98, // ANIMREF + PREINC = 99, // PREINC + PREDEC = 100, // PREDEC + POSTINC = 101, // POSTINC + POSTDEC = 102 // POSTDEC }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; @@ -762,7 +771,7 @@ namespace xsk { namespace gsc { namespace iw6 { { enum symbol_kind_type { - YYNTOKENS = 99, ///< Number of tokens. + YYNTOKENS = 103, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error @@ -852,93 +861,96 @@ namespace xsk { namespace gsc { namespace iw6 { S_NAME = 85, // "identifier" S_STRING = 86, // "string literal" S_ISTRING = 87, // "localized string" - S_FLOAT = 88, // "float" - S_INTEGER = 89, // "int" - S_ADD_ARRAY = 90, // ADD_ARRAY - S_THEN = 91, // THEN - S_TERN = 92, // TERN - S_NEG = 93, // NEG - S_ANIMREF = 94, // ANIMREF - S_PREINC = 95, // PREINC - S_PREDEC = 96, // PREDEC - S_POSTINC = 97, // POSTINC - S_POSTDEC = 98, // POSTDEC - S_YYACCEPT = 99, // $accept - S_root = 100, // root - S_program = 101, // program - S_include = 102, // include - S_define = 103, // define - S_usingtree = 104, // usingtree - S_constant = 105, // constant - S_thread = 106, // thread - S_parameters = 107, // parameters - S_stmt = 108, // stmt - S_stmt_block = 109, // stmt_block - S_stmt_list = 110, // stmt_list - S_stmt_call = 111, // stmt_call - S_stmt_assign = 112, // stmt_assign - S_stmt_endon = 113, // stmt_endon - S_stmt_notify = 114, // stmt_notify - S_stmt_wait = 115, // stmt_wait - S_stmt_waittill = 116, // stmt_waittill - S_stmt_waittillmatch = 117, // stmt_waittillmatch - S_stmt_waittillframeend = 118, // stmt_waittillframeend - S_stmt_if = 119, // stmt_if - S_stmt_ifelse = 120, // stmt_ifelse - S_stmt_while = 121, // stmt_while - S_stmt_for = 122, // stmt_for - S_stmt_foreach = 123, // stmt_foreach - S_stmt_switch = 124, // stmt_switch - S_stmt_case = 125, // stmt_case - S_stmt_default = 126, // stmt_default - S_stmt_break = 127, // stmt_break - S_stmt_continue = 128, // stmt_continue - S_stmt_return = 129, // stmt_return - S_stmt_breakpoint = 130, // stmt_breakpoint - S_stmt_prof_begin = 131, // stmt_prof_begin - S_stmt_prof_end = 132, // stmt_prof_end - S_for_stmt = 133, // for_stmt - S_for_expr = 134, // for_expr - S_expr = 135, // expr - S_expr_assign = 136, // expr_assign - S_expr_compare = 137, // expr_compare - S_expr_ternary = 138, // expr_ternary - S_expr_binary = 139, // expr_binary - S_expr_primitive = 140, // expr_primitive - S_expr_call = 141, // expr_call - S_expr_call_thread = 142, // expr_call_thread - S_expr_call_childthread = 143, // expr_call_childthread - S_expr_call_function = 144, // expr_call_function - S_expr_call_pointer = 145, // expr_call_pointer - S_expr_arguments = 146, // expr_arguments - S_expr_arguments_filled = 147, // expr_arguments_filled - S_expr_arguments_empty = 148, // expr_arguments_empty - S_expr_function = 149, // expr_function - S_expr_add_array = 150, // expr_add_array - S_expr_array = 151, // expr_array - S_expr_field = 152, // expr_field - S_expr_size = 153, // expr_size - S_object = 154, // object - S_thisthread = 155, // thisthread - S_empty_array = 156, // empty_array - S_undefined = 157, // undefined - S_game = 158, // game - S_self = 159, // self - S_anim = 160, // anim - S_level = 161, // level - S_animation = 162, // animation - S_animtree = 163, // animtree - S_name = 164, // name - S_file = 165, // file - S_istring = 166, // istring - S_string = 167, // string - S_vector = 168, // vector - S_neg_float = 169, // neg_float - S_neg_integer = 170, // neg_integer - S_float = 171, // float - S_integer = 172, // integer - S_false = 173, // false - S_true = 174 // true + S_COLOR = 88, // "color" + S_FLOAT = 89, // "float" + S_INT_DEC = 90, // "int" + S_INT_OCT = 91, // "octal int" + S_INT_BIN = 92, // "binary int" + S_INT_HEX = 93, // "hexadecimal int" + S_ADD_ARRAY = 94, // ADD_ARRAY + S_THEN = 95, // THEN + S_TERN = 96, // TERN + S_NEG = 97, // NEG + S_ANIMREF = 98, // ANIMREF + S_PREINC = 99, // PREINC + S_PREDEC = 100, // PREDEC + S_POSTINC = 101, // POSTINC + S_POSTDEC = 102, // POSTDEC + S_YYACCEPT = 103, // $accept + S_root = 104, // root + S_program = 105, // program + S_include = 106, // include + S_define = 107, // define + S_usingtree = 108, // usingtree + S_constant = 109, // constant + S_thread = 110, // thread + S_parameters = 111, // parameters + S_stmt = 112, // stmt + S_stmt_block = 113, // stmt_block + S_stmt_list = 114, // stmt_list + S_stmt_call = 115, // stmt_call + S_stmt_assign = 116, // stmt_assign + S_stmt_endon = 117, // stmt_endon + S_stmt_notify = 118, // stmt_notify + S_stmt_wait = 119, // stmt_wait + S_stmt_waittill = 120, // stmt_waittill + S_stmt_waittillmatch = 121, // stmt_waittillmatch + S_stmt_waittillframeend = 122, // stmt_waittillframeend + S_stmt_if = 123, // stmt_if + S_stmt_ifelse = 124, // stmt_ifelse + S_stmt_while = 125, // stmt_while + S_stmt_for = 126, // stmt_for + S_stmt_foreach = 127, // stmt_foreach + S_stmt_switch = 128, // stmt_switch + S_stmt_case = 129, // stmt_case + S_stmt_default = 130, // stmt_default + S_stmt_break = 131, // stmt_break + S_stmt_continue = 132, // stmt_continue + S_stmt_return = 133, // stmt_return + S_stmt_breakpoint = 134, // stmt_breakpoint + S_stmt_prof_begin = 135, // stmt_prof_begin + S_stmt_prof_end = 136, // stmt_prof_end + S_for_stmt = 137, // for_stmt + S_for_expr = 138, // for_expr + S_expr = 139, // expr + S_expr_assign = 140, // expr_assign + S_expr_compare = 141, // expr_compare + S_expr_ternary = 142, // expr_ternary + S_expr_binary = 143, // expr_binary + S_expr_primitive = 144, // expr_primitive + S_expr_call = 145, // expr_call + S_expr_call_thread = 146, // expr_call_thread + S_expr_call_childthread = 147, // expr_call_childthread + S_expr_call_function = 148, // expr_call_function + S_expr_call_pointer = 149, // expr_call_pointer + S_expr_arguments = 150, // expr_arguments + S_expr_arguments_filled = 151, // expr_arguments_filled + S_expr_arguments_empty = 152, // expr_arguments_empty + S_expr_function = 153, // expr_function + S_expr_add_array = 154, // expr_add_array + S_expr_array = 155, // expr_array + S_expr_field = 156, // expr_field + S_expr_size = 157, // expr_size + S_object = 158, // object + S_float = 159, // float + S_integer = 160, // integer + S_thisthread = 161, // thisthread + S_empty_array = 162, // empty_array + S_undefined = 163, // undefined + S_game = 164, // game + S_self = 165, // self + S_anim = 166, // anim + S_level = 167, // level + S_animation = 168, // animation + S_animtree = 169, // animtree + S_name = 170, // name + S_file = 171, // file + S_istring = 172, // istring + S_string = 173, // string + S_color = 174, // color + S_vector = 175, // vector + S_false = 176, // false + S_true = 177 // true }; }; @@ -987,6 +999,10 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< animtree_ptr > (std::move (that.value)); break; + case symbol_kind::S_color: // color + value.move< color_ptr > (std::move (that.value)); + break; + case symbol_kind::S_constant: // constant value.move< constant_ptr > (std::move (that.value)); break; @@ -1037,7 +1053,6 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< file_ptr > (std::move (that.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.move< float_ptr > (std::move (that.value)); break; @@ -1050,7 +1065,6 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< include_ptr > (std::move (that.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.move< integer_ptr > (std::move (that.value)); break; @@ -1092,8 +1106,12 @@ namespace xsk { namespace gsc { namespace iw6 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.move< std::string > (std::move (that.value)); break; @@ -1288,6 +1306,20 @@ namespace xsk { namespace gsc { namespace iw6 { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, color_ptr&& v, location_type&& l) + : Base (t) + , value (std::move (v)) + , location (std::move (l)) + {} +#else + basic_symbol (typename Base::kind_type t, const color_ptr& v, const location_type& l) + : Base (t) + , value (v) + , location (l) + {} +#endif + #if 201103L <= YY_CPLUSPLUS basic_symbol (typename Base::kind_type t, constant_ptr&& v, location_type&& l) : Base (t) @@ -2064,6 +2096,10 @@ switch (yykind) value.template destroy< animtree_ptr > (); break; + case symbol_kind::S_color: // color + value.template destroy< color_ptr > (); + break; + case symbol_kind::S_constant: // constant value.template destroy< constant_ptr > (); break; @@ -2114,7 +2150,6 @@ switch (yykind) value.template destroy< file_ptr > (); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.template destroy< float_ptr > (); break; @@ -2127,7 +2162,6 @@ switch (yykind) value.template destroy< include_ptr > (); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.template destroy< integer_ptr > (); break; @@ -2169,8 +2203,12 @@ switch (yykind) case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.template destroy< std::string > (); break; @@ -2406,7 +2444,7 @@ switch (yykind) : super_type(token_type (tok), v, l) #endif { - IW6_ASSERT ((token::FILE <= tok && tok <= token::INTEGER)); + IW6_ASSERT ((token::FILE <= tok && tok <= token::INT_HEX)); } }; @@ -3776,6 +3814,21 @@ switch (yykind) return symbol_type (token::ISTRING, v, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_COLOR (std::string v, location_type l) + { + return symbol_type (token::COLOR, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_COLOR (const std::string& v, const location_type& l) + { + return symbol_type (token::COLOR, v, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -3794,16 +3847,61 @@ switch (yykind) #if 201103L <= YY_CPLUSPLUS static symbol_type - make_INTEGER (std::string v, location_type l) + make_INT_DEC (std::string v, location_type l) { - return symbol_type (token::INTEGER, std::move (v), std::move (l)); + return symbol_type (token::INT_DEC, std::move (v), std::move (l)); } #else static symbol_type - make_INTEGER (const std::string& v, const location_type& l) + make_INT_DEC (const std::string& v, const location_type& l) { - return symbol_type (token::INTEGER, v, l); + return symbol_type (token::INT_DEC, v, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_INT_OCT (std::string v, location_type l) + { + return symbol_type (token::INT_OCT, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_INT_OCT (const std::string& v, const location_type& l) + { + return symbol_type (token::INT_OCT, v, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_INT_BIN (std::string v, location_type l) + { + return symbol_type (token::INT_BIN, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_INT_BIN (const std::string& v, const location_type& l) + { + return symbol_type (token::INT_BIN, v, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_INT_HEX (std::string v, location_type l) + { + return symbol_type (token::INT_HEX, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_INT_HEX (const std::string& v, const location_type& l) + { + return symbol_type (token::INT_HEX, v, l); } #endif #if 201103L <= YY_CPLUSPLUS @@ -4285,8 +4383,8 @@ switch (yykind) /// Constants. enum { - yylast_ = 1836, ///< Last index in yytable_. - yynnts_ = 76, ///< Number of nonterminal symbols. + yylast_ = 1811, ///< Last index in yytable_. + yynnts_ = 75, ///< Number of nonterminal symbols. yyfinal_ = 15 ///< Termination state number. }; @@ -4326,6 +4424,10 @@ switch (yykind) value.copy< animtree_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_color: // color + value.copy< color_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_constant: // constant value.copy< constant_ptr > (YY_MOVE (that.value)); break; @@ -4376,7 +4478,6 @@ switch (yykind) value.copy< file_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.copy< float_ptr > (YY_MOVE (that.value)); break; @@ -4389,7 +4490,6 @@ switch (yykind) value.copy< include_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.copy< integer_ptr > (YY_MOVE (that.value)); break; @@ -4431,8 +4531,12 @@ switch (yykind) case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.copy< std::string > (YY_MOVE (that.value)); break; @@ -4603,6 +4707,10 @@ switch (yykind) value.move< animtree_ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_color: // color + value.move< color_ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_constant: // constant value.move< constant_ptr > (YY_MOVE (s.value)); break; @@ -4653,7 +4761,6 @@ switch (yykind) value.move< file_ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.move< float_ptr > (YY_MOVE (s.value)); break; @@ -4666,7 +4773,6 @@ switch (yykind) value.move< include_ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.move< integer_ptr > (YY_MOVE (s.value)); break; @@ -4708,8 +4814,12 @@ switch (yykind) case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.move< std::string > (YY_MOVE (s.value)); break; @@ -4902,7 +5012,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::iw6 -#line 4906 "parser.hpp" +#line 5016 "parser.hpp" diff --git a/src/iw7/xsk/compiler.cpp b/src/iw7/xsk/compiler.cpp index a77faca3..1df9628e 100644 --- a/src/iw7/xsk/compiler.cpp +++ b/src/iw7/xsk/compiler.cpp @@ -785,6 +785,7 @@ void compiler::emit_expr(const gsc::context_ptr& ctx, const gsc::expr_ptr& expr) case gsc::node_t::data_name: emit_local_variable(ctx, expr.as_name); break; case gsc::node_t::data_istring: emit_istring(ctx, expr.as_istring); break; case gsc::node_t::data_string: emit_string(ctx, expr.as_string); break; + case gsc::node_t::data_color: emit_color(ctx, expr.as_color); break; case gsc::node_t::data_vector: emit_vector(ctx, expr.as_vector); break; case gsc::node_t::data_float: emit_float(ctx, expr.as_float); break; case gsc::node_t::data_integer: emit_integer(ctx, expr.as_integer); break; @@ -1606,6 +1607,30 @@ void compiler::emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& s emit_opcode(ctx, opcode::OP_GetString, str->value); } +void compiler::emit_color(const gsc::context_ptr& ctx, const gsc::color_ptr& color) +{ + std::vector data; + std::string x, y, z; + + if(color->value.size() == 3) + { + x = "0x" + color->value.substr(0, 1) + color->value.substr(0, 1); + y = "0x" + color->value.substr(1, 1) + color->value.substr(1, 1); + z = "0x" + color->value.substr(2, 1) + color->value.substr(2, 1); + } + else + { + x = "0x" + color->value.substr(0, 2); + y = "0x" + color->value.substr(2, 2); + z = "0x" + color->value.substr(4, 2); + } + + data.push_back(gsc::utils::string::hex_to_dec(x.data())); + data.push_back(gsc::utils::string::hex_to_dec(y.data())); + data.push_back(gsc::utils::string::hex_to_dec(z.data())); + emit_opcode(ctx, opcode::OP_GetVector, data); +} + void compiler::emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec) { std::vector data; diff --git a/src/iw7/xsk/compiler.hpp b/src/iw7/xsk/compiler.hpp index f12b9832..6d3fab20 100644 --- a/src/iw7/xsk/compiler.hpp +++ b/src/iw7/xsk/compiler.hpp @@ -101,6 +101,7 @@ private: void emit_animation(const gsc::context_ptr& ctx, const gsc::animation_ptr& animation); void emit_istring(const gsc::context_ptr& ctx, const gsc::istring_ptr& str); void emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& str); + void emit_color(const gsc::context_ptr& ctx, const gsc::color_ptr& color); void emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec); void emit_float(const gsc::context_ptr& ctx, const gsc::float_ptr& num); void emit_integer(const gsc::context_ptr& ctx, const gsc::integer_ptr& num); diff --git a/src/iw7/xsk/lexer.cpp b/src/iw7/xsk/lexer.cpp index 941b6030..370f5528 100644 --- a/src/iw7/xsk/lexer.cpp +++ b/src/iw7/xsk/lexer.cpp @@ -553,8 +553,8 @@ static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 100 -#define YY_END_OF_BUFFER 101 +#define YY_NUM_RULES 104 +#define YY_END_OF_BUFFER 105 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -562,41 +562,43 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[301] = +static const flex_int16_t yy_accept[314] = { 0, - 0, 0, 0, 0, 0, 0, 101, 99, 1, 2, - 88, 99, 99, 87, 91, 99, 48, 49, 85, 83, - 54, 84, 55, 86, 98, 57, 58, 72, 82, 73, - 59, 94, 52, 53, 92, 94, 94, 94, 94, 94, + 0, 0, 0, 0, 0, 0, 105, 103, 1, 2, + 88, 103, 103, 87, 91, 103, 48, 49, 85, 83, + 54, 84, 55, 86, 102, 102, 57, 58, 72, 82, + 73, 59, 94, 52, 53, 92, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, - 94, 50, 90, 51, 89, 5, 6, 5, 9, 10, - 9, 69, 0, 96, 0, 0, 0, 0, 78, 0, - 67, 0, 80, 0, 0, 76, 60, 74, 61, 75, - 97, 0, 8, 4, 3, 77, 97, 98, 0, 0, - 56, 64, 70, 68, 71, 65, 94, 81, 94, 94, + 94, 94, 50, 90, 51, 89, 5, 6, 5, 9, + 10, 9, 69, 0, 96, 0, 0, 0, 0, 0, + 78, 0, 67, 0, 80, 0, 0, 76, 60, 74, + 61, 75, 98, 0, 8, 4, 3, 77, 98, 102, + 99, 0, 0, 0, 0, 56, 64, 70, 68, 71, - 94, 94, 94, 94, 94, 94, 94, 94, 94, 24, - 29, 94, 94, 94, 94, 94, 94, 94, 94, 94, - 94, 94, 79, 66, 7, 11, 0, 96, 0, 0, - 0, 0, 0, 95, 0, 0, 0, 0, 96, 0, - 97, 0, 3, 97, 97, 93, 62, 63, 94, 94, - 94, 94, 94, 94, 94, 94, 94, 94, 27, 94, + 65, 94, 81, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 24, 29, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 79, 66, 7, + 11, 0, 96, 0, 0, 0, 0, 0, 0, 95, + 0, 0, 0, 0, 96, 0, 98, 0, 3, 98, + 98, 99, 100, 101, 93, 62, 63, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 27, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, - 94, 94, 0, 0, 0, 0, 95, 0, 0, 95, + 94, 97, 0, 0, 0, 0, 95, 0, 0, 95, 0, 0, 46, 94, 39, 31, 94, 94, 94, 25, + 94, 94, 94, 44, 94, 94, 94, 94, 45, 94, + 94, 94, 40, 94, 20, 94, 0, 0, 0, 0, + 43, 33, 94, 94, 94, 18, 41, 94, 47, 94, + 94, 94, 94, 94, 94, 94, 94, 26, 0, 0, + 0, 0, 94, 94, 94, 94, 94, 19, 94, 94, + 35, 30, 94, 36, 94, 94, 97, 0, 0, 0, + 94, 94, 94, 32, 28, 94, 94, 94, 94, 94, + 0, 15, 0, 94, 94, 34, 94, 14, 94, 94, + 21, 17, 0, 94, 94, 94, 94, 42, 94, 94, + 0, 12, 94, 13, 38, 94, 94, 0, 37, 94, - 94, 94, 40, 94, 20, 94, 0, 0, 0, 43, - 33, 94, 94, 94, 18, 41, 94, 47, 94, 94, - 94, 94, 94, 94, 94, 94, 26, 0, 0, 0, - 94, 94, 94, 94, 94, 19, 94, 94, 35, 30, - 94, 36, 94, 94, 0, 0, 0, 94, 94, 94, - 32, 28, 94, 94, 94, 94, 94, 0, 15, 0, - 94, 94, 34, 94, 14, 94, 94, 21, 17, 0, - 94, 94, 94, 94, 42, 94, 94, 0, 12, 94, - 13, 38, 94, 94, 0, 37, 94, 94, 0, 94, - 94, 0, 94, 22, 0, 94, 16, 94, 23, 0 - + 94, 0, 94, 94, 0, 94, 22, 0, 94, 16, + 94, 23, 0 } ; static const YY_CHAR yy_ec[256] = @@ -605,16 +607,16 @@ static const YY_CHAR yy_ec[256] = 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 5, 6, 1, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, - 22, 23, 24, 1, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 26, 27, 28, 29, 30, 1, 31, 32, 33, 34, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 20, 20, 20, 20, 20, 21, 21, 22, 23, 24, + 25, 26, 27, 1, 28, 29, 28, 28, 28, 28, + 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 31, 30, 30, + 32, 33, 34, 35, 36, 1, 37, 38, 39, 40, - 35, 36, 37, 38, 39, 25, 40, 41, 42, 43, - 44, 45, 25, 46, 47, 48, 49, 50, 51, 25, - 52, 53, 54, 55, 56, 57, 1, 1, 1, 1, + 41, 42, 43, 44, 45, 30, 46, 47, 48, 49, + 50, 51, 30, 52, 53, 54, 55, 56, 57, 31, + 58, 59, 60, 61, 62, 63, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -631,238 +633,267 @@ static const YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static const YY_CHAR yy_meta[58] = +static const YY_CHAR yy_meta[64] = { 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 1, 4, 1, 1, - 1, 1, 1, 1, 4, 1, 5, 1, 1, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 1, 1, 1, 1 + 1, 1, 1, 1, 1, 3, 1, 4, 4, 4, + 4, 1, 1, 1, 1, 1, 1, 4, 4, 5, + 5, 1, 6, 1, 1, 5, 4, 4, 4, 4, + 4, 4, 5, 5, 7, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 7, 5, 5, 5, 5, 1, + 1, 1, 1 } ; -static const flex_int16_t yy_base[315] = +static const flex_int16_t yy_base[334] = { 0, - 0, 0, 55, 56, 57, 58, 565, 566, 566, 566, - 542, 57, 34, 541, 66, 60, 566, 566, 540, 57, - 566, 63, 48, 74, 74, 542, 566, 55, 538, 59, - 566, 532, 566, 566, 536, 62, 66, 71, 72, 67, - 73, 87, 70, 76, 89, 92, 93, 94, 96, 97, - 99, 566, 100, 566, 566, 566, 566, 540, 566, 566, - 539, 566, 120, 566, 136, 512, 511, 506, 566, 122, - 566, 123, 566, 126, 143, 566, 566, 566, 566, 566, - 118, 513, 566, 566, 0, 566, 125, 140, 132, 0, - 566, 529, 566, 566, 566, 528, 522, 566, 130, 133, + 0, 0, 61, 62, 63, 64, 667, 668, 668, 668, + 641, 63, 34, 640, 67, 68, 668, 668, 639, 65, + 668, 66, 64, 81, 89, 95, 641, 668, 70, 637, + 74, 668, 628, 668, 668, 635, 53, 71, 88, 47, + 86, 93, 103, 104, 98, 79, 108, 101, 111, 112, + 114, 117, 668, 123, 668, 668, 668, 668, 642, 668, + 668, 641, 668, 144, 668, 152, 0, 608, 607, 602, + 668, 146, 668, 149, 668, 150, 162, 668, 668, 668, + 668, 668, 154, 609, 668, 668, 0, 668, 168, 181, + 187, 160, 193, 211, 0, 668, 628, 668, 668, 668, - 124, 135, 137, 139, 145, 149, 146, 150, 151, 521, - 520, 152, 155, 154, 157, 158, 161, 162, 163, 170, - 167, 168, 566, 566, 566, 566, 186, 204, 211, 507, - 512, 505, 205, 566, 212, 202, 215, 210, 213, 217, - 566, 490, 0, 205, 566, 515, 566, 566, 194, 203, - 206, 200, 216, 198, 218, 221, 223, 224, 225, 226, - 227, 231, 228, 232, 236, 238, 241, 239, 242, 248, - 246, 249, 499, 499, 496, 273, 274, 277, 275, 276, - 284, 503, 510, 104, 509, 508, 262, 268, 264, 507, - 265, 270, 279, 506, 271, 282, 287, 288, 505, 289, + 627, 618, 668, 133, 129, 171, 136, 184, 180, 182, + 158, 147, 186, 188, 617, 616, 134, 70, 192, 183, + 208, 201, 212, 210, 214, 223, 225, 668, 668, 668, + 668, 254, 255, 258, 0, 603, 608, 601, 257, 668, + 264, 262, 263, 265, 266, 270, 668, 586, 0, 262, + 668, 289, 295, 0, 611, 668, 668, 244, 252, 253, + 243, 268, 269, 279, 284, 285, 273, 286, 288, 291, + 297, 298, 300, 301, 287, 303, 304, 305, 306, 311, + 315, 0, 595, 595, 592, 344, 345, 348, 343, 349, + 351, 599, 606, 324, 605, 604, 326, 328, 330, 603, - 272, 292, 504, 294, 297, 298, 482, 480, 491, 566, - 299, 300, 304, 301, 500, 499, 302, 498, 305, 311, - 309, 312, 313, 322, 314, 327, 497, 477, 488, 491, - 328, 331, 310, 333, 335, 493, 336, 334, 492, 491, - 337, 490, 341, 338, 481, 480, 483, 343, 340, 353, - 486, 485, 348, 360, 362, 363, 351, 476, 566, 467, - 364, 366, 482, 369, 481, 368, 375, 376, 566, 455, - 373, 379, 377, 388, 419, 378, 386, 403, 417, 389, - 416, 414, 398, 384, 392, 412, 392, 400, 368, 401, - 399, 341, 403, 347, 193, 404, 566, 408, 159, 566, + 245, 331, 334, 602, 336, 346, 353, 335, 601, 341, + 342, 357, 600, 358, 359, 360, 0, 578, 576, 587, + 668, 364, 362, 365, 370, 596, 595, 366, 594, 369, + 371, 373, 374, 375, 388, 378, 387, 593, 0, 573, + 584, 587, 391, 392, 393, 377, 396, 589, 397, 400, + 588, 587, 401, 586, 402, 409, 668, 577, 576, 579, + 410, 406, 404, 582, 581, 411, 417, 419, 426, 414, + 572, 668, 563, 413, 430, 578, 431, 577, 432, 433, + 435, 668, 564, 437, 441, 439, 442, 575, 446, 447, + 559, 558, 452, 550, 503, 453, 448, 481, 478, 456, - 447, 452, 457, 462, 465, 467, 472, 477, 482, 487, - 492, 68, 497, 502 + 454, 458, 462, 461, 468, 466, 473, 459, 463, 668, + 468, 464, 668, 512, 519, 526, 530, 537, 542, 546, + 553, 289, 560, 567, 574, 581, 585, 224, 592, 599, + 219, 188, 93 } ; -static const flex_int16_t yy_def[315] = +static const flex_int16_t yy_def[334] = { 0, - 300, 1, 301, 301, 302, 302, 300, 300, 300, 300, - 300, 303, 300, 300, 300, 304, 300, 300, 300, 300, - 300, 300, 300, 300, 305, 300, 300, 300, 300, 300, - 300, 306, 300, 300, 300, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 303, 300, 307, 300, 300, 300, 300, 308, - 300, 309, 300, 304, 310, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 311, 300, 300, 305, 305, 312, - 300, 300, 300, 300, 300, 300, 306, 300, 306, 306, + 313, 1, 314, 314, 315, 315, 313, 313, 313, 313, + 313, 316, 317, 313, 313, 318, 313, 313, 313, 313, + 313, 313, 313, 313, 319, 319, 313, 313, 313, 313, + 313, 313, 320, 313, 313, 313, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 316, 313, 321, 322, 322, 313, 313, + 313, 323, 313, 324, 313, 318, 325, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 326, 313, 313, 319, + 319, 319, 319, 319, 327, 313, 313, 313, 313, 313, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 300, 300, 300, 300, 303, 303, 307, 300, - 300, 300, 308, 300, 313, 309, 314, 304, 304, 310, - 300, 300, 311, 300, 300, 312, 300, 300, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 300, 300, 300, 308, 308, 313, 309, 309, - 314, 300, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 313, 320, 313, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 313, 313, 313, + 313, 316, 316, 321, 328, 313, 313, 313, 323, 313, + 329, 324, 330, 318, 318, 325, 313, 313, 326, 313, + 313, 319, 319, 94, 327, 313, 313, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 331, 313, 313, 313, 323, 323, 329, 324, 324, + 330, 313, 320, 320, 320, 320, 320, 320, 320, 320, - 306, 306, 306, 306, 306, 306, 300, 300, 300, 300, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 300, 300, 300, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 300, 300, 300, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 300, 300, 300, - 306, 306, 306, 306, 306, 306, 306, 306, 300, 300, - 306, 306, 306, 306, 306, 306, 306, 300, 306, 306, - 306, 306, 306, 306, 300, 306, 306, 306, 300, 306, - 306, 300, 306, 306, 300, 306, 300, 306, 306, 0, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 332, 313, 313, 313, + 313, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 333, 313, + 313, 313, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 313, 313, 313, 313, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 313, 313, 313, 320, 320, 320, 320, 320, 320, 320, + 320, 313, 313, 320, 320, 320, 320, 320, 320, 320, + 313, 320, 320, 320, 320, 320, 320, 313, 320, 320, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300 + 320, 313, 320, 320, 313, 320, 320, 313, 320, 313, + 320, 320, 0, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313 } ; -static const flex_int16_t yy_nxt[624] = +static const flex_int16_t yy_nxt[732] = { 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 8, 34, 35, 32, - 36, 37, 38, 39, 40, 41, 42, 32, 43, 32, - 44, 32, 45, 32, 46, 47, 48, 49, 50, 32, - 51, 32, 32, 52, 53, 54, 55, 57, 57, 60, - 60, 64, 61, 61, 66, 81, 58, 58, 64, 77, - 70, 146, 67, 71, 72, 92, 93, 79, 78, 83, - 95, 96, 68, 65, 80, 84, 75, 73, 90, 87, - 85, 88, 90, 90, 82, 86, 90, 90, 90, 90, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 26, + 26, 27, 28, 29, 30, 31, 32, 33, 33, 33, + 33, 34, 8, 35, 36, 33, 37, 38, 39, 40, + 41, 42, 43, 33, 44, 33, 45, 33, 46, 33, + 47, 48, 49, 50, 51, 33, 52, 33, 33, 53, + 54, 55, 56, 58, 58, 61, 61, 65, 62, 62, + 68, 72, 59, 59, 73, 74, 65, 79, 69, 95, + 81, 83, 83, 83, 83, 95, 85, 109, 70, 80, + 82, 75, 86, 97, 98, 66, 257, 87, 100, 101, - 90, 101, 90, 107, 99, 110, 104, 105, 102, 106, - 112, 100, 111, 90, 103, 90, 108, 109, 90, 90, - 90, 123, 90, 90, 64, 90, 134, 115, 116, 121, - 90, 134, 113, 118, 64, 81, 122, 114, 63, 120, - 128, 119, 144, 211, 117, 74, 65, 300, 135, 137, - 90, 139, 75, 141, 124, 87, 90, 88, 90, 90, - 145, 90, 129, 90, 151, 90, 90, 150, 149, 140, - 152, 90, 90, 153, 155, 90, 90, 90, 90, 154, - 90, 90, 157, 90, 90, 90, 158, 90, 90, 90, - 64, 156, 160, 90, 90, 159, 90, 163, 165, 166, + 77, 104, 95, 95, 89, 88, 90, 91, 91, 90, + 89, 95, 90, 90, 90, 90, 84, 93, 95, 94, + 95, 95, 105, 171, 106, 95, 93, 95, 118, 112, + 95, 107, 110, 95, 111, 95, 95, 108, 117, 114, + 95, 120, 113, 95, 95, 115, 95, 128, 65, 95, + 140, 121, 116, 126, 64, 123, 133, 140, 65, 119, + 127, 95, 125, 124, 76, 95, 95, 122, 95, 159, + 145, 83, 83, 83, 83, 313, 66, 158, 141, 95, + 162, 143, 77, 129, 134, 150, 150, 150, 150, 170, + 95, 239, 95, 167, 146, 147, 89, 166, 90, 90, - 167, 161, 162, 170, 164, 171, 172, 168, 64, 134, - 134, 169, 65, 63, 133, 128, 177, 136, 64, 74, - 90, 64, 144, 180, 90, 139, 90, 297, 137, 90, - 65, 135, 90, 184, 186, 183, 75, 129, 178, 75, - 145, 181, 90, 140, 90, 188, 185, 90, 189, 90, - 90, 90, 90, 90, 90, 190, 187, 90, 90, 193, - 194, 195, 90, 197, 90, 90, 191, 90, 90, 196, - 192, 199, 90, 202, 90, 90, 203, 134, 134, 133, - 198, 177, 204, 134, 134, 200, 136, 201, 90, 206, - 90, 90, 180, 205, 90, 212, 90, 90, 90, 135, + 90, 90, 89, 95, 152, 152, 152, 90, 313, 151, + 153, 153, 95, 95, 95, 95, 95, 160, 95, 95, + 95, 164, 217, 161, 95, 95, 313, 182, 154, 154, + 154, 154, 163, 95, 165, 169, 173, 168, 154, 154, + 95, 172, 95, 95, 95, 175, 95, 154, 154, 154, + 154, 154, 154, 179, 174, 95, 176, 95, 65, 65, + 64, 140, 133, 177, 178, 142, 139, 180, 187, 181, + 140, 190, 76, 65, 65, 95, 95, 95, 145, 150, + 150, 150, 150, 196, 95, 95, 66, 66, 194, 141, + 134, 193, 135, 226, 143, 191, 188, 77, 77, 195, - 135, 137, 137, 178, 216, 90, 213, 215, 90, 217, - 181, 218, 214, 90, 90, 90, 220, 219, 90, 223, - 90, 222, 224, 90, 90, 90, 90, 90, 90, 225, - 90, 90, 227, 221, 235, 90, 90, 90, 90, 90, - 90, 234, 237, 231, 226, 238, 233, 232, 90, 240, - 241, 239, 243, 90, 90, 242, 236, 90, 250, 90, - 90, 90, 90, 90, 90, 244, 90, 90, 249, 90, - 253, 248, 252, 90, 90, 295, 254, 90, 257, 90, - 251, 261, 255, 256, 264, 262, 90, 263, 90, 90, - 90, 268, 90, 265, 90, 90, 266, 267, 274, 90, + 95, 95, 146, 151, 89, 95, 152, 152, 152, 90, + 313, 95, 153, 153, 197, 199, 95, 95, 95, 95, + 95, 95, 198, 95, 200, 202, 203, 95, 204, 95, + 95, 205, 95, 95, 201, 95, 95, 95, 95, 207, + 210, 206, 209, 95, 212, 213, 214, 95, 140, 140, + 139, 140, 187, 142, 208, 211, 95, 140, 95, 190, + 95, 216, 95, 95, 215, 223, 95, 95, 95, 222, + 228, 227, 224, 95, 95, 143, 141, 141, 95, 233, + 188, 143, 229, 191, 225, 95, 232, 230, 231, 95, + 95, 95, 95, 235, 95, 234, 95, 95, 95, 236, - 272, 90, 90, 90, 90, 90, 271, 273, 275, 280, - 90, 276, 90, 292, 90, 90, 284, 277, 90, 281, - 279, 282, 286, 283, 90, 90, 90, 90, 287, 90, - 90, 288, 291, 290, 90, 293, 294, 296, 90, 289, - 90, 299, 90, 90, 285, 90, 298, 56, 56, 56, - 56, 56, 59, 59, 59, 59, 59, 63, 63, 63, - 63, 63, 74, 74, 74, 74, 74, 89, 89, 89, - 97, 97, 127, 127, 127, 127, 127, 133, 133, 133, - 133, 133, 136, 136, 136, 136, 136, 138, 138, 138, - 138, 138, 143, 278, 143, 143, 143, 176, 176, 176, + 238, 95, 95, 95, 247, 95, 95, 95, 249, 95, + 95, 250, 237, 245, 243, 244, 246, 252, 253, 95, + 95, 251, 255, 95, 95, 95, 248, 254, 95, 95, + 264, 256, 95, 95, 95, 262, 95, 266, 95, 265, + 261, 95, 95, 95, 276, 95, 95, 263, 267, 95, + 269, 95, 268, 277, 274, 270, 278, 275, 95, 279, + 281, 284, 95, 95, 95, 95, 280, 95, 287, 95, + 285, 95, 288, 95, 95, 286, 289, 293, 95, 95, + 95, 295, 290, 297, 95, 95, 95, 294, 95, 300, + 292, 299, 304, 95, 95, 95, 95, 296, 95, 310, - 176, 176, 179, 179, 179, 179, 179, 90, 90, 270, - 269, 90, 90, 260, 259, 258, 90, 90, 90, 90, - 247, 246, 245, 90, 90, 90, 90, 230, 229, 228, - 90, 90, 90, 90, 90, 90, 90, 210, 209, 208, - 207, 90, 182, 175, 174, 173, 90, 90, 90, 148, - 147, 142, 132, 131, 130, 126, 125, 98, 90, 94, - 91, 76, 69, 62, 300, 7, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + 95, 301, 306, 303, 307, 95, 309, 312, 308, 305, + 95, 311, 57, 57, 57, 57, 57, 57, 57, 60, + 60, 60, 60, 60, 60, 60, 64, 64, 64, 64, + 64, 64, 64, 67, 302, 95, 67, 76, 76, 76, + 76, 76, 76, 76, 92, 92, 92, 92, 92, 102, + 102, 102, 102, 132, 132, 132, 132, 132, 132, 132, + 139, 139, 139, 139, 139, 139, 139, 142, 142, 142, + 142, 142, 142, 142, 144, 144, 144, 144, 144, 144, + 144, 149, 95, 149, 149, 149, 149, 149, 155, 155, + 95, 155, 186, 186, 186, 186, 186, 186, 186, 189, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300 + 189, 189, 189, 189, 189, 189, 298, 95, 291, 95, + 95, 283, 282, 95, 95, 273, 272, 271, 95, 95, + 95, 95, 260, 259, 258, 95, 95, 95, 95, 242, + 241, 240, 95, 95, 95, 95, 95, 95, 95, 221, + 220, 219, 218, 95, 192, 185, 184, 183, 95, 95, + 95, 157, 156, 148, 138, 137, 136, 131, 130, 103, + 95, 99, 96, 78, 71, 63, 313, 7, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313 } ; -static const flex_int16_t yy_chk[624] = +static const flex_int16_t yy_chk[732] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 3, 4, 5, - 6, 12, 5, 6, 13, 23, 3, 4, 16, 20, - 15, 312, 13, 15, 15, 28, 28, 22, 20, 24, - 30, 30, 13, 12, 22, 24, 16, 15, 36, 25, - 24, 25, 37, 40, 23, 24, 43, 38, 39, 41, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 4, 5, 6, 12, 5, 6, + 13, 15, 3, 4, 15, 15, 16, 20, 13, 40, + 22, 23, 23, 23, 23, 37, 24, 40, 13, 20, + 22, 15, 24, 29, 29, 12, 333, 24, 31, 31, - 25, 38, 44, 41, 36, 43, 39, 40, 38, 40, - 44, 37, 43, 42, 38, 45, 41, 42, 46, 47, - 48, 53, 49, 50, 63, 51, 70, 47, 48, 51, - 184, 72, 45, 49, 74, 81, 51, 46, 65, 50, - 65, 49, 87, 184, 48, 75, 63, 89, 70, 72, - 101, 75, 74, 81, 53, 88, 99, 88, 89, 100, - 87, 102, 65, 103, 101, 104, 88, 100, 99, 75, - 101, 105, 107, 102, 104, 106, 108, 109, 112, 103, - 114, 113, 106, 115, 116, 299, 107, 117, 118, 119, - 127, 105, 109, 121, 122, 108, 120, 114, 116, 117, + 16, 37, 118, 38, 25, 24, 25, 25, 25, 25, + 26, 46, 26, 26, 26, 26, 23, 25, 41, 25, + 39, 25, 38, 118, 39, 42, 25, 26, 46, 42, + 45, 39, 41, 48, 41, 43, 44, 39, 45, 43, + 47, 48, 42, 49, 50, 44, 51, 54, 64, 52, + 72, 49, 44, 52, 66, 50, 66, 74, 76, 47, + 52, 105, 51, 50, 77, 104, 117, 49, 107, 105, + 77, 83, 83, 83, 83, 92, 64, 104, 72, 112, + 107, 74, 76, 54, 66, 89, 89, 89, 89, 117, + 111, 332, 92, 112, 77, 83, 90, 111, 90, 90, - 118, 112, 113, 120, 115, 121, 122, 118, 128, 133, - 136, 119, 127, 129, 135, 129, 135, 137, 138, 140, - 149, 139, 144, 137, 154, 140, 152, 295, 136, 150, - 128, 133, 151, 150, 152, 149, 138, 129, 135, 139, - 144, 137, 153, 140, 155, 154, 151, 156, 155, 157, - 158, 159, 160, 161, 163, 156, 153, 162, 164, 159, - 160, 161, 165, 163, 166, 168, 157, 167, 169, 162, - 158, 165, 171, 168, 170, 172, 169, 176, 177, 178, - 164, 178, 170, 179, 180, 166, 181, 167, 187, 172, - 189, 191, 181, 171, 188, 187, 192, 195, 201, 176, + 90, 90, 91, 106, 91, 91, 91, 91, 93, 89, + 93, 93, 109, 90, 110, 120, 108, 106, 113, 91, + 114, 109, 331, 106, 119, 93, 94, 328, 94, 94, + 94, 94, 108, 122, 110, 114, 120, 113, 94, 94, + 121, 119, 124, 94, 123, 122, 125, 94, 94, 94, + 94, 94, 94, 125, 121, 126, 123, 127, 132, 133, + 134, 139, 134, 123, 124, 143, 141, 126, 141, 127, + 142, 143, 146, 144, 145, 161, 158, 201, 146, 150, + 150, 150, 150, 161, 159, 160, 132, 133, 159, 139, + 134, 158, 322, 201, 142, 143, 141, 144, 145, 160, - 177, 179, 180, 178, 192, 193, 188, 191, 196, 193, - 181, 195, 189, 197, 198, 200, 197, 196, 202, 201, - 204, 200, 202, 205, 206, 211, 212, 214, 217, 204, - 213, 219, 206, 198, 217, 221, 233, 220, 222, 223, - 225, 214, 220, 211, 205, 220, 213, 212, 224, 222, - 223, 221, 225, 226, 231, 224, 219, 232, 233, 234, - 238, 235, 237, 241, 244, 226, 249, 243, 232, 248, - 237, 231, 235, 294, 253, 292, 238, 257, 244, 250, - 234, 248, 241, 243, 253, 249, 254, 250, 255, 256, - 261, 257, 262, 254, 266, 264, 255, 256, 266, 271, + 162, 163, 146, 150, 152, 167, 152, 152, 152, 152, + 153, 164, 153, 153, 162, 164, 165, 166, 168, 175, + 169, 152, 163, 170, 165, 167, 168, 153, 169, 171, + 172, 170, 173, 174, 166, 176, 177, 178, 179, 172, + 175, 171, 174, 180, 177, 178, 179, 181, 186, 187, + 188, 189, 188, 191, 173, 176, 194, 190, 197, 191, + 198, 181, 199, 202, 180, 197, 203, 208, 205, 194, + 203, 202, 198, 210, 211, 189, 186, 187, 206, 210, + 188, 190, 205, 191, 199, 207, 208, 206, 207, 212, + 214, 215, 216, 212, 223, 211, 222, 224, 228, 214, - 262, 267, 268, 273, 276, 272, 261, 264, 267, 272, - 284, 268, 277, 289, 274, 280, 277, 268, 287, 273, - 271, 274, 280, 276, 283, 291, 288, 290, 283, 293, - 296, 284, 288, 287, 298, 290, 291, 293, 286, 285, - 282, 298, 281, 279, 278, 275, 296, 301, 301, 301, - 301, 301, 302, 302, 302, 302, 302, 303, 303, 303, - 303, 303, 304, 304, 304, 304, 304, 305, 305, 305, - 306, 306, 307, 307, 307, 307, 307, 308, 308, 308, - 308, 308, 309, 309, 309, 309, 309, 310, 310, 310, - 310, 310, 311, 270, 311, 311, 311, 313, 313, 313, + 216, 230, 225, 231, 228, 232, 233, 234, 231, 246, + 236, 231, 215, 224, 222, 223, 225, 233, 234, 237, + 235, 232, 236, 243, 244, 245, 230, 235, 247, 249, + 246, 237, 250, 253, 255, 244, 263, 249, 262, 247, + 243, 256, 261, 266, 263, 274, 270, 245, 250, 267, + 255, 268, 253, 266, 261, 256, 267, 262, 269, 268, + 270, 274, 275, 277, 279, 280, 269, 281, 279, 284, + 275, 286, 280, 285, 287, 277, 281, 285, 289, 290, + 297, 287, 281, 290, 293, 296, 301, 286, 300, 296, + 284, 293, 301, 304, 303, 309, 312, 289, 306, 308, - 313, 313, 314, 314, 314, 314, 314, 265, 263, 260, - 258, 252, 251, 247, 246, 245, 242, 240, 239, 236, - 230, 229, 228, 227, 218, 216, 215, 209, 208, 207, - 203, 199, 194, 190, 186, 185, 183, 182, 175, 174, - 173, 146, 142, 132, 131, 130, 111, 110, 97, 96, - 92, 82, 68, 67, 66, 61, 58, 35, 32, 29, - 26, 19, 14, 11, 7, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + 311, 297, 303, 300, 304, 307, 306, 311, 305, 302, + 299, 309, 314, 314, 314, 314, 314, 314, 314, 315, + 315, 315, 315, 315, 315, 315, 316, 316, 316, 316, + 316, 316, 316, 317, 298, 295, 317, 318, 318, 318, + 318, 318, 318, 318, 319, 319, 319, 319, 319, 320, + 320, 320, 320, 321, 321, 321, 321, 321, 321, 321, + 323, 323, 323, 323, 323, 323, 323, 324, 324, 324, + 324, 324, 324, 324, 325, 325, 325, 325, 325, 325, + 325, 326, 294, 326, 326, 326, 326, 326, 327, 327, + 292, 327, 329, 329, 329, 329, 329, 329, 329, 330, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300 + 330, 330, 330, 330, 330, 330, 291, 288, 283, 278, + 276, 273, 271, 265, 264, 260, 259, 258, 254, 252, + 251, 248, 242, 241, 240, 238, 229, 227, 226, 220, + 219, 218, 213, 209, 204, 200, 196, 195, 193, 192, + 185, 184, 183, 155, 148, 138, 137, 136, 116, 115, + 102, 101, 97, 84, 70, 69, 68, 62, 59, 36, + 33, 30, 27, 19, 14, 11, 7, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313 } ; /* The intent behind this definition is that it'll catch @@ -883,9 +914,9 @@ static const flex_int16_t yy_chk[624] = #line 23 "lexer.lpp" #define YY_USER_ACTION loc.columns(yyleng); -#line 886 "lexer.cpp" +#line 917 "lexer.cpp" -#line 888 "lexer.cpp" +#line 919 "lexer.cpp" #define INITIAL 0 #define COMMENT_BLOCK_STATE 1 @@ -1145,15 +1176,15 @@ YY_DECL } { -#line 36 "lexer.lpp" +#line 40 "lexer.lpp" -#line 40 "lexer.lpp" +#line 44 "lexer.lpp" loc.step(); -#line 1156 "lexer.cpp" +#line 1187 "lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1180,13 +1211,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 301 ) + if ( yy_current_state >= 314 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 300 ); + while ( yy_current_state != 313 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -1208,517 +1239,537 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 43 "lexer.lpp" +#line 47 "lexer.lpp" { loc.step(); } YY_BREAK case 2: /* rule 2 can match eol */ YY_RULE_SETUP -#line 45 "lexer.lpp" +#line 49 "lexer.lpp" { loc.lines(yyleng); loc.step(); } YY_BREAK case 3: YY_RULE_SETUP -#line 47 "lexer.lpp" +#line 51 "lexer.lpp" YY_BREAK case 4: YY_RULE_SETUP -#line 49 "lexer.lpp" +#line 53 "lexer.lpp" { BEGIN(COMMENT_BLOCK_STATE); } YY_BREAK case 5: YY_RULE_SETUP -#line 50 "lexer.lpp" +#line 54 "lexer.lpp" YY_BREAK case 6: /* rule 6 can match eol */ YY_RULE_SETUP -#line 51 "lexer.lpp" +#line 55 "lexer.lpp" { loc.lines(yyleng); loc.step(); } YY_BREAK case 7: YY_RULE_SETUP -#line 52 "lexer.lpp" +#line 56 "lexer.lpp" { BEGIN(INITIAL); } YY_BREAK case 8: YY_RULE_SETUP -#line 54 "lexer.lpp" +#line 58 "lexer.lpp" { BEGIN(DEVELOPER_BLOCK_STATE); } YY_BREAK case 9: YY_RULE_SETUP -#line 55 "lexer.lpp" +#line 59 "lexer.lpp" YY_BREAK case 10: /* rule 10 can match eol */ YY_RULE_SETUP -#line 56 "lexer.lpp" +#line 60 "lexer.lpp" { loc.lines(yyleng); loc.step(); } YY_BREAK case 11: YY_RULE_SETUP -#line 57 "lexer.lpp" +#line 61 "lexer.lpp" { BEGIN(INITIAL); } YY_BREAK case 12: YY_RULE_SETUP -#line 59 "lexer.lpp" +#line 63 "lexer.lpp" { return iw7::parser::make_BREAKPOINT(loc); } YY_BREAK case 13: YY_RULE_SETUP -#line 60 "lexer.lpp" +#line 64 "lexer.lpp" { return iw7::parser::make_PROFBEGIN(loc); } YY_BREAK case 14: YY_RULE_SETUP -#line 61 "lexer.lpp" +#line 65 "lexer.lpp" { return iw7::parser::make_PROFEND(loc); } YY_BREAK case 15: YY_RULE_SETUP -#line 62 "lexer.lpp" +#line 66 "lexer.lpp" { return iw7::parser::make_INCLUDE(loc); } YY_BREAK case 16: YY_RULE_SETUP -#line 63 "lexer.lpp" +#line 67 "lexer.lpp" { return iw7::parser::make_USINGTREE(loc); } YY_BREAK case 17: YY_RULE_SETUP -#line 64 "lexer.lpp" +#line 68 "lexer.lpp" { return iw7::parser::make_ANIMTREE(loc); } YY_BREAK case 18: YY_RULE_SETUP -#line 65 "lexer.lpp" +#line 69 "lexer.lpp" { return iw7::parser::make_ENDON(loc); } YY_BREAK case 19: YY_RULE_SETUP -#line 66 "lexer.lpp" +#line 70 "lexer.lpp" { return iw7::parser::make_NOTIFY(loc); } YY_BREAK case 20: YY_RULE_SETUP -#line 67 "lexer.lpp" +#line 71 "lexer.lpp" { return iw7::parser::make_WAIT(loc); } YY_BREAK case 21: YY_RULE_SETUP -#line 68 "lexer.lpp" +#line 72 "lexer.lpp" { return iw7::parser::make_WAITTILL(loc); } YY_BREAK case 22: YY_RULE_SETUP -#line 69 "lexer.lpp" +#line 73 "lexer.lpp" { return iw7::parser::make_WAITTILLMATCH(loc); } YY_BREAK case 23: YY_RULE_SETUP -#line 70 "lexer.lpp" +#line 74 "lexer.lpp" { return iw7::parser::make_WAITTILLFRAMEEND(loc); } YY_BREAK case 24: YY_RULE_SETUP -#line 71 "lexer.lpp" +#line 75 "lexer.lpp" { return iw7::parser::make_IF(loc); } YY_BREAK case 25: YY_RULE_SETUP -#line 72 "lexer.lpp" +#line 76 "lexer.lpp" { return iw7::parser::make_ELSE(loc); } YY_BREAK case 26: YY_RULE_SETUP -#line 73 "lexer.lpp" +#line 77 "lexer.lpp" { return iw7::parser::make_WHILE(loc); } YY_BREAK case 27: YY_RULE_SETUP -#line 74 "lexer.lpp" +#line 78 "lexer.lpp" { return iw7::parser::make_FOR(loc); } YY_BREAK case 28: YY_RULE_SETUP -#line 75 "lexer.lpp" +#line 79 "lexer.lpp" { return iw7::parser::make_FOREACH(loc); } YY_BREAK case 29: YY_RULE_SETUP -#line 76 "lexer.lpp" +#line 80 "lexer.lpp" { return iw7::parser::make_IN(loc); } YY_BREAK case 30: YY_RULE_SETUP -#line 77 "lexer.lpp" +#line 81 "lexer.lpp" { return iw7::parser::make_SWITCH(loc); } YY_BREAK case 31: YY_RULE_SETUP -#line 78 "lexer.lpp" +#line 82 "lexer.lpp" { return iw7::parser::make_CASE(loc); } YY_BREAK case 32: YY_RULE_SETUP -#line 79 "lexer.lpp" +#line 83 "lexer.lpp" { return iw7::parser::make_DEFAULT(loc); } YY_BREAK case 33: YY_RULE_SETUP -#line 80 "lexer.lpp" +#line 84 "lexer.lpp" { return iw7::parser::make_BREAK(loc); } YY_BREAK case 34: YY_RULE_SETUP -#line 81 "lexer.lpp" +#line 85 "lexer.lpp" { return iw7::parser::make_CONTINUE(loc); } YY_BREAK case 35: YY_RULE_SETUP -#line 82 "lexer.lpp" +#line 86 "lexer.lpp" { return iw7::parser::make_RETURN(loc); } YY_BREAK case 36: YY_RULE_SETUP -#line 83 "lexer.lpp" +#line 87 "lexer.lpp" { return iw7::parser::make_THREAD(loc); } YY_BREAK case 37: YY_RULE_SETUP -#line 84 "lexer.lpp" +#line 88 "lexer.lpp" { return iw7::parser::make_CHILDTHREAD(loc); } YY_BREAK case 38: YY_RULE_SETUP -#line 85 "lexer.lpp" +#line 89 "lexer.lpp" { return iw7::parser::make_THISTHREAD(loc); } YY_BREAK case 39: YY_RULE_SETUP -#line 86 "lexer.lpp" +#line 90 "lexer.lpp" { return iw7::parser::make_CALL(loc); } YY_BREAK case 40: YY_RULE_SETUP -#line 87 "lexer.lpp" +#line 91 "lexer.lpp" { return iw7::parser::make_TRUE(loc); } YY_BREAK case 41: YY_RULE_SETUP -#line 88 "lexer.lpp" +#line 92 "lexer.lpp" { return iw7::parser::make_FALSE(loc); } YY_BREAK case 42: YY_RULE_SETUP -#line 89 "lexer.lpp" +#line 93 "lexer.lpp" { return iw7::parser::make_UNDEFINED(loc); } YY_BREAK case 43: YY_RULE_SETUP -#line 90 "lexer.lpp" +#line 94 "lexer.lpp" { return iw7::parser::make_SIZE(loc); } YY_BREAK case 44: YY_RULE_SETUP -#line 91 "lexer.lpp" +#line 95 "lexer.lpp" { return iw7::parser::make_GAME(loc); } YY_BREAK case 45: YY_RULE_SETUP -#line 92 "lexer.lpp" +#line 96 "lexer.lpp" { return iw7::parser::make_SELF(loc); } YY_BREAK case 46: YY_RULE_SETUP -#line 93 "lexer.lpp" +#line 97 "lexer.lpp" { return iw7::parser::make_ANIM(loc); } YY_BREAK case 47: YY_RULE_SETUP -#line 94 "lexer.lpp" +#line 98 "lexer.lpp" { return iw7::parser::make_LEVEL(loc); } YY_BREAK case 48: YY_RULE_SETUP -#line 95 "lexer.lpp" +#line 99 "lexer.lpp" { return iw7::parser::make_LPAREN(loc); } YY_BREAK case 49: YY_RULE_SETUP -#line 96 "lexer.lpp" +#line 100 "lexer.lpp" { return iw7::parser::make_RPAREN(loc); } YY_BREAK case 50: YY_RULE_SETUP -#line 97 "lexer.lpp" +#line 101 "lexer.lpp" { return iw7::parser::make_LBRACE(loc); } YY_BREAK case 51: YY_RULE_SETUP -#line 98 "lexer.lpp" +#line 102 "lexer.lpp" { return iw7::parser::make_RBRACE(loc); } YY_BREAK case 52: YY_RULE_SETUP -#line 99 "lexer.lpp" +#line 103 "lexer.lpp" { return iw7::parser::make_LBRACKET(loc); } YY_BREAK case 53: YY_RULE_SETUP -#line 100 "lexer.lpp" +#line 104 "lexer.lpp" { return iw7::parser::make_RBRACKET(loc); } YY_BREAK case 54: YY_RULE_SETUP -#line 101 "lexer.lpp" +#line 105 "lexer.lpp" { return iw7::parser::make_COMMA(loc); } YY_BREAK case 55: YY_RULE_SETUP -#line 102 "lexer.lpp" +#line 106 "lexer.lpp" { return iw7::parser::make_DOT(loc); } YY_BREAK case 56: YY_RULE_SETUP -#line 103 "lexer.lpp" +#line 107 "lexer.lpp" { return iw7::parser::make_DOUBLECOLON(loc); } YY_BREAK case 57: YY_RULE_SETUP -#line 104 "lexer.lpp" +#line 108 "lexer.lpp" { return iw7::parser::make_COLON(loc); } YY_BREAK case 58: YY_RULE_SETUP -#line 105 "lexer.lpp" +#line 109 "lexer.lpp" { return iw7::parser::make_SEMICOLON(loc); } YY_BREAK case 59: YY_RULE_SETUP -#line 106 "lexer.lpp" +#line 110 "lexer.lpp" { return iw7::parser::make_QMARK(loc); } YY_BREAK case 60: YY_RULE_SETUP -#line 107 "lexer.lpp" +#line 111 "lexer.lpp" { return iw7::parser::make_INCREMENT(loc); } YY_BREAK case 61: YY_RULE_SETUP -#line 108 "lexer.lpp" +#line 112 "lexer.lpp" { return iw7::parser::make_DECREMENT(loc); } YY_BREAK case 62: YY_RULE_SETUP -#line 109 "lexer.lpp" +#line 113 "lexer.lpp" { return iw7::parser::make_ASSIGN_LSHIFT(loc); } YY_BREAK case 63: YY_RULE_SETUP -#line 110 "lexer.lpp" +#line 114 "lexer.lpp" { return iw7::parser::make_ASSIGN_RSHIFT(loc); } YY_BREAK case 64: YY_RULE_SETUP -#line 111 "lexer.lpp" +#line 115 "lexer.lpp" { return iw7::parser::make_LSHIFT(loc); } YY_BREAK case 65: YY_RULE_SETUP -#line 112 "lexer.lpp" +#line 116 "lexer.lpp" { return iw7::parser::make_RSHIFT(loc); } YY_BREAK case 66: YY_RULE_SETUP -#line 113 "lexer.lpp" +#line 117 "lexer.lpp" { return iw7::parser::make_OR(loc); } YY_BREAK case 67: YY_RULE_SETUP -#line 114 "lexer.lpp" +#line 118 "lexer.lpp" { return iw7::parser::make_AND(loc); } YY_BREAK case 68: YY_RULE_SETUP -#line 115 "lexer.lpp" +#line 119 "lexer.lpp" { return iw7::parser::make_EQUALITY(loc); } YY_BREAK case 69: YY_RULE_SETUP -#line 116 "lexer.lpp" +#line 120 "lexer.lpp" { return iw7::parser::make_INEQUALITY(loc); } YY_BREAK case 70: YY_RULE_SETUP -#line 117 "lexer.lpp" +#line 121 "lexer.lpp" { return iw7::parser::make_LESS_EQUAL(loc); } YY_BREAK case 71: YY_RULE_SETUP -#line 118 "lexer.lpp" +#line 122 "lexer.lpp" { return iw7::parser::make_GREATER_EQUAL(loc); } YY_BREAK case 72: YY_RULE_SETUP -#line 119 "lexer.lpp" +#line 123 "lexer.lpp" { return iw7::parser::make_LESS(loc); } YY_BREAK case 73: YY_RULE_SETUP -#line 120 "lexer.lpp" +#line 124 "lexer.lpp" { return iw7::parser::make_GREATER(loc); } YY_BREAK case 74: YY_RULE_SETUP -#line 121 "lexer.lpp" +#line 125 "lexer.lpp" { return iw7::parser::make_ASSIGN_ADD(loc); } YY_BREAK case 75: YY_RULE_SETUP -#line 122 "lexer.lpp" +#line 126 "lexer.lpp" { return iw7::parser::make_ASSIGN_SUB(loc); } YY_BREAK case 76: YY_RULE_SETUP -#line 123 "lexer.lpp" +#line 127 "lexer.lpp" { return iw7::parser::make_ASSIGN_MULT(loc); } YY_BREAK case 77: YY_RULE_SETUP -#line 124 "lexer.lpp" +#line 128 "lexer.lpp" { return iw7::parser::make_ASSIGN_DIV(loc); } YY_BREAK case 78: YY_RULE_SETUP -#line 125 "lexer.lpp" +#line 129 "lexer.lpp" { return iw7::parser::make_ASSIGN_MOD(loc); } YY_BREAK case 79: YY_RULE_SETUP -#line 126 "lexer.lpp" +#line 130 "lexer.lpp" { return iw7::parser::make_ASSIGN_BITWISE_OR(loc); } YY_BREAK case 80: YY_RULE_SETUP -#line 127 "lexer.lpp" +#line 131 "lexer.lpp" { return iw7::parser::make_ASSIGN_BITWISE_AND(loc); } YY_BREAK case 81: YY_RULE_SETUP -#line 128 "lexer.lpp" +#line 132 "lexer.lpp" { return iw7::parser::make_ASSIGN_BITWISE_EXOR(loc); } YY_BREAK case 82: YY_RULE_SETUP -#line 129 "lexer.lpp" +#line 133 "lexer.lpp" { return iw7::parser::make_ASSIGN(loc); } YY_BREAK case 83: YY_RULE_SETUP -#line 130 "lexer.lpp" +#line 134 "lexer.lpp" { return iw7::parser::make_ADD(loc); } YY_BREAK case 84: YY_RULE_SETUP -#line 131 "lexer.lpp" +#line 135 "lexer.lpp" { return iw7::parser::make_SUB(loc); } YY_BREAK case 85: YY_RULE_SETUP -#line 132 "lexer.lpp" +#line 136 "lexer.lpp" { return iw7::parser::make_MULT(loc); } YY_BREAK case 86: YY_RULE_SETUP -#line 133 "lexer.lpp" +#line 137 "lexer.lpp" { return iw7::parser::make_DIV(loc); } YY_BREAK case 87: YY_RULE_SETUP -#line 134 "lexer.lpp" +#line 138 "lexer.lpp" { return iw7::parser::make_MOD(loc); } YY_BREAK case 88: YY_RULE_SETUP -#line 135 "lexer.lpp" +#line 139 "lexer.lpp" { return iw7::parser::make_NOT(loc); } YY_BREAK case 89: YY_RULE_SETUP -#line 136 "lexer.lpp" +#line 140 "lexer.lpp" { return iw7::parser::make_COMPLEMENT(loc); } YY_BREAK case 90: YY_RULE_SETUP -#line 137 "lexer.lpp" +#line 141 "lexer.lpp" { return iw7::parser::make_BITWISE_OR(loc); } YY_BREAK case 91: YY_RULE_SETUP -#line 138 "lexer.lpp" +#line 142 "lexer.lpp" { return iw7::parser::make_BITWISE_AND(loc); } YY_BREAK case 92: YY_RULE_SETUP -#line 139 "lexer.lpp" +#line 143 "lexer.lpp" { return iw7::parser::make_BITWISE_EXOR(loc); } YY_BREAK case 93: YY_RULE_SETUP -#line 140 "lexer.lpp" +#line 144 "lexer.lpp" { return iw7::parser::make_FILE(utils::string::fordslash(yytext), loc); } YY_BREAK case 94: YY_RULE_SETUP -#line 141 "lexer.lpp" +#line 145 "lexer.lpp" { return iw7::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); } YY_BREAK case 95: /* rule 95 can match eol */ YY_RULE_SETUP -#line 142 "lexer.lpp" +#line 146 "lexer.lpp" { return iw7::parser::make_ISTRING(std::string(yytext).substr(1), loc); } YY_BREAK case 96: /* rule 96 can match eol */ YY_RULE_SETUP -#line 143 "lexer.lpp" +#line 147 "lexer.lpp" { return iw7::parser::make_STRING(std::string(yytext), loc); } YY_BREAK case 97: YY_RULE_SETUP -#line 144 "lexer.lpp" -{ return iw7::parser::make_FLOAT(std::string(yytext), loc); } +#line 148 "lexer.lpp" +{ return iw7::parser::make_COLOR(std::string(yytext).substr(1), loc); } YY_BREAK case 98: YY_RULE_SETUP -#line 145 "lexer.lpp" -{ return iw7::parser::make_INTEGER(std::string(yytext), loc); } +#line 149 "lexer.lpp" +{ return iw7::parser::make_FLOAT(std::string(yytext), loc); } + YY_BREAK +case 99: +YY_RULE_SETUP +#line 150 "lexer.lpp" +{ return iw7::parser::make_INT_OCT(utils::string::oct_to_dec(yytext), loc); } + YY_BREAK +case 100: +YY_RULE_SETUP +#line 151 "lexer.lpp" +{ return iw7::parser::make_INT_BIN(utils::string::bin_to_dec(yytext), loc); } + YY_BREAK +case 101: +YY_RULE_SETUP +#line 152 "lexer.lpp" +{ return iw7::parser::make_INT_HEX(utils::string::hex_to_dec(yytext), loc); } + YY_BREAK +case 102: +YY_RULE_SETUP +#line 153 "lexer.lpp" +{ return iw7::parser::make_INT_DEC(std::string(yytext), loc); } YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT_BLOCK_STATE): case YY_STATE_EOF(DEVELOPER_BLOCK_STATE): -#line 146 "lexer.lpp" +#line 154 "lexer.lpp" { return iw7::parser::make_IW7EOF(loc); } YY_BREAK -case 99: -/* rule 99 can match eol */ +case 103: +/* rule 103 can match eol */ YY_RULE_SETUP -#line 147 "lexer.lpp" +#line 155 "lexer.lpp" { throw iw7::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); } YY_BREAK -case 100: +case 104: YY_RULE_SETUP -#line 149 "lexer.lpp" +#line 157 "lexer.lpp" ECHO; YY_BREAK -#line 1721 "lexer.cpp" +#line 1772 "lexer.cpp" case YY_END_OF_BUFFER: { @@ -2016,7 +2067,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 301 ) + if ( yy_current_state >= 314 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2045,11 +2096,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 301 ) + if ( yy_current_state >= 314 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 300); + yy_is_jam = (yy_current_state == 313); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -2848,6 +2899,6 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 149 "lexer.lpp" +#line 157 "lexer.lpp" diff --git a/src/iw7/xsk/lexer.hpp b/src/iw7/xsk/lexer.hpp index 60a5139c..6163e4ee 100644 --- a/src/iw7/xsk/lexer.hpp +++ b/src/iw7/xsk/lexer.hpp @@ -700,7 +700,7 @@ extern int yylex (yyscan_t yyscanner); #undef yyTABLES_NAME #endif -#line 149 "lexer.lpp" +#line 157 "lexer.lpp" #line 706 "lexer.hpp" diff --git a/src/iw7/xsk/parser.cpp b/src/iw7/xsk/parser.cpp index 24582753..c940c984 100644 --- a/src/iw7/xsk/parser.cpp +++ b/src/iw7/xsk/parser.cpp @@ -228,6 +228,10 @@ namespace xsk { namespace gsc { namespace iw7 { value.YY_MOVE_OR_COPY< animtree_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_color: // color + value.YY_MOVE_OR_COPY< color_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_constant: // constant value.YY_MOVE_OR_COPY< constant_ptr > (YY_MOVE (that.value)); break; @@ -278,7 +282,6 @@ namespace xsk { namespace gsc { namespace iw7 { value.YY_MOVE_OR_COPY< file_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.YY_MOVE_OR_COPY< float_ptr > (YY_MOVE (that.value)); break; @@ -291,7 +294,6 @@ namespace xsk { namespace gsc { namespace iw7 { value.YY_MOVE_OR_COPY< include_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.YY_MOVE_OR_COPY< integer_ptr > (YY_MOVE (that.value)); break; @@ -333,8 +335,12 @@ namespace xsk { namespace gsc { namespace iw7 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value)); break; @@ -491,6 +497,10 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< animtree_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_color: // color + value.move< color_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_constant: // constant value.move< constant_ptr > (YY_MOVE (that.value)); break; @@ -541,7 +551,6 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< file_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.move< float_ptr > (YY_MOVE (that.value)); break; @@ -554,7 +563,6 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< include_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.move< integer_ptr > (YY_MOVE (that.value)); break; @@ -596,8 +604,12 @@ namespace xsk { namespace gsc { namespace iw7 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.move< std::string > (YY_MOVE (that.value)); break; @@ -754,6 +766,10 @@ namespace xsk { namespace gsc { namespace iw7 { value.copy< animtree_ptr > (that.value); break; + case symbol_kind::S_color: // color + value.copy< color_ptr > (that.value); + break; + case symbol_kind::S_constant: // constant value.copy< constant_ptr > (that.value); break; @@ -804,7 +820,6 @@ namespace xsk { namespace gsc { namespace iw7 { value.copy< file_ptr > (that.value); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.copy< float_ptr > (that.value); break; @@ -817,7 +832,6 @@ namespace xsk { namespace gsc { namespace iw7 { value.copy< include_ptr > (that.value); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.copy< integer_ptr > (that.value); break; @@ -859,8 +873,12 @@ namespace xsk { namespace gsc { namespace iw7 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.copy< std::string > (that.value); break; @@ -1016,6 +1034,10 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< animtree_ptr > (that.value); break; + case symbol_kind::S_color: // color + value.move< color_ptr > (that.value); + break; + case symbol_kind::S_constant: // constant value.move< constant_ptr > (that.value); break; @@ -1066,7 +1088,6 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< file_ptr > (that.value); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.move< float_ptr > (that.value); break; @@ -1079,7 +1100,6 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< include_ptr > (that.value); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.move< integer_ptr > (that.value); break; @@ -1121,8 +1141,12 @@ namespace xsk { namespace gsc { namespace iw7 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.move< std::string > (that.value); break; @@ -1533,6 +1557,10 @@ namespace xsk { namespace gsc { namespace iw7 { yylhs.value.emplace< animtree_ptr > (); break; + case symbol_kind::S_color: // color + yylhs.value.emplace< color_ptr > (); + break; + case symbol_kind::S_constant: // constant yylhs.value.emplace< constant_ptr > (); break; @@ -1583,7 +1611,6 @@ namespace xsk { namespace gsc { namespace iw7 { yylhs.value.emplace< file_ptr > (); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float yylhs.value.emplace< float_ptr > (); break; @@ -1596,7 +1623,6 @@ namespace xsk { namespace gsc { namespace iw7 { yylhs.value.emplace< include_ptr > (); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer yylhs.value.emplace< integer_ptr > (); break; @@ -1638,8 +1664,12 @@ namespace xsk { namespace gsc { namespace iw7 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" yylhs.value.emplace< std::string > (); break; @@ -1790,1207 +1820,1219 @@ namespace xsk { namespace gsc { namespace iw7 { switch (yyn) { case 2: // root: program -#line 241 "parser.ypp" +#line 244 "parser.ypp" { ast = std::move(yystack_[0].value.as < program_ptr > ()); } -#line 1796 "parser.cpp" - break; - - case 3: // root: %empty -#line 242 "parser.ypp" - { ast = std::make_unique(yylhs.location); } -#line 1802 "parser.cpp" - break; - - case 4: // program: program include -#line 247 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } -#line 1808 "parser.cpp" - break; - - case 5: // program: program define -#line 249 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } -#line 1814 "parser.cpp" - break; - - case 6: // program: include -#line 251 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } -#line 1820 "parser.cpp" - break; - - case 7: // program: define -#line 253 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1826 "parser.cpp" break; - case 8: // include: "#include" file ";" -#line 258 "parser.ypp" - { yylhs.value.as < include_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < file_ptr > ())); } + case 3: // root: %empty +#line 245 "parser.ypp" + { ast = std::make_unique(yylhs.location); } #line 1832 "parser.cpp" break; - case 9: // define: usingtree -#line 262 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_usingtree = std::move(yystack_[0].value.as < usingtree_ptr > ()); } + case 4: // program: program include +#line 250 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } #line 1838 "parser.cpp" break; - case 10: // define: constant -#line 263 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_constant = std::move(yystack_[0].value.as < constant_ptr > ()); } + case 5: // program: program define +#line 252 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1844 "parser.cpp" break; - case 11: // define: thread -#line 264 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_thread = std::move(yystack_[0].value.as < thread_ptr > ()); } + case 6: // program: include +#line 254 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } #line 1850 "parser.cpp" break; - case 12: // usingtree: "#using_animtree" "(" string ")" ";" -#line 269 "parser.ypp" - { yylhs.value.as < usingtree_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < string_ptr > ())); } + case 7: // program: define +#line 256 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1856 "parser.cpp" break; - case 13: // constant: name "=" expr ";" -#line 274 "parser.ypp" - { yylhs.value.as < constant_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 8: // include: "#include" file ";" +#line 261 "parser.ypp" + { yylhs.value.as < include_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < file_ptr > ())); } #line 1862 "parser.cpp" break; - case 14: // thread: name "(" parameters ")" stmt_block -#line 279 "parser.ypp" - { yylhs.value.as < thread_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < name_ptr > ()), std::move(yystack_[2].value.as < parameters_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } + case 9: // define: usingtree +#line 265 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_usingtree = std::move(yystack_[0].value.as < usingtree_ptr > ()); } #line 1868 "parser.cpp" break; - case 15: // parameters: parameters "," name -#line 284 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::move(yystack_[2].value.as < parameters_ptr > ()); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } + case 10: // define: constant +#line 266 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_constant = std::move(yystack_[0].value.as < constant_ptr > ()); } #line 1874 "parser.cpp" break; - case 16: // parameters: name -#line 286 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } + case 11: // define: thread +#line 267 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_thread = std::move(yystack_[0].value.as < thread_ptr > ()); } #line 1880 "parser.cpp" break; - case 17: // parameters: %empty -#line 288 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); } + case 12: // usingtree: "#using_animtree" "(" string ")" ";" +#line 272 "parser.ypp" + { yylhs.value.as < usingtree_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < string_ptr > ())); } #line 1886 "parser.cpp" break; - case 18: // stmt: stmt_block -#line 292 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_list = std::move(yystack_[0].value.as < stmt_list_ptr > ()); } + case 13: // constant: name "=" expr ";" +#line 277 "parser.ypp" + { yylhs.value.as < constant_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } #line 1892 "parser.cpp" break; - case 19: // stmt: stmt_call -#line 293 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_call = std::move(yystack_[0].value.as < stmt_call_ptr > ()); } + case 14: // thread: name "(" parameters ")" stmt_block +#line 282 "parser.ypp" + { yylhs.value.as < thread_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < name_ptr > ()), std::move(yystack_[2].value.as < parameters_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } #line 1898 "parser.cpp" break; - case 20: // stmt: stmt_assign -#line 294 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_assign = std::move(yystack_[0].value.as < stmt_assign_ptr > ()); } + case 15: // parameters: parameters "," name +#line 287 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::move(yystack_[2].value.as < parameters_ptr > ()); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } #line 1904 "parser.cpp" break; - case 21: // stmt: stmt_endon -#line 295 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_endon = std::move(yystack_[0].value.as < stmt_endon_ptr > ()); } + case 16: // parameters: name +#line 289 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } #line 1910 "parser.cpp" break; - case 22: // stmt: stmt_notify -#line 296 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_notify = std::move(yystack_[0].value.as < stmt_notify_ptr > ()); } + case 17: // parameters: %empty +#line 291 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); } #line 1916 "parser.cpp" break; - case 23: // stmt: stmt_wait -#line 297 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_wait = std::move(yystack_[0].value.as < stmt_wait_ptr > ()); } + case 18: // stmt: stmt_block +#line 295 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_list = std::move(yystack_[0].value.as < stmt_list_ptr > ()); } #line 1922 "parser.cpp" break; - case 24: // stmt: stmt_waittill -#line 298 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill_ptr > ()); } + case 19: // stmt: stmt_call +#line 296 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_call = std::move(yystack_[0].value.as < stmt_call_ptr > ()); } #line 1928 "parser.cpp" break; - case 25: // stmt: stmt_waittillmatch -#line 299 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch_ptr > ()); } + case 20: // stmt: stmt_assign +#line 297 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_assign = std::move(yystack_[0].value.as < stmt_assign_ptr > ()); } #line 1934 "parser.cpp" break; - case 26: // stmt: stmt_waittillframeend -#line 300 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend_ptr > ()); } + case 21: // stmt: stmt_endon +#line 298 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_endon = std::move(yystack_[0].value.as < stmt_endon_ptr > ()); } #line 1940 "parser.cpp" break; - case 27: // stmt: stmt_if -#line 301 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_if = std::move(yystack_[0].value.as < stmt_if_ptr > ()); } + case 22: // stmt: stmt_notify +#line 299 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_notify = std::move(yystack_[0].value.as < stmt_notify_ptr > ()); } #line 1946 "parser.cpp" break; - case 28: // stmt: stmt_ifelse -#line 302 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse_ptr > ()); } + case 23: // stmt: stmt_wait +#line 300 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_wait = std::move(yystack_[0].value.as < stmt_wait_ptr > ()); } #line 1952 "parser.cpp" break; - case 29: // stmt: stmt_while -#line 303 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_while = std::move(yystack_[0].value.as < stmt_while_ptr > ()); } + case 24: // stmt: stmt_waittill +#line 301 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill_ptr > ()); } #line 1958 "parser.cpp" break; - case 30: // stmt: stmt_for -#line 304 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_for = std::move(yystack_[0].value.as < stmt_for_ptr > ()); } + case 25: // stmt: stmt_waittillmatch +#line 302 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch_ptr > ()); } #line 1964 "parser.cpp" break; - case 31: // stmt: stmt_foreach -#line 305 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach_ptr > ()); } + case 26: // stmt: stmt_waittillframeend +#line 303 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend_ptr > ()); } #line 1970 "parser.cpp" break; - case 32: // stmt: stmt_switch -#line 306 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_switch = std::move(yystack_[0].value.as < stmt_switch_ptr > ()); } + case 27: // stmt: stmt_if +#line 304 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_if = std::move(yystack_[0].value.as < stmt_if_ptr > ()); } #line 1976 "parser.cpp" break; - case 33: // stmt: stmt_case -#line 307 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_case = std::move(yystack_[0].value.as < stmt_case_ptr > ()); } + case 28: // stmt: stmt_ifelse +#line 305 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse_ptr > ()); } #line 1982 "parser.cpp" break; - case 34: // stmt: stmt_default -#line 308 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_default = std::move(yystack_[0].value.as < stmt_default_ptr > ()); } + case 29: // stmt: stmt_while +#line 306 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_while = std::move(yystack_[0].value.as < stmt_while_ptr > ()); } #line 1988 "parser.cpp" break; - case 35: // stmt: stmt_break -#line 309 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_break = std::move(yystack_[0].value.as < stmt_break_ptr > ()); } + case 30: // stmt: stmt_for +#line 307 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_for = std::move(yystack_[0].value.as < stmt_for_ptr > ()); } #line 1994 "parser.cpp" break; - case 36: // stmt: stmt_continue -#line 310 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_continue = std::move(yystack_[0].value.as < stmt_continue_ptr > ()); } + case 31: // stmt: stmt_foreach +#line 308 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach_ptr > ()); } #line 2000 "parser.cpp" break; - case 37: // stmt: stmt_return -#line 311 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_return = std::move(yystack_[0].value.as < stmt_return_ptr > ()); } + case 32: // stmt: stmt_switch +#line 309 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_switch = std::move(yystack_[0].value.as < stmt_switch_ptr > ()); } #line 2006 "parser.cpp" break; - case 38: // stmt: stmt_breakpoint -#line 312 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_breakpoint = std::move(yystack_[0].value.as < stmt_breakpoint_ptr > ()); } + case 33: // stmt: stmt_case +#line 310 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_case = std::move(yystack_[0].value.as < stmt_case_ptr > ()); } #line 2012 "parser.cpp" break; - case 39: // stmt: stmt_prof_begin -#line 313 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_prof_begin = std::move(yystack_[0].value.as < stmt_prof_begin_ptr > ()); } + case 34: // stmt: stmt_default +#line 311 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_default = std::move(yystack_[0].value.as < stmt_default_ptr > ()); } #line 2018 "parser.cpp" break; - case 40: // stmt: stmt_prof_end -#line 314 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_prof_end = std::move(yystack_[0].value.as < stmt_prof_end_ptr > ()); } + case 35: // stmt: stmt_break +#line 312 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_break = std::move(yystack_[0].value.as < stmt_break_ptr > ()); } #line 2024 "parser.cpp" break; - case 41: // stmt_block: "{" stmt_list "}" -#line 318 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); } + case 36: // stmt: stmt_continue +#line 313 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_continue = std::move(yystack_[0].value.as < stmt_continue_ptr > ()); } #line 2030 "parser.cpp" break; - case 42: // stmt_block: "{" "}" -#line 319 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); } + case 37: // stmt: stmt_return +#line 314 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_return = std::move(yystack_[0].value.as < stmt_return_ptr > ()); } #line 2036 "parser.cpp" break; - case 43: // stmt_list: stmt_list stmt -#line 324 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 38: // stmt: stmt_breakpoint +#line 315 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_breakpoint = std::move(yystack_[0].value.as < stmt_breakpoint_ptr > ()); } #line 2042 "parser.cpp" break; - case 44: // stmt_list: stmt -#line 326 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 39: // stmt: stmt_prof_begin +#line 316 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_prof_begin = std::move(yystack_[0].value.as < stmt_prof_begin_ptr > ()); } #line 2048 "parser.cpp" break; - case 45: // stmt_call: expr_call ";" -#line 331 "parser.ypp" - { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } + case 40: // stmt: stmt_prof_end +#line 317 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_prof_end = std::move(yystack_[0].value.as < stmt_prof_end_ptr > ()); } #line 2054 "parser.cpp" break; - case 46: // stmt_call: expr_call_thread ";" -#line 333 "parser.ypp" - { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } + case 41: // stmt_block: "{" stmt_list "}" +#line 321 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); } #line 2060 "parser.cpp" break; - case 47: // stmt_assign: expr_assign ";" -#line 338 "parser.ypp" - { yylhs.value.as < stmt_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_assign_ptr > ())); } + case 42: // stmt_block: "{" "}" +#line 322 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); } #line 2066 "parser.cpp" break; - case 48: // stmt_endon: object "endon" "(" expr ")" ";" -#line 343 "parser.ypp" - { yylhs.value.as < stmt_endon_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ())); } + case 43: // stmt_list: stmt_list stmt +#line 327 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2072 "parser.cpp" break; - case 49: // stmt_notify: object "notify" "(" expr "," expr_arguments ")" ";" -#line 348 "parser.ypp" - { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 44: // stmt_list: stmt +#line 329 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2078 "parser.cpp" break; - case 50: // stmt_notify: object "notify" "(" expr ")" ";" -#line 350 "parser.ypp" - { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 45: // stmt_call: expr_call ";" +#line 334 "parser.ypp" + { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } #line 2084 "parser.cpp" break; - case 51: // stmt_wait: "wait" expr ";" -#line 355 "parser.ypp" - { yylhs.value.as < stmt_wait_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } + case 46: // stmt_call: expr_call_thread ";" +#line 336 "parser.ypp" + { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } #line 2090 "parser.cpp" break; - case 52: // stmt_waittill: object "waittill" "(" expr "," expr_arguments ")" ";" -#line 360 "parser.ypp" - { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 47: // stmt_assign: expr_assign ";" +#line 341 "parser.ypp" + { yylhs.value.as < stmt_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_assign_ptr > ())); } #line 2096 "parser.cpp" break; - case 53: // stmt_waittill: object "waittill" "(" expr ")" ";" -#line 362 "parser.ypp" - { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 48: // stmt_endon: object "endon" "(" expr ")" ";" +#line 346 "parser.ypp" + { yylhs.value.as < stmt_endon_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ())); } #line 2102 "parser.cpp" break; - case 54: // stmt_waittillmatch: object "waittillmatch" "(" expr "," expr_arguments ")" ";" -#line 367 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 49: // stmt_notify: object "notify" "(" expr "," expr_arguments ")" ";" +#line 351 "parser.ypp" + { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2108 "parser.cpp" break; - case 55: // stmt_waittillmatch: object "waittillmatch" "(" expr ")" ";" -#line 369 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 50: // stmt_notify: object "notify" "(" expr ")" ";" +#line 353 "parser.ypp" + { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2114 "parser.cpp" break; - case 56: // stmt_waittillframeend: "waittillframeend" ";" -#line 374 "parser.ypp" - { yylhs.value.as < stmt_waittillframeend_ptr > () = std::make_unique(yylhs.location); } + case 51: // stmt_wait: "wait" expr ";" +#line 358 "parser.ypp" + { yylhs.value.as < stmt_wait_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2120 "parser.cpp" break; - case 57: // stmt_if: "if" "(" expr ")" stmt -#line 379 "parser.ypp" - { yylhs.value.as < stmt_if_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 52: // stmt_waittill: object "waittill" "(" expr "," expr_arguments ")" ";" +#line 363 "parser.ypp" + { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2126 "parser.cpp" break; - case 58: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 384 "parser.ypp" - { yylhs.value.as < stmt_ifelse_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 53: // stmt_waittill: object "waittill" "(" expr ")" ";" +#line 365 "parser.ypp" + { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2132 "parser.cpp" break; - case 59: // stmt_while: "while" "(" expr ")" stmt -#line 389 "parser.ypp" - { yylhs.value.as < stmt_while_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 54: // stmt_waittillmatch: object "waittillmatch" "(" expr "," expr_arguments ")" ";" +#line 370 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2138 "parser.cpp" break; - case 60: // stmt_for: "for" "(" for_stmt ";" for_expr ";" for_stmt ")" stmt -#line 394 "parser.ypp" - { yylhs.value.as < stmt_for_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[6].value.as < stmt_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 55: // stmt_waittillmatch: object "waittillmatch" "(" expr ")" ";" +#line 372 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2144 "parser.cpp" break; - case 61: // stmt_foreach: "foreach" "(" name "in" expr ")" stmt -#line 399 "parser.ypp" - { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 56: // stmt_waittillframeend: "waittillframeend" ";" +#line 377 "parser.ypp" + { yylhs.value.as < stmt_waittillframeend_ptr > () = std::make_unique(yylhs.location); } #line 2150 "parser.cpp" break; - case 62: // stmt_foreach: "foreach" "(" name "," name "in" expr ")" stmt -#line 401 "parser.ypp" - { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[6].value.as < name_ptr > ())), expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 57: // stmt_if: "if" "(" expr ")" stmt +#line 382 "parser.ypp" + { yylhs.value.as < stmt_if_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2156 "parser.cpp" break; - case 63: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 406 "parser.ypp" - { yylhs.value.as < stmt_switch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } + case 58: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 387 "parser.ypp" + { yylhs.value.as < stmt_ifelse_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2162 "parser.cpp" break; - case 64: // stmt_case: "case" integer ":" -#line 411 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } + case 59: // stmt_while: "while" "(" expr ")" stmt +#line 392 "parser.ypp" + { yylhs.value.as < stmt_while_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2168 "parser.cpp" break; - case 65: // stmt_case: "case" neg_integer ":" -#line 413 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } + case 60: // stmt_for: "for" "(" for_stmt ";" for_expr ";" for_stmt ")" stmt +#line 397 "parser.ypp" + { yylhs.value.as < stmt_for_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[6].value.as < stmt_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2174 "parser.cpp" break; - case 66: // stmt_case: "case" string ":" -#line 415 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < string_ptr > ())), std::make_unique(yylhs.location)); } + case 61: // stmt_foreach: "foreach" "(" name "in" expr ")" stmt +#line 402 "parser.ypp" + { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2180 "parser.cpp" break; - case 67: // stmt_default: "default" ":" -#line 420 "parser.ypp" - { yylhs.value.as < stmt_default_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } + case 62: // stmt_foreach: "foreach" "(" name "," name "in" expr ")" stmt +#line 404 "parser.ypp" + { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[6].value.as < name_ptr > ())), expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2186 "parser.cpp" break; - case 68: // stmt_break: "break" ";" -#line 425 "parser.ypp" - { yylhs.value.as < stmt_break_ptr > () = std::make_unique(yylhs.location); } + case 63: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 409 "parser.ypp" + { yylhs.value.as < stmt_switch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } #line 2192 "parser.cpp" break; - case 69: // stmt_continue: "continue" ";" -#line 430 "parser.ypp" - { yylhs.value.as < stmt_continue_ptr > () = std::make_unique(yylhs.location); } + case 64: // stmt_case: "case" integer ":" +#line 414 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } #line 2198 "parser.cpp" break; - case 70: // stmt_return: "return" expr ";" -#line 435 "parser.ypp" - { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } + case 65: // stmt_case: "case" string ":" +#line 416 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < string_ptr > ())), std::make_unique(yylhs.location)); } #line 2204 "parser.cpp" break; - case 71: // stmt_return: "return" ";" -#line 437 "parser.ypp" - { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } + case 66: // stmt_default: "default" ":" +#line 421 "parser.ypp" + { yylhs.value.as < stmt_default_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2210 "parser.cpp" break; - case 72: // stmt_breakpoint: "breakpoint" ";" -#line 442 "parser.ypp" - { yylhs.value.as < stmt_breakpoint_ptr > () = std::make_unique(yylhs.location); } + case 67: // stmt_break: "break" ";" +#line 426 "parser.ypp" + { yylhs.value.as < stmt_break_ptr > () = std::make_unique(yylhs.location); } #line 2216 "parser.cpp" break; - case 73: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 447 "parser.ypp" - { yylhs.value.as < stmt_prof_begin_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 68: // stmt_continue: "continue" ";" +#line 431 "parser.ypp" + { yylhs.value.as < stmt_continue_ptr > () = std::make_unique(yylhs.location); } #line 2222 "parser.cpp" break; - case 74: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 452 "parser.ypp" - { yylhs.value.as < stmt_prof_end_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 69: // stmt_return: "return" expr ";" +#line 436 "parser.ypp" + { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2228 "parser.cpp" break; - case 75: // for_stmt: expr_assign -#line 456 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_list = std::make_unique(yylhs.location); yylhs.value.as < stmt_ptr > ().as_list->stmts.push_back(stmt_ptr(std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_assign_ptr > ())))); } + case 70: // stmt_return: "return" ";" +#line 438 "parser.ypp" + { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2234 "parser.cpp" break; - case 76: // for_stmt: %empty -#line 457 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_node = std::make_unique(yylhs.location); } + case 71: // stmt_breakpoint: "breakpoint" ";" +#line 443 "parser.ypp" + { yylhs.value.as < stmt_breakpoint_ptr > () = std::make_unique(yylhs.location); } #line 2240 "parser.cpp" break; - case 77: // for_expr: expr -#line 461 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 72: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" +#line 448 "parser.ypp" + { yylhs.value.as < stmt_prof_begin_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2246 "parser.cpp" break; - case 78: // for_expr: %empty -#line 462 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location); } + case 73: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" +#line 453 "parser.ypp" + { yylhs.value.as < stmt_prof_end_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2252 "parser.cpp" break; - case 79: // expr: expr_compare -#line 466 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 74: // for_stmt: expr_assign +#line 457 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_list = std::make_unique(yylhs.location); yylhs.value.as < stmt_ptr > ().as_list->stmts.push_back(stmt_ptr(std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_assign_ptr > ())))); } #line 2258 "parser.cpp" break; - case 80: // expr: expr_ternary -#line 467 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 75: // for_stmt: %empty +#line 458 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_node = std::make_unique(yylhs.location); } #line 2264 "parser.cpp" break; - case 81: // expr: expr_binary -#line 468 "parser.ypp" + case 76: // for_expr: expr +#line 462 "parser.ypp" { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2270 "parser.cpp" break; - case 82: // expr: expr_primitive -#line 469 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 77: // for_expr: %empty +#line 463 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location); } #line 2276 "parser.cpp" break; - case 83: // expr_assign: "++" object -#line 473 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } + case 78: // expr: expr_compare +#line 467 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2282 "parser.cpp" break; - case 84: // expr_assign: "--" object -#line 474 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } + case 79: // expr: expr_ternary +#line 468 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2288 "parser.cpp" break; - case 85: // expr_assign: object "++" -#line 475 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 80: // expr: expr_binary +#line 469 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2294 "parser.cpp" break; - case 86: // expr_assign: object "--" -#line 476 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 81: // expr: expr_primitive +#line 470 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2300 "parser.cpp" break; - case 87: // expr_assign: object "=" expr -#line 477 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 82: // expr_assign: "++" object +#line 474 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } #line 2306 "parser.cpp" break; - case 88: // expr_assign: object "|=" expr -#line 478 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 83: // expr_assign: "--" object +#line 475 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } #line 2312 "parser.cpp" break; - case 89: // expr_assign: object "&=" expr -#line 479 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 84: // expr_assign: object "++" +#line 476 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2318 "parser.cpp" break; - case 90: // expr_assign: object "^=" expr -#line 480 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 85: // expr_assign: object "--" +#line 477 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2324 "parser.cpp" break; - case 91: // expr_assign: object "<<=" expr -#line 481 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()),std::move( yystack_[0].value.as < expr_ptr > ())); } + case 86: // expr_assign: object "=" expr +#line 478 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2330 "parser.cpp" break; - case 92: // expr_assign: object ">>=" expr -#line 482 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 87: // expr_assign: object "|=" expr +#line 479 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2336 "parser.cpp" break; - case 93: // expr_assign: object "+=" expr -#line 483 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 88: // expr_assign: object "&=" expr +#line 480 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2342 "parser.cpp" break; - case 94: // expr_assign: object "-=" expr -#line 484 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 89: // expr_assign: object "^=" expr +#line 481 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2348 "parser.cpp" break; - case 95: // expr_assign: object "*=" expr -#line 485 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 90: // expr_assign: object "<<=" expr +#line 482 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()),std::move( yystack_[0].value.as < expr_ptr > ())); } #line 2354 "parser.cpp" break; - case 96: // expr_assign: object "/=" expr -#line 486 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 91: // expr_assign: object ">>=" expr +#line 483 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2360 "parser.cpp" break; - case 97: // expr_assign: object "%=" expr -#line 487 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 92: // expr_assign: object "+=" expr +#line 484 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2366 "parser.cpp" break; - case 98: // expr_compare: expr "||" expr -#line 491 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 93: // expr_assign: object "-=" expr +#line 485 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2372 "parser.cpp" break; - case 99: // expr_compare: expr "&&" expr -#line 492 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 94: // expr_assign: object "*=" expr +#line 486 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2378 "parser.cpp" break; - case 100: // expr_compare: expr "==" expr -#line 493 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 95: // expr_assign: object "/=" expr +#line 487 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2384 "parser.cpp" break; - case 101: // expr_compare: expr "!=" expr -#line 494 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 96: // expr_assign: object "%=" expr +#line 488 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2390 "parser.cpp" break; - case 102: // expr_compare: expr "<=" expr -#line 495 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 97: // expr_compare: expr "||" expr +#line 492 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2396 "parser.cpp" break; - case 103: // expr_compare: expr ">=" expr -#line 496 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 98: // expr_compare: expr "&&" expr +#line 493 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2402 "parser.cpp" break; - case 104: // expr_compare: expr "<" expr -#line 497 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 99: // expr_compare: expr "==" expr +#line 494 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2408 "parser.cpp" break; - case 105: // expr_compare: expr ">" expr -#line 498 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 100: // expr_compare: expr "!=" expr +#line 495 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2414 "parser.cpp" break; - case 106: // expr_ternary: expr "?" expr ":" expr -#line 502 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 101: // expr_compare: expr "<=" expr +#line 496 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2420 "parser.cpp" break; - case 107: // expr_binary: expr "|" expr -#line 506 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 102: // expr_compare: expr ">=" expr +#line 497 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2426 "parser.cpp" break; - case 108: // expr_binary: expr "&" expr -#line 507 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 103: // expr_compare: expr "<" expr +#line 498 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2432 "parser.cpp" break; - case 109: // expr_binary: expr "^" expr -#line 508 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 104: // expr_compare: expr ">" expr +#line 499 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2438 "parser.cpp" break; - case 110: // expr_binary: expr "<<" expr -#line 509 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 105: // expr_ternary: expr "?" expr ":" expr +#line 503 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2444 "parser.cpp" break; - case 111: // expr_binary: expr ">>" expr -#line 510 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 106: // expr_binary: expr "|" expr +#line 507 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2450 "parser.cpp" break; - case 112: // expr_binary: expr "+" expr -#line 511 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 107: // expr_binary: expr "&" expr +#line 508 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2456 "parser.cpp" break; - case 113: // expr_binary: expr "-" expr -#line 512 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 108: // expr_binary: expr "^" expr +#line 509 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2462 "parser.cpp" break; - case 114: // expr_binary: expr "*" expr -#line 513 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 109: // expr_binary: expr "<<" expr +#line 510 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2468 "parser.cpp" break; - case 115: // expr_binary: expr "/" expr -#line 514 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 110: // expr_binary: expr ">>" expr +#line 511 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2474 "parser.cpp" break; - case 116: // expr_binary: expr "%" expr -#line 515 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 111: // expr_binary: expr "+" expr +#line 512 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2480 "parser.cpp" break; - case 117: // expr_primitive: "(" expr ")" -#line 519 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[1].value.as < expr_ptr > ()); } + case 112: // expr_binary: expr "-" expr +#line 513 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2486 "parser.cpp" break; - case 118: // expr_primitive: "~" expr -#line 520 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } + case 113: // expr_binary: expr "*" expr +#line 514 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2492 "parser.cpp" break; - case 119: // expr_primitive: "!" expr -#line 521 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } + case 114: // expr_binary: expr "/" expr +#line 515 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2498 "parser.cpp" break; - case 120: // expr_primitive: expr_call -#line 522 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 115: // expr_binary: expr "%" expr +#line 516 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2504 "parser.cpp" break; - case 121: // expr_primitive: expr_call_thread -#line 523 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 116: // expr_primitive: "(" expr ")" +#line 520 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[1].value.as < expr_ptr > ()); } #line 2510 "parser.cpp" break; - case 122: // expr_primitive: expr_call_childthread -#line 524 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 117: // expr_primitive: "~" expr +#line 521 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2516 "parser.cpp" break; - case 123: // expr_primitive: expr_function -#line 525 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 118: // expr_primitive: "!" expr +#line 522 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2522 "parser.cpp" break; - case 124: // expr_primitive: expr_add_array -#line 526 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 119: // expr_primitive: expr_call +#line 523 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2528 "parser.cpp" break; - case 125: // expr_primitive: expr_array -#line 527 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 120: // expr_primitive: expr_call_thread +#line 524 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2534 "parser.cpp" break; - case 126: // expr_primitive: expr_field -#line 528 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 121: // expr_primitive: expr_call_childthread +#line 525 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2540 "parser.cpp" break; - case 127: // expr_primitive: expr_size -#line 529 "parser.ypp" + case 122: // expr_primitive: expr_function +#line 526 "parser.ypp" { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2546 "parser.cpp" break; - case 128: // expr_primitive: thisthread -#line 530 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < thisthread_ptr > ()); } + case 123: // expr_primitive: expr_add_array +#line 527 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2552 "parser.cpp" break; - case 129: // expr_primitive: empty_array -#line 531 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < empty_array_ptr > ()); } + case 124: // expr_primitive: expr_array +#line 528 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2558 "parser.cpp" break; - case 130: // expr_primitive: undefined -#line 532 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < undefined_ptr > ()); } + case 125: // expr_primitive: expr_field +#line 529 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2564 "parser.cpp" break; - case 131: // expr_primitive: game -#line 533 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < game_ptr > ()); } + case 126: // expr_primitive: expr_size +#line 530 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2570 "parser.cpp" break; - case 132: // expr_primitive: self -#line 534 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < self_ptr > ()); } + case 127: // expr_primitive: thisthread +#line 531 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < thisthread_ptr > ()); } #line 2576 "parser.cpp" break; - case 133: // expr_primitive: anim -#line 535 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < anim_ptr > ()); } + case 128: // expr_primitive: empty_array +#line 532 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < empty_array_ptr > ()); } #line 2582 "parser.cpp" break; - case 134: // expr_primitive: level -#line 536 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < level_ptr > ()); } + case 129: // expr_primitive: undefined +#line 533 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < undefined_ptr > ()); } #line 2588 "parser.cpp" break; - case 135: // expr_primitive: animation -#line 537 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animation_ptr > ()); } + case 130: // expr_primitive: game +#line 534 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < game_ptr > ()); } #line 2594 "parser.cpp" break; - case 136: // expr_primitive: animtree -#line 538 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animtree_ptr > ()); } + case 131: // expr_primitive: self +#line 535 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < self_ptr > ()); } #line 2600 "parser.cpp" break; - case 137: // expr_primitive: name -#line 539 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < name_ptr > ()); } + case 132: // expr_primitive: anim +#line 536 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < anim_ptr > ()); } #line 2606 "parser.cpp" break; - case 138: // expr_primitive: istring -#line 540 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < istring_ptr > ()); } + case 133: // expr_primitive: level +#line 537 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < level_ptr > ()); } #line 2612 "parser.cpp" break; - case 139: // expr_primitive: string -#line 541 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < string_ptr > ()); } + case 134: // expr_primitive: animation +#line 538 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animation_ptr > ()); } #line 2618 "parser.cpp" break; - case 140: // expr_primitive: vector -#line 542 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < vector_ptr > ()); } + case 135: // expr_primitive: animtree +#line 539 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animtree_ptr > ()); } #line 2624 "parser.cpp" break; - case 141: // expr_primitive: neg_float -#line 543 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } + case 136: // expr_primitive: name +#line 540 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < name_ptr > ()); } #line 2630 "parser.cpp" break; - case 142: // expr_primitive: neg_integer -#line 544 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } + case 137: // expr_primitive: istring +#line 541 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < istring_ptr > ()); } #line 2636 "parser.cpp" break; - case 143: // expr_primitive: float -#line 545 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } + case 138: // expr_primitive: string +#line 542 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < string_ptr > ()); } #line 2642 "parser.cpp" break; - case 144: // expr_primitive: integer -#line 546 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } + case 139: // expr_primitive: color +#line 543 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < color_ptr > ()); } #line 2648 "parser.cpp" break; - case 145: // expr_primitive: false -#line 547 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < false_ptr > ()); } + case 140: // expr_primitive: vector +#line 544 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < vector_ptr > ()); } #line 2654 "parser.cpp" break; - case 146: // expr_primitive: true -#line 548 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < true_ptr > ()); } + case 141: // expr_primitive: float +#line 545 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } #line 2660 "parser.cpp" break; - case 147: // expr_call: expr_call_function -#line 552 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 142: // expr_primitive: integer +#line 546 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } #line 2666 "parser.cpp" break; - case 148: // expr_call: expr_call_pointer -#line 553 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 143: // expr_primitive: false +#line 547 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < false_ptr > ()); } #line 2672 "parser.cpp" break; - case 149: // expr_call: object expr_call_function -#line 554 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 144: // expr_primitive: true +#line 548 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < true_ptr > ()); } #line 2678 "parser.cpp" break; - case 150: // expr_call: object expr_call_pointer -#line 555 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 145: // expr_call: expr_call_function +#line 552 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2684 "parser.cpp" break; - case 151: // expr_call_thread: "thread" expr_call_function -#line 559 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 146: // expr_call: expr_call_pointer +#line 553 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2690 "parser.cpp" break; - case 152: // expr_call_thread: "thread" expr_call_pointer -#line 560 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 147: // expr_call: object expr_call_function +#line 554 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2696 "parser.cpp" break; - case 153: // expr_call_thread: object "thread" expr_call_function -#line 561 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 148: // expr_call: object expr_call_pointer +#line 555 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2702 "parser.cpp" break; - case 154: // expr_call_thread: object "thread" expr_call_pointer -#line 562 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 149: // expr_call_thread: "thread" expr_call_function +#line 559 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2708 "parser.cpp" break; - case 155: // expr_call_childthread: "childthread" expr_call_function -#line 566 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 150: // expr_call_thread: "thread" expr_call_pointer +#line 560 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2714 "parser.cpp" break; - case 156: // expr_call_childthread: "childthread" expr_call_pointer -#line 567 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 151: // expr_call_thread: object "thread" expr_call_function +#line 561 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2720 "parser.cpp" break; - case 157: // expr_call_childthread: object "childthread" expr_call_function -#line 568 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 152: // expr_call_thread: object "thread" expr_call_pointer +#line 562 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2726 "parser.cpp" break; - case 158: // expr_call_childthread: object "childthread" expr_call_pointer -#line 569 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 153: // expr_call_childthread: "childthread" expr_call_function +#line 566 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2732 "parser.cpp" break; - case 159: // expr_call_function: name "(" expr_arguments ")" -#line 574 "parser.ypp" - {yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::make_unique(), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 154: // expr_call_childthread: "childthread" expr_call_pointer +#line 567 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2738 "parser.cpp" break; - case 160: // expr_call_function: file "::" name "(" expr_arguments ")" -#line 576 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < file_ptr > ()), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 155: // expr_call_childthread: object "childthread" expr_call_function +#line 568 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2744 "parser.cpp" break; - case 161: // expr_call_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 581 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, false, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 156: // expr_call_childthread: object "childthread" expr_call_pointer +#line 569 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2750 "parser.cpp" break; - case 162: // expr_call_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 583 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, true, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 157: // expr_call_function: name "(" expr_arguments ")" +#line 574 "parser.ypp" + {yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::make_unique(), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2756 "parser.cpp" break; - case 163: // expr_arguments: expr_arguments_filled -#line 587 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } + case 158: // expr_call_function: file "::" name "(" expr_arguments ")" +#line 576 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < file_ptr > ()), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2762 "parser.cpp" break; - case 164: // expr_arguments: expr_arguments_empty -#line 588 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } + case 159: // expr_call_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 581 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, false, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2768 "parser.cpp" break; - case 165: // expr_arguments_filled: expr_arguments "," expr -#line 593 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[2].value.as < expr_arguments_ptr > ()); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } + case 160: // expr_call_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 583 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, true, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2774 "parser.cpp" break; - case 166: // expr_arguments_filled: expr -#line 595 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } + case 161: // expr_arguments: expr_arguments_filled +#line 587 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } #line 2780 "parser.cpp" break; - case 167: // expr_arguments_empty: %empty -#line 600 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); } + case 162: // expr_arguments: expr_arguments_empty +#line 588 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } #line 2786 "parser.cpp" break; - case 168: // expr_function: "::" name -#line 605 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < name_ptr > ())); } + case 163: // expr_arguments_filled: expr_arguments "," expr +#line 593 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[2].value.as < expr_arguments_ptr > ()); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2792 "parser.cpp" break; - case 169: // expr_function: file "::" name -#line 607 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < file_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } + case 164: // expr_arguments_filled: expr +#line 595 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2798 "parser.cpp" break; - case 170: // expr_add_array: "[" expr_arguments_filled "]" -#line 612 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 165: // expr_arguments_empty: %empty +#line 600 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); } #line 2804 "parser.cpp" break; - case 171: // expr_array: object "[" expr "]" -#line 617 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < node_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 166: // expr_function: "::" name +#line 605 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2810 "parser.cpp" break; - case 172: // expr_field: object "." name -#line 622 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } + case 167: // expr_function: file "::" name +#line 607 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < file_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2816 "parser.cpp" break; - case 173: // expr_size: object ".size" -#line 627 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 168: // expr_add_array: "[" expr_arguments_filled "]" +#line 612 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2822 "parser.cpp" break; - case 174: // object: expr_call -#line 631 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 169: // expr_array: object "[" expr "]" +#line 617 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < node_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2828 "parser.cpp" break; - case 175: // object: expr_array -#line 632 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } + case 170: // expr_field: object "." name +#line 622 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2834 "parser.cpp" break; - case 176: // object: expr_field -#line 633 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } + case 171: // expr_size: object ".size" +#line 627 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2840 "parser.cpp" break; - case 177: // object: game -#line 634 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < game_ptr > ()); } + case 172: // object: expr_call +#line 631 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2846 "parser.cpp" break; - case 178: // object: self -#line 635 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < self_ptr > ()); } + case 173: // object: expr_array +#line 632 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2852 "parser.cpp" break; - case 179: // object: anim -#line 636 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < anim_ptr > ()); } + case 174: // object: expr_field +#line 633 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2858 "parser.cpp" break; - case 180: // object: level -#line 637 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < level_ptr > ()); } + case 175: // object: game +#line 634 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < game_ptr > ()); } #line 2864 "parser.cpp" break; - case 181: // object: name -#line 638 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < name_ptr > ()); } + case 176: // object: self +#line 635 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < self_ptr > ()); } #line 2870 "parser.cpp" break; - case 182: // thisthread: "thisthread" -#line 641 "parser.ypp" - { yylhs.value.as < thisthread_ptr > () = std::make_unique(yylhs.location); } + case 177: // object: anim +#line 636 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < anim_ptr > ()); } #line 2876 "parser.cpp" break; - case 183: // empty_array: "[" "]" -#line 642 "parser.ypp" - { yylhs.value.as < empty_array_ptr > () = std::make_unique(yylhs.location); } + case 178: // object: level +#line 637 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < level_ptr > ()); } #line 2882 "parser.cpp" break; - case 184: // undefined: "undefined" -#line 643 "parser.ypp" - { yylhs.value.as < undefined_ptr > () = std::make_unique(yylhs.location); } + case 179: // object: name +#line 638 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < name_ptr > ()); } #line 2888 "parser.cpp" break; - case 185: // game: "game" -#line 644 "parser.ypp" - { yylhs.value.as < game_ptr > () = std::make_unique(yylhs.location); } + case 180: // float: "-" "float" +#line 642 "parser.ypp" + { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 2894 "parser.cpp" break; - case 186: // self: "self" -#line 645 "parser.ypp" - { yylhs.value.as < self_ptr > () = std::make_unique(yylhs.location); } + case 181: // float: "float" +#line 643 "parser.ypp" + { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2900 "parser.cpp" break; - case 187: // anim: "anim" -#line 646 "parser.ypp" - { yylhs.value.as < anim_ptr > () = std::make_unique(yylhs.location); } + case 182: // integer: "-" "int" +#line 647 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 2906 "parser.cpp" break; - case 188: // level: "level" -#line 647 "parser.ypp" - { yylhs.value.as < level_ptr > () = std::make_unique(yylhs.location); } + case 183: // integer: "int" +#line 648 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2912 "parser.cpp" break; - case 189: // animation: "%" "identifier" -#line 648 "parser.ypp" - { yylhs.value.as < animation_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 184: // integer: "octal int" +#line 649 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2918 "parser.cpp" break; - case 190: // animtree: "#animtree" -#line 649 "parser.ypp" - { yylhs.value.as < animtree_ptr > () = std::make_unique(yylhs.location); } + case 185: // integer: "binary int" +#line 650 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2924 "parser.cpp" break; - case 191: // name: "identifier" -#line 650 "parser.ypp" - { yylhs.value.as < name_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 186: // integer: "hexadecimal int" +#line 651 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2930 "parser.cpp" break; - case 192: // file: "file path" -#line 651 "parser.ypp" - { yylhs.value.as < file_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 187: // thisthread: "thisthread" +#line 654 "parser.ypp" + { yylhs.value.as < thisthread_ptr > () = std::make_unique(yylhs.location); } #line 2936 "parser.cpp" break; - case 193: // istring: "localized string" -#line 652 "parser.ypp" - { yylhs.value.as < istring_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 188: // empty_array: "[" "]" +#line 655 "parser.ypp" + { yylhs.value.as < empty_array_ptr > () = std::make_unique(yylhs.location); } #line 2942 "parser.cpp" break; - case 194: // string: "string literal" -#line 653 "parser.ypp" - { yylhs.value.as < string_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 189: // undefined: "undefined" +#line 656 "parser.ypp" + { yylhs.value.as < undefined_ptr > () = std::make_unique(yylhs.location); } #line 2948 "parser.cpp" break; - case 195: // vector: "(" expr "," expr "," expr ")" -#line 654 "parser.ypp" - { yylhs.value.as < vector_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[3].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 190: // game: "game" +#line 657 "parser.ypp" + { yylhs.value.as < game_ptr > () = std::make_unique(yylhs.location); } #line 2954 "parser.cpp" break; - case 196: // neg_float: "-" "float" -#line 655 "parser.ypp" - { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 191: // self: "self" +#line 658 "parser.ypp" + { yylhs.value.as < self_ptr > () = std::make_unique(yylhs.location); } #line 2960 "parser.cpp" break; - case 197: // neg_integer: "-" "int" -#line 656 "parser.ypp" - { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 192: // anim: "anim" +#line 659 "parser.ypp" + { yylhs.value.as < anim_ptr > () = std::make_unique(yylhs.location); } #line 2966 "parser.cpp" break; - case 198: // float: "float" -#line 657 "parser.ypp" - { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 193: // level: "level" +#line 660 "parser.ypp" + { yylhs.value.as < level_ptr > () = std::make_unique(yylhs.location); } #line 2972 "parser.cpp" break; - case 199: // integer: "int" -#line 658 "parser.ypp" - { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 194: // animation: "%" "identifier" +#line 661 "parser.ypp" + { yylhs.value.as < animation_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2978 "parser.cpp" break; - case 200: // false: "false" -#line 659 "parser.ypp" - { yylhs.value.as < false_ptr > () = std::make_unique(yylhs.location); } + case 195: // animtree: "#animtree" +#line 662 "parser.ypp" + { yylhs.value.as < animtree_ptr > () = std::make_unique(yylhs.location); } #line 2984 "parser.cpp" break; - case 201: // true: "true" -#line 660 "parser.ypp" - { yylhs.value.as < true_ptr > () = std::make_unique(yylhs.location); } + case 196: // name: "identifier" +#line 663 "parser.ypp" + { yylhs.value.as < name_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2990 "parser.cpp" break; + case 197: // file: "file path" +#line 664 "parser.ypp" + { yylhs.value.as < file_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2996 "parser.cpp" + break; -#line 2994 "parser.cpp" + case 198: // istring: "localized string" +#line 665 "parser.ypp" + { yylhs.value.as < istring_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3002 "parser.cpp" + break; + + case 199: // string: "string literal" +#line 666 "parser.ypp" + { yylhs.value.as < string_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3008 "parser.cpp" + break; + + case 200: // color: "color" +#line 667 "parser.ypp" + { yylhs.value.as < color_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3014 "parser.cpp" + break; + + case 201: // vector: "(" expr "," expr "," expr ")" +#line 668 "parser.ypp" + { yylhs.value.as < vector_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[3].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } +#line 3020 "parser.cpp" + break; + + case 202: // false: "false" +#line 669 "parser.ypp" + { yylhs.value.as < false_ptr > () = std::make_unique(yylhs.location); } +#line 3026 "parser.cpp" + break; + + case 203: // true: "true" +#line 670 "parser.ypp" + { yylhs.value.as < true_ptr > () = std::make_unique(yylhs.location); } +#line 3032 "parser.cpp" + break; + + +#line 3036 "parser.cpp" default: break; @@ -3184,25 +3226,25 @@ namespace xsk { namespace gsc { namespace iw7 { "++", "--", "<<", ">>", "||", "&&", "==", "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", "%", "file path", "identifier", - "string literal", "localized string", "float", "int", "ADD_ARRAY", - "THEN", "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", - "POSTDEC", "$accept", "root", "program", "include", "define", - "usingtree", "constant", "thread", "parameters", "stmt", "stmt_block", - "stmt_list", "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", - "stmt_wait", "stmt_waittill", "stmt_waittillmatch", - "stmt_waittillframeend", "stmt_if", "stmt_ifelse", "stmt_while", - "stmt_for", "stmt_foreach", "stmt_switch", "stmt_case", "stmt_default", - "stmt_break", "stmt_continue", "stmt_return", "stmt_breakpoint", - "stmt_prof_begin", "stmt_prof_end", "for_stmt", "for_expr", "expr", - "expr_assign", "expr_compare", "expr_ternary", "expr_binary", - "expr_primitive", "expr_call", "expr_call_thread", - "expr_call_childthread", "expr_call_function", "expr_call_pointer", - "expr_arguments", "expr_arguments_filled", "expr_arguments_empty", - "expr_function", "expr_add_array", "expr_array", "expr_field", - "expr_size", "object", "thisthread", "empty_array", "undefined", "game", + "string literal", "localized string", "color", "float", "int", + "octal int", "binary int", "hexadecimal int", "ADD_ARRAY", "THEN", + "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", + "$accept", "root", "program", "include", "define", "usingtree", + "constant", "thread", "parameters", "stmt", "stmt_block", "stmt_list", + "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", "stmt_wait", + "stmt_waittill", "stmt_waittillmatch", "stmt_waittillframeend", + "stmt_if", "stmt_ifelse", "stmt_while", "stmt_for", "stmt_foreach", + "stmt_switch", "stmt_case", "stmt_default", "stmt_break", + "stmt_continue", "stmt_return", "stmt_breakpoint", "stmt_prof_begin", + "stmt_prof_end", "for_stmt", "for_expr", "expr", "expr_assign", + "expr_compare", "expr_ternary", "expr_binary", "expr_primitive", + "expr_call", "expr_call_thread", "expr_call_childthread", + "expr_call_function", "expr_call_pointer", "expr_arguments", + "expr_arguments_filled", "expr_arguments_empty", "expr_function", + "expr_add_array", "expr_array", "expr_field", "expr_size", "object", + "float", "integer", "thisthread", "empty_array", "undefined", "game", "self", "anim", "level", "animation", "animtree", "name", "file", - "istring", "string", "vector", "neg_float", "neg_integer", "float", - "integer", "false", "true", YY_NULLPTR + "istring", "string", "color", "vector", "false", "true", YY_NULLPTR }; return yy_sname[yysymbol]; } @@ -3467,480 +3509,472 @@ namespace xsk { namespace gsc { namespace iw7 { } - const short parser::yypact_ninf_ = -245; + const short parser::yypact_ninf_ = -242; - const short parser::yytable_ninf_ = -182; + const short parser::yytable_ninf_ = -180; const short parser::yypact_[] = { - 3, -50, -3, -245, 20, 3, -245, -245, -245, -245, - -245, -20, -245, -2, -37, -245, -245, -245, -31, 762, - -245, -245, 23, -16, -245, -245, -15, -15, -245, 21, - -245, -245, -245, -245, -245, -245, -245, 762, 480, -31, - 762, 762, -76, 4, -245, -245, -245, 1588, -245, -245, - -245, -245, 31, -245, -245, -245, -245, -245, -245, 393, - 508, -245, 722, -245, -245, -245, 785, 793, 921, 931, - -245, -245, 14, 19, -245, -245, -245, -245, -245, -245, - -245, -245, -245, 43, 49, -31, 52, -245, -245, 57, - 53, -245, -245, 63, 988, 480, -245, 1671, 62, 66, - -245, -245, -245, -245, -245, -245, -245, -245, 762, 762, - 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, - 762, 762, 762, 762, 762, 762, 762, -15, -15, -245, - 825, -31, -245, -245, 762, -31, -245, 583, -245, -245, - 762, -31, 762, -245, 762, 1398, 762, -245, 1553, 75, - 75, 1702, 1712, 85, 85, 70, 70, 70, 70, 930, - 1753, 1743, 79, 79, -245, -245, -245, -245, -245, -245, - -245, 1438, -245, -5, -245, 74, 65, 78, 81, 762, - 69, 87, 90, 91, 95, 97, -64, 77, 94, 120, - 699, -245, 410, 410, -245, -245, 628, -245, -245, -245, - -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, - -245, -245, -245, -245, -245, -245, -245, -245, -245, 121, - 122, 142, -245, -245, 872, -245, -245, -245, -245, 57, - 1398, 74, 1478, 1517, 96, 1671, 762, -245, -245, 762, - -245, 762, 762, 1623, -245, 762, 762, 496, -31, 762, - 113, 155, 159, 161, -245, -245, -245, -245, 1658, -245, - -13, -13, -245, -245, -245, -245, -245, 172, 173, 174, - 176, -245, -245, 762, 762, 762, 762, 762, 762, 762, - 762, 762, 762, 762, 177, 762, 178, 1671, 10, 11, - 33, -245, 1154, 1188, 167, -245, 952, 1, 1222, -245, - -245, -245, -245, 762, 762, 762, 762, 1671, 1671, 1671, - 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 181, 1256, - 762, -245, 182, 184, 673, 673, 762, 762, -31, 49, - 1290, 1032, 1076, 1120, 762, -245, 35, -245, -245, 211, - -245, 185, 1671, 1324, 224, -245, 196, 197, 762, 201, - 762, 202, 762, 36, -245, 673, 496, 673, 762, -245, - -245, 39, -245, 42, -245, 46, -245, -245, 213, -245, - 1358, 206, 210, 214, 673, 673, -245, -245, -245, -245, - -245 + 4, -71, -9, -242, 23, 4, -242, -242, -242, -242, + -242, -27, -242, -13, -37, -242, -242, -242, -33, 642, + -242, -242, 15, -26, -242, -242, 18, 18, -242, 25, + -242, -242, -242, -242, -242, -242, -242, 642, 508, -33, + 642, 642, -56, -15, -242, -242, -242, -242, -242, -242, + -242, 1563, -242, -242, -242, -242, 363, -242, -242, -242, + -242, -242, -242, 371, 531, -242, 536, -242, -242, -242, + -242, -242, 598, 603, 665, 670, -242, -242, 35, 28, + -242, -242, -242, -242, -242, -242, 31, 36, -33, 44, + -242, -242, 51, 47, -242, -242, 64, 903, 508, -242, + 1646, 59, 85, -242, -242, -242, -242, -242, -242, -242, + -242, 642, 642, 642, 642, 642, 642, 642, 642, 642, + 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, + 18, 18, -242, 709, -33, -242, -242, 642, -33, -242, + 800, -242, -242, 642, -33, 642, -242, 642, 1373, 642, + -242, 1528, 45, 45, 704, 1677, 414, 414, 3, 3, + 3, 3, 1687, 1728, 1718, 74, 74, -242, -242, -242, + -242, -242, -242, -242, 1413, -242, -24, -242, 69, 72, + 93, 94, 642, 88, 100, 103, 104, 107, 109, 61, + 101, 110, 111, 575, -242, 406, 406, -242, -242, 845, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, 114, 116, 117, -242, -242, 925, -242, -242, + -242, -242, 51, 1373, 69, 1453, 1492, 123, 1646, 642, + -242, -242, 642, -242, 642, 642, 1598, -242, 642, 642, + 7, -33, 642, 79, 120, 122, -242, -242, -242, -242, + 1633, -242, 30, 30, -242, -242, -242, -242, -242, 152, + 158, 159, 167, -242, -242, 642, 642, 642, 642, 642, + 642, 642, 642, 642, 642, 642, 169, 642, 175, 1646, + -23, -20, -16, -242, 1129, 1163, 166, -242, 971, 8, + 1197, -242, -242, -242, 642, 642, 642, 642, 1646, 1646, + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 177, + 1231, 642, -242, 170, 171, 890, 890, 642, 642, -33, + 36, 1265, 1007, 1051, 1095, 642, -242, 6, -242, -242, + 201, -242, 172, 1646, 1299, 198, -242, 179, 180, 642, + 181, 642, 182, 642, 27, -242, 890, 7, 890, 642, + -242, -242, 53, -242, 77, -242, 78, -242, -242, 183, + -242, 1333, 184, 185, 186, 890, 890, -242, -242, -242, + -242, -242 }; const unsigned char parser::yydefact_[] = { - 3, 0, 0, 191, 0, 2, 6, 7, 9, 10, - 11, 0, 192, 0, 0, 1, 4, 5, 17, 0, - 8, 194, 0, 0, 16, 190, 0, 0, 182, 0, - 201, 200, 184, 185, 186, 187, 188, 0, 167, 0, - 0, 0, 0, 0, 193, 198, 199, 0, 79, 80, - 81, 82, 120, 121, 122, 147, 148, 123, 124, 125, - 126, 127, 0, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 0, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 0, 0, 0, 0, 151, 152, 0, - 0, 155, 156, 0, 0, 167, 183, 166, 0, 163, - 164, 168, 119, 118, 196, 197, 189, 13, 0, 0, + 3, 0, 0, 196, 0, 2, 6, 7, 9, 10, + 11, 0, 197, 0, 0, 1, 4, 5, 17, 0, + 8, 199, 0, 0, 16, 195, 0, 0, 187, 0, + 203, 202, 189, 190, 191, 192, 193, 0, 165, 0, + 0, 0, 0, 0, 198, 200, 181, 183, 184, 185, + 186, 0, 78, 79, 80, 81, 119, 120, 121, 145, + 146, 122, 123, 124, 125, 126, 0, 141, 142, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 0, + 137, 138, 139, 140, 143, 144, 0, 0, 0, 0, + 149, 150, 0, 0, 153, 154, 0, 0, 165, 188, + 164, 0, 161, 162, 166, 118, 117, 180, 182, 194, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, - 0, 0, 149, 150, 167, 0, 12, 0, 14, 15, - 0, 0, 0, 117, 0, 166, 0, 170, 0, 110, - 111, 98, 99, 100, 101, 102, 103, 104, 105, 107, - 108, 109, 112, 113, 114, 115, 116, 153, 154, 157, - 158, 0, 172, 0, 163, 169, 0, 0, 0, 0, + 0, 0, 171, 0, 0, 147, 148, 165, 0, 12, + 0, 14, 15, 0, 0, 0, 116, 0, 164, 0, + 168, 0, 109, 110, 97, 98, 99, 100, 101, 102, + 103, 104, 106, 107, 108, 111, 112, 113, 114, 115, + 151, 152, 155, 156, 0, 170, 0, 161, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 42, 0, 0, 44, 18, 0, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, - 174, 0, 175, 176, 0, 177, 178, 179, 180, 181, - 0, 0, 0, 0, 0, 165, 0, 171, 159, 167, - 72, 167, 167, 0, 56, 0, 0, 76, 0, 0, - 0, 0, 0, 0, 67, 68, 69, 71, 0, 174, - 83, 84, 41, 43, 47, 45, 46, 0, 0, 0, - 0, 85, 86, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, - 0, 51, 0, 0, 0, 75, 0, 0, 0, 66, - 65, 64, 70, 0, 0, 0, 0, 87, 93, 94, - 95, 96, 97, 88, 89, 90, 92, 91, 0, 0, - 167, 160, 0, 0, 0, 0, 78, 0, 0, 0, - 0, 0, 0, 0, 167, 195, 0, 73, 74, 57, - 59, 0, 77, 0, 0, 63, 0, 0, 167, 0, - 167, 0, 167, 0, 161, 0, 76, 0, 0, 48, - 50, 0, 53, 0, 55, 0, 162, 58, 0, 61, - 0, 0, 0, 0, 0, 0, 49, 52, 54, 60, - 62 + 0, 0, 0, 0, 42, 0, 0, 44, 18, 0, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 0, 172, 0, 173, 174, 0, 175, 176, + 177, 178, 179, 0, 0, 0, 0, 0, 163, 0, + 169, 157, 165, 71, 165, 165, 0, 56, 0, 0, + 75, 0, 0, 0, 0, 0, 66, 67, 68, 70, + 0, 172, 82, 83, 41, 43, 47, 45, 46, 0, + 0, 0, 0, 84, 85, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, + 0, 0, 0, 51, 0, 0, 0, 74, 0, 0, + 0, 64, 65, 69, 0, 0, 0, 0, 86, 92, + 93, 94, 95, 96, 87, 88, 89, 91, 90, 0, + 0, 165, 158, 0, 0, 0, 0, 77, 0, 0, + 0, 0, 0, 0, 0, 165, 201, 0, 72, 73, + 57, 59, 0, 76, 0, 0, 63, 0, 0, 165, + 0, 165, 0, 165, 0, 159, 0, 75, 0, 0, + 48, 50, 0, 53, 0, 55, 0, 160, 58, 0, + 61, 0, 0, 0, 0, 0, 0, 49, 52, 54, + 60, 62 }; const short parser::yypgoto_[] = { - -245, -245, -245, 259, 263, -245, -245, -245, -245, 41, - -80, -245, -245, -245, -245, -245, -245, -245, -245, -245, - -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, - -245, -245, -245, -245, -87, -245, 64, -244, -245, -245, - -245, -245, -99, -85, -245, -25, -19, -120, -27, -245, - -245, -245, 26, 86, -245, 101, -245, -245, -245, 125, - 130, 216, 221, -245, -245, 0, 5, -245, 9, -245, - -245, 88, -245, 98, -245, -245 + -242, -242, -242, 219, 236, -242, -242, -242, -242, -164, + -84, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -110, -242, 60, -241, -242, -242, + -242, -242, -100, 108, -242, -25, -19, 168, -34, -242, + -242, -242, -86, 70, -242, 82, -242, 63, -242, -242, + -242, 96, 105, 153, 174, -242, -242, 0, 5, -242, + 1, -242, -242, -242, -242 }; const short parser::yydefgoto_[] = { - 0, 4, 5, 6, 7, 8, 9, 10, 23, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 294, 341, 97, 219, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 98, 174, 100, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82 + 0, 4, 5, 6, 7, 8, 9, 10, 23, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 296, 342, 100, 222, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 101, 177, 103, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85 }; const short parser::yytable_[] = { - 11, 87, 91, 295, 138, 11, 13, 88, 92, 1, - 2, 99, 104, 105, 173, 29, 250, 29, 24, 18, - 15, 327, 21, 22, 84, 46, 89, 89, 86, 85, - 130, 90, 90, 131, 12, 238, 14, 132, 220, 101, - 146, -181, -181, 133, -181, 19, 328, 20, -181, 21, - 321, 322, 221, 134, 3, 146, 146, -181, -174, -174, - -181, -174, 89, 83, 93, -174, 135, 90, 99, 12, - 3, 12, 3, 323, -174, 354, 366, -174, 146, 371, - 146, 146, 372, 47, 146, 139, 373, 146, 3, 106, - 137, 146, 136, 259, 259, 140, 134, 220, -181, -181, - 141, 94, 167, 169, 102, 103, 142, 146, 168, 170, - 147, 221, 295, 239, 240, -174, -174, 241, 244, 288, - 242, 289, 290, 109, 110, 254, 245, 89, 89, 246, - 247, 172, 90, 90, 248, 175, 249, 229, 109, 110, - 286, 231, 90, 255, 115, 116, 117, 118, 259, 122, - 123, 124, 125, 126, 122, 123, 124, 125, 126, 145, - 124, 125, 126, 222, 122, 123, 124, 125, 126, 256, - 264, 265, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 266, 229, 229, 171, 251, 229, 90, 90, 132, - 336, 90, 105, 299, 230, 133, 232, 300, 233, 301, - 235, 303, 304, 305, 353, 306, 326, 320, 222, 222, - 334, 318, 222, 223, 89, 220, 220, 355, 361, 90, - 363, 337, 365, 338, 356, 132, 132, 263, 224, 221, - 221, 133, 133, 243, 358, 359, 360, 229, 297, 345, - 362, 364, 90, 374, 258, 376, 220, 259, 220, 377, - 89, 89, 225, 378, 16, 90, 90, 226, 17, 368, - 221, 132, 221, 222, 252, 220, 220, 133, 223, 223, - 0, 0, 223, 0, 253, 0, 0, 0, 0, 221, - 221, 0, 0, 260, 261, 0, 89, 224, 0, 0, - 287, 90, 0, 0, 0, 0, 0, 0, 0, 292, - 293, 0, 0, 298, 0, 0, 0, 225, 225, 0, - 0, 225, 226, 226, 229, 229, 226, 0, 344, 90, - 90, 0, 0, 223, 0, 0, 0, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 296, 319, - 222, 222, 0, 227, 0, 229, 229, 229, 228, 0, - 90, 90, 90, 0, 0, 339, 340, 330, 331, 332, - 333, 0, 225, 0, 229, 229, 0, 226, 0, 90, - 90, 222, 222, 222, 0, 0, 0, 0, 0, 0, - 342, 343, 0, 0, 0, 0, 367, 0, 369, 0, - 222, 222, 0, 0, 0, 0, 0, 0, 227, 227, - 223, 223, 227, 228, 228, 379, 380, 228, 0, 0, - -175, -175, 370, -175, 0, 224, 224, -175, 0, 0, - 0, 0, 0, 0, 0, 0, -175, 0, 0, -175, - 29, 223, 223, 223, 0, 33, 34, 35, 36, 225, - 225, 0, 0, 86, 226, 226, 224, 296, 224, 0, - 223, 223, 0, 227, 0, 0, 0, 0, 228, 0, - 0, 0, 0, 0, 0, 224, 224, -175, -175, 0, - 225, 225, 225, 0, 0, 226, 226, 226, 25, 0, - 0, 0, 0, 0, 12, 3, 0, 0, 0, 225, - 225, 0, 0, 0, 226, 226, 0, 26, 27, 28, - 29, 30, 31, 32, 0, 33, 34, 35, 36, 37, - 0, 0, 0, 95, 96, 0, 29, 39, 0, 0, - 0, 33, 34, 35, 36, -176, -176, 0, -176, 86, - 227, 227, -176, 40, 41, 228, 228, 192, 193, 0, - 0, -176, 0, 0, -176, 0, 0, 0, 0, 0, - 42, 0, 0, 43, 12, 3, 21, 44, 45, 46, - 0, 227, 227, 227, 0, 0, 228, 228, 228, 0, - 12, 3, 0, 0, 0, 0, 176, 177, 178, 0, - 227, 227, -176, -176, 179, 228, 228, 180, 181, 0, - 182, 183, 184, 0, 185, 186, 187, 188, 189, 190, - 26, 0, 0, 29, 0, 0, 0, 0, 33, 34, - 35, 36, 0, 0, 137, 191, 86, 0, 0, 0, - 0, 176, 177, 178, 192, 193, 0, 0, 0, 179, - 0, 0, 180, 181, 0, 182, 183, 184, 0, 185, - 186, 187, 188, 189, 190, 26, 0, 0, 29, 0, - 0, 0, 0, 33, 34, 35, 36, 12, 3, 137, - 262, 86, 0, 0, 0, 0, 176, 177, 178, 192, - 193, 0, 0, 0, 179, 0, 0, 180, 181, 0, - 182, 183, 184, 0, 185, 186, 187, 188, 189, 190, - 26, 0, 0, 29, 0, 0, 0, 25, 33, 34, - 35, 36, 12, 3, 137, 0, 86, 0, 0, 0, - 0, 0, 0, 0, 192, 193, 26, 27, 28, 29, - 30, 31, 32, 0, 33, 34, 35, 36, 37, 0, - 0, 0, 38, 0, 0, 0, 39, 0, 257, 127, - 128, 0, 29, 0, 0, 0, 129, 12, 3, 0, - 0, 0, 40, 41, 0, 130, 0, 0, 131, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 42, - 0, 0, 43, 12, 3, 21, 44, 45, 46, 26, + 11, 90, 94, 141, 102, 11, 13, 91, 95, 297, + 1, 2, 18, 12, 87, 22, 241, 322, 24, 88, + 323, 149, 149, 15, 324, 149, 92, 92, 328, 149, + 14, 93, 93, 107, 108, 265, 20, 29, 19, 104, + 223, 135, 33, 34, 35, 36, 355, 136, 29, 21, + 89, 149, 3, 329, 225, 86, 112, 113, 195, 196, + 29, 89, -179, -179, 102, -179, 92, 367, 96, -179, + 109, 93, 149, 133, 137, 138, 134, 140, -179, 51, + 139, -179, 125, 126, 127, 128, 129, 143, 142, 3, + 137, 12, 3, 372, 144, 261, 261, 97, 149, 223, + 105, 106, 12, 3, 149, 170, 172, 145, 242, 225, + 225, 171, 173, 225, 12, 3, 297, 373, 374, -179, + -179, 243, 149, 149, 125, 126, 127, 128, 129, 150, + 92, 92, 244, 245, 175, 93, 93, 247, 178, 248, + 232, 253, 249, 250, 234, 93, 251, 21, 252, 256, + 261, 47, 48, 49, 50, 127, 128, 129, 148, 257, + 258, 340, 341, 266, 225, 267, 268, 288, 301, 108, + 302, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 255, 304, 368, 174, 370, 232, 232, 305, 306, 232, + 93, 93, 135, 233, 93, 235, 307, 236, 136, 238, + 226, 380, 381, 319, 321, 327, 335, 356, 359, 338, + 339, 357, 227, 375, 16, 223, 223, 92, 360, 361, + 363, 365, 93, 377, 378, 379, 228, 135, 135, 225, + 225, 17, 246, 136, 136, 229, 346, 369, 224, 0, + 232, 299, 254, 260, 0, 93, 223, 261, 223, 0, + 0, 0, 92, 92, 0, 226, 226, 93, 93, 226, + 225, 225, 225, 135, 0, 223, 223, 262, 263, 136, + 0, 227, 0, 0, 0, 0, 0, 0, 0, 225, + 225, 228, 228, 230, 0, 228, 0, 0, 92, 289, + 229, 229, 0, 93, 229, 176, 0, 224, 294, 295, + 0, 0, 300, 0, 231, 0, 0, 0, 0, 0, + 226, 0, 0, 0, 0, 232, 232, 0, 0, 345, + 93, 93, 298, 0, 0, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 228, 320, 230, 230, + 0, 0, 230, 0, 0, 229, 232, 232, 232, 0, + 0, 93, 93, 93, 331, 332, 333, 334, 0, 231, + 231, 0, 0, 231, 0, 232, 232, 0, 0, 0, + 93, 93, 0, 0, 0, 0, 0, 343, 344, 0, + -172, -172, 0, -172, 0, 226, 226, -172, -173, -173, + 0, -173, 0, 230, 0, -173, -172, 227, 227, -172, + 290, 0, 291, 292, -173, 0, 0, -173, 0, 371, + 0, 228, 228, 0, 231, 0, 226, 226, 226, 0, + 229, 229, 0, 224, 224, 0, 29, 0, 227, 298, + 227, 33, 34, 35, 36, 226, 226, -172, -172, 89, + 0, 0, 228, 228, 228, -173, -173, 227, 227, 0, + 0, 229, 229, 229, 224, 0, 224, 112, 113, 0, + 0, 228, 228, 118, 119, 120, 121, 0, 230, 230, + 229, 229, 0, 224, 224, 0, 0, 0, 0, 337, + 12, 3, 0, 125, 126, 127, 128, 129, 0, 231, + 231, 0, 0, 354, 0, 0, 0, 0, 0, 230, + 230, 230, 0, 0, 0, 0, 25, 362, 0, 364, + 0, 366, 0, 0, 0, 0, 0, 0, 230, 230, + 231, 231, 231, 0, 0, 26, 27, 28, 29, 30, + 31, 32, 0, 33, 34, 35, 36, 37, 0, 231, + 231, 98, 99, 0, 0, 39, 0, 0, -174, -174, + 0, -174, 0, 130, 131, -174, 29, 0, 0, 0, + 132, 40, 41, 0, -174, 0, 0, -174, 0, 133, + 0, 0, 134, 25, 0, 0, 0, 0, 42, 0, + 0, 43, 12, 3, 21, 44, 45, 46, 47, 48, + 49, 50, 26, 27, 28, 29, 30, 31, 32, 0, + 33, 34, 35, 36, 37, -174, -174, 0, 38, 0, + 12, 3, 39, 0, 259, -175, -175, 0, -175, 0, + -176, -176, -175, -176, 0, 0, 0, -176, 40, 41, + 0, -175, 0, 0, -175, 0, -176, 0, 0, -176, + 25, 0, 0, 0, 0, 42, 0, 0, 43, 12, + 3, 21, 44, 45, 46, 47, 48, 49, 50, 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, 35, - 36, 37, 0, 0, 0, 38, 12, 3, 0, 39, - 0, 0, -177, -177, 0, -177, 0, 0, 0, -177, - -178, -178, 0, -178, 0, 40, 41, -178, -177, 0, - 0, -177, 0, 25, 0, 0, -178, 0, 0, -178, + 36, 37, -175, -175, 0, 38, 0, -176, -176, 39, + 0, 0, -177, -177, 0, -177, 0, -178, -178, -177, + -178, 0, 0, 0, -178, 40, 41, 0, -177, 0, + 0, -177, 0, -178, 0, 0, -178, 25, 0, 0, 0, 0, 42, 0, 0, 43, 12, 3, 21, 44, - 45, 46, 26, 27, 28, 29, 30, 31, 32, 0, - 33, 34, 35, 36, 37, 0, 0, 0, 95, -177, - -177, 0, 39, 0, 0, 0, 0, -178, -178, 0, - 0, 267, 268, 0, 269, 270, 0, 0, 40, 41, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, - 0, 0, 29, 0, 0, 42, 0, 0, 43, 12, - 3, 21, 44, 45, 46, 130, 0, 0, 131, 0, - 0, 0, 0, 271, 272, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, -179, -179, - 0, -179, 0, 0, 0, -179, 12, 3, -180, -180, - 0, -180, 0, 0, -179, -180, 0, -179, 0, 0, - 0, 0, 0, 0, -180, 0, 0, -180, 0, 0, - 0, 0, 29, 109, 110, 0, 0, 113, 114, 115, - 116, 117, 118, 0, 0, 130, 0, 0, 131, 0, - 0, 0, 0, 271, 272, -179, -179, 120, 121, 122, - 123, 124, 125, 126, 0, -180, -180, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 143, 0, - 0, 0, 0, 144, 0, 0, 12, 3, 108, 0, - 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, - 125, 126, 347, 0, 0, 0, 0, 348, 0, 0, - 0, 0, 108, 0, 0, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, - 121, 122, 123, 124, 125, 126, 349, 0, 0, 0, - 0, 350, 0, 0, 0, 0, 108, 0, 0, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 0, + 45, 46, 47, 48, 49, 50, 26, 27, 28, 29, + 30, 31, 32, 0, 33, 34, 35, 36, 37, -177, + -177, 0, 98, 0, -178, -178, 39, 112, 113, 0, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, + 0, 0, 40, 41, 0, 0, 0, 0, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 0, 42, + 0, 0, 43, 12, 3, 21, 44, 45, 46, 47, + 48, 49, 50, 179, 180, 181, 0, 0, 0, 0, + 0, 182, 0, 0, 183, 184, 0, 185, 186, 187, + 0, 188, 189, 190, 191, 192, 193, 26, 0, 0, + 29, 0, 0, 0, 0, 33, 34, 35, 36, 0, + 0, 140, 194, 89, 0, 0, 0, 0, 179, 180, + 181, 195, 196, 0, 0, 0, 182, 0, 0, 183, + 184, 0, 185, 186, 187, 0, 188, 189, 190, 191, + 192, 193, 26, 0, 0, 29, 0, 0, 0, 0, + 33, 34, 35, 36, 12, 3, 140, 264, 89, 0, + 0, 0, 0, 179, 180, 181, 195, 196, 0, 0, + 0, 182, 0, 0, 183, 184, 0, 185, 186, 187, + 0, 188, 189, 190, 191, 192, 193, 26, 0, 0, + 29, 0, 0, 0, 0, 33, 34, 35, 36, 12, + 3, 140, 0, 89, 269, 270, 0, 271, 272, 0, + 0, 195, 196, 146, 0, 0, 0, 0, 147, 0, + 0, 0, 130, 111, 0, 29, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 0, 0, 133, 0, + 0, 134, 0, 0, 12, 3, 273, 274, 0, 122, + 123, 124, 125, 126, 127, 128, 129, 0, 0, 0, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 29, 0, 0, 0, 0, 0, 0, 0, 12, + 3, 0, 0, 0, 133, 0, 0, 134, 0, 0, + 0, 0, 273, 274, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 348, 0, 0, + 0, 0, 349, 0, 0, 12, 3, 111, 0, 0, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, - 351, 0, 0, 0, 0, 352, 0, 0, 0, 0, - 108, 0, 0, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 324, 0, 119, 120, 121, 122, - 123, 124, 125, 126, 108, 0, 0, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 325, 0, - 119, 120, 121, 122, 123, 124, 125, 126, 108, 0, - 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 329, 0, 119, 120, 121, 122, 123, 124, - 125, 126, 108, 0, 0, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 335, 0, 119, 120, - 121, 122, 123, 124, 125, 126, 108, 0, 0, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 0, + 0, 0, 0, 122, 123, 124, 125, 126, 127, 128, + 129, 350, 0, 0, 0, 0, 351, 0, 0, 0, + 0, 111, 0, 0, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 122, 123, 124, + 125, 126, 127, 128, 129, 352, 0, 0, 0, 0, + 353, 0, 0, 0, 0, 111, 0, 0, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 325, + 0, 122, 123, 124, 125, 126, 127, 128, 129, 111, + 0, 0, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 326, 0, 122, 123, 124, 125, 126, + 127, 128, 129, 111, 0, 0, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 330, 0, 122, + 123, 124, 125, 126, 127, 128, 129, 111, 0, 0, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 346, 0, 119, 120, 121, 122, 123, 124, 125, 126, - 108, 0, 0, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 357, 0, 119, 120, 121, 122, - 123, 124, 125, 126, 108, 0, 0, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 375, 0, - 119, 120, 121, 122, 123, 124, 125, 126, 108, 0, - 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, - 125, 126, 234, 0, 0, 0, 0, 0, 108, 0, - 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, - 125, 126, 237, 0, 0, 0, 0, 0, 108, 0, - 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, - 125, 126, 284, 0, 0, 0, 0, 0, 108, 0, - 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, - 125, 126, 285, 0, 0, 0, 0, 108, 0, 0, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 236, 0, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 107, 108, 0, - 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, - 125, 126, 291, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 302, 108, 0, - 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 108, 0, 0, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 0, 0, 0, 0, 0, 119, 120, 121, - 122, 123, 124, 125, 126, 109, 110, 0, 112, 113, - 114, 115, 116, 117, 118, 109, 110, 0, 0, 113, - 114, 115, 116, 117, 118, 0, 0, 0, 119, 120, - 121, 122, 123, 124, 125, 126, 0, 0, 119, 120, - 121, 122, 123, 124, 125, 126, 109, 110, 0, 0, - 113, 114, 115, 116, 117, 118, 109, 110, 0, 0, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 120, 0, 122, 123, 124, 125, 126, 0, 0, 0, - 0, 0, 122, 123, 124, 125, 126 + 0, 336, 0, 122, 123, 124, 125, 126, 127, 128, + 129, 111, 0, 0, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 347, 0, 122, 123, 124, + 125, 126, 127, 128, 129, 111, 0, 0, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 358, + 0, 122, 123, 124, 125, 126, 127, 128, 129, 111, + 0, 0, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 376, 0, 122, 123, 124, 125, 126, + 127, 128, 129, 111, 0, 0, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, + 123, 124, 125, 126, 127, 128, 129, 237, 0, 0, + 0, 0, 0, 111, 0, 0, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, + 123, 124, 125, 126, 127, 128, 129, 240, 0, 0, + 0, 0, 0, 111, 0, 0, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, + 123, 124, 125, 126, 127, 128, 129, 286, 0, 0, + 0, 0, 0, 111, 0, 0, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, + 123, 124, 125, 126, 127, 128, 129, 287, 0, 0, + 0, 0, 111, 0, 0, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 122, 123, + 124, 125, 126, 127, 128, 129, 239, 0, 111, 0, + 0, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 122, 123, 124, 125, 126, 127, + 128, 129, 110, 111, 0, 0, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, + 123, 124, 125, 126, 127, 128, 129, 293, 111, 0, + 0, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 122, 123, 124, 125, 126, 127, + 128, 129, 303, 111, 0, 0, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 111, 0, 0, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 0, 0, 0, + 0, 0, 122, 123, 124, 125, 126, 127, 128, 129, + 112, 113, 0, 0, 116, 117, 118, 119, 120, 121, + 112, 113, 0, 0, 116, 117, 118, 119, 120, 121, + 0, 0, 0, 122, 123, 124, 125, 126, 127, 128, + 129, 0, 0, 0, 123, 124, 125, 126, 127, 128, + 129, 112, 113, 0, 0, 116, 117, 118, 119, 120, + 121, 112, 113, 0, 0, 116, 117, 118, 119, 120, + 121, 0, 0, 0, 0, 123, 0, 125, 126, 127, + 128, 129, 0, 0, 0, 0, 0, 125, 126, 127, + 128, 129 }; const short parser::yycheck_[] = { - 0, 26, 27, 247, 84, 5, 1, 26, 27, 6, - 7, 38, 88, 89, 134, 30, 80, 30, 18, 39, - 0, 20, 86, 14, 40, 89, 26, 27, 43, 45, - 43, 26, 27, 46, 84, 40, 39, 62, 137, 39, - 45, 27, 28, 62, 30, 65, 45, 49, 34, 86, - 40, 40, 137, 39, 85, 45, 45, 43, 27, 28, - 46, 30, 62, 40, 43, 34, 47, 62, 95, 84, - 85, 84, 85, 40, 43, 40, 40, 46, 45, 40, - 45, 45, 40, 19, 45, 85, 40, 45, 85, 85, - 41, 45, 49, 192, 193, 43, 39, 196, 84, 85, - 47, 37, 127, 128, 40, 41, 43, 45, 127, 128, - 44, 196, 356, 39, 49, 84, 85, 39, 49, 239, - 39, 241, 242, 53, 54, 48, 39, 127, 128, 39, - 39, 131, 127, 128, 39, 135, 39, 137, 53, 54, - 44, 141, 137, 49, 59, 60, 61, 62, 247, 79, - 80, 81, 82, 83, 79, 80, 81, 82, 83, 95, - 81, 82, 83, 137, 79, 80, 81, 82, 83, 49, - 49, 49, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 49, 192, 193, 130, 186, 196, 192, 193, 224, - 320, 196, 89, 48, 140, 224, 142, 48, 144, 48, - 146, 39, 39, 39, 334, 39, 49, 39, 192, 193, - 39, 44, 196, 137, 224, 324, 325, 16, 348, 224, - 350, 49, 352, 49, 49, 260, 261, 196, 137, 324, - 325, 260, 261, 179, 20, 49, 49, 247, 248, 329, - 49, 49, 247, 40, 190, 49, 355, 356, 357, 49, - 260, 261, 137, 49, 5, 260, 261, 137, 5, 356, - 355, 296, 357, 247, 186, 374, 375, 296, 192, 193, - -1, -1, 196, -1, 186, -1, -1, -1, -1, 374, - 375, -1, -1, 192, 193, -1, 296, 196, -1, -1, - 236, 296, -1, -1, -1, -1, -1, -1, -1, 245, - 246, -1, -1, 249, -1, -1, -1, 192, 193, -1, - -1, 196, 192, 193, 324, 325, 196, -1, 328, 324, - 325, -1, -1, 247, -1, -1, -1, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 247, 285, - 324, 325, -1, 137, -1, 355, 356, 357, 137, -1, - 355, 356, 357, -1, -1, 324, 325, 303, 304, 305, - 306, -1, 247, -1, 374, 375, -1, 247, -1, 374, - 375, 355, 356, 357, -1, -1, -1, -1, -1, -1, - 326, 327, -1, -1, -1, -1, 355, -1, 357, -1, - 374, 375, -1, -1, -1, -1, -1, -1, 192, 193, - 324, 325, 196, 192, 193, 374, 375, 196, -1, -1, - 27, 28, 358, 30, -1, 324, 325, 34, -1, -1, - -1, -1, -1, -1, -1, -1, 43, -1, -1, 46, - 30, 355, 356, 357, -1, 35, 36, 37, 38, 324, - 325, -1, -1, 43, 324, 325, 355, 356, 357, -1, - 374, 375, -1, 247, -1, -1, -1, -1, 247, -1, - -1, -1, -1, -1, -1, 374, 375, 84, 85, -1, - 355, 356, 357, -1, -1, 355, 356, 357, 8, -1, - -1, -1, -1, -1, 84, 85, -1, -1, -1, 374, - 375, -1, -1, -1, 374, 375, -1, 27, 28, 29, - 30, 31, 32, 33, -1, 35, 36, 37, 38, 39, - -1, -1, -1, 43, 44, -1, 30, 47, -1, -1, - -1, 35, 36, 37, 38, 27, 28, -1, 30, 43, - 324, 325, 34, 63, 64, 324, 325, 51, 52, -1, - -1, 43, -1, -1, 46, -1, -1, -1, -1, -1, - 80, -1, -1, 83, 84, 85, 86, 87, 88, 89, - -1, 355, 356, 357, -1, -1, 355, 356, 357, -1, - 84, 85, -1, -1, -1, -1, 3, 4, 5, -1, - 374, 375, 84, 85, 11, 374, 375, 14, 15, -1, - 17, 18, 19, -1, 21, 22, 23, 24, 25, 26, - 27, -1, -1, 30, -1, -1, -1, -1, 35, 36, - 37, 38, -1, -1, 41, 42, 43, -1, -1, -1, - -1, 3, 4, 5, 51, 52, -1, -1, -1, 11, - -1, -1, 14, 15, -1, 17, 18, 19, -1, 21, - 22, 23, 24, 25, 26, 27, -1, -1, 30, -1, - -1, -1, -1, 35, 36, 37, 38, 84, 85, 41, - 42, 43, -1, -1, -1, -1, 3, 4, 5, 51, - 52, -1, -1, -1, 11, -1, -1, 14, 15, -1, - 17, 18, 19, -1, 21, 22, 23, 24, 25, 26, - 27, -1, -1, 30, -1, -1, -1, 8, 35, 36, - 37, 38, 84, 85, 41, -1, 43, -1, -1, -1, - -1, -1, -1, -1, 51, 52, 27, 28, 29, 30, - 31, 32, 33, -1, 35, 36, 37, 38, 39, -1, - -1, -1, 43, -1, -1, -1, 47, -1, 49, 27, - 28, -1, 30, -1, -1, -1, 34, 84, 85, -1, - -1, -1, 63, 64, -1, 43, -1, -1, 46, -1, - 8, -1, -1, -1, -1, -1, -1, -1, -1, 80, - -1, -1, 83, 84, 85, 86, 87, 88, 89, 27, + 0, 26, 27, 87, 38, 5, 1, 26, 27, 250, + 6, 7, 39, 84, 40, 14, 40, 40, 18, 45, + 40, 45, 45, 0, 40, 45, 26, 27, 20, 45, + 39, 26, 27, 89, 90, 199, 49, 30, 65, 39, + 140, 66, 35, 36, 37, 38, 40, 66, 30, 86, + 43, 45, 85, 45, 140, 40, 53, 54, 51, 52, + 30, 43, 27, 28, 98, 30, 66, 40, 43, 34, + 85, 66, 45, 43, 39, 47, 46, 41, 43, 19, + 49, 46, 79, 80, 81, 82, 83, 43, 88, 85, + 39, 84, 85, 40, 47, 195, 196, 37, 45, 199, + 40, 41, 84, 85, 45, 130, 131, 43, 39, 195, + 196, 130, 131, 199, 84, 85, 357, 40, 40, 84, + 85, 49, 45, 45, 79, 80, 81, 82, 83, 44, + 130, 131, 39, 39, 134, 130, 131, 49, 138, 39, + 140, 80, 39, 39, 144, 140, 39, 86, 39, 48, + 250, 90, 91, 92, 93, 81, 82, 83, 98, 49, + 49, 325, 326, 49, 250, 49, 49, 44, 48, 90, + 48, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 189, 39, 356, 133, 358, 195, 196, 39, 39, 199, + 195, 196, 227, 143, 199, 145, 39, 147, 227, 149, + 140, 375, 376, 44, 39, 49, 39, 16, 20, 49, + 49, 49, 140, 40, 5, 325, 326, 227, 49, 49, + 49, 49, 227, 49, 49, 49, 140, 262, 263, 325, + 326, 5, 182, 262, 263, 140, 330, 357, 140, -1, + 250, 251, 189, 193, -1, 250, 356, 357, 358, -1, + -1, -1, 262, 263, -1, 195, 196, 262, 263, 199, + 356, 357, 358, 298, -1, 375, 376, 195, 196, 298, + -1, 199, -1, -1, -1, -1, -1, -1, -1, 375, + 376, 195, 196, 140, -1, 199, -1, -1, 298, 239, + 195, 196, -1, 298, 199, 137, -1, 199, 248, 249, + -1, -1, 252, -1, 140, -1, -1, -1, -1, -1, + 250, -1, -1, -1, -1, 325, 326, -1, -1, 329, + 325, 326, 250, -1, -1, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 250, 287, 195, 196, + -1, -1, 199, -1, -1, 250, 356, 357, 358, -1, + -1, 356, 357, 358, 304, 305, 306, 307, -1, 195, + 196, -1, -1, 199, -1, 375, 376, -1, -1, -1, + 375, 376, -1, -1, -1, -1, -1, 327, 328, -1, + 27, 28, -1, 30, -1, 325, 326, 34, 27, 28, + -1, 30, -1, 250, -1, 34, 43, 325, 326, 46, + 242, -1, 244, 245, 43, -1, -1, 46, -1, 359, + -1, 325, 326, -1, 250, -1, 356, 357, 358, -1, + 325, 326, -1, 325, 326, -1, 30, -1, 356, 357, + 358, 35, 36, 37, 38, 375, 376, 84, 85, 43, + -1, -1, 356, 357, 358, 84, 85, 375, 376, -1, + -1, 356, 357, 358, 356, -1, 358, 53, 54, -1, + -1, 375, 376, 59, 60, 61, 62, -1, 325, 326, + 375, 376, -1, 375, 376, -1, -1, -1, -1, 321, + 84, 85, -1, 79, 80, 81, 82, 83, -1, 325, + 326, -1, -1, 335, -1, -1, -1, -1, -1, 356, + 357, 358, -1, -1, -1, -1, 8, 349, -1, 351, + -1, 353, -1, -1, -1, -1, -1, -1, 375, 376, + 356, 357, 358, -1, -1, 27, 28, 29, 30, 31, + 32, 33, -1, 35, 36, 37, 38, 39, -1, 375, + 376, 43, 44, -1, -1, 47, -1, -1, 27, 28, + -1, 30, -1, 27, 28, 34, 30, -1, -1, -1, + 34, 63, 64, -1, 43, -1, -1, 46, -1, 43, + -1, -1, 46, 8, -1, -1, -1, -1, 80, -1, + -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 27, 28, 29, 30, 31, 32, 33, -1, + 35, 36, 37, 38, 39, 84, 85, -1, 43, -1, + 84, 85, 47, -1, 49, 27, 28, -1, 30, -1, + 27, 28, 34, 30, -1, -1, -1, 34, 63, 64, + -1, 43, -1, -1, 46, -1, 43, -1, -1, 46, + 8, -1, -1, -1, -1, 80, -1, -1, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 27, 28, 29, 30, 31, 32, 33, -1, 35, 36, 37, - 38, 39, -1, -1, -1, 43, 84, 85, -1, 47, - -1, -1, 27, 28, -1, 30, -1, -1, -1, 34, - 27, 28, -1, 30, -1, 63, 64, 34, 43, -1, - -1, 46, -1, 8, -1, -1, 43, -1, -1, 46, + 38, 39, 84, 85, -1, 43, -1, 84, 85, 47, + -1, -1, 27, 28, -1, 30, -1, 27, 28, 34, + 30, -1, -1, -1, 34, 63, 64, -1, 43, -1, + -1, 46, -1, 43, -1, -1, 46, 8, -1, -1, -1, -1, 80, -1, -1, 83, 84, 85, 86, 87, - 88, 89, 27, 28, 29, 30, 31, 32, 33, -1, - 35, 36, 37, 38, 39, -1, -1, -1, 43, 84, - 85, -1, 47, -1, -1, -1, -1, 84, 85, -1, - -1, 9, 10, -1, 12, 13, -1, -1, 63, 64, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 27, - -1, -1, 30, -1, -1, 80, -1, -1, 83, 84, - 85, 86, 87, 88, 89, 43, -1, -1, 46, -1, - -1, -1, -1, 51, 52, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 27, 28, - -1, 30, -1, -1, -1, 34, 84, 85, 27, 28, - -1, 30, -1, -1, 43, 34, -1, 46, -1, -1, - -1, -1, -1, -1, 43, -1, -1, 46, -1, -1, - -1, -1, 30, 53, 54, -1, -1, 57, 58, 59, - 60, 61, 62, -1, -1, 43, -1, -1, 46, -1, - -1, -1, -1, 51, 52, 84, 85, 77, 78, 79, - 80, 81, 82, 83, -1, 84, 85, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 40, -1, - -1, -1, -1, 45, -1, -1, 84, 85, 50, -1, - -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 76, 77, 78, 79, 80, 81, - 82, 83, 40, -1, -1, -1, -1, 45, -1, -1, - -1, -1, 50, -1, -1, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 76, 77, - 78, 79, 80, 81, 82, 83, 40, -1, -1, -1, - -1, 45, -1, -1, -1, -1, 50, -1, -1, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 76, 77, 78, 79, 80, 81, 82, 83, - 40, -1, -1, -1, -1, 45, -1, -1, -1, -1, - 50, -1, -1, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 40, -1, 76, 77, 78, 79, - 80, 81, 82, 83, 50, -1, -1, 53, 54, 55, + 88, 89, 90, 91, 92, 93, 27, 28, 29, 30, + 31, 32, 33, -1, 35, 36, 37, 38, 39, 84, + 85, -1, 43, -1, 84, 85, 47, 53, 54, -1, 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, - 76, 77, 78, 79, 80, 81, 82, 83, 50, -1, - -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 40, -1, 76, 77, 78, 79, 80, 81, - 82, 83, 50, -1, -1, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 40, -1, 76, 77, - 78, 79, 80, 81, 82, 83, 50, -1, -1, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 40, -1, 76, 77, 78, 79, 80, 81, 82, 83, - 50, -1, -1, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 40, -1, 76, 77, 78, 79, - 80, 81, 82, 83, 50, -1, -1, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, - 76, 77, 78, 79, 80, 81, 82, 83, 50, -1, - -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 76, 77, 78, 79, 80, 81, - 82, 83, 44, -1, -1, -1, -1, -1, 50, -1, - -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 76, 77, 78, 79, 80, 81, - 82, 83, 44, -1, -1, -1, -1, -1, 50, -1, - -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 76, 77, 78, 79, 80, 81, - 82, 83, 44, -1, -1, -1, -1, -1, 50, -1, - -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 76, 77, 78, 79, 80, 81, - 82, 83, 45, -1, -1, -1, -1, 50, -1, -1, + -1, -1, 63, 64, -1, -1, -1, -1, -1, -1, + 76, 77, 78, 79, 80, 81, 82, 83, -1, 80, + -1, -1, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 3, 4, 5, -1, -1, -1, -1, + -1, 11, -1, -1, 14, 15, -1, 17, 18, 19, + -1, 21, 22, 23, 24, 25, 26, 27, -1, -1, + 30, -1, -1, -1, -1, 35, 36, 37, 38, -1, + -1, 41, 42, 43, -1, -1, -1, -1, 3, 4, + 5, 51, 52, -1, -1, -1, 11, -1, -1, 14, + 15, -1, 17, 18, 19, -1, 21, 22, 23, 24, + 25, 26, 27, -1, -1, 30, -1, -1, -1, -1, + 35, 36, 37, 38, 84, 85, 41, 42, 43, -1, + -1, -1, -1, 3, 4, 5, 51, 52, -1, -1, + -1, 11, -1, -1, 14, 15, -1, 17, 18, 19, + -1, 21, 22, 23, 24, 25, 26, 27, -1, -1, + 30, -1, -1, -1, -1, 35, 36, 37, 38, 84, + 85, 41, -1, 43, 9, 10, -1, 12, 13, -1, + -1, 51, 52, 40, -1, -1, -1, -1, 45, -1, + -1, -1, 27, 50, -1, 30, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, -1, -1, 43, -1, + -1, 46, -1, -1, 84, 85, 51, 52, -1, 76, + 77, 78, 79, 80, 81, 82, 83, -1, -1, -1, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 30, -1, -1, -1, -1, -1, -1, -1, 84, + 85, -1, -1, -1, 43, -1, -1, 46, -1, -1, + -1, -1, 51, 52, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 40, -1, -1, + -1, -1, 45, -1, -1, 84, 85, 50, -1, -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, 77, 78, 79, 80, 81, 82, - 83, 48, -1, 50, -1, -1, 53, 54, 55, 56, + 83, 40, -1, -1, -1, -1, 45, -1, -1, -1, + -1, 50, -1, -1, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 76, 77, 78, + 79, 80, 81, 82, 83, 40, -1, -1, -1, -1, + 45, -1, -1, -1, -1, 50, -1, -1, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, + -1, 76, 77, 78, 79, 80, 81, 82, 83, 50, + -1, -1, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 40, -1, 76, 77, 78, 79, 80, + 81, 82, 83, 50, -1, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 40, -1, 76, + 77, 78, 79, 80, 81, 82, 83, 50, -1, -1, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 40, -1, 76, 77, 78, 79, 80, 81, 82, + 83, 50, -1, -1, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 40, -1, 76, 77, 78, + 79, 80, 81, 82, 83, 50, -1, -1, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, + -1, 76, 77, 78, 79, 80, 81, 82, 83, 50, + -1, -1, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 40, -1, 76, 77, 78, 79, 80, + 81, 82, 83, 50, -1, -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, - 77, 78, 79, 80, 81, 82, 83, 49, 50, -1, + 77, 78, 79, 80, 81, 82, 83, 44, -1, -1, + -1, -1, -1, 50, -1, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, + 77, 78, 79, 80, 81, 82, 83, 44, -1, -1, + -1, -1, -1, 50, -1, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, + 77, 78, 79, 80, 81, 82, 83, 44, -1, -1, + -1, -1, -1, 50, -1, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, + 77, 78, 79, 80, 81, 82, 83, 45, -1, -1, + -1, -1, 50, -1, -1, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 76, 77, + 78, 79, 80, 81, 82, 83, 48, -1, 50, -1, -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, 77, 78, 79, 80, 81, @@ -3949,88 +3983,92 @@ namespace xsk { namespace gsc { namespace iw7 { -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, 77, 78, 79, 80, 81, 82, 83, 49, 50, -1, -1, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 50, -1, -1, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 76, 77, 78, 79, 80, 81, - 82, 83, -1, -1, -1, -1, -1, 76, 77, 78, - 79, 80, 81, 82, 83, 53, 54, -1, 56, 57, - 58, 59, 60, 61, 62, 53, 54, -1, -1, 57, - 58, 59, 60, 61, 62, -1, -1, -1, 76, 77, - 78, 79, 80, 81, 82, 83, -1, -1, 76, 77, - 78, 79, 80, 81, 82, 83, 53, 54, -1, -1, - 57, 58, 59, 60, 61, 62, 53, 54, -1, -1, - 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, - 77, -1, 79, 80, 81, 82, 83, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83 + 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 76, 77, 78, 79, 80, 81, + 82, 83, 49, 50, -1, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 50, -1, -1, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 76, + 77, 78, 79, 80, 81, 82, 83, -1, -1, -1, + -1, -1, 76, 77, 78, 79, 80, 81, 82, 83, + 53, 54, -1, -1, 57, 58, 59, 60, 61, 62, + 53, 54, -1, -1, 57, 58, 59, 60, 61, 62, + -1, -1, -1, 76, 77, 78, 79, 80, 81, 82, + 83, -1, -1, -1, 77, 78, 79, 80, 81, 82, + 83, 53, 54, -1, -1, 57, 58, 59, 60, 61, + 62, 53, 54, -1, -1, 57, 58, 59, 60, 61, + 62, -1, -1, -1, -1, 77, -1, 79, 80, 81, + 82, 83, -1, -1, -1, -1, -1, 79, 80, 81, + 82, 83 }; const unsigned char parser::yystos_[] = { - 0, 6, 7, 85, 100, 101, 102, 103, 104, 105, - 106, 164, 84, 165, 39, 0, 102, 103, 39, 65, - 49, 86, 167, 107, 164, 8, 27, 28, 29, 30, + 0, 6, 7, 85, 104, 105, 106, 107, 108, 109, + 110, 170, 84, 171, 39, 0, 106, 107, 39, 65, + 49, 86, 173, 111, 170, 8, 27, 28, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 43, 47, - 63, 64, 80, 83, 87, 88, 89, 135, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 63, 64, 80, 83, 87, 88, 89, 90, 91, 92, + 93, 139, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 40, 40, 45, 43, 144, 145, 164, - 165, 144, 145, 43, 135, 43, 44, 135, 146, 147, - 148, 164, 135, 135, 88, 89, 85, 49, 50, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 76, - 77, 78, 79, 80, 81, 82, 83, 27, 28, 34, - 43, 46, 144, 145, 39, 47, 49, 41, 109, 164, - 43, 47, 43, 40, 45, 135, 45, 44, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 144, 145, 144, - 145, 135, 164, 146, 147, 164, 3, 4, 5, 11, - 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, - 26, 42, 51, 52, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 136, - 141, 142, 151, 152, 154, 158, 159, 160, 161, 164, - 135, 164, 135, 135, 44, 135, 48, 44, 40, 39, - 49, 39, 39, 135, 49, 39, 39, 39, 39, 39, - 80, 167, 170, 172, 48, 49, 49, 49, 135, 141, - 154, 154, 42, 108, 49, 49, 49, 9, 10, 12, - 13, 51, 52, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 44, 45, 44, 135, 146, 146, - 146, 49, 135, 135, 133, 136, 154, 164, 135, 48, - 48, 48, 49, 39, 39, 39, 39, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 44, 135, - 39, 40, 40, 40, 40, 40, 49, 20, 45, 40, - 135, 135, 135, 135, 39, 40, 146, 49, 49, 108, - 108, 134, 135, 135, 164, 109, 40, 40, 45, 40, - 45, 40, 45, 146, 40, 16, 49, 40, 20, 49, - 49, 146, 49, 146, 49, 146, 40, 108, 133, 108, - 135, 40, 40, 40, 40, 40, 49, 49, 49, 108, - 108 + 172, 173, 174, 175, 176, 177, 40, 40, 45, 43, + 148, 149, 170, 171, 148, 149, 43, 139, 43, 44, + 139, 150, 151, 152, 170, 139, 139, 89, 90, 85, + 49, 50, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 76, 77, 78, 79, 80, 81, 82, 83, + 27, 28, 34, 43, 46, 148, 149, 39, 47, 49, + 41, 113, 170, 43, 47, 43, 40, 45, 139, 45, + 44, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 148, 149, 148, 149, 139, 170, 150, 151, 170, 3, + 4, 5, 11, 14, 15, 17, 18, 19, 21, 22, + 23, 24, 25, 26, 42, 51, 52, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 140, 145, 146, 155, 156, 158, 164, 165, + 166, 167, 170, 139, 170, 139, 139, 44, 139, 48, + 44, 40, 39, 49, 39, 39, 139, 49, 39, 39, + 39, 39, 39, 80, 160, 173, 48, 49, 49, 49, + 139, 145, 158, 158, 42, 112, 49, 49, 49, 9, + 10, 12, 13, 51, 52, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 44, 45, 44, 139, + 150, 150, 150, 49, 139, 139, 137, 140, 158, 170, + 139, 48, 48, 49, 39, 39, 39, 39, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 44, + 139, 39, 40, 40, 40, 40, 40, 49, 20, 45, + 40, 139, 139, 139, 139, 39, 40, 150, 49, 49, + 112, 112, 138, 139, 139, 170, 113, 40, 40, 45, + 40, 45, 40, 45, 150, 40, 16, 49, 40, 20, + 49, 49, 150, 49, 150, 49, 150, 40, 112, 137, + 112, 139, 40, 40, 40, 40, 40, 49, 49, 49, + 112, 112 }; const unsigned char parser::yyr1_[] = { - 0, 99, 100, 100, 101, 101, 101, 101, 102, 103, - 103, 103, 104, 105, 106, 107, 107, 107, 108, 108, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, - 108, 109, 109, 110, 110, 111, 111, 112, 113, 114, - 114, 115, 116, 116, 117, 117, 118, 119, 120, 121, - 122, 123, 123, 124, 125, 125, 125, 126, 127, 128, - 129, 129, 130, 131, 132, 133, 133, 134, 134, 135, - 135, 135, 135, 136, 136, 136, 136, 136, 136, 136, - 136, 136, 136, 136, 136, 136, 136, 136, 137, 137, - 137, 137, 137, 137, 137, 137, 138, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 0, 103, 104, 104, 105, 105, 105, 105, 106, 107, + 107, 107, 108, 109, 110, 111, 111, 111, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 113, 113, 114, 114, 115, 115, 116, 117, 118, + 118, 119, 120, 120, 121, 121, 122, 123, 124, 125, + 126, 127, 127, 128, 129, 129, 130, 131, 132, 133, + 133, 134, 135, 136, 137, 137, 138, 138, 139, 139, + 139, 139, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 141, 141, 141, - 141, 142, 142, 142, 142, 143, 143, 143, 143, 144, - 144, 145, 145, 146, 146, 147, 147, 148, 149, 149, - 150, 151, 152, 153, 154, 154, 154, 154, 154, 154, - 154, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174 + 141, 141, 141, 141, 141, 142, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 145, 145, 145, 145, 146, + 146, 146, 146, 147, 147, 147, 147, 148, 148, 149, + 149, 150, 150, 151, 151, 152, 153, 153, 154, 155, + 156, 157, 158, 158, 158, 158, 158, 158, 158, 158, + 159, 159, 160, 160, 160, 160, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177 }; const signed char @@ -4042,21 +4080,21 @@ namespace xsk { namespace gsc { namespace iw7 { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 1, 2, 2, 2, 6, 8, 6, 3, 8, 6, 8, 6, 2, 5, 7, 5, - 9, 7, 9, 5, 3, 3, 3, 2, 2, 2, - 3, 2, 2, 5, 5, 1, 0, 1, 0, 1, - 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, + 9, 7, 9, 5, 3, 3, 2, 2, 2, 3, + 2, 2, 5, 5, 1, 0, 1, 0, 1, 1, + 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, + 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 3, 3, 2, 2, 3, 3, 4, - 6, 8, 9, 1, 1, 3, 1, 0, 2, 3, - 3, 4, 3, 2, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, - 1, 1, 1, 1, 1, 7, 2, 2, 1, 1, - 1, 1 + 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, + 2, 3, 3, 2, 2, 3, 3, 4, 6, 8, + 9, 1, 1, 3, 1, 0, 2, 3, 3, 4, + 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 1, 2, 1, 1, 1, 1, 1, 2, 1, + 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, + 1, 7, 1, 1 }; @@ -4066,27 +4104,27 @@ namespace xsk { namespace gsc { namespace iw7 { const short parser::yyrline_[] = { - 0, 241, 241, 242, 246, 248, 250, 252, 257, 262, - 263, 264, 268, 273, 278, 283, 285, 288, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 318, 319, 323, 325, 330, 332, 337, 342, 347, - 349, 354, 359, 361, 366, 368, 373, 378, 383, 388, - 393, 398, 400, 405, 410, 412, 414, 419, 424, 429, - 434, 436, 441, 446, 451, 456, 457, 461, 462, 466, - 467, 468, 469, 473, 474, 475, 476, 477, 478, 479, - 480, 481, 482, 483, 484, 485, 486, 487, 491, 492, - 493, 494, 495, 496, 497, 498, 502, 506, 507, 508, - 509, 510, 511, 512, 513, 514, 515, 519, 520, 521, - 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, - 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 552, 553, 554, - 555, 559, 560, 561, 562, 566, 567, 568, 569, 573, - 575, 580, 582, 587, 588, 592, 594, 600, 604, 606, - 611, 616, 621, 626, 631, 632, 633, 634, 635, 636, - 637, 638, 641, 642, 643, 644, 645, 646, 647, 648, - 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, - 659, 660 + 0, 244, 244, 245, 249, 251, 253, 255, 260, 265, + 266, 267, 271, 276, 281, 286, 288, 291, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 321, 322, 326, 328, 333, 335, 340, 345, 350, + 352, 357, 362, 364, 369, 371, 376, 381, 386, 391, + 396, 401, 403, 408, 413, 415, 420, 425, 430, 435, + 437, 442, 447, 452, 457, 458, 462, 463, 467, 468, + 469, 470, 474, 475, 476, 477, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 492, 493, 494, + 495, 496, 497, 498, 499, 503, 507, 508, 509, 510, + 511, 512, 513, 514, 515, 516, 520, 521, 522, 523, + 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, + 544, 545, 546, 547, 548, 552, 553, 554, 555, 559, + 560, 561, 562, 566, 567, 568, 569, 573, 575, 580, + 582, 587, 588, 592, 594, 600, 604, 606, 611, 616, + 621, 626, 631, 632, 633, 634, 635, 636, 637, 638, + 642, 643, 647, 648, 649, 650, 651, 654, 655, 656, + 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, + 667, 668, 669, 670 }; void @@ -4119,9 +4157,9 @@ namespace xsk { namespace gsc { namespace iw7 { #line 13 "parser.ypp" } } } // xsk::gsc::iw7 -#line 4123 "parser.cpp" +#line 4161 "parser.cpp" -#line 662 "parser.ypp" +#line 672 "parser.ypp" void xsk::gsc::iw7::parser::error(const xsk::gsc::location& loc, const std::string& msg) diff --git a/src/iw7/xsk/parser.hpp b/src/iw7/xsk/parser.hpp index 3d9dd446..79d98d11 100644 --- a/src/iw7/xsk/parser.hpp +++ b/src/iw7/xsk/parser.hpp @@ -417,31 +417,34 @@ namespace xsk { namespace gsc { namespace iw7 { // animtree char dummy3[sizeof (animtree_ptr)]; + // color + char dummy4[sizeof (color_ptr)]; + // constant - char dummy4[sizeof (constant_ptr)]; + char dummy5[sizeof (constant_ptr)]; // define - char dummy5[sizeof (define_ptr)]; + char dummy6[sizeof (define_ptr)]; // empty_array - char dummy6[sizeof (empty_array_ptr)]; + char dummy7[sizeof (empty_array_ptr)]; // expr_arguments // expr_arguments_filled // expr_arguments_empty - char dummy7[sizeof (expr_arguments_ptr)]; + char dummy8[sizeof (expr_arguments_ptr)]; // expr_assign - char dummy8[sizeof (expr_assign_ptr)]; + char dummy9[sizeof (expr_assign_ptr)]; // expr_call // expr_call_thread // expr_call_childthread - char dummy9[sizeof (expr_call_ptr)]; + char dummy10[sizeof (expr_call_ptr)]; // expr_call_function // expr_call_pointer - char dummy10[sizeof (expr_call_type_ptr)]; + char dummy11[sizeof (expr_call_type_ptr)]; // for_expr // expr @@ -449,36 +452,34 @@ namespace xsk { namespace gsc { namespace iw7 { // expr_ternary // expr_binary // expr_primitive - char dummy11[sizeof (expr_ptr)]; + char dummy12[sizeof (expr_ptr)]; // false - char dummy12[sizeof (false_ptr)]; + char dummy13[sizeof (false_ptr)]; // file - char dummy13[sizeof (file_ptr)]; + char dummy14[sizeof (file_ptr)]; - // neg_float // float - char dummy14[sizeof (float_ptr)]; + char dummy15[sizeof (float_ptr)]; // game - char dummy15[sizeof (game_ptr)]; + char dummy16[sizeof (game_ptr)]; // include - char dummy16[sizeof (include_ptr)]; + char dummy17[sizeof (include_ptr)]; - // neg_integer // integer - char dummy17[sizeof (integer_ptr)]; + char dummy18[sizeof (integer_ptr)]; // istring - char dummy18[sizeof (istring_ptr)]; + char dummy19[sizeof (istring_ptr)]; // level - char dummy19[sizeof (level_ptr)]; + char dummy20[sizeof (level_ptr)]; // name - char dummy20[sizeof (name_ptr)]; + char dummy21[sizeof (name_ptr)]; // expr_function // expr_add_array @@ -486,119 +487,123 @@ namespace xsk { namespace gsc { namespace iw7 { // expr_field // expr_size // object - char dummy21[sizeof (node_ptr)]; + char dummy22[sizeof (node_ptr)]; // parameters - char dummy22[sizeof (parameters_ptr)]; + char dummy23[sizeof (parameters_ptr)]; // program - char dummy23[sizeof (program_ptr)]; + char dummy24[sizeof (program_ptr)]; // self - char dummy24[sizeof (self_ptr)]; + char dummy25[sizeof (self_ptr)]; // "file path" // "identifier" // "string literal" // "localized string" + // "color" // "float" // "int" - char dummy25[sizeof (std::string)]; + // "octal int" + // "binary int" + // "hexadecimal int" + char dummy26[sizeof (std::string)]; // stmt_assign - char dummy26[sizeof (stmt_assign_ptr)]; + char dummy27[sizeof (stmt_assign_ptr)]; // stmt_break - char dummy27[sizeof (stmt_break_ptr)]; + char dummy28[sizeof (stmt_break_ptr)]; // stmt_breakpoint - char dummy28[sizeof (stmt_breakpoint_ptr)]; + char dummy29[sizeof (stmt_breakpoint_ptr)]; // stmt_call - char dummy29[sizeof (stmt_call_ptr)]; + char dummy30[sizeof (stmt_call_ptr)]; // stmt_case - char dummy30[sizeof (stmt_case_ptr)]; + char dummy31[sizeof (stmt_case_ptr)]; // stmt_continue - char dummy31[sizeof (stmt_continue_ptr)]; + char dummy32[sizeof (stmt_continue_ptr)]; // stmt_default - char dummy32[sizeof (stmt_default_ptr)]; + char dummy33[sizeof (stmt_default_ptr)]; // stmt_endon - char dummy33[sizeof (stmt_endon_ptr)]; + char dummy34[sizeof (stmt_endon_ptr)]; // stmt_for - char dummy34[sizeof (stmt_for_ptr)]; + char dummy35[sizeof (stmt_for_ptr)]; // stmt_foreach - char dummy35[sizeof (stmt_foreach_ptr)]; + char dummy36[sizeof (stmt_foreach_ptr)]; // stmt_if - char dummy36[sizeof (stmt_if_ptr)]; + char dummy37[sizeof (stmt_if_ptr)]; // stmt_ifelse - char dummy37[sizeof (stmt_ifelse_ptr)]; + char dummy38[sizeof (stmt_ifelse_ptr)]; // stmt_block // stmt_list - char dummy38[sizeof (stmt_list_ptr)]; + char dummy39[sizeof (stmt_list_ptr)]; // stmt_notify - char dummy39[sizeof (stmt_notify_ptr)]; + char dummy40[sizeof (stmt_notify_ptr)]; // stmt_prof_begin - char dummy40[sizeof (stmt_prof_begin_ptr)]; + char dummy41[sizeof (stmt_prof_begin_ptr)]; // stmt_prof_end - char dummy41[sizeof (stmt_prof_end_ptr)]; + char dummy42[sizeof (stmt_prof_end_ptr)]; // stmt // for_stmt - char dummy42[sizeof (stmt_ptr)]; + char dummy43[sizeof (stmt_ptr)]; // stmt_return - char dummy43[sizeof (stmt_return_ptr)]; + char dummy44[sizeof (stmt_return_ptr)]; // stmt_switch - char dummy44[sizeof (stmt_switch_ptr)]; + char dummy45[sizeof (stmt_switch_ptr)]; // stmt_wait - char dummy45[sizeof (stmt_wait_ptr)]; + char dummy46[sizeof (stmt_wait_ptr)]; // stmt_waittill - char dummy46[sizeof (stmt_waittill_ptr)]; + char dummy47[sizeof (stmt_waittill_ptr)]; // stmt_waittillframeend - char dummy47[sizeof (stmt_waittillframeend_ptr)]; + char dummy48[sizeof (stmt_waittillframeend_ptr)]; // stmt_waittillmatch - char dummy48[sizeof (stmt_waittillmatch_ptr)]; + char dummy49[sizeof (stmt_waittillmatch_ptr)]; // stmt_while - char dummy49[sizeof (stmt_while_ptr)]; + char dummy50[sizeof (stmt_while_ptr)]; // string - char dummy50[sizeof (string_ptr)]; + char dummy51[sizeof (string_ptr)]; // thisthread - char dummy51[sizeof (thisthread_ptr)]; + char dummy52[sizeof (thisthread_ptr)]; // thread - char dummy52[sizeof (thread_ptr)]; + char dummy53[sizeof (thread_ptr)]; // true - char dummy53[sizeof (true_ptr)]; + char dummy54[sizeof (true_ptr)]; // undefined - char dummy54[sizeof (undefined_ptr)]; + char dummy55[sizeof (undefined_ptr)]; // usingtree - char dummy55[sizeof (usingtree_ptr)]; + char dummy56[sizeof (usingtree_ptr)]; // vector - char dummy56[sizeof (vector_ptr)]; + char dummy57[sizeof (vector_ptr)]; }; /// The size of the largest semantic type. @@ -735,17 +740,21 @@ namespace xsk { namespace gsc { namespace iw7 { NAME = 85, // "identifier" STRING = 86, // "string literal" ISTRING = 87, // "localized string" - FLOAT = 88, // "float" - INTEGER = 89, // "int" - ADD_ARRAY = 90, // ADD_ARRAY - THEN = 91, // THEN - TERN = 92, // TERN - NEG = 93, // NEG - ANIMREF = 94, // ANIMREF - PREINC = 95, // PREINC - PREDEC = 96, // PREDEC - POSTINC = 97, // POSTINC - POSTDEC = 98 // POSTDEC + COLOR = 88, // "color" + FLOAT = 89, // "float" + INT_DEC = 90, // "int" + INT_OCT = 91, // "octal int" + INT_BIN = 92, // "binary int" + INT_HEX = 93, // "hexadecimal int" + ADD_ARRAY = 94, // ADD_ARRAY + THEN = 95, // THEN + TERN = 96, // TERN + NEG = 97, // NEG + ANIMREF = 98, // ANIMREF + PREINC = 99, // PREINC + PREDEC = 100, // PREDEC + POSTINC = 101, // POSTINC + POSTDEC = 102 // POSTDEC }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; @@ -762,7 +771,7 @@ namespace xsk { namespace gsc { namespace iw7 { { enum symbol_kind_type { - YYNTOKENS = 99, ///< Number of tokens. + YYNTOKENS = 103, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error @@ -852,93 +861,96 @@ namespace xsk { namespace gsc { namespace iw7 { S_NAME = 85, // "identifier" S_STRING = 86, // "string literal" S_ISTRING = 87, // "localized string" - S_FLOAT = 88, // "float" - S_INTEGER = 89, // "int" - S_ADD_ARRAY = 90, // ADD_ARRAY - S_THEN = 91, // THEN - S_TERN = 92, // TERN - S_NEG = 93, // NEG - S_ANIMREF = 94, // ANIMREF - S_PREINC = 95, // PREINC - S_PREDEC = 96, // PREDEC - S_POSTINC = 97, // POSTINC - S_POSTDEC = 98, // POSTDEC - S_YYACCEPT = 99, // $accept - S_root = 100, // root - S_program = 101, // program - S_include = 102, // include - S_define = 103, // define - S_usingtree = 104, // usingtree - S_constant = 105, // constant - S_thread = 106, // thread - S_parameters = 107, // parameters - S_stmt = 108, // stmt - S_stmt_block = 109, // stmt_block - S_stmt_list = 110, // stmt_list - S_stmt_call = 111, // stmt_call - S_stmt_assign = 112, // stmt_assign - S_stmt_endon = 113, // stmt_endon - S_stmt_notify = 114, // stmt_notify - S_stmt_wait = 115, // stmt_wait - S_stmt_waittill = 116, // stmt_waittill - S_stmt_waittillmatch = 117, // stmt_waittillmatch - S_stmt_waittillframeend = 118, // stmt_waittillframeend - S_stmt_if = 119, // stmt_if - S_stmt_ifelse = 120, // stmt_ifelse - S_stmt_while = 121, // stmt_while - S_stmt_for = 122, // stmt_for - S_stmt_foreach = 123, // stmt_foreach - S_stmt_switch = 124, // stmt_switch - S_stmt_case = 125, // stmt_case - S_stmt_default = 126, // stmt_default - S_stmt_break = 127, // stmt_break - S_stmt_continue = 128, // stmt_continue - S_stmt_return = 129, // stmt_return - S_stmt_breakpoint = 130, // stmt_breakpoint - S_stmt_prof_begin = 131, // stmt_prof_begin - S_stmt_prof_end = 132, // stmt_prof_end - S_for_stmt = 133, // for_stmt - S_for_expr = 134, // for_expr - S_expr = 135, // expr - S_expr_assign = 136, // expr_assign - S_expr_compare = 137, // expr_compare - S_expr_ternary = 138, // expr_ternary - S_expr_binary = 139, // expr_binary - S_expr_primitive = 140, // expr_primitive - S_expr_call = 141, // expr_call - S_expr_call_thread = 142, // expr_call_thread - S_expr_call_childthread = 143, // expr_call_childthread - S_expr_call_function = 144, // expr_call_function - S_expr_call_pointer = 145, // expr_call_pointer - S_expr_arguments = 146, // expr_arguments - S_expr_arguments_filled = 147, // expr_arguments_filled - S_expr_arguments_empty = 148, // expr_arguments_empty - S_expr_function = 149, // expr_function - S_expr_add_array = 150, // expr_add_array - S_expr_array = 151, // expr_array - S_expr_field = 152, // expr_field - S_expr_size = 153, // expr_size - S_object = 154, // object - S_thisthread = 155, // thisthread - S_empty_array = 156, // empty_array - S_undefined = 157, // undefined - S_game = 158, // game - S_self = 159, // self - S_anim = 160, // anim - S_level = 161, // level - S_animation = 162, // animation - S_animtree = 163, // animtree - S_name = 164, // name - S_file = 165, // file - S_istring = 166, // istring - S_string = 167, // string - S_vector = 168, // vector - S_neg_float = 169, // neg_float - S_neg_integer = 170, // neg_integer - S_float = 171, // float - S_integer = 172, // integer - S_false = 173, // false - S_true = 174 // true + S_COLOR = 88, // "color" + S_FLOAT = 89, // "float" + S_INT_DEC = 90, // "int" + S_INT_OCT = 91, // "octal int" + S_INT_BIN = 92, // "binary int" + S_INT_HEX = 93, // "hexadecimal int" + S_ADD_ARRAY = 94, // ADD_ARRAY + S_THEN = 95, // THEN + S_TERN = 96, // TERN + S_NEG = 97, // NEG + S_ANIMREF = 98, // ANIMREF + S_PREINC = 99, // PREINC + S_PREDEC = 100, // PREDEC + S_POSTINC = 101, // POSTINC + S_POSTDEC = 102, // POSTDEC + S_YYACCEPT = 103, // $accept + S_root = 104, // root + S_program = 105, // program + S_include = 106, // include + S_define = 107, // define + S_usingtree = 108, // usingtree + S_constant = 109, // constant + S_thread = 110, // thread + S_parameters = 111, // parameters + S_stmt = 112, // stmt + S_stmt_block = 113, // stmt_block + S_stmt_list = 114, // stmt_list + S_stmt_call = 115, // stmt_call + S_stmt_assign = 116, // stmt_assign + S_stmt_endon = 117, // stmt_endon + S_stmt_notify = 118, // stmt_notify + S_stmt_wait = 119, // stmt_wait + S_stmt_waittill = 120, // stmt_waittill + S_stmt_waittillmatch = 121, // stmt_waittillmatch + S_stmt_waittillframeend = 122, // stmt_waittillframeend + S_stmt_if = 123, // stmt_if + S_stmt_ifelse = 124, // stmt_ifelse + S_stmt_while = 125, // stmt_while + S_stmt_for = 126, // stmt_for + S_stmt_foreach = 127, // stmt_foreach + S_stmt_switch = 128, // stmt_switch + S_stmt_case = 129, // stmt_case + S_stmt_default = 130, // stmt_default + S_stmt_break = 131, // stmt_break + S_stmt_continue = 132, // stmt_continue + S_stmt_return = 133, // stmt_return + S_stmt_breakpoint = 134, // stmt_breakpoint + S_stmt_prof_begin = 135, // stmt_prof_begin + S_stmt_prof_end = 136, // stmt_prof_end + S_for_stmt = 137, // for_stmt + S_for_expr = 138, // for_expr + S_expr = 139, // expr + S_expr_assign = 140, // expr_assign + S_expr_compare = 141, // expr_compare + S_expr_ternary = 142, // expr_ternary + S_expr_binary = 143, // expr_binary + S_expr_primitive = 144, // expr_primitive + S_expr_call = 145, // expr_call + S_expr_call_thread = 146, // expr_call_thread + S_expr_call_childthread = 147, // expr_call_childthread + S_expr_call_function = 148, // expr_call_function + S_expr_call_pointer = 149, // expr_call_pointer + S_expr_arguments = 150, // expr_arguments + S_expr_arguments_filled = 151, // expr_arguments_filled + S_expr_arguments_empty = 152, // expr_arguments_empty + S_expr_function = 153, // expr_function + S_expr_add_array = 154, // expr_add_array + S_expr_array = 155, // expr_array + S_expr_field = 156, // expr_field + S_expr_size = 157, // expr_size + S_object = 158, // object + S_float = 159, // float + S_integer = 160, // integer + S_thisthread = 161, // thisthread + S_empty_array = 162, // empty_array + S_undefined = 163, // undefined + S_game = 164, // game + S_self = 165, // self + S_anim = 166, // anim + S_level = 167, // level + S_animation = 168, // animation + S_animtree = 169, // animtree + S_name = 170, // name + S_file = 171, // file + S_istring = 172, // istring + S_string = 173, // string + S_color = 174, // color + S_vector = 175, // vector + S_false = 176, // false + S_true = 177 // true }; }; @@ -987,6 +999,10 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< animtree_ptr > (std::move (that.value)); break; + case symbol_kind::S_color: // color + value.move< color_ptr > (std::move (that.value)); + break; + case symbol_kind::S_constant: // constant value.move< constant_ptr > (std::move (that.value)); break; @@ -1037,7 +1053,6 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< file_ptr > (std::move (that.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.move< float_ptr > (std::move (that.value)); break; @@ -1050,7 +1065,6 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< include_ptr > (std::move (that.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.move< integer_ptr > (std::move (that.value)); break; @@ -1092,8 +1106,12 @@ namespace xsk { namespace gsc { namespace iw7 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.move< std::string > (std::move (that.value)); break; @@ -1288,6 +1306,20 @@ namespace xsk { namespace gsc { namespace iw7 { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, color_ptr&& v, location_type&& l) + : Base (t) + , value (std::move (v)) + , location (std::move (l)) + {} +#else + basic_symbol (typename Base::kind_type t, const color_ptr& v, const location_type& l) + : Base (t) + , value (v) + , location (l) + {} +#endif + #if 201103L <= YY_CPLUSPLUS basic_symbol (typename Base::kind_type t, constant_ptr&& v, location_type&& l) : Base (t) @@ -2064,6 +2096,10 @@ switch (yykind) value.template destroy< animtree_ptr > (); break; + case symbol_kind::S_color: // color + value.template destroy< color_ptr > (); + break; + case symbol_kind::S_constant: // constant value.template destroy< constant_ptr > (); break; @@ -2114,7 +2150,6 @@ switch (yykind) value.template destroy< file_ptr > (); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.template destroy< float_ptr > (); break; @@ -2127,7 +2162,6 @@ switch (yykind) value.template destroy< include_ptr > (); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.template destroy< integer_ptr > (); break; @@ -2169,8 +2203,12 @@ switch (yykind) case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.template destroy< std::string > (); break; @@ -2406,7 +2444,7 @@ switch (yykind) : super_type(token_type (tok), v, l) #endif { - IW7_ASSERT ((token::FILE <= tok && tok <= token::INTEGER)); + IW7_ASSERT ((token::FILE <= tok && tok <= token::INT_HEX)); } }; @@ -3776,6 +3814,21 @@ switch (yykind) return symbol_type (token::ISTRING, v, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_COLOR (std::string v, location_type l) + { + return symbol_type (token::COLOR, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_COLOR (const std::string& v, const location_type& l) + { + return symbol_type (token::COLOR, v, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -3794,16 +3847,61 @@ switch (yykind) #if 201103L <= YY_CPLUSPLUS static symbol_type - make_INTEGER (std::string v, location_type l) + make_INT_DEC (std::string v, location_type l) { - return symbol_type (token::INTEGER, std::move (v), std::move (l)); + return symbol_type (token::INT_DEC, std::move (v), std::move (l)); } #else static symbol_type - make_INTEGER (const std::string& v, const location_type& l) + make_INT_DEC (const std::string& v, const location_type& l) { - return symbol_type (token::INTEGER, v, l); + return symbol_type (token::INT_DEC, v, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_INT_OCT (std::string v, location_type l) + { + return symbol_type (token::INT_OCT, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_INT_OCT (const std::string& v, const location_type& l) + { + return symbol_type (token::INT_OCT, v, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_INT_BIN (std::string v, location_type l) + { + return symbol_type (token::INT_BIN, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_INT_BIN (const std::string& v, const location_type& l) + { + return symbol_type (token::INT_BIN, v, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_INT_HEX (std::string v, location_type l) + { + return symbol_type (token::INT_HEX, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_INT_HEX (const std::string& v, const location_type& l) + { + return symbol_type (token::INT_HEX, v, l); } #endif #if 201103L <= YY_CPLUSPLUS @@ -4285,8 +4383,8 @@ switch (yykind) /// Constants. enum { - yylast_ = 1836, ///< Last index in yytable_. - yynnts_ = 76, ///< Number of nonterminal symbols. + yylast_ = 1811, ///< Last index in yytable_. + yynnts_ = 75, ///< Number of nonterminal symbols. yyfinal_ = 15 ///< Termination state number. }; @@ -4326,6 +4424,10 @@ switch (yykind) value.copy< animtree_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_color: // color + value.copy< color_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_constant: // constant value.copy< constant_ptr > (YY_MOVE (that.value)); break; @@ -4376,7 +4478,6 @@ switch (yykind) value.copy< file_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.copy< float_ptr > (YY_MOVE (that.value)); break; @@ -4389,7 +4490,6 @@ switch (yykind) value.copy< include_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.copy< integer_ptr > (YY_MOVE (that.value)); break; @@ -4431,8 +4531,12 @@ switch (yykind) case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.copy< std::string > (YY_MOVE (that.value)); break; @@ -4603,6 +4707,10 @@ switch (yykind) value.move< animtree_ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_color: // color + value.move< color_ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_constant: // constant value.move< constant_ptr > (YY_MOVE (s.value)); break; @@ -4653,7 +4761,6 @@ switch (yykind) value.move< file_ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.move< float_ptr > (YY_MOVE (s.value)); break; @@ -4666,7 +4773,6 @@ switch (yykind) value.move< include_ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.move< integer_ptr > (YY_MOVE (s.value)); break; @@ -4708,8 +4814,12 @@ switch (yykind) case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.move< std::string > (YY_MOVE (s.value)); break; @@ -4902,7 +5012,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::iw7 -#line 4906 "parser.hpp" +#line 5016 "parser.hpp" diff --git a/src/s1/xsk/compiler.cpp b/src/s1/xsk/compiler.cpp index 9cda7fef..1aa4d19e 100644 --- a/src/s1/xsk/compiler.cpp +++ b/src/s1/xsk/compiler.cpp @@ -791,6 +791,7 @@ void compiler::emit_expr(const gsc::context_ptr& ctx, const gsc::expr_ptr& expr) case gsc::node_t::data_name: emit_local_variable(ctx, expr.as_name); break; case gsc::node_t::data_istring: emit_istring(ctx, expr.as_istring); break; case gsc::node_t::data_string: emit_string(ctx, expr.as_string); break; + case gsc::node_t::data_color: emit_color(ctx, expr.as_color); break; case gsc::node_t::data_vector: emit_vector(ctx, expr.as_vector); break; case gsc::node_t::data_float: emit_float(ctx, expr.as_float); break; case gsc::node_t::data_integer: emit_integer(ctx, expr.as_integer); break; @@ -1612,6 +1613,30 @@ void compiler::emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& s emit_opcode(ctx, opcode::OP_GetString, str->value); } +void compiler::emit_color(const gsc::context_ptr& ctx, const gsc::color_ptr& color) +{ + std::vector data; + std::string x, y, z; + + if(color->value.size() == 3) + { + x = "0x" + color->value.substr(0, 1) + color->value.substr(0, 1); + y = "0x" + color->value.substr(1, 1) + color->value.substr(1, 1); + z = "0x" + color->value.substr(2, 1) + color->value.substr(2, 1); + } + else + { + x = "0x" + color->value.substr(0, 2); + y = "0x" + color->value.substr(2, 2); + z = "0x" + color->value.substr(4, 2); + } + + data.push_back(gsc::utils::string::hex_to_dec(x.data())); + data.push_back(gsc::utils::string::hex_to_dec(y.data())); + data.push_back(gsc::utils::string::hex_to_dec(z.data())); + emit_opcode(ctx, opcode::OP_GetVector, data); +} + void compiler::emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec) { std::vector data; diff --git a/src/s1/xsk/compiler.hpp b/src/s1/xsk/compiler.hpp index 26a91bdc..36690114 100644 --- a/src/s1/xsk/compiler.hpp +++ b/src/s1/xsk/compiler.hpp @@ -102,6 +102,7 @@ private: void emit_animation(const gsc::context_ptr& ctx, const gsc::animation_ptr& animation); void emit_istring(const gsc::context_ptr& ctx, const gsc::istring_ptr& str); void emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& str); + void emit_color(const gsc::context_ptr& ctx, const gsc::color_ptr& color); void emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec); void emit_float(const gsc::context_ptr& ctx, const gsc::float_ptr& num); void emit_integer(const gsc::context_ptr& ctx, const gsc::integer_ptr& num); diff --git a/src/s1/xsk/lexer.cpp b/src/s1/xsk/lexer.cpp index 5a936fb6..e00578d7 100644 --- a/src/s1/xsk/lexer.cpp +++ b/src/s1/xsk/lexer.cpp @@ -553,8 +553,8 @@ static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 101 -#define YY_END_OF_BUFFER 102 +#define YY_NUM_RULES 105 +#define YY_END_OF_BUFFER 106 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -562,42 +562,43 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[306] = +static const flex_int16_t yy_accept[319] = { 0, - 0, 0, 0, 0, 0, 0, 102, 100, 1, 2, - 89, 100, 100, 88, 92, 100, 49, 50, 86, 84, - 55, 85, 56, 87, 99, 58, 59, 73, 83, 74, - 60, 95, 53, 54, 93, 95, 95, 95, 95, 95, + 0, 0, 0, 0, 0, 0, 106, 104, 1, 2, + 89, 104, 104, 88, 92, 104, 49, 50, 86, 84, + 55, 85, 56, 87, 103, 103, 58, 59, 73, 83, + 74, 60, 95, 53, 54, 93, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 51, 91, 52, 90, 5, 6, 5, 9, 10, - 9, 70, 0, 97, 0, 0, 0, 0, 79, 0, - 68, 0, 81, 0, 0, 77, 61, 75, 62, 76, - 98, 0, 8, 4, 3, 78, 98, 99, 0, 0, - 57, 65, 71, 69, 72, 66, 95, 82, 95, 95, + 95, 95, 51, 91, 52, 90, 5, 6, 5, 9, + 10, 9, 70, 0, 97, 0, 0, 0, 0, 0, + 79, 0, 68, 0, 81, 0, 0, 77, 61, 75, + 62, 76, 99, 0, 8, 4, 3, 78, 99, 103, + 100, 0, 0, 0, 0, 57, 65, 71, 69, 72, - 95, 95, 95, 95, 95, 95, 95, 95, 95, 25, - 30, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 80, 67, 7, 11, 0, 97, 0, 0, - 0, 0, 0, 96, 0, 0, 0, 0, 97, 0, - 98, 0, 3, 98, 98, 94, 63, 64, 95, 95, - 95, 95, 95, 95, 95, 95, 95, 95, 28, 95, + 66, 95, 82, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 25, 30, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 80, 67, 7, + 11, 0, 97, 0, 0, 0, 0, 0, 0, 96, + 0, 0, 0, 0, 97, 0, 99, 0, 3, 99, + 99, 100, 101, 102, 94, 63, 64, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 28, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 0, 0, 0, 0, 96, 0, 0, 96, + 95, 98, 0, 0, 0, 0, 96, 0, 0, 96, 0, 0, 47, 95, 40, 32, 95, 95, 95, 26, + 95, 95, 95, 45, 95, 95, 95, 95, 46, 95, + 95, 95, 41, 95, 20, 95, 0, 0, 0, 0, + 44, 34, 95, 95, 95, 18, 42, 95, 48, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 27, 0, + 0, 0, 0, 95, 95, 95, 95, 95, 19, 95, + 95, 36, 31, 95, 37, 95, 95, 95, 98, 0, + 0, 0, 95, 95, 95, 33, 29, 95, 95, 95, + 95, 95, 95, 0, 15, 0, 95, 95, 35, 95, + 14, 95, 95, 95, 21, 17, 0, 95, 95, 95, + 95, 43, 24, 95, 95, 0, 12, 95, 13, 39, - 95, 95, 41, 95, 20, 95, 0, 0, 0, 44, - 34, 95, 95, 95, 18, 42, 95, 48, 95, 95, - 95, 95, 95, 95, 95, 95, 95, 27, 0, 0, - 0, 95, 95, 95, 95, 95, 19, 95, 95, 36, - 31, 95, 37, 95, 95, 95, 0, 0, 0, 95, - 95, 95, 33, 29, 95, 95, 95, 95, 95, 95, - 0, 15, 0, 95, 95, 35, 95, 14, 95, 95, - 95, 21, 17, 0, 95, 95, 95, 95, 43, 24, - 95, 95, 0, 12, 95, 13, 39, 95, 95, 0, - 38, 95, 95, 0, 95, 95, 0, 95, 22, 0, - - 95, 16, 95, 23, 0 + 95, 95, 0, 38, 95, 95, 0, 95, 95, 0, + 95, 22, 0, 95, 16, 95, 23, 0 } ; static const YY_CHAR yy_ec[256] = @@ -606,16 +607,16 @@ static const YY_CHAR yy_ec[256] = 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 5, 6, 1, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, - 22, 23, 24, 1, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 26, 27, 28, 29, 30, 1, 31, 32, 33, 34, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 20, 20, 20, 20, 20, 21, 21, 22, 23, 24, + 25, 26, 27, 1, 28, 29, 28, 28, 28, 28, + 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 31, 30, 30, + 32, 33, 34, 35, 36, 1, 37, 38, 39, 40, - 35, 36, 37, 38, 39, 25, 40, 41, 42, 43, - 44, 45, 25, 46, 47, 48, 49, 50, 51, 25, - 52, 53, 54, 55, 56, 57, 1, 1, 1, 1, + 41, 42, 43, 44, 45, 30, 46, 47, 48, 49, + 50, 51, 30, 52, 53, 54, 55, 56, 57, 31, + 58, 59, 60, 61, 62, 63, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -632,240 +633,269 @@ static const YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static const YY_CHAR yy_meta[58] = +static const YY_CHAR yy_meta[64] = { 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 1, 4, 1, 1, - 1, 1, 1, 1, 4, 1, 5, 1, 1, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 1, 1, 1, 1 + 1, 1, 1, 1, 1, 3, 1, 4, 4, 4, + 4, 1, 1, 1, 1, 1, 1, 4, 4, 5, + 5, 1, 6, 1, 1, 5, 4, 4, 4, 4, + 4, 4, 5, 5, 7, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 7, 5, 5, 5, 5, 1, + 1, 1, 1 } ; -static const flex_int16_t yy_base[320] = +static const flex_int16_t yy_base[339] = { 0, - 0, 0, 55, 56, 57, 58, 575, 576, 576, 576, - 552, 57, 34, 551, 66, 60, 576, 576, 550, 57, - 576, 63, 48, 74, 74, 552, 576, 55, 548, 59, - 576, 542, 576, 576, 546, 62, 66, 71, 72, 67, - 73, 87, 70, 76, 89, 92, 93, 94, 96, 97, - 99, 576, 100, 576, 576, 576, 576, 550, 576, 576, - 549, 576, 120, 576, 136, 522, 521, 516, 576, 122, - 576, 123, 576, 126, 143, 576, 576, 576, 576, 576, - 118, 523, 576, 576, 0, 576, 125, 140, 132, 0, - 576, 539, 576, 576, 576, 538, 532, 576, 130, 133, + 0, 0, 61, 62, 63, 64, 677, 678, 678, 678, + 651, 63, 34, 650, 67, 68, 678, 678, 649, 65, + 678, 66, 64, 81, 89, 95, 651, 678, 70, 647, + 74, 678, 638, 678, 678, 645, 53, 71, 88, 47, + 86, 93, 103, 104, 98, 79, 108, 101, 111, 112, + 114, 117, 678, 123, 678, 678, 678, 678, 652, 678, + 678, 651, 678, 144, 678, 152, 0, 618, 617, 612, + 678, 146, 678, 149, 678, 150, 162, 678, 678, 678, + 678, 678, 154, 619, 678, 678, 0, 678, 168, 181, + 187, 160, 193, 211, 0, 678, 638, 678, 678, 678, - 124, 135, 137, 139, 145, 149, 146, 150, 151, 531, - 530, 152, 155, 154, 157, 158, 161, 162, 163, 170, - 167, 168, 576, 576, 576, 576, 186, 204, 211, 517, - 522, 515, 205, 576, 212, 202, 215, 210, 213, 217, - 576, 500, 0, 205, 576, 525, 576, 576, 194, 203, - 206, 200, 216, 198, 218, 221, 223, 224, 225, 226, - 227, 231, 228, 232, 236, 238, 241, 239, 242, 248, - 246, 249, 509, 509, 506, 273, 274, 277, 275, 276, - 284, 513, 520, 104, 519, 518, 262, 268, 264, 517, - 265, 270, 279, 516, 271, 282, 287, 288, 515, 289, + 637, 628, 678, 133, 129, 171, 136, 184, 180, 182, + 158, 147, 186, 188, 627, 626, 134, 70, 192, 183, + 208, 201, 212, 210, 214, 223, 225, 678, 678, 678, + 678, 254, 255, 258, 0, 613, 618, 611, 257, 678, + 264, 262, 263, 265, 266, 270, 678, 596, 0, 262, + 678, 289, 295, 0, 621, 678, 678, 244, 252, 253, + 243, 268, 269, 279, 284, 285, 273, 286, 288, 291, + 297, 298, 300, 301, 287, 303, 304, 305, 306, 311, + 315, 0, 605, 605, 602, 344, 345, 348, 343, 349, + 351, 609, 616, 324, 615, 614, 326, 328, 330, 613, - 272, 292, 514, 294, 297, 300, 492, 490, 501, 576, - 298, 299, 301, 305, 510, 509, 304, 508, 302, 321, - 309, 311, 312, 324, 328, 313, 330, 507, 487, 498, - 501, 333, 334, 314, 335, 337, 503, 338, 339, 502, - 501, 341, 500, 343, 347, 344, 491, 490, 493, 349, - 352, 354, 496, 495, 353, 357, 365, 366, 367, 369, - 486, 576, 477, 368, 370, 492, 375, 491, 372, 379, - 377, 380, 576, 478, 381, 388, 390, 391, 489, 488, - 393, 396, 472, 473, 394, 425, 424, 399, 397, 402, - 422, 404, 405, 398, 407, 409, 405, 408, 315, 193, + 245, 331, 334, 612, 336, 346, 353, 335, 611, 341, + 342, 357, 610, 358, 359, 362, 0, 588, 586, 597, + 678, 360, 364, 365, 369, 606, 605, 366, 604, 371, + 374, 373, 375, 376, 377, 388, 390, 391, 603, 0, + 583, 594, 597, 393, 394, 392, 395, 397, 599, 398, + 399, 598, 597, 401, 596, 402, 407, 412, 678, 587, + 586, 589, 413, 404, 419, 592, 591, 421, 417, 422, + 428, 429, 432, 582, 678, 573, 433, 434, 588, 435, + 587, 437, 438, 440, 443, 678, 574, 439, 450, 451, + 455, 585, 569, 453, 457, 546, 514, 456, 513, 489, - 410, 576, 414, 159, 576, 453, 458, 463, 468, 471, - 473, 478, 483, 488, 493, 498, 68, 503, 508 + 464, 459, 467, 487, 466, 465, 467, 469, 473, 477, + 470, 483, 471, 474, 678, 475, 476, 678, 523, 530, + 537, 541, 548, 553, 557, 564, 289, 571, 578, 585, + 592, 596, 224, 603, 610, 219, 188, 93 } ; -static const flex_int16_t yy_def[320] = +static const flex_int16_t yy_def[339] = { 0, - 305, 1, 306, 306, 307, 307, 305, 305, 305, 305, - 305, 308, 305, 305, 305, 309, 305, 305, 305, 305, - 305, 305, 305, 305, 310, 305, 305, 305, 305, 305, - 305, 311, 305, 305, 305, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 308, 305, 312, 305, 305, 305, 305, 313, - 305, 314, 305, 309, 315, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 316, 305, 305, 310, 310, 317, - 305, 305, 305, 305, 305, 305, 311, 305, 311, 311, + 318, 1, 319, 319, 320, 320, 318, 318, 318, 318, + 318, 321, 322, 318, 318, 323, 318, 318, 318, 318, + 318, 318, 318, 318, 324, 324, 318, 318, 318, 318, + 318, 318, 325, 318, 318, 318, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 321, 318, 326, 327, 327, 318, 318, + 318, 328, 318, 329, 318, 323, 330, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 331, 318, 318, 324, + 324, 324, 324, 324, 332, 318, 318, 318, 318, 318, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 305, 305, 305, 305, 308, 308, 312, 305, - 305, 305, 313, 305, 318, 314, 319, 309, 309, 315, - 305, 305, 316, 305, 305, 317, 305, 305, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 305, 305, 305, 313, 313, 318, 314, 314, - 319, 305, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 318, 325, 318, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 318, 318, 318, + 318, 321, 321, 326, 333, 318, 318, 318, 328, 318, + 334, 329, 335, 323, 323, 330, 318, 318, 331, 318, + 318, 324, 324, 94, 332, 318, 318, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 336, 318, 318, 318, 328, 328, 334, 329, 329, + 335, 318, 325, 325, 325, 325, 325, 325, 325, 325, - 311, 311, 311, 311, 311, 311, 305, 305, 305, 305, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 305, 305, - 305, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 305, 305, 305, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 305, 305, 305, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 305, 305, 311, 311, 311, 311, 311, 311, - 311, 311, 305, 311, 311, 311, 311, 311, 311, 305, - 311, 311, 311, 305, 311, 311, 305, 311, 311, 305, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 337, 318, 318, 318, + 318, 325, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 338, + 318, 318, 318, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 318, 318, + 318, 318, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 318, 318, 318, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 318, 318, 325, 325, 325, + 325, 325, 325, 325, 325, 318, 325, 325, 325, 325, - 311, 305, 311, 311, 0, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305 + 325, 325, 318, 325, 325, 325, 318, 325, 325, 318, + 325, 325, 318, 325, 318, 325, 325, 0, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318 } ; -static const flex_int16_t yy_nxt[634] = +static const flex_int16_t yy_nxt[742] = { 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 8, 34, 35, 32, - 36, 37, 38, 39, 40, 41, 42, 32, 43, 32, - 44, 32, 45, 32, 46, 47, 48, 49, 50, 32, - 51, 32, 32, 52, 53, 54, 55, 57, 57, 60, - 60, 64, 61, 61, 66, 81, 58, 58, 64, 77, - 70, 146, 67, 71, 72, 92, 93, 79, 78, 83, - 95, 96, 68, 65, 80, 84, 75, 73, 90, 87, - 85, 88, 90, 90, 82, 86, 90, 90, 90, 90, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 26, + 26, 27, 28, 29, 30, 31, 32, 33, 33, 33, + 33, 34, 8, 35, 36, 33, 37, 38, 39, 40, + 41, 42, 43, 33, 44, 33, 45, 33, 46, 33, + 47, 48, 49, 50, 51, 33, 52, 33, 33, 53, + 54, 55, 56, 58, 58, 61, 61, 65, 62, 62, + 68, 72, 59, 59, 73, 74, 65, 79, 69, 95, + 81, 83, 83, 83, 83, 95, 85, 109, 70, 80, + 82, 75, 86, 97, 98, 66, 259, 87, 100, 101, - 90, 101, 90, 107, 99, 110, 104, 105, 102, 106, - 112, 100, 111, 90, 103, 90, 108, 109, 90, 90, - 90, 123, 90, 90, 64, 90, 134, 115, 116, 121, - 90, 134, 113, 118, 64, 81, 122, 114, 63, 120, - 128, 119, 144, 211, 117, 74, 65, 305, 135, 137, - 90, 139, 75, 141, 124, 87, 90, 88, 90, 90, - 145, 90, 129, 90, 151, 90, 90, 150, 149, 140, - 152, 90, 90, 153, 155, 90, 90, 90, 90, 154, - 90, 90, 157, 90, 90, 90, 158, 90, 90, 90, - 64, 156, 160, 90, 90, 159, 90, 163, 165, 166, + 77, 104, 95, 95, 89, 88, 90, 91, 91, 90, + 89, 95, 90, 90, 90, 90, 84, 93, 95, 94, + 95, 95, 105, 171, 106, 95, 93, 95, 118, 112, + 95, 107, 110, 95, 111, 95, 95, 108, 117, 114, + 95, 120, 113, 95, 95, 115, 95, 128, 65, 95, + 140, 121, 116, 126, 64, 123, 133, 140, 65, 119, + 127, 95, 125, 124, 76, 95, 95, 122, 95, 159, + 145, 83, 83, 83, 83, 318, 66, 158, 141, 95, + 162, 143, 77, 129, 134, 150, 150, 150, 150, 170, + 95, 240, 95, 167, 146, 147, 89, 166, 90, 90, - 167, 161, 162, 170, 164, 171, 172, 168, 64, 134, - 134, 169, 65, 63, 133, 128, 177, 136, 64, 74, - 90, 64, 144, 180, 90, 139, 90, 302, 137, 90, - 65, 135, 90, 184, 186, 183, 75, 129, 178, 75, - 145, 181, 90, 140, 90, 188, 185, 90, 189, 90, - 90, 90, 90, 90, 90, 190, 187, 90, 90, 193, - 194, 195, 90, 197, 90, 90, 191, 90, 90, 196, - 192, 199, 90, 202, 90, 90, 203, 134, 134, 133, - 198, 177, 204, 134, 134, 200, 136, 201, 90, 206, - 90, 90, 180, 205, 90, 212, 90, 90, 90, 135, + 90, 90, 89, 95, 152, 152, 152, 90, 318, 151, + 153, 153, 95, 95, 95, 95, 95, 160, 95, 95, + 95, 164, 217, 161, 95, 95, 318, 182, 154, 154, + 154, 154, 163, 95, 165, 169, 173, 168, 154, 154, + 95, 172, 95, 95, 95, 175, 95, 154, 154, 154, + 154, 154, 154, 179, 174, 95, 176, 95, 65, 65, + 64, 140, 133, 177, 178, 142, 139, 180, 187, 181, + 140, 190, 76, 65, 65, 95, 95, 95, 145, 150, + 150, 150, 150, 196, 95, 95, 66, 66, 194, 141, + 134, 193, 135, 226, 143, 191, 188, 77, 77, 195, - 135, 137, 137, 178, 216, 90, 213, 215, 90, 217, - 181, 218, 214, 90, 90, 90, 220, 219, 90, 223, - 90, 222, 224, 90, 90, 90, 90, 90, 90, 225, - 90, 90, 226, 221, 228, 90, 236, 90, 90, 90, - 90, 90, 232, 234, 227, 235, 233, 90, 241, 242, - 90, 240, 238, 237, 90, 239, 90, 243, 245, 90, - 90, 90, 252, 90, 90, 90, 244, 90, 246, 90, - 90, 251, 255, 90, 254, 90, 250, 259, 90, 90, - 90, 256, 253, 90, 260, 258, 257, 264, 266, 267, - 268, 90, 90, 90, 90, 90, 90, 265, 90, 269, + 95, 95, 146, 151, 89, 95, 152, 152, 152, 90, + 318, 95, 153, 153, 197, 199, 95, 95, 95, 95, + 95, 95, 198, 95, 200, 202, 203, 95, 204, 95, + 95, 205, 95, 95, 201, 95, 95, 95, 95, 207, + 210, 206, 209, 95, 212, 213, 214, 95, 140, 140, + 139, 140, 187, 142, 208, 211, 95, 140, 95, 190, + 95, 216, 95, 95, 215, 223, 95, 95, 95, 222, + 228, 227, 224, 95, 95, 143, 141, 141, 95, 233, + 188, 143, 229, 191, 225, 95, 232, 230, 231, 95, + 95, 95, 95, 235, 95, 234, 95, 95, 95, 236, - 270, 90, 278, 90, 276, 90, 90, 90, 271, 272, - 275, 280, 279, 277, 90, 281, 90, 90, 285, 90, - 90, 282, 90, 90, 287, 90, 289, 291, 284, 292, - 90, 90, 286, 90, 90, 90, 90, 296, 288, 300, - 90, 298, 301, 297, 293, 295, 299, 304, 90, 294, - 90, 90, 303, 56, 56, 56, 56, 56, 59, 59, - 59, 59, 59, 63, 63, 63, 63, 63, 74, 74, - 74, 74, 74, 89, 89, 89, 97, 97, 127, 127, - 127, 127, 127, 133, 133, 133, 133, 133, 136, 136, - 136, 136, 136, 138, 138, 138, 138, 138, 143, 90, + 237, 95, 239, 95, 248, 95, 95, 95, 95, 95, + 244, 250, 238, 246, 251, 247, 255, 245, 253, 254, + 95, 252, 95, 95, 95, 95, 95, 95, 249, 95, + 95, 95, 256, 95, 95, 258, 95, 264, 268, 95, + 267, 257, 263, 272, 95, 95, 265, 269, 266, 95, + 271, 95, 270, 95, 95, 278, 281, 277, 273, 279, + 95, 95, 282, 280, 95, 95, 95, 95, 283, 95, + 95, 95, 95, 291, 289, 95, 284, 292, 285, 290, + 293, 288, 95, 95, 294, 95, 298, 95, 95, 95, + 295, 95, 297, 302, 300, 304, 95, 95, 95, 299, - 143, 143, 143, 176, 176, 176, 176, 176, 179, 179, - 179, 179, 179, 290, 90, 90, 283, 90, 90, 274, - 273, 90, 90, 263, 262, 261, 90, 90, 90, 90, - 249, 248, 247, 90, 90, 90, 90, 231, 230, 229, - 90, 90, 90, 90, 90, 90, 90, 210, 209, 208, - 207, 90, 182, 175, 174, 173, 90, 90, 90, 148, - 147, 142, 132, 131, 130, 126, 125, 98, 90, 94, - 91, 76, 69, 62, 305, 7, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 95, 95, 309, 301, 95, 95, 95, 95, 311, + 314, 315, 306, 308, 317, 95, 312, 313, 310, 95, + 307, 95, 316, 57, 57, 57, 57, 57, 57, 57, + 60, 60, 60, 60, 60, 60, 60, 64, 64, 64, + 64, 64, 64, 64, 67, 95, 95, 67, 76, 76, + 76, 76, 76, 76, 76, 92, 92, 92, 92, 92, + 102, 102, 102, 102, 132, 132, 132, 132, 132, 132, + 132, 139, 139, 139, 139, 139, 139, 139, 142, 142, + 142, 142, 142, 142, 142, 144, 144, 144, 144, 144, + 144, 144, 149, 303, 149, 149, 149, 149, 149, 155, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305 + 155, 95, 155, 186, 186, 186, 186, 186, 186, 186, + 189, 189, 189, 189, 189, 189, 189, 95, 296, 95, + 95, 287, 286, 95, 95, 276, 275, 274, 95, 95, + 95, 95, 262, 261, 260, 95, 95, 95, 95, 243, + 242, 241, 95, 95, 95, 95, 95, 95, 95, 221, + 220, 219, 218, 95, 192, 185, 184, 183, 95, 95, + 95, 157, 156, 148, 138, 137, 136, 131, 130, 103, + 95, 99, 96, 78, 71, 63, 318, 7, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318 } ; -static const flex_int16_t yy_chk[634] = +static const flex_int16_t yy_chk[742] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 3, 4, 5, - 6, 12, 5, 6, 13, 23, 3, 4, 16, 20, - 15, 317, 13, 15, 15, 28, 28, 22, 20, 24, - 30, 30, 13, 12, 22, 24, 16, 15, 36, 25, - 24, 25, 37, 40, 23, 24, 43, 38, 39, 41, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 4, 5, 6, 12, 5, 6, + 13, 15, 3, 4, 15, 15, 16, 20, 13, 40, + 22, 23, 23, 23, 23, 37, 24, 40, 13, 20, + 22, 15, 24, 29, 29, 12, 338, 24, 31, 31, - 25, 38, 44, 41, 36, 43, 39, 40, 38, 40, - 44, 37, 43, 42, 38, 45, 41, 42, 46, 47, - 48, 53, 49, 50, 63, 51, 70, 47, 48, 51, - 184, 72, 45, 49, 74, 81, 51, 46, 65, 50, - 65, 49, 87, 184, 48, 75, 63, 89, 70, 72, - 101, 75, 74, 81, 53, 88, 99, 88, 89, 100, - 87, 102, 65, 103, 101, 104, 88, 100, 99, 75, - 101, 105, 107, 102, 104, 106, 108, 109, 112, 103, - 114, 113, 106, 115, 116, 304, 107, 117, 118, 119, - 127, 105, 109, 121, 122, 108, 120, 114, 116, 117, + 16, 37, 118, 38, 25, 24, 25, 25, 25, 25, + 26, 46, 26, 26, 26, 26, 23, 25, 41, 25, + 39, 25, 38, 118, 39, 42, 25, 26, 46, 42, + 45, 39, 41, 48, 41, 43, 44, 39, 45, 43, + 47, 48, 42, 49, 50, 44, 51, 54, 64, 52, + 72, 49, 44, 52, 66, 50, 66, 74, 76, 47, + 52, 105, 51, 50, 77, 104, 117, 49, 107, 105, + 77, 83, 83, 83, 83, 92, 64, 104, 72, 112, + 107, 74, 76, 54, 66, 89, 89, 89, 89, 117, + 111, 337, 92, 112, 77, 83, 90, 111, 90, 90, - 118, 112, 113, 120, 115, 121, 122, 118, 128, 133, - 136, 119, 127, 129, 135, 129, 135, 137, 138, 140, - 149, 139, 144, 137, 154, 140, 152, 300, 136, 150, - 128, 133, 151, 150, 152, 149, 138, 129, 135, 139, - 144, 137, 153, 140, 155, 154, 151, 156, 155, 157, - 158, 159, 160, 161, 163, 156, 153, 162, 164, 159, - 160, 161, 165, 163, 166, 168, 157, 167, 169, 162, - 158, 165, 171, 168, 170, 172, 169, 176, 177, 178, - 164, 178, 170, 179, 180, 166, 181, 167, 187, 172, - 189, 191, 181, 171, 188, 187, 192, 195, 201, 176, + 90, 90, 91, 106, 91, 91, 91, 91, 93, 89, + 93, 93, 109, 90, 110, 120, 108, 106, 113, 91, + 114, 109, 336, 106, 119, 93, 94, 333, 94, 94, + 94, 94, 108, 122, 110, 114, 120, 113, 94, 94, + 121, 119, 124, 94, 123, 122, 125, 94, 94, 94, + 94, 94, 94, 125, 121, 126, 123, 127, 132, 133, + 134, 139, 134, 123, 124, 143, 141, 126, 141, 127, + 142, 143, 146, 144, 145, 161, 158, 201, 146, 150, + 150, 150, 150, 161, 159, 160, 132, 133, 159, 139, + 134, 158, 327, 201, 142, 143, 141, 144, 145, 160, - 177, 179, 180, 178, 192, 193, 188, 191, 196, 193, - 181, 195, 189, 197, 198, 200, 197, 196, 202, 201, - 204, 200, 202, 205, 211, 212, 206, 213, 219, 204, - 217, 214, 205, 198, 206, 221, 217, 222, 223, 226, - 234, 299, 211, 213, 205, 214, 212, 220, 222, 223, - 224, 221, 220, 219, 225, 220, 227, 224, 226, 232, - 233, 235, 234, 236, 238, 239, 225, 242, 227, 244, - 246, 233, 238, 245, 236, 250, 232, 245, 251, 255, - 252, 239, 235, 256, 246, 244, 242, 250, 252, 255, - 256, 257, 258, 259, 264, 260, 265, 251, 269, 257, + 162, 163, 146, 150, 152, 167, 152, 152, 152, 152, + 153, 164, 153, 153, 162, 164, 165, 166, 168, 175, + 169, 152, 163, 170, 165, 167, 168, 153, 169, 171, + 172, 170, 173, 174, 166, 176, 177, 178, 179, 172, + 175, 171, 174, 180, 177, 178, 179, 181, 186, 187, + 188, 189, 188, 191, 173, 176, 194, 190, 197, 191, + 198, 181, 199, 202, 180, 197, 203, 208, 205, 194, + 203, 202, 198, 210, 211, 189, 186, 187, 206, 210, + 188, 190, 205, 191, 199, 207, 208, 206, 207, 212, + 214, 215, 222, 212, 216, 211, 223, 224, 228, 214, - 258, 267, 269, 271, 265, 270, 272, 275, 259, 260, - 264, 271, 270, 267, 276, 272, 277, 278, 276, 281, - 285, 272, 282, 289, 278, 288, 282, 285, 275, 288, - 292, 293, 277, 295, 298, 296, 301, 293, 281, 297, - 303, 295, 298, 294, 289, 292, 296, 303, 291, 290, - 287, 286, 301, 306, 306, 306, 306, 306, 307, 307, - 307, 307, 307, 308, 308, 308, 308, 308, 309, 309, - 309, 309, 309, 310, 310, 310, 311, 311, 312, 312, - 312, 312, 312, 313, 313, 313, 313, 313, 314, 314, - 314, 314, 314, 315, 315, 315, 315, 315, 316, 284, + 215, 225, 216, 230, 228, 232, 231, 233, 234, 235, + 222, 231, 215, 224, 231, 225, 235, 223, 233, 234, + 236, 232, 237, 238, 246, 244, 245, 247, 230, 248, + 250, 251, 236, 254, 256, 238, 264, 245, 250, 257, + 248, 237, 244, 257, 258, 263, 246, 251, 247, 269, + 256, 265, 254, 268, 270, 264, 269, 263, 258, 265, + 271, 272, 270, 268, 273, 277, 278, 280, 271, 282, + 283, 288, 284, 282, 278, 285, 272, 283, 273, 280, + 284, 277, 289, 290, 285, 294, 289, 291, 298, 295, + 285, 302, 288, 295, 291, 298, 301, 306, 305, 290, - 316, 316, 316, 318, 318, 318, 318, 318, 319, 319, - 319, 319, 319, 283, 280, 279, 274, 268, 266, 263, - 261, 254, 253, 249, 248, 247, 243, 241, 240, 237, - 231, 230, 229, 228, 218, 216, 215, 209, 208, 207, - 203, 199, 194, 190, 186, 185, 183, 182, 175, 174, - 173, 146, 142, 132, 131, 130, 111, 110, 97, 96, - 92, 82, 68, 67, 66, 61, 58, 35, 32, 29, - 26, 19, 14, 11, 7, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 301, 308, 311, 306, 294, 309, 314, 316, 317, 308, + 311, 313, 302, 305, 316, 312, 309, 310, 307, 304, + 303, 300, 314, 319, 319, 319, 319, 319, 319, 319, + 320, 320, 320, 320, 320, 320, 320, 321, 321, 321, + 321, 321, 321, 321, 322, 299, 297, 322, 323, 323, + 323, 323, 323, 323, 323, 324, 324, 324, 324, 324, + 325, 325, 325, 325, 326, 326, 326, 326, 326, 326, + 326, 328, 328, 328, 328, 328, 328, 328, 329, 329, + 329, 329, 329, 329, 329, 330, 330, 330, 330, 330, + 330, 330, 331, 296, 331, 331, 331, 331, 331, 332, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305 + 332, 293, 332, 334, 334, 334, 334, 334, 334, 334, + 335, 335, 335, 335, 335, 335, 335, 292, 287, 281, + 279, 276, 274, 267, 266, 262, 261, 260, 255, 253, + 252, 249, 243, 242, 241, 239, 229, 227, 226, 220, + 219, 218, 213, 209, 204, 200, 196, 195, 193, 192, + 185, 184, 183, 155, 148, 138, 137, 136, 116, 115, + 102, 101, 97, 84, 70, 69, 68, 62, 59, 36, + 33, 30, 27, 19, 14, 11, 7, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318 } ; /* The intent behind this definition is that it'll catch @@ -886,9 +916,9 @@ static const flex_int16_t yy_chk[634] = #line 23 "lexer.lpp" #define YY_USER_ACTION loc.columns(yyleng); -#line 889 "lexer.cpp" +#line 919 "lexer.cpp" -#line 891 "lexer.cpp" +#line 921 "lexer.cpp" #define INITIAL 0 #define COMMENT_BLOCK_STATE 1 @@ -1148,15 +1178,15 @@ YY_DECL } { -#line 36 "lexer.lpp" +#line 40 "lexer.lpp" -#line 40 "lexer.lpp" +#line 44 "lexer.lpp" loc.step(); -#line 1159 "lexer.cpp" +#line 1189 "lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1183,13 +1213,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 306 ) + if ( yy_current_state >= 319 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 305 ); + while ( yy_current_state != 318 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -1211,522 +1241,542 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 43 "lexer.lpp" +#line 47 "lexer.lpp" { loc.step(); } YY_BREAK case 2: /* rule 2 can match eol */ YY_RULE_SETUP -#line 45 "lexer.lpp" +#line 49 "lexer.lpp" { loc.lines(yyleng); loc.step(); } YY_BREAK case 3: YY_RULE_SETUP -#line 47 "lexer.lpp" +#line 51 "lexer.lpp" YY_BREAK case 4: YY_RULE_SETUP -#line 49 "lexer.lpp" +#line 53 "lexer.lpp" { BEGIN(COMMENT_BLOCK_STATE); } YY_BREAK case 5: YY_RULE_SETUP -#line 50 "lexer.lpp" +#line 54 "lexer.lpp" YY_BREAK case 6: /* rule 6 can match eol */ YY_RULE_SETUP -#line 51 "lexer.lpp" +#line 55 "lexer.lpp" { loc.lines(yyleng); loc.step(); } YY_BREAK case 7: YY_RULE_SETUP -#line 52 "lexer.lpp" +#line 56 "lexer.lpp" { BEGIN(INITIAL); } YY_BREAK case 8: YY_RULE_SETUP -#line 54 "lexer.lpp" +#line 58 "lexer.lpp" { BEGIN(DEVELOPER_BLOCK_STATE); } YY_BREAK case 9: YY_RULE_SETUP -#line 55 "lexer.lpp" +#line 59 "lexer.lpp" YY_BREAK case 10: /* rule 10 can match eol */ YY_RULE_SETUP -#line 56 "lexer.lpp" +#line 60 "lexer.lpp" { loc.lines(yyleng); loc.step(); } YY_BREAK case 11: YY_RULE_SETUP -#line 57 "lexer.lpp" +#line 61 "lexer.lpp" { BEGIN(INITIAL); } YY_BREAK case 12: YY_RULE_SETUP -#line 59 "lexer.lpp" +#line 63 "lexer.lpp" { return s1::parser::make_BREAKPOINT(loc); } YY_BREAK case 13: YY_RULE_SETUP -#line 60 "lexer.lpp" +#line 64 "lexer.lpp" { return s1::parser::make_PROFBEGIN(loc); } YY_BREAK case 14: YY_RULE_SETUP -#line 61 "lexer.lpp" +#line 65 "lexer.lpp" { return s1::parser::make_PROFEND(loc); } YY_BREAK case 15: YY_RULE_SETUP -#line 62 "lexer.lpp" +#line 66 "lexer.lpp" { return s1::parser::make_INCLUDE(loc); } YY_BREAK case 16: YY_RULE_SETUP -#line 63 "lexer.lpp" +#line 67 "lexer.lpp" { return s1::parser::make_USINGTREE(loc); } YY_BREAK case 17: YY_RULE_SETUP -#line 64 "lexer.lpp" +#line 68 "lexer.lpp" { return s1::parser::make_ANIMTREE(loc); } YY_BREAK case 18: YY_RULE_SETUP -#line 65 "lexer.lpp" +#line 69 "lexer.lpp" { return s1::parser::make_ENDON(loc); } YY_BREAK case 19: YY_RULE_SETUP -#line 66 "lexer.lpp" +#line 70 "lexer.lpp" { return s1::parser::make_NOTIFY(loc); } YY_BREAK case 20: YY_RULE_SETUP -#line 67 "lexer.lpp" +#line 71 "lexer.lpp" { return s1::parser::make_WAIT(loc); } YY_BREAK case 21: YY_RULE_SETUP -#line 68 "lexer.lpp" +#line 72 "lexer.lpp" { return s1::parser::make_WAITTILL(loc); } YY_BREAK case 22: YY_RULE_SETUP -#line 69 "lexer.lpp" +#line 73 "lexer.lpp" { return s1::parser::make_WAITTILLMATCH(loc); } YY_BREAK case 23: YY_RULE_SETUP -#line 70 "lexer.lpp" +#line 74 "lexer.lpp" { return s1::parser::make_WAITTILLFRAMEEND(loc); } YY_BREAK case 24: YY_RULE_SETUP -#line 71 "lexer.lpp" +#line 75 "lexer.lpp" { return s1::parser::make_WAITFRAME(loc); } YY_BREAK case 25: YY_RULE_SETUP -#line 72 "lexer.lpp" +#line 76 "lexer.lpp" { return s1::parser::make_IF(loc); } YY_BREAK case 26: YY_RULE_SETUP -#line 73 "lexer.lpp" +#line 77 "lexer.lpp" { return s1::parser::make_ELSE(loc); } YY_BREAK case 27: YY_RULE_SETUP -#line 74 "lexer.lpp" +#line 78 "lexer.lpp" { return s1::parser::make_WHILE(loc); } YY_BREAK case 28: YY_RULE_SETUP -#line 75 "lexer.lpp" +#line 79 "lexer.lpp" { return s1::parser::make_FOR(loc); } YY_BREAK case 29: YY_RULE_SETUP -#line 76 "lexer.lpp" +#line 80 "lexer.lpp" { return s1::parser::make_FOREACH(loc); } YY_BREAK case 30: YY_RULE_SETUP -#line 77 "lexer.lpp" +#line 81 "lexer.lpp" { return s1::parser::make_IN(loc); } YY_BREAK case 31: YY_RULE_SETUP -#line 78 "lexer.lpp" +#line 82 "lexer.lpp" { return s1::parser::make_SWITCH(loc); } YY_BREAK case 32: YY_RULE_SETUP -#line 79 "lexer.lpp" +#line 83 "lexer.lpp" { return s1::parser::make_CASE(loc); } YY_BREAK case 33: YY_RULE_SETUP -#line 80 "lexer.lpp" +#line 84 "lexer.lpp" { return s1::parser::make_DEFAULT(loc); } YY_BREAK case 34: YY_RULE_SETUP -#line 81 "lexer.lpp" +#line 85 "lexer.lpp" { return s1::parser::make_BREAK(loc); } YY_BREAK case 35: YY_RULE_SETUP -#line 82 "lexer.lpp" +#line 86 "lexer.lpp" { return s1::parser::make_CONTINUE(loc); } YY_BREAK case 36: YY_RULE_SETUP -#line 83 "lexer.lpp" +#line 87 "lexer.lpp" { return s1::parser::make_RETURN(loc); } YY_BREAK case 37: YY_RULE_SETUP -#line 84 "lexer.lpp" +#line 88 "lexer.lpp" { return s1::parser::make_THREAD(loc); } YY_BREAK case 38: YY_RULE_SETUP -#line 85 "lexer.lpp" +#line 89 "lexer.lpp" { return s1::parser::make_CHILDTHREAD(loc); } YY_BREAK case 39: YY_RULE_SETUP -#line 86 "lexer.lpp" +#line 90 "lexer.lpp" { return s1::parser::make_THISTHREAD(loc); } YY_BREAK case 40: YY_RULE_SETUP -#line 87 "lexer.lpp" +#line 91 "lexer.lpp" { return s1::parser::make_CALL(loc); } YY_BREAK case 41: YY_RULE_SETUP -#line 88 "lexer.lpp" +#line 92 "lexer.lpp" { return s1::parser::make_TRUE(loc); } YY_BREAK case 42: YY_RULE_SETUP -#line 89 "lexer.lpp" +#line 93 "lexer.lpp" { return s1::parser::make_FALSE(loc); } YY_BREAK case 43: YY_RULE_SETUP -#line 90 "lexer.lpp" +#line 94 "lexer.lpp" { return s1::parser::make_UNDEFINED(loc); } YY_BREAK case 44: YY_RULE_SETUP -#line 91 "lexer.lpp" +#line 95 "lexer.lpp" { return s1::parser::make_SIZE(loc); } YY_BREAK case 45: YY_RULE_SETUP -#line 92 "lexer.lpp" +#line 96 "lexer.lpp" { return s1::parser::make_GAME(loc); } YY_BREAK case 46: YY_RULE_SETUP -#line 93 "lexer.lpp" +#line 97 "lexer.lpp" { return s1::parser::make_SELF(loc); } YY_BREAK case 47: YY_RULE_SETUP -#line 94 "lexer.lpp" +#line 98 "lexer.lpp" { return s1::parser::make_ANIM(loc); } YY_BREAK case 48: YY_RULE_SETUP -#line 95 "lexer.lpp" +#line 99 "lexer.lpp" { return s1::parser::make_LEVEL(loc); } YY_BREAK case 49: YY_RULE_SETUP -#line 96 "lexer.lpp" +#line 100 "lexer.lpp" { return s1::parser::make_LPAREN(loc); } YY_BREAK case 50: YY_RULE_SETUP -#line 97 "lexer.lpp" +#line 101 "lexer.lpp" { return s1::parser::make_RPAREN(loc); } YY_BREAK case 51: YY_RULE_SETUP -#line 98 "lexer.lpp" +#line 102 "lexer.lpp" { return s1::parser::make_LBRACE(loc); } YY_BREAK case 52: YY_RULE_SETUP -#line 99 "lexer.lpp" +#line 103 "lexer.lpp" { return s1::parser::make_RBRACE(loc); } YY_BREAK case 53: YY_RULE_SETUP -#line 100 "lexer.lpp" +#line 104 "lexer.lpp" { return s1::parser::make_LBRACKET(loc); } YY_BREAK case 54: YY_RULE_SETUP -#line 101 "lexer.lpp" +#line 105 "lexer.lpp" { return s1::parser::make_RBRACKET(loc); } YY_BREAK case 55: YY_RULE_SETUP -#line 102 "lexer.lpp" +#line 106 "lexer.lpp" { return s1::parser::make_COMMA(loc); } YY_BREAK case 56: YY_RULE_SETUP -#line 103 "lexer.lpp" +#line 107 "lexer.lpp" { return s1::parser::make_DOT(loc); } YY_BREAK case 57: YY_RULE_SETUP -#line 104 "lexer.lpp" +#line 108 "lexer.lpp" { return s1::parser::make_DOUBLECOLON(loc); } YY_BREAK case 58: YY_RULE_SETUP -#line 105 "lexer.lpp" +#line 109 "lexer.lpp" { return s1::parser::make_COLON(loc); } YY_BREAK case 59: YY_RULE_SETUP -#line 106 "lexer.lpp" +#line 110 "lexer.lpp" { return s1::parser::make_SEMICOLON(loc); } YY_BREAK case 60: YY_RULE_SETUP -#line 107 "lexer.lpp" +#line 111 "lexer.lpp" { return s1::parser::make_QMARK(loc); } YY_BREAK case 61: YY_RULE_SETUP -#line 108 "lexer.lpp" +#line 112 "lexer.lpp" { return s1::parser::make_INCREMENT(loc); } YY_BREAK case 62: YY_RULE_SETUP -#line 109 "lexer.lpp" +#line 113 "lexer.lpp" { return s1::parser::make_DECREMENT(loc); } YY_BREAK case 63: YY_RULE_SETUP -#line 110 "lexer.lpp" +#line 114 "lexer.lpp" { return s1::parser::make_ASSIGN_LSHIFT(loc); } YY_BREAK case 64: YY_RULE_SETUP -#line 111 "lexer.lpp" +#line 115 "lexer.lpp" { return s1::parser::make_ASSIGN_RSHIFT(loc); } YY_BREAK case 65: YY_RULE_SETUP -#line 112 "lexer.lpp" +#line 116 "lexer.lpp" { return s1::parser::make_LSHIFT(loc); } YY_BREAK case 66: YY_RULE_SETUP -#line 113 "lexer.lpp" +#line 117 "lexer.lpp" { return s1::parser::make_RSHIFT(loc); } YY_BREAK case 67: YY_RULE_SETUP -#line 114 "lexer.lpp" +#line 118 "lexer.lpp" { return s1::parser::make_OR(loc); } YY_BREAK case 68: YY_RULE_SETUP -#line 115 "lexer.lpp" +#line 119 "lexer.lpp" { return s1::parser::make_AND(loc); } YY_BREAK case 69: YY_RULE_SETUP -#line 116 "lexer.lpp" +#line 120 "lexer.lpp" { return s1::parser::make_EQUALITY(loc); } YY_BREAK case 70: YY_RULE_SETUP -#line 117 "lexer.lpp" +#line 121 "lexer.lpp" { return s1::parser::make_INEQUALITY(loc); } YY_BREAK case 71: YY_RULE_SETUP -#line 118 "lexer.lpp" +#line 122 "lexer.lpp" { return s1::parser::make_LESS_EQUAL(loc); } YY_BREAK case 72: YY_RULE_SETUP -#line 119 "lexer.lpp" +#line 123 "lexer.lpp" { return s1::parser::make_GREATER_EQUAL(loc); } YY_BREAK case 73: YY_RULE_SETUP -#line 120 "lexer.lpp" +#line 124 "lexer.lpp" { return s1::parser::make_LESS(loc); } YY_BREAK case 74: YY_RULE_SETUP -#line 121 "lexer.lpp" +#line 125 "lexer.lpp" { return s1::parser::make_GREATER(loc); } YY_BREAK case 75: YY_RULE_SETUP -#line 122 "lexer.lpp" +#line 126 "lexer.lpp" { return s1::parser::make_ASSIGN_ADD(loc); } YY_BREAK case 76: YY_RULE_SETUP -#line 123 "lexer.lpp" +#line 127 "lexer.lpp" { return s1::parser::make_ASSIGN_SUB(loc); } YY_BREAK case 77: YY_RULE_SETUP -#line 124 "lexer.lpp" +#line 128 "lexer.lpp" { return s1::parser::make_ASSIGN_MULT(loc); } YY_BREAK case 78: YY_RULE_SETUP -#line 125 "lexer.lpp" +#line 129 "lexer.lpp" { return s1::parser::make_ASSIGN_DIV(loc); } YY_BREAK case 79: YY_RULE_SETUP -#line 126 "lexer.lpp" +#line 130 "lexer.lpp" { return s1::parser::make_ASSIGN_MOD(loc); } YY_BREAK case 80: YY_RULE_SETUP -#line 127 "lexer.lpp" +#line 131 "lexer.lpp" { return s1::parser::make_ASSIGN_BITWISE_OR(loc); } YY_BREAK case 81: YY_RULE_SETUP -#line 128 "lexer.lpp" +#line 132 "lexer.lpp" { return s1::parser::make_ASSIGN_BITWISE_AND(loc); } YY_BREAK case 82: YY_RULE_SETUP -#line 129 "lexer.lpp" +#line 133 "lexer.lpp" { return s1::parser::make_ASSIGN_BITWISE_EXOR(loc); } YY_BREAK case 83: YY_RULE_SETUP -#line 130 "lexer.lpp" +#line 134 "lexer.lpp" { return s1::parser::make_ASSIGN(loc); } YY_BREAK case 84: YY_RULE_SETUP -#line 131 "lexer.lpp" +#line 135 "lexer.lpp" { return s1::parser::make_ADD(loc); } YY_BREAK case 85: YY_RULE_SETUP -#line 132 "lexer.lpp" +#line 136 "lexer.lpp" { return s1::parser::make_SUB(loc); } YY_BREAK case 86: YY_RULE_SETUP -#line 133 "lexer.lpp" +#line 137 "lexer.lpp" { return s1::parser::make_MULT(loc); } YY_BREAK case 87: YY_RULE_SETUP -#line 134 "lexer.lpp" +#line 138 "lexer.lpp" { return s1::parser::make_DIV(loc); } YY_BREAK case 88: YY_RULE_SETUP -#line 135 "lexer.lpp" +#line 139 "lexer.lpp" { return s1::parser::make_MOD(loc); } YY_BREAK case 89: YY_RULE_SETUP -#line 136 "lexer.lpp" +#line 140 "lexer.lpp" { return s1::parser::make_NOT(loc); } YY_BREAK case 90: YY_RULE_SETUP -#line 137 "lexer.lpp" +#line 141 "lexer.lpp" { return s1::parser::make_COMPLEMENT(loc); } YY_BREAK case 91: YY_RULE_SETUP -#line 138 "lexer.lpp" +#line 142 "lexer.lpp" { return s1::parser::make_BITWISE_OR(loc); } YY_BREAK case 92: YY_RULE_SETUP -#line 139 "lexer.lpp" +#line 143 "lexer.lpp" { return s1::parser::make_BITWISE_AND(loc); } YY_BREAK case 93: YY_RULE_SETUP -#line 140 "lexer.lpp" +#line 144 "lexer.lpp" { return s1::parser::make_BITWISE_EXOR(loc); } YY_BREAK case 94: YY_RULE_SETUP -#line 141 "lexer.lpp" +#line 145 "lexer.lpp" { return s1::parser::make_FILE(utils::string::fordslash(yytext), loc); } YY_BREAK case 95: YY_RULE_SETUP -#line 142 "lexer.lpp" +#line 146 "lexer.lpp" { return s1::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); } YY_BREAK case 96: /* rule 96 can match eol */ YY_RULE_SETUP -#line 143 "lexer.lpp" +#line 147 "lexer.lpp" { return s1::parser::make_ISTRING(std::string(yytext).substr(1), loc); } YY_BREAK case 97: /* rule 97 can match eol */ YY_RULE_SETUP -#line 144 "lexer.lpp" +#line 148 "lexer.lpp" { return s1::parser::make_STRING(std::string(yytext), loc); } YY_BREAK case 98: YY_RULE_SETUP -#line 145 "lexer.lpp" -{ return s1::parser::make_FLOAT(std::string(yytext), loc); } +#line 149 "lexer.lpp" +{ return s1::parser::make_COLOR(std::string(yytext).substr(1), loc); } YY_BREAK case 99: YY_RULE_SETUP -#line 146 "lexer.lpp" -{ return s1::parser::make_INTEGER(std::string(yytext), loc); } +#line 150 "lexer.lpp" +{ return s1::parser::make_FLOAT(std::string(yytext), loc); } + YY_BREAK +case 100: +YY_RULE_SETUP +#line 151 "lexer.lpp" +{ return s1::parser::make_INT_OCT(utils::string::oct_to_dec(yytext), loc); } + YY_BREAK +case 101: +YY_RULE_SETUP +#line 152 "lexer.lpp" +{ return s1::parser::make_INT_BIN(utils::string::bin_to_dec(yytext), loc); } + YY_BREAK +case 102: +YY_RULE_SETUP +#line 153 "lexer.lpp" +{ return s1::parser::make_INT_HEX(utils::string::hex_to_dec(yytext), loc); } + YY_BREAK +case 103: +YY_RULE_SETUP +#line 154 "lexer.lpp" +{ return s1::parser::make_INT_DEC(std::string(yytext), loc); } YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT_BLOCK_STATE): case YY_STATE_EOF(DEVELOPER_BLOCK_STATE): -#line 147 "lexer.lpp" +#line 155 "lexer.lpp" { return s1::parser::make_S1EOF(loc); } YY_BREAK -case 100: -/* rule 100 can match eol */ +case 104: +/* rule 104 can match eol */ YY_RULE_SETUP -#line 148 "lexer.lpp" +#line 156 "lexer.lpp" { throw s1::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); } YY_BREAK -case 101: +case 105: YY_RULE_SETUP -#line 150 "lexer.lpp" +#line 158 "lexer.lpp" ECHO; YY_BREAK -#line 1729 "lexer.cpp" +#line 1779 "lexer.cpp" case YY_END_OF_BUFFER: { @@ -2024,7 +2074,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 306 ) + if ( yy_current_state >= 319 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2053,11 +2103,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 306 ) + if ( yy_current_state >= 319 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 305); + yy_is_jam = (yy_current_state == 318); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -2856,6 +2906,6 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 150 "lexer.lpp" +#line 158 "lexer.lpp" diff --git a/src/s1/xsk/lexer.hpp b/src/s1/xsk/lexer.hpp index aa1fd5d8..2aeafe74 100644 --- a/src/s1/xsk/lexer.hpp +++ b/src/s1/xsk/lexer.hpp @@ -700,7 +700,7 @@ extern int yylex (yyscan_t yyscanner); #undef yyTABLES_NAME #endif -#line 150 "lexer.lpp" +#line 158 "lexer.lpp" #line 706 "lexer.hpp" diff --git a/src/s1/xsk/parser.cpp b/src/s1/xsk/parser.cpp index 041459cb..f48237d7 100644 --- a/src/s1/xsk/parser.cpp +++ b/src/s1/xsk/parser.cpp @@ -228,6 +228,10 @@ namespace xsk { namespace gsc { namespace s1 { value.YY_MOVE_OR_COPY< animtree_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_color: // color + value.YY_MOVE_OR_COPY< color_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_constant: // constant value.YY_MOVE_OR_COPY< constant_ptr > (YY_MOVE (that.value)); break; @@ -278,7 +282,6 @@ namespace xsk { namespace gsc { namespace s1 { value.YY_MOVE_OR_COPY< file_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.YY_MOVE_OR_COPY< float_ptr > (YY_MOVE (that.value)); break; @@ -291,7 +294,6 @@ namespace xsk { namespace gsc { namespace s1 { value.YY_MOVE_OR_COPY< include_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.YY_MOVE_OR_COPY< integer_ptr > (YY_MOVE (that.value)); break; @@ -333,8 +335,12 @@ namespace xsk { namespace gsc { namespace s1 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value)); break; @@ -495,6 +501,10 @@ namespace xsk { namespace gsc { namespace s1 { value.move< animtree_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_color: // color + value.move< color_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_constant: // constant value.move< constant_ptr > (YY_MOVE (that.value)); break; @@ -545,7 +555,6 @@ namespace xsk { namespace gsc { namespace s1 { value.move< file_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.move< float_ptr > (YY_MOVE (that.value)); break; @@ -558,7 +567,6 @@ namespace xsk { namespace gsc { namespace s1 { value.move< include_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.move< integer_ptr > (YY_MOVE (that.value)); break; @@ -600,8 +608,12 @@ namespace xsk { namespace gsc { namespace s1 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.move< std::string > (YY_MOVE (that.value)); break; @@ -762,6 +774,10 @@ namespace xsk { namespace gsc { namespace s1 { value.copy< animtree_ptr > (that.value); break; + case symbol_kind::S_color: // color + value.copy< color_ptr > (that.value); + break; + case symbol_kind::S_constant: // constant value.copy< constant_ptr > (that.value); break; @@ -812,7 +828,6 @@ namespace xsk { namespace gsc { namespace s1 { value.copy< file_ptr > (that.value); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.copy< float_ptr > (that.value); break; @@ -825,7 +840,6 @@ namespace xsk { namespace gsc { namespace s1 { value.copy< include_ptr > (that.value); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.copy< integer_ptr > (that.value); break; @@ -867,8 +881,12 @@ namespace xsk { namespace gsc { namespace s1 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.copy< std::string > (that.value); break; @@ -1028,6 +1046,10 @@ namespace xsk { namespace gsc { namespace s1 { value.move< animtree_ptr > (that.value); break; + case symbol_kind::S_color: // color + value.move< color_ptr > (that.value); + break; + case symbol_kind::S_constant: // constant value.move< constant_ptr > (that.value); break; @@ -1078,7 +1100,6 @@ namespace xsk { namespace gsc { namespace s1 { value.move< file_ptr > (that.value); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.move< float_ptr > (that.value); break; @@ -1091,7 +1112,6 @@ namespace xsk { namespace gsc { namespace s1 { value.move< include_ptr > (that.value); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.move< integer_ptr > (that.value); break; @@ -1133,8 +1153,12 @@ namespace xsk { namespace gsc { namespace s1 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.move< std::string > (that.value); break; @@ -1549,6 +1573,10 @@ namespace xsk { namespace gsc { namespace s1 { yylhs.value.emplace< animtree_ptr > (); break; + case symbol_kind::S_color: // color + yylhs.value.emplace< color_ptr > (); + break; + case symbol_kind::S_constant: // constant yylhs.value.emplace< constant_ptr > (); break; @@ -1599,7 +1627,6 @@ namespace xsk { namespace gsc { namespace s1 { yylhs.value.emplace< file_ptr > (); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float yylhs.value.emplace< float_ptr > (); break; @@ -1612,7 +1639,6 @@ namespace xsk { namespace gsc { namespace s1 { yylhs.value.emplace< include_ptr > (); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer yylhs.value.emplace< integer_ptr > (); break; @@ -1654,8 +1680,12 @@ namespace xsk { namespace gsc { namespace s1 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" yylhs.value.emplace< std::string > (); break; @@ -1810,1225 +1840,1237 @@ namespace xsk { namespace gsc { namespace s1 { switch (yyn) { case 2: // root: program -#line 243 "parser.ypp" +#line 246 "parser.ypp" { ast = std::move(yystack_[0].value.as < program_ptr > ()); } -#line 1816 "parser.cpp" - break; - - case 3: // root: %empty -#line 244 "parser.ypp" - { ast = std::make_unique(yylhs.location); } -#line 1822 "parser.cpp" - break; - - case 4: // program: program include -#line 249 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } -#line 1828 "parser.cpp" - break; - - case 5: // program: program define -#line 251 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } -#line 1834 "parser.cpp" - break; - - case 6: // program: include -#line 253 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } -#line 1840 "parser.cpp" - break; - - case 7: // program: define -#line 255 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1846 "parser.cpp" break; - case 8: // include: "#include" file ";" -#line 260 "parser.ypp" - { yylhs.value.as < include_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < file_ptr > ())); } + case 3: // root: %empty +#line 247 "parser.ypp" + { ast = std::make_unique(yylhs.location); } #line 1852 "parser.cpp" break; - case 9: // define: usingtree -#line 264 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_usingtree = std::move(yystack_[0].value.as < usingtree_ptr > ()); } + case 4: // program: program include +#line 252 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } #line 1858 "parser.cpp" break; - case 10: // define: constant -#line 265 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_constant = std::move(yystack_[0].value.as < constant_ptr > ()); } + case 5: // program: program define +#line 254 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1864 "parser.cpp" break; - case 11: // define: thread -#line 266 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_thread = std::move(yystack_[0].value.as < thread_ptr > ()); } + case 6: // program: include +#line 256 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } #line 1870 "parser.cpp" break; - case 12: // usingtree: "#using_animtree" "(" string ")" ";" -#line 271 "parser.ypp" - { yylhs.value.as < usingtree_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < string_ptr > ())); } + case 7: // program: define +#line 258 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1876 "parser.cpp" break; - case 13: // constant: name "=" expr ";" -#line 276 "parser.ypp" - { yylhs.value.as < constant_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 8: // include: "#include" file ";" +#line 263 "parser.ypp" + { yylhs.value.as < include_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < file_ptr > ())); } #line 1882 "parser.cpp" break; - case 14: // thread: name "(" parameters ")" stmt_block -#line 281 "parser.ypp" - { yylhs.value.as < thread_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < name_ptr > ()), std::move(yystack_[2].value.as < parameters_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } + case 9: // define: usingtree +#line 267 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_usingtree = std::move(yystack_[0].value.as < usingtree_ptr > ()); } #line 1888 "parser.cpp" break; - case 15: // parameters: parameters "," name -#line 286 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::move(yystack_[2].value.as < parameters_ptr > ()); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } + case 10: // define: constant +#line 268 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_constant = std::move(yystack_[0].value.as < constant_ptr > ()); } #line 1894 "parser.cpp" break; - case 16: // parameters: name -#line 288 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } + case 11: // define: thread +#line 269 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_thread = std::move(yystack_[0].value.as < thread_ptr > ()); } #line 1900 "parser.cpp" break; - case 17: // parameters: %empty -#line 290 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); } + case 12: // usingtree: "#using_animtree" "(" string ")" ";" +#line 274 "parser.ypp" + { yylhs.value.as < usingtree_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < string_ptr > ())); } #line 1906 "parser.cpp" break; - case 18: // stmt: stmt_block -#line 294 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_list = std::move(yystack_[0].value.as < stmt_list_ptr > ()); } + case 13: // constant: name "=" expr ";" +#line 279 "parser.ypp" + { yylhs.value.as < constant_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } #line 1912 "parser.cpp" break; - case 19: // stmt: stmt_call -#line 295 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_call = std::move(yystack_[0].value.as < stmt_call_ptr > ()); } + case 14: // thread: name "(" parameters ")" stmt_block +#line 284 "parser.ypp" + { yylhs.value.as < thread_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < name_ptr > ()), std::move(yystack_[2].value.as < parameters_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } #line 1918 "parser.cpp" break; - case 20: // stmt: stmt_assign -#line 296 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_assign = std::move(yystack_[0].value.as < stmt_assign_ptr > ()); } + case 15: // parameters: parameters "," name +#line 289 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::move(yystack_[2].value.as < parameters_ptr > ()); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } #line 1924 "parser.cpp" break; - case 21: // stmt: stmt_endon -#line 297 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_endon = std::move(yystack_[0].value.as < stmt_endon_ptr > ()); } + case 16: // parameters: name +#line 291 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } #line 1930 "parser.cpp" break; - case 22: // stmt: stmt_notify -#line 298 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_notify = std::move(yystack_[0].value.as < stmt_notify_ptr > ()); } + case 17: // parameters: %empty +#line 293 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); } #line 1936 "parser.cpp" break; - case 23: // stmt: stmt_wait -#line 299 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_wait = std::move(yystack_[0].value.as < stmt_wait_ptr > ()); } + case 18: // stmt: stmt_block +#line 297 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_list = std::move(yystack_[0].value.as < stmt_list_ptr > ()); } #line 1942 "parser.cpp" break; - case 24: // stmt: stmt_waittill -#line 300 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill_ptr > ()); } + case 19: // stmt: stmt_call +#line 298 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_call = std::move(yystack_[0].value.as < stmt_call_ptr > ()); } #line 1948 "parser.cpp" break; - case 25: // stmt: stmt_waittillmatch -#line 301 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch_ptr > ()); } + case 20: // stmt: stmt_assign +#line 299 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_assign = std::move(yystack_[0].value.as < stmt_assign_ptr > ()); } #line 1954 "parser.cpp" break; - case 26: // stmt: stmt_waittillframeend -#line 302 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend_ptr > ()); } + case 21: // stmt: stmt_endon +#line 300 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_endon = std::move(yystack_[0].value.as < stmt_endon_ptr > ()); } #line 1960 "parser.cpp" break; - case 27: // stmt: stmt_waitframe -#line 303 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waitframe = std::move(yystack_[0].value.as < stmt_waitframe_ptr > ()); } + case 22: // stmt: stmt_notify +#line 301 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_notify = std::move(yystack_[0].value.as < stmt_notify_ptr > ()); } #line 1966 "parser.cpp" break; - case 28: // stmt: stmt_if -#line 304 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_if = std::move(yystack_[0].value.as < stmt_if_ptr > ()); } + case 23: // stmt: stmt_wait +#line 302 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_wait = std::move(yystack_[0].value.as < stmt_wait_ptr > ()); } #line 1972 "parser.cpp" break; - case 29: // stmt: stmt_ifelse -#line 305 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse_ptr > ()); } + case 24: // stmt: stmt_waittill +#line 303 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill_ptr > ()); } #line 1978 "parser.cpp" break; - case 30: // stmt: stmt_while -#line 306 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_while = std::move(yystack_[0].value.as < stmt_while_ptr > ()); } + case 25: // stmt: stmt_waittillmatch +#line 304 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch_ptr > ()); } #line 1984 "parser.cpp" break; - case 31: // stmt: stmt_for -#line 307 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_for = std::move(yystack_[0].value.as < stmt_for_ptr > ()); } + case 26: // stmt: stmt_waittillframeend +#line 305 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend_ptr > ()); } #line 1990 "parser.cpp" break; - case 32: // stmt: stmt_foreach -#line 308 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach_ptr > ()); } + case 27: // stmt: stmt_waitframe +#line 306 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waitframe = std::move(yystack_[0].value.as < stmt_waitframe_ptr > ()); } #line 1996 "parser.cpp" break; - case 33: // stmt: stmt_switch -#line 309 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_switch = std::move(yystack_[0].value.as < stmt_switch_ptr > ()); } + case 28: // stmt: stmt_if +#line 307 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_if = std::move(yystack_[0].value.as < stmt_if_ptr > ()); } #line 2002 "parser.cpp" break; - case 34: // stmt: stmt_case -#line 310 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_case = std::move(yystack_[0].value.as < stmt_case_ptr > ()); } + case 29: // stmt: stmt_ifelse +#line 308 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse_ptr > ()); } #line 2008 "parser.cpp" break; - case 35: // stmt: stmt_default -#line 311 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_default = std::move(yystack_[0].value.as < stmt_default_ptr > ()); } + case 30: // stmt: stmt_while +#line 309 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_while = std::move(yystack_[0].value.as < stmt_while_ptr > ()); } #line 2014 "parser.cpp" break; - case 36: // stmt: stmt_break -#line 312 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_break = std::move(yystack_[0].value.as < stmt_break_ptr > ()); } + case 31: // stmt: stmt_for +#line 310 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_for = std::move(yystack_[0].value.as < stmt_for_ptr > ()); } #line 2020 "parser.cpp" break; - case 37: // stmt: stmt_continue -#line 313 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_continue = std::move(yystack_[0].value.as < stmt_continue_ptr > ()); } + case 32: // stmt: stmt_foreach +#line 311 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach_ptr > ()); } #line 2026 "parser.cpp" break; - case 38: // stmt: stmt_return -#line 314 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_return = std::move(yystack_[0].value.as < stmt_return_ptr > ()); } + case 33: // stmt: stmt_switch +#line 312 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_switch = std::move(yystack_[0].value.as < stmt_switch_ptr > ()); } #line 2032 "parser.cpp" break; - case 39: // stmt: stmt_breakpoint -#line 315 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_breakpoint = std::move(yystack_[0].value.as < stmt_breakpoint_ptr > ()); } + case 34: // stmt: stmt_case +#line 313 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_case = std::move(yystack_[0].value.as < stmt_case_ptr > ()); } #line 2038 "parser.cpp" break; - case 40: // stmt: stmt_prof_begin -#line 316 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_prof_begin = std::move(yystack_[0].value.as < stmt_prof_begin_ptr > ()); } + case 35: // stmt: stmt_default +#line 314 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_default = std::move(yystack_[0].value.as < stmt_default_ptr > ()); } #line 2044 "parser.cpp" break; - case 41: // stmt: stmt_prof_end -#line 317 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_prof_end = std::move(yystack_[0].value.as < stmt_prof_end_ptr > ()); } + case 36: // stmt: stmt_break +#line 315 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_break = std::move(yystack_[0].value.as < stmt_break_ptr > ()); } #line 2050 "parser.cpp" break; - case 42: // stmt_block: "{" stmt_list "}" -#line 321 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); } + case 37: // stmt: stmt_continue +#line 316 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_continue = std::move(yystack_[0].value.as < stmt_continue_ptr > ()); } #line 2056 "parser.cpp" break; - case 43: // stmt_block: "{" "}" -#line 322 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); } + case 38: // stmt: stmt_return +#line 317 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_return = std::move(yystack_[0].value.as < stmt_return_ptr > ()); } #line 2062 "parser.cpp" break; - case 44: // stmt_list: stmt_list stmt -#line 327 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 39: // stmt: stmt_breakpoint +#line 318 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_breakpoint = std::move(yystack_[0].value.as < stmt_breakpoint_ptr > ()); } #line 2068 "parser.cpp" break; - case 45: // stmt_list: stmt -#line 329 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 40: // stmt: stmt_prof_begin +#line 319 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_prof_begin = std::move(yystack_[0].value.as < stmt_prof_begin_ptr > ()); } #line 2074 "parser.cpp" break; - case 46: // stmt_call: expr_call ";" -#line 334 "parser.ypp" - { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } + case 41: // stmt: stmt_prof_end +#line 320 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_prof_end = std::move(yystack_[0].value.as < stmt_prof_end_ptr > ()); } #line 2080 "parser.cpp" break; - case 47: // stmt_call: expr_call_thread ";" -#line 336 "parser.ypp" - { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } + case 42: // stmt_block: "{" stmt_list "}" +#line 324 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); } #line 2086 "parser.cpp" break; - case 48: // stmt_assign: expr_assign ";" -#line 341 "parser.ypp" - { yylhs.value.as < stmt_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_assign_ptr > ())); } + case 43: // stmt_block: "{" "}" +#line 325 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); } #line 2092 "parser.cpp" break; - case 49: // stmt_endon: object "endon" "(" expr ")" ";" -#line 346 "parser.ypp" - { yylhs.value.as < stmt_endon_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ())); } + case 44: // stmt_list: stmt_list stmt +#line 330 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2098 "parser.cpp" break; - case 50: // stmt_notify: object "notify" "(" expr "," expr_arguments ")" ";" -#line 351 "parser.ypp" - { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 45: // stmt_list: stmt +#line 332 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2104 "parser.cpp" break; - case 51: // stmt_notify: object "notify" "(" expr ")" ";" -#line 353 "parser.ypp" - { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 46: // stmt_call: expr_call ";" +#line 337 "parser.ypp" + { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } #line 2110 "parser.cpp" break; - case 52: // stmt_wait: "wait" expr ";" -#line 358 "parser.ypp" - { yylhs.value.as < stmt_wait_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } + case 47: // stmt_call: expr_call_thread ";" +#line 339 "parser.ypp" + { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } #line 2116 "parser.cpp" break; - case 53: // stmt_waittill: object "waittill" "(" expr "," expr_arguments ")" ";" -#line 363 "parser.ypp" - { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 48: // stmt_assign: expr_assign ";" +#line 344 "parser.ypp" + { yylhs.value.as < stmt_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_assign_ptr > ())); } #line 2122 "parser.cpp" break; - case 54: // stmt_waittill: object "waittill" "(" expr ")" ";" -#line 365 "parser.ypp" - { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 49: // stmt_endon: object "endon" "(" expr ")" ";" +#line 349 "parser.ypp" + { yylhs.value.as < stmt_endon_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ())); } #line 2128 "parser.cpp" break; - case 55: // stmt_waittillmatch: object "waittillmatch" "(" expr "," expr_arguments ")" ";" -#line 370 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 50: // stmt_notify: object "notify" "(" expr "," expr_arguments ")" ";" +#line 354 "parser.ypp" + { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2134 "parser.cpp" break; - case 56: // stmt_waittillmatch: object "waittillmatch" "(" expr ")" ";" -#line 372 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 51: // stmt_notify: object "notify" "(" expr ")" ";" +#line 356 "parser.ypp" + { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2140 "parser.cpp" break; - case 57: // stmt_waittillframeend: "waittillframeend" ";" -#line 377 "parser.ypp" - { yylhs.value.as < stmt_waittillframeend_ptr > () = std::make_unique(yylhs.location); } + case 52: // stmt_wait: "wait" expr ";" +#line 361 "parser.ypp" + { yylhs.value.as < stmt_wait_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2146 "parser.cpp" break; - case 58: // stmt_waitframe: "waitframe" ";" -#line 382 "parser.ypp" - { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } + case 53: // stmt_waittill: object "waittill" "(" expr "," expr_arguments ")" ";" +#line 366 "parser.ypp" + { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2152 "parser.cpp" break; - case 59: // stmt_waitframe: "waitframe" "(" ")" ";" -#line 384 "parser.ypp" - { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } + case 54: // stmt_waittill: object "waittill" "(" expr ")" ";" +#line 368 "parser.ypp" + { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2158 "parser.cpp" break; - case 60: // stmt_if: "if" "(" expr ")" stmt -#line 389 "parser.ypp" - { yylhs.value.as < stmt_if_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 55: // stmt_waittillmatch: object "waittillmatch" "(" expr "," expr_arguments ")" ";" +#line 373 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2164 "parser.cpp" break; - case 61: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 394 "parser.ypp" - { yylhs.value.as < stmt_ifelse_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 56: // stmt_waittillmatch: object "waittillmatch" "(" expr ")" ";" +#line 375 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2170 "parser.cpp" break; - case 62: // stmt_while: "while" "(" expr ")" stmt -#line 399 "parser.ypp" - { yylhs.value.as < stmt_while_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 57: // stmt_waittillframeend: "waittillframeend" ";" +#line 380 "parser.ypp" + { yylhs.value.as < stmt_waittillframeend_ptr > () = std::make_unique(yylhs.location); } #line 2176 "parser.cpp" break; - case 63: // stmt_for: "for" "(" for_stmt ";" for_expr ";" for_stmt ")" stmt -#line 404 "parser.ypp" - { yylhs.value.as < stmt_for_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[6].value.as < stmt_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 58: // stmt_waitframe: "waitframe" ";" +#line 385 "parser.ypp" + { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } #line 2182 "parser.cpp" break; - case 64: // stmt_foreach: "foreach" "(" name "in" expr ")" stmt -#line 409 "parser.ypp" - { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 59: // stmt_waitframe: "waitframe" "(" ")" ";" +#line 387 "parser.ypp" + { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } #line 2188 "parser.cpp" break; - case 65: // stmt_foreach: "foreach" "(" name "," name "in" expr ")" stmt -#line 411 "parser.ypp" - { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[6].value.as < name_ptr > ())), expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 60: // stmt_if: "if" "(" expr ")" stmt +#line 392 "parser.ypp" + { yylhs.value.as < stmt_if_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2194 "parser.cpp" break; - case 66: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 416 "parser.ypp" - { yylhs.value.as < stmt_switch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } + case 61: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 397 "parser.ypp" + { yylhs.value.as < stmt_ifelse_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2200 "parser.cpp" break; - case 67: // stmt_case: "case" integer ":" -#line 421 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } + case 62: // stmt_while: "while" "(" expr ")" stmt +#line 402 "parser.ypp" + { yylhs.value.as < stmt_while_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2206 "parser.cpp" break; - case 68: // stmt_case: "case" neg_integer ":" -#line 423 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } + case 63: // stmt_for: "for" "(" for_stmt ";" for_expr ";" for_stmt ")" stmt +#line 407 "parser.ypp" + { yylhs.value.as < stmt_for_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[6].value.as < stmt_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2212 "parser.cpp" break; - case 69: // stmt_case: "case" string ":" -#line 425 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < string_ptr > ())), std::make_unique(yylhs.location)); } + case 64: // stmt_foreach: "foreach" "(" name "in" expr ")" stmt +#line 412 "parser.ypp" + { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2218 "parser.cpp" break; - case 70: // stmt_default: "default" ":" -#line 430 "parser.ypp" - { yylhs.value.as < stmt_default_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } + case 65: // stmt_foreach: "foreach" "(" name "," name "in" expr ")" stmt +#line 414 "parser.ypp" + { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[6].value.as < name_ptr > ())), expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2224 "parser.cpp" break; - case 71: // stmt_break: "break" ";" -#line 435 "parser.ypp" - { yylhs.value.as < stmt_break_ptr > () = std::make_unique(yylhs.location); } + case 66: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 419 "parser.ypp" + { yylhs.value.as < stmt_switch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } #line 2230 "parser.cpp" break; - case 72: // stmt_continue: "continue" ";" -#line 440 "parser.ypp" - { yylhs.value.as < stmt_continue_ptr > () = std::make_unique(yylhs.location); } + case 67: // stmt_case: "case" integer ":" +#line 424 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } #line 2236 "parser.cpp" break; - case 73: // stmt_return: "return" expr ";" -#line 445 "parser.ypp" - { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } + case 68: // stmt_case: "case" string ":" +#line 426 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < string_ptr > ())), std::make_unique(yylhs.location)); } #line 2242 "parser.cpp" break; - case 74: // stmt_return: "return" ";" -#line 447 "parser.ypp" - { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } + case 69: // stmt_default: "default" ":" +#line 431 "parser.ypp" + { yylhs.value.as < stmt_default_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2248 "parser.cpp" break; - case 75: // stmt_breakpoint: "breakpoint" ";" -#line 452 "parser.ypp" - { yylhs.value.as < stmt_breakpoint_ptr > () = std::make_unique(yylhs.location); } + case 70: // stmt_break: "break" ";" +#line 436 "parser.ypp" + { yylhs.value.as < stmt_break_ptr > () = std::make_unique(yylhs.location); } #line 2254 "parser.cpp" break; - case 76: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 457 "parser.ypp" - { yylhs.value.as < stmt_prof_begin_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 71: // stmt_continue: "continue" ";" +#line 441 "parser.ypp" + { yylhs.value.as < stmt_continue_ptr > () = std::make_unique(yylhs.location); } #line 2260 "parser.cpp" break; - case 77: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 462 "parser.ypp" - { yylhs.value.as < stmt_prof_end_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 72: // stmt_return: "return" expr ";" +#line 446 "parser.ypp" + { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2266 "parser.cpp" break; - case 78: // for_stmt: expr_assign -#line 466 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_list = std::make_unique(yylhs.location); yylhs.value.as < stmt_ptr > ().as_list->stmts.push_back(stmt_ptr(std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_assign_ptr > ())))); } + case 73: // stmt_return: "return" ";" +#line 448 "parser.ypp" + { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2272 "parser.cpp" break; - case 79: // for_stmt: %empty -#line 467 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_node = std::make_unique(yylhs.location); } + case 74: // stmt_breakpoint: "breakpoint" ";" +#line 453 "parser.ypp" + { yylhs.value.as < stmt_breakpoint_ptr > () = std::make_unique(yylhs.location); } #line 2278 "parser.cpp" break; - case 80: // for_expr: expr -#line 471 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 75: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" +#line 458 "parser.ypp" + { yylhs.value.as < stmt_prof_begin_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2284 "parser.cpp" break; - case 81: // for_expr: %empty -#line 472 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location); } + case 76: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" +#line 463 "parser.ypp" + { yylhs.value.as < stmt_prof_end_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2290 "parser.cpp" break; - case 82: // expr: expr_compare -#line 476 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 77: // for_stmt: expr_assign +#line 467 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_list = std::make_unique(yylhs.location); yylhs.value.as < stmt_ptr > ().as_list->stmts.push_back(stmt_ptr(std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_assign_ptr > ())))); } #line 2296 "parser.cpp" break; - case 83: // expr: expr_ternary -#line 477 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 78: // for_stmt: %empty +#line 468 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_node = std::make_unique(yylhs.location); } #line 2302 "parser.cpp" break; - case 84: // expr: expr_binary -#line 478 "parser.ypp" + case 79: // for_expr: expr +#line 472 "parser.ypp" { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2308 "parser.cpp" break; - case 85: // expr: expr_primitive -#line 479 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 80: // for_expr: %empty +#line 473 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location); } #line 2314 "parser.cpp" break; - case 86: // expr_assign: "++" object -#line 483 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } + case 81: // expr: expr_compare +#line 477 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2320 "parser.cpp" break; - case 87: // expr_assign: "--" object -#line 484 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } + case 82: // expr: expr_ternary +#line 478 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2326 "parser.cpp" break; - case 88: // expr_assign: object "++" -#line 485 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 83: // expr: expr_binary +#line 479 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2332 "parser.cpp" break; - case 89: // expr_assign: object "--" -#line 486 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 84: // expr: expr_primitive +#line 480 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2338 "parser.cpp" break; - case 90: // expr_assign: object "=" expr -#line 487 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 85: // expr_assign: "++" object +#line 484 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } #line 2344 "parser.cpp" break; - case 91: // expr_assign: object "|=" expr -#line 488 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 86: // expr_assign: "--" object +#line 485 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } #line 2350 "parser.cpp" break; - case 92: // expr_assign: object "&=" expr -#line 489 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 87: // expr_assign: object "++" +#line 486 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2356 "parser.cpp" break; - case 93: // expr_assign: object "^=" expr -#line 490 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 88: // expr_assign: object "--" +#line 487 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2362 "parser.cpp" break; - case 94: // expr_assign: object "<<=" expr -#line 491 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()),std::move( yystack_[0].value.as < expr_ptr > ())); } + case 89: // expr_assign: object "=" expr +#line 488 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2368 "parser.cpp" break; - case 95: // expr_assign: object ">>=" expr -#line 492 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 90: // expr_assign: object "|=" expr +#line 489 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2374 "parser.cpp" break; - case 96: // expr_assign: object "+=" expr -#line 493 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 91: // expr_assign: object "&=" expr +#line 490 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2380 "parser.cpp" break; - case 97: // expr_assign: object "-=" expr -#line 494 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 92: // expr_assign: object "^=" expr +#line 491 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2386 "parser.cpp" break; - case 98: // expr_assign: object "*=" expr -#line 495 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 93: // expr_assign: object "<<=" expr +#line 492 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()),std::move( yystack_[0].value.as < expr_ptr > ())); } #line 2392 "parser.cpp" break; - case 99: // expr_assign: object "/=" expr -#line 496 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 94: // expr_assign: object ">>=" expr +#line 493 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2398 "parser.cpp" break; - case 100: // expr_assign: object "%=" expr -#line 497 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 95: // expr_assign: object "+=" expr +#line 494 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2404 "parser.cpp" break; - case 101: // expr_compare: expr "||" expr -#line 501 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 96: // expr_assign: object "-=" expr +#line 495 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2410 "parser.cpp" break; - case 102: // expr_compare: expr "&&" expr -#line 502 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 97: // expr_assign: object "*=" expr +#line 496 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2416 "parser.cpp" break; - case 103: // expr_compare: expr "==" expr -#line 503 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 98: // expr_assign: object "/=" expr +#line 497 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2422 "parser.cpp" break; - case 104: // expr_compare: expr "!=" expr -#line 504 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 99: // expr_assign: object "%=" expr +#line 498 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2428 "parser.cpp" break; - case 105: // expr_compare: expr "<=" expr -#line 505 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 100: // expr_compare: expr "||" expr +#line 502 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2434 "parser.cpp" break; - case 106: // expr_compare: expr ">=" expr -#line 506 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 101: // expr_compare: expr "&&" expr +#line 503 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2440 "parser.cpp" break; - case 107: // expr_compare: expr "<" expr -#line 507 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 102: // expr_compare: expr "==" expr +#line 504 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2446 "parser.cpp" break; - case 108: // expr_compare: expr ">" expr -#line 508 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 103: // expr_compare: expr "!=" expr +#line 505 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2452 "parser.cpp" break; - case 109: // expr_ternary: expr "?" expr ":" expr -#line 512 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 104: // expr_compare: expr "<=" expr +#line 506 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2458 "parser.cpp" break; - case 110: // expr_binary: expr "|" expr -#line 516 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 105: // expr_compare: expr ">=" expr +#line 507 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2464 "parser.cpp" break; - case 111: // expr_binary: expr "&" expr -#line 517 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 106: // expr_compare: expr "<" expr +#line 508 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2470 "parser.cpp" break; - case 112: // expr_binary: expr "^" expr -#line 518 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 107: // expr_compare: expr ">" expr +#line 509 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2476 "parser.cpp" break; - case 113: // expr_binary: expr "<<" expr -#line 519 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 108: // expr_ternary: expr "?" expr ":" expr +#line 513 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2482 "parser.cpp" break; - case 114: // expr_binary: expr ">>" expr -#line 520 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 109: // expr_binary: expr "|" expr +#line 517 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2488 "parser.cpp" break; - case 115: // expr_binary: expr "+" expr -#line 521 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 110: // expr_binary: expr "&" expr +#line 518 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2494 "parser.cpp" break; - case 116: // expr_binary: expr "-" expr -#line 522 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 111: // expr_binary: expr "^" expr +#line 519 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2500 "parser.cpp" break; - case 117: // expr_binary: expr "*" expr -#line 523 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 112: // expr_binary: expr "<<" expr +#line 520 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2506 "parser.cpp" break; - case 118: // expr_binary: expr "/" expr -#line 524 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 113: // expr_binary: expr ">>" expr +#line 521 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2512 "parser.cpp" break; - case 119: // expr_binary: expr "%" expr -#line 525 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 114: // expr_binary: expr "+" expr +#line 522 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2518 "parser.cpp" break; - case 120: // expr_primitive: "(" expr ")" -#line 529 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[1].value.as < expr_ptr > ()); } + case 115: // expr_binary: expr "-" expr +#line 523 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2524 "parser.cpp" break; - case 121: // expr_primitive: "~" expr -#line 530 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } + case 116: // expr_binary: expr "*" expr +#line 524 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2530 "parser.cpp" break; - case 122: // expr_primitive: "!" expr -#line 531 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } + case 117: // expr_binary: expr "/" expr +#line 525 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2536 "parser.cpp" break; - case 123: // expr_primitive: expr_call -#line 532 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 118: // expr_binary: expr "%" expr +#line 526 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2542 "parser.cpp" break; - case 124: // expr_primitive: expr_call_thread -#line 533 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 119: // expr_primitive: "(" expr ")" +#line 530 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[1].value.as < expr_ptr > ()); } #line 2548 "parser.cpp" break; - case 125: // expr_primitive: expr_call_childthread -#line 534 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 120: // expr_primitive: "~" expr +#line 531 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2554 "parser.cpp" break; - case 126: // expr_primitive: expr_function -#line 535 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 121: // expr_primitive: "!" expr +#line 532 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2560 "parser.cpp" break; - case 127: // expr_primitive: expr_add_array -#line 536 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 122: // expr_primitive: expr_call +#line 533 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2566 "parser.cpp" break; - case 128: // expr_primitive: expr_array -#line 537 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 123: // expr_primitive: expr_call_thread +#line 534 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2572 "parser.cpp" break; - case 129: // expr_primitive: expr_field -#line 538 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 124: // expr_primitive: expr_call_childthread +#line 535 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2578 "parser.cpp" break; - case 130: // expr_primitive: expr_size -#line 539 "parser.ypp" + case 125: // expr_primitive: expr_function +#line 536 "parser.ypp" { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2584 "parser.cpp" break; - case 131: // expr_primitive: thisthread -#line 540 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < thisthread_ptr > ()); } + case 126: // expr_primitive: expr_add_array +#line 537 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2590 "parser.cpp" break; - case 132: // expr_primitive: empty_array -#line 541 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < empty_array_ptr > ()); } + case 127: // expr_primitive: expr_array +#line 538 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2596 "parser.cpp" break; - case 133: // expr_primitive: undefined -#line 542 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < undefined_ptr > ()); } + case 128: // expr_primitive: expr_field +#line 539 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2602 "parser.cpp" break; - case 134: // expr_primitive: game -#line 543 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < game_ptr > ()); } + case 129: // expr_primitive: expr_size +#line 540 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2608 "parser.cpp" break; - case 135: // expr_primitive: self -#line 544 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < self_ptr > ()); } + case 130: // expr_primitive: thisthread +#line 541 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < thisthread_ptr > ()); } #line 2614 "parser.cpp" break; - case 136: // expr_primitive: anim -#line 545 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < anim_ptr > ()); } + case 131: // expr_primitive: empty_array +#line 542 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < empty_array_ptr > ()); } #line 2620 "parser.cpp" break; - case 137: // expr_primitive: level -#line 546 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < level_ptr > ()); } + case 132: // expr_primitive: undefined +#line 543 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < undefined_ptr > ()); } #line 2626 "parser.cpp" break; - case 138: // expr_primitive: animation -#line 547 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animation_ptr > ()); } + case 133: // expr_primitive: game +#line 544 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < game_ptr > ()); } #line 2632 "parser.cpp" break; - case 139: // expr_primitive: animtree -#line 548 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animtree_ptr > ()); } + case 134: // expr_primitive: self +#line 545 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < self_ptr > ()); } #line 2638 "parser.cpp" break; - case 140: // expr_primitive: name -#line 549 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < name_ptr > ()); } + case 135: // expr_primitive: anim +#line 546 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < anim_ptr > ()); } #line 2644 "parser.cpp" break; - case 141: // expr_primitive: istring -#line 550 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < istring_ptr > ()); } + case 136: // expr_primitive: level +#line 547 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < level_ptr > ()); } #line 2650 "parser.cpp" break; - case 142: // expr_primitive: string -#line 551 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < string_ptr > ()); } + case 137: // expr_primitive: animation +#line 548 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animation_ptr > ()); } #line 2656 "parser.cpp" break; - case 143: // expr_primitive: vector -#line 552 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < vector_ptr > ()); } + case 138: // expr_primitive: animtree +#line 549 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animtree_ptr > ()); } #line 2662 "parser.cpp" break; - case 144: // expr_primitive: neg_float -#line 553 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } + case 139: // expr_primitive: name +#line 550 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < name_ptr > ()); } #line 2668 "parser.cpp" break; - case 145: // expr_primitive: neg_integer -#line 554 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } + case 140: // expr_primitive: istring +#line 551 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < istring_ptr > ()); } #line 2674 "parser.cpp" break; - case 146: // expr_primitive: float -#line 555 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } + case 141: // expr_primitive: string +#line 552 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < string_ptr > ()); } #line 2680 "parser.cpp" break; - case 147: // expr_primitive: integer -#line 556 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } + case 142: // expr_primitive: color +#line 553 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < color_ptr > ()); } #line 2686 "parser.cpp" break; - case 148: // expr_primitive: false -#line 557 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < false_ptr > ()); } + case 143: // expr_primitive: vector +#line 554 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < vector_ptr > ()); } #line 2692 "parser.cpp" break; - case 149: // expr_primitive: true -#line 558 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < true_ptr > ()); } + case 144: // expr_primitive: float +#line 555 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } #line 2698 "parser.cpp" break; - case 150: // expr_call: expr_call_function -#line 562 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 145: // expr_primitive: integer +#line 556 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } #line 2704 "parser.cpp" break; - case 151: // expr_call: expr_call_pointer -#line 563 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 146: // expr_primitive: false +#line 557 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < false_ptr > ()); } #line 2710 "parser.cpp" break; - case 152: // expr_call: object expr_call_function -#line 564 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 147: // expr_primitive: true +#line 558 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < true_ptr > ()); } #line 2716 "parser.cpp" break; - case 153: // expr_call: object expr_call_pointer -#line 565 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 148: // expr_call: expr_call_function +#line 562 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2722 "parser.cpp" break; - case 154: // expr_call_thread: "thread" expr_call_function -#line 569 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 149: // expr_call: expr_call_pointer +#line 563 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2728 "parser.cpp" break; - case 155: // expr_call_thread: "thread" expr_call_pointer -#line 570 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 150: // expr_call: object expr_call_function +#line 564 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2734 "parser.cpp" break; - case 156: // expr_call_thread: object "thread" expr_call_function -#line 571 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 151: // expr_call: object expr_call_pointer +#line 565 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2740 "parser.cpp" break; - case 157: // expr_call_thread: object "thread" expr_call_pointer -#line 572 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 152: // expr_call_thread: "thread" expr_call_function +#line 569 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2746 "parser.cpp" break; - case 158: // expr_call_childthread: "childthread" expr_call_function -#line 576 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 153: // expr_call_thread: "thread" expr_call_pointer +#line 570 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2752 "parser.cpp" break; - case 159: // expr_call_childthread: "childthread" expr_call_pointer -#line 577 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 154: // expr_call_thread: object "thread" expr_call_function +#line 571 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2758 "parser.cpp" break; - case 160: // expr_call_childthread: object "childthread" expr_call_function -#line 578 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 155: // expr_call_thread: object "thread" expr_call_pointer +#line 572 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2764 "parser.cpp" break; - case 161: // expr_call_childthread: object "childthread" expr_call_pointer -#line 579 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 156: // expr_call_childthread: "childthread" expr_call_function +#line 576 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2770 "parser.cpp" break; - case 162: // expr_call_function: name "(" expr_arguments ")" -#line 584 "parser.ypp" - {yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::make_unique(), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 157: // expr_call_childthread: "childthread" expr_call_pointer +#line 577 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2776 "parser.cpp" break; - case 163: // expr_call_function: file "::" name "(" expr_arguments ")" -#line 586 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < file_ptr > ()), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 158: // expr_call_childthread: object "childthread" expr_call_function +#line 578 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2782 "parser.cpp" break; - case 164: // expr_call_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 591 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, false, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 159: // expr_call_childthread: object "childthread" expr_call_pointer +#line 579 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2788 "parser.cpp" break; - case 165: // expr_call_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 593 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, true, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 160: // expr_call_function: name "(" expr_arguments ")" +#line 584 "parser.ypp" + {yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::make_unique(), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2794 "parser.cpp" break; - case 166: // expr_arguments: expr_arguments_filled -#line 597 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } + case 161: // expr_call_function: file "::" name "(" expr_arguments ")" +#line 586 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < file_ptr > ()), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2800 "parser.cpp" break; - case 167: // expr_arguments: expr_arguments_empty -#line 598 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } + case 162: // expr_call_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 591 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, false, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2806 "parser.cpp" break; - case 168: // expr_arguments_filled: expr_arguments "," expr -#line 603 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[2].value.as < expr_arguments_ptr > ()); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } + case 163: // expr_call_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 593 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, true, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2812 "parser.cpp" break; - case 169: // expr_arguments_filled: expr -#line 605 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } + case 164: // expr_arguments: expr_arguments_filled +#line 597 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } #line 2818 "parser.cpp" break; - case 170: // expr_arguments_empty: %empty -#line 610 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); } + case 165: // expr_arguments: expr_arguments_empty +#line 598 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } #line 2824 "parser.cpp" break; - case 171: // expr_function: "::" name -#line 615 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < name_ptr > ())); } + case 166: // expr_arguments_filled: expr_arguments "," expr +#line 603 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[2].value.as < expr_arguments_ptr > ()); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2830 "parser.cpp" break; - case 172: // expr_function: file "::" name -#line 617 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < file_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } + case 167: // expr_arguments_filled: expr +#line 605 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2836 "parser.cpp" break; - case 173: // expr_add_array: "[" expr_arguments_filled "]" -#line 622 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 168: // expr_arguments_empty: %empty +#line 610 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); } #line 2842 "parser.cpp" break; - case 174: // expr_array: object "[" expr "]" -#line 627 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < node_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 169: // expr_function: "::" name +#line 615 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2848 "parser.cpp" break; - case 175: // expr_field: object "." name -#line 632 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } + case 170: // expr_function: file "::" name +#line 617 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < file_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2854 "parser.cpp" break; - case 176: // expr_size: object ".size" -#line 637 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 171: // expr_add_array: "[" expr_arguments_filled "]" +#line 622 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2860 "parser.cpp" break; - case 177: // object: expr_call -#line 641 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 172: // expr_array: object "[" expr "]" +#line 627 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < node_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2866 "parser.cpp" break; - case 178: // object: expr_array -#line 642 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } + case 173: // expr_field: object "." name +#line 632 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2872 "parser.cpp" break; - case 179: // object: expr_field -#line 643 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } + case 174: // expr_size: object ".size" +#line 637 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2878 "parser.cpp" break; - case 180: // object: game -#line 644 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < game_ptr > ()); } + case 175: // object: expr_call +#line 641 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2884 "parser.cpp" break; - case 181: // object: self -#line 645 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < self_ptr > ()); } + case 176: // object: expr_array +#line 642 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2890 "parser.cpp" break; - case 182: // object: anim -#line 646 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < anim_ptr > ()); } + case 177: // object: expr_field +#line 643 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2896 "parser.cpp" break; - case 183: // object: level -#line 647 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < level_ptr > ()); } + case 178: // object: game +#line 644 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < game_ptr > ()); } #line 2902 "parser.cpp" break; - case 184: // object: name -#line 648 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < name_ptr > ()); } + case 179: // object: self +#line 645 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < self_ptr > ()); } #line 2908 "parser.cpp" break; - case 185: // thisthread: "thisthread" -#line 651 "parser.ypp" - { yylhs.value.as < thisthread_ptr > () = std::make_unique(yylhs.location); } + case 180: // object: anim +#line 646 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < anim_ptr > ()); } #line 2914 "parser.cpp" break; - case 186: // empty_array: "[" "]" -#line 652 "parser.ypp" - { yylhs.value.as < empty_array_ptr > () = std::make_unique(yylhs.location); } + case 181: // object: level +#line 647 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < level_ptr > ()); } #line 2920 "parser.cpp" break; - case 187: // undefined: "undefined" -#line 653 "parser.ypp" - { yylhs.value.as < undefined_ptr > () = std::make_unique(yylhs.location); } + case 182: // object: name +#line 648 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < name_ptr > ()); } #line 2926 "parser.cpp" break; - case 188: // game: "game" -#line 654 "parser.ypp" - { yylhs.value.as < game_ptr > () = std::make_unique(yylhs.location); } + case 183: // float: "-" "float" +#line 652 "parser.ypp" + { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 2932 "parser.cpp" break; - case 189: // self: "self" -#line 655 "parser.ypp" - { yylhs.value.as < self_ptr > () = std::make_unique(yylhs.location); } + case 184: // float: "float" +#line 653 "parser.ypp" + { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2938 "parser.cpp" break; - case 190: // anim: "anim" -#line 656 "parser.ypp" - { yylhs.value.as < anim_ptr > () = std::make_unique(yylhs.location); } + case 185: // integer: "-" "int" +#line 657 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 2944 "parser.cpp" break; - case 191: // level: "level" -#line 657 "parser.ypp" - { yylhs.value.as < level_ptr > () = std::make_unique(yylhs.location); } + case 186: // integer: "int" +#line 658 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2950 "parser.cpp" break; - case 192: // animation: "%" "identifier" -#line 658 "parser.ypp" - { yylhs.value.as < animation_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 187: // integer: "octal int" +#line 659 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2956 "parser.cpp" break; - case 193: // animtree: "#animtree" -#line 659 "parser.ypp" - { yylhs.value.as < animtree_ptr > () = std::make_unique(yylhs.location); } + case 188: // integer: "binary int" +#line 660 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2962 "parser.cpp" break; - case 194: // name: "identifier" -#line 660 "parser.ypp" - { yylhs.value.as < name_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 189: // integer: "hexadecimal int" +#line 661 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2968 "parser.cpp" break; - case 195: // file: "file path" -#line 661 "parser.ypp" - { yylhs.value.as < file_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 190: // thisthread: "thisthread" +#line 664 "parser.ypp" + { yylhs.value.as < thisthread_ptr > () = std::make_unique(yylhs.location); } #line 2974 "parser.cpp" break; - case 196: // istring: "localized string" -#line 662 "parser.ypp" - { yylhs.value.as < istring_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 191: // empty_array: "[" "]" +#line 665 "parser.ypp" + { yylhs.value.as < empty_array_ptr > () = std::make_unique(yylhs.location); } #line 2980 "parser.cpp" break; - case 197: // string: "string literal" -#line 663 "parser.ypp" - { yylhs.value.as < string_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 192: // undefined: "undefined" +#line 666 "parser.ypp" + { yylhs.value.as < undefined_ptr > () = std::make_unique(yylhs.location); } #line 2986 "parser.cpp" break; - case 198: // vector: "(" expr "," expr "," expr ")" -#line 664 "parser.ypp" - { yylhs.value.as < vector_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[3].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 193: // game: "game" +#line 667 "parser.ypp" + { yylhs.value.as < game_ptr > () = std::make_unique(yylhs.location); } #line 2992 "parser.cpp" break; - case 199: // neg_float: "-" "float" -#line 665 "parser.ypp" - { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 194: // self: "self" +#line 668 "parser.ypp" + { yylhs.value.as < self_ptr > () = std::make_unique(yylhs.location); } #line 2998 "parser.cpp" break; - case 200: // neg_integer: "-" "int" -#line 666 "parser.ypp" - { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 195: // anim: "anim" +#line 669 "parser.ypp" + { yylhs.value.as < anim_ptr > () = std::make_unique(yylhs.location); } #line 3004 "parser.cpp" break; - case 201: // float: "float" -#line 667 "parser.ypp" - { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 196: // level: "level" +#line 670 "parser.ypp" + { yylhs.value.as < level_ptr > () = std::make_unique(yylhs.location); } #line 3010 "parser.cpp" break; - case 202: // integer: "int" -#line 668 "parser.ypp" - { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 197: // animation: "%" "identifier" +#line 671 "parser.ypp" + { yylhs.value.as < animation_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3016 "parser.cpp" break; - case 203: // false: "false" -#line 669 "parser.ypp" - { yylhs.value.as < false_ptr > () = std::make_unique(yylhs.location); } + case 198: // animtree: "#animtree" +#line 672 "parser.ypp" + { yylhs.value.as < animtree_ptr > () = std::make_unique(yylhs.location); } #line 3022 "parser.cpp" break; - case 204: // true: "true" -#line 670 "parser.ypp" - { yylhs.value.as < true_ptr > () = std::make_unique(yylhs.location); } + case 199: // name: "identifier" +#line 673 "parser.ypp" + { yylhs.value.as < name_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3028 "parser.cpp" break; + case 200: // file: "file path" +#line 674 "parser.ypp" + { yylhs.value.as < file_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3034 "parser.cpp" + break; -#line 3032 "parser.cpp" + case 201: // istring: "localized string" +#line 675 "parser.ypp" + { yylhs.value.as < istring_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3040 "parser.cpp" + break; + + case 202: // string: "string literal" +#line 676 "parser.ypp" + { yylhs.value.as < string_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3046 "parser.cpp" + break; + + case 203: // color: "color" +#line 677 "parser.ypp" + { yylhs.value.as < color_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3052 "parser.cpp" + break; + + case 204: // vector: "(" expr "," expr "," expr ")" +#line 678 "parser.ypp" + { yylhs.value.as < vector_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[3].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } +#line 3058 "parser.cpp" + break; + + case 205: // false: "false" +#line 679 "parser.ypp" + { yylhs.value.as < false_ptr > () = std::make_unique(yylhs.location); } +#line 3064 "parser.cpp" + break; + + case 206: // true: "true" +#line 680 "parser.ypp" + { yylhs.value.as < true_ptr > () = std::make_unique(yylhs.location); } +#line 3070 "parser.cpp" + break; + + +#line 3074 "parser.cpp" default: break; @@ -3222,8 +3264,9 @@ namespace xsk { namespace gsc { namespace s1 { ",", ".", "::", ":", ";", "?", "++", "--", "<<", ">>", "||", "&&", "==", "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", "%", - "file path", "identifier", "string literal", "localized string", "float", - "int", "ADD_ARRAY", "THEN", "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", + "file path", "identifier", "string literal", "localized string", "color", + "float", "int", "octal int", "binary int", "hexadecimal int", + "ADD_ARRAY", "THEN", "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", "$accept", "root", "program", "include", "define", "usingtree", "constant", "thread", "parameters", "stmt", "stmt_block", "stmt_list", "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", @@ -3237,10 +3280,9 @@ namespace xsk { namespace gsc { namespace s1 { "expr_call_childthread", "expr_call_function", "expr_call_pointer", "expr_arguments", "expr_arguments_filled", "expr_arguments_empty", "expr_function", "expr_add_array", "expr_array", "expr_field", - "expr_size", "object", "thisthread", "empty_array", "undefined", "game", - "self", "anim", "level", "animation", "animtree", "name", "file", - "istring", "string", "vector", "neg_float", "neg_integer", "float", - "integer", "false", "true", YY_NULLPTR + "expr_size", "object", "float", "integer", "thisthread", "empty_array", + "undefined", "game", "self", "anim", "level", "animation", "animtree", + "name", "file", "istring", "string", "color", "vector", "false", "true", YY_NULLPTR }; return yy_sname[yysymbol]; } @@ -3505,572 +3547,580 @@ namespace xsk { namespace gsc { namespace s1 { } - const short parser::yypact_ninf_ = -242; + const short parser::yypact_ninf_ = -244; - const short parser::yytable_ninf_ = -185; + const short parser::yytable_ninf_ = -183; const short parser::yypact_[] = { - 8, -74, -23, -242, 25, 8, -242, -242, -242, -242, - -242, -21, -242, -16, -59, -242, -242, -242, -14, 810, - -242, -242, 20, -6, -242, -242, 7, 7, -242, 43, - -242, -242, -242, -242, -242, -242, -242, 810, 684, -14, - 810, 810, -43, 3, -242, -242, -242, 1562, -242, -242, - -242, -242, 21, -242, -242, -242, -242, -242, -242, 53, - 177, -242, 367, -242, -242, -242, 391, 426, 466, 707, - -242, -242, 13, 15, -242, -242, -242, -242, -242, -242, - -242, -242, -242, 14, 59, -14, 60, -242, -242, 65, - 68, -242, -242, 75, 1002, 684, -242, 1645, 80, 91, - -242, -242, -242, -242, -242, -242, -242, -242, 810, 810, - 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, - 810, 810, 810, 810, 810, 810, 810, 7, 7, -242, - 873, -14, -242, -242, 810, -14, -242, 568, -242, -242, - 810, -14, 810, -242, 810, 806, 810, -242, 1527, 262, - 262, 1676, 1686, 454, 454, 203, 203, 203, 203, 1717, - 1758, 1727, 127, 127, -242, -242, -242, -242, -242, -242, - -242, 1412, -242, 32, -242, 100, 93, 104, 126, 810, - 117, 19, 130, 133, 134, 140, 144, -4, 139, 142, - 150, 747, -242, -15, -15, -242, -242, 613, -242, -242, - -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, - -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, - -242, 153, 163, 164, -242, -242, 920, -242, -242, -242, - -242, 65, 806, 100, 1452, 1491, 171, 1645, 810, -242, - -242, 810, -242, 810, 810, 1597, -242, 149, -242, 810, - 810, 770, -14, 810, 132, 168, 174, 176, -242, -242, - -242, -242, 1632, -242, -11, -11, -242, -242, -242, -242, - -242, 180, 187, 188, 192, -242, -242, 810, 810, 810, - 810, 810, 810, 810, 810, 810, 810, 810, 189, 810, - 196, 1645, 49, 50, 71, -242, 191, 1168, 1202, 194, - -242, 966, 9, 1236, -242, -242, -242, -242, 810, 810, - 810, 810, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, - 1645, 1645, 1645, 198, 1270, 810, -242, 209, 210, -242, - 658, 658, 810, 810, -14, 59, 1304, 1046, 1090, 1134, - 810, -242, 72, -242, -242, 225, -242, 211, 1645, 1338, - 229, -242, 216, 217, 810, 218, 810, 223, 810, 83, - -242, 658, 770, 658, 810, -242, -242, 84, -242, 141, - -242, 145, -242, -242, 212, -242, 1372, 224, 231, 240, - 658, 658, -242, -242, -242, -242, -242 + 3, -71, -24, -244, 30, 3, -244, -244, -244, -244, + -244, -23, -244, -29, -54, -244, -244, -244, -49, 648, + -244, -244, -1, -21, -244, -244, -16, -16, -244, 12, + -244, -244, -244, -244, -244, -244, -244, 648, 514, -49, + 648, 648, 10, -37, -244, -244, -244, -244, -244, -244, + -244, 1603, -244, -244, -244, -244, 7, -244, -244, -244, + -244, -244, -244, 383, 604, -244, 671, -244, -244, -244, + -244, -244, 916, 924, 941, 946, -244, -244, 17, 26, + -244, -244, -244, -244, -244, -244, 25, 11, -49, 33, + -244, -244, 45, 35, -244, -244, 53, 1003, 514, -244, + 1686, 52, 42, -244, -244, -244, -244, -244, -244, -244, + -244, 648, 648, 648, 648, 648, 648, 648, 648, 648, + 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, + -16, -16, -244, 715, -49, -244, -244, 648, -49, -244, + 807, -244, -244, 648, -49, 648, -244, 648, 1413, 648, + -244, 1568, 231, 231, 1717, 1727, 710, 710, 41, 41, + 41, 41, 1758, 1799, 1768, 44, 44, -244, -244, -244, + -244, -244, -244, -244, 1453, -244, -17, -244, 69, 57, + 70, 74, 648, 79, -27, 77, 92, 93, 99, 101, + 342, 94, 96, 97, 581, -244, 683, 683, -244, -244, + 852, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, 119, 120, 121, -244, -244, 430, + -244, -244, -244, -244, 45, 1413, 69, 1493, 1532, 104, + 1686, 648, -244, -244, 648, -244, 648, 648, 1638, -244, + 135, -244, 648, 648, 442, -49, 648, 51, 128, 130, + -244, -244, -244, -244, 1673, -244, 175, 175, -244, -244, + -244, -244, -244, 141, 145, 147, 149, -244, -244, 648, + 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, + 150, 648, 152, 1686, 9, 19, 21, -244, 140, 1169, + 1203, 148, -244, 967, -2, 1237, -244, -244, -244, 648, + 648, 648, 648, 1686, 1686, 1686, 1686, 1686, 1686, 1686, + 1686, 1686, 1686, 1686, 159, 1271, 648, -244, 153, 157, + -244, 897, 897, 648, 648, -49, 11, 1305, 1047, 1091, + 1135, 648, -244, 22, -244, -244, 191, -244, 161, 1686, + 1339, 188, -244, 162, 166, 648, 167, 648, 168, 648, + 32, -244, 897, 442, 897, 648, -244, -244, 40, -244, + 58, -244, 67, -244, -244, 179, -244, 1373, 173, 174, + 177, 897, 897, -244, -244, -244, -244, -244 }; const unsigned char parser::yydefact_[] = { - 3, 0, 0, 194, 0, 2, 6, 7, 9, 10, - 11, 0, 195, 0, 0, 1, 4, 5, 17, 0, - 8, 197, 0, 0, 16, 193, 0, 0, 185, 0, - 204, 203, 187, 188, 189, 190, 191, 0, 170, 0, - 0, 0, 0, 0, 196, 201, 202, 0, 82, 83, - 84, 85, 123, 124, 125, 150, 151, 126, 127, 128, - 129, 130, 0, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 0, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 0, 0, 0, 0, 154, 155, 0, - 0, 158, 159, 0, 0, 170, 186, 169, 0, 166, - 167, 171, 122, 121, 199, 200, 192, 13, 0, 0, + 3, 0, 0, 199, 0, 2, 6, 7, 9, 10, + 11, 0, 200, 0, 0, 1, 4, 5, 17, 0, + 8, 202, 0, 0, 16, 198, 0, 0, 190, 0, + 206, 205, 192, 193, 194, 195, 196, 0, 168, 0, + 0, 0, 0, 0, 201, 203, 184, 186, 187, 188, + 189, 0, 81, 82, 83, 84, 122, 123, 124, 148, + 149, 125, 126, 127, 128, 129, 0, 144, 145, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 0, + 140, 141, 142, 143, 146, 147, 0, 0, 0, 0, + 152, 153, 0, 0, 156, 157, 0, 0, 168, 191, + 167, 0, 164, 165, 169, 121, 120, 183, 185, 197, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, - 0, 0, 152, 153, 170, 0, 12, 0, 14, 15, - 0, 0, 0, 120, 0, 169, 0, 173, 0, 113, - 114, 101, 102, 103, 104, 105, 106, 107, 108, 110, - 111, 112, 115, 116, 117, 118, 119, 156, 157, 160, - 161, 0, 175, 0, 166, 172, 0, 0, 0, 0, + 0, 0, 174, 0, 0, 150, 151, 168, 0, 12, + 0, 14, 15, 0, 0, 0, 119, 0, 167, 0, + 171, 0, 112, 113, 100, 101, 102, 103, 104, 105, + 106, 107, 109, 110, 111, 114, 115, 116, 117, 118, + 154, 155, 158, 159, 0, 173, 0, 164, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 43, 0, 0, 45, 18, 0, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 0, 177, 0, 178, 179, 0, 180, 181, 182, - 183, 184, 0, 0, 0, 0, 0, 168, 0, 174, - 162, 170, 75, 170, 170, 0, 57, 0, 58, 0, - 0, 79, 0, 0, 0, 0, 0, 0, 70, 71, - 72, 74, 0, 177, 86, 87, 42, 44, 48, 46, - 47, 0, 0, 0, 0, 88, 89, 0, 0, 0, + 0, 0, 0, 0, 0, 43, 0, 0, 45, 18, + 0, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 0, 175, 0, 176, 177, 0, + 178, 179, 180, 181, 182, 0, 0, 0, 0, 0, + 166, 0, 172, 160, 168, 74, 168, 168, 0, 57, + 0, 58, 0, 0, 78, 0, 0, 0, 0, 0, + 69, 70, 71, 73, 0, 175, 85, 86, 42, 44, + 48, 46, 47, 0, 0, 0, 0, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 109, 0, 0, 0, 52, 0, 0, 0, 0, - 78, 0, 0, 0, 69, 68, 67, 73, 0, 0, - 0, 0, 90, 96, 97, 98, 99, 100, 91, 92, - 93, 95, 94, 0, 0, 170, 163, 0, 0, 59, - 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, - 170, 198, 0, 76, 77, 60, 62, 0, 80, 0, - 0, 66, 0, 0, 170, 0, 170, 0, 170, 0, - 164, 0, 79, 0, 0, 49, 51, 0, 54, 0, - 56, 0, 165, 61, 0, 64, 0, 0, 0, 0, - 0, 0, 50, 53, 55, 63, 65 + 0, 0, 0, 108, 0, 0, 0, 52, 0, 0, + 0, 0, 77, 0, 0, 0, 67, 68, 72, 0, + 0, 0, 0, 89, 95, 96, 97, 98, 99, 90, + 91, 92, 94, 93, 0, 0, 168, 161, 0, 0, + 59, 0, 0, 80, 0, 0, 0, 0, 0, 0, + 0, 168, 204, 0, 75, 76, 60, 62, 0, 79, + 0, 0, 66, 0, 0, 168, 0, 168, 0, 168, + 0, 162, 0, 78, 0, 0, 49, 51, 0, 54, + 0, 56, 0, 163, 61, 0, 64, 0, 0, 0, + 0, 0, 0, 50, 53, 55, 63, 65 }; const short parser::yypgoto_[] = { - -242, -242, -242, 286, 288, -242, -242, -242, -242, -185, - -81, -242, -242, -242, -242, -242, -242, -242, -242, -242, - -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, - -242, -242, -242, -242, -242, -68, -242, 39, -241, -242, - -242, -242, -242, -83, 52, -242, -25, -19, -121, -29, - -242, -242, -242, -22, 78, -242, 106, -242, -242, -242, - 118, 159, 195, 200, -242, -242, 0, 5, -242, -10, - -242, -242, 108, -242, 115, -242, -242 + -244, -244, -244, 223, 226, -244, -244, -244, -244, 15, + -84, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -128, -244, 39, -243, -244, + -244, -244, -244, -106, -118, -244, -25, -19, -53, -26, + -244, -244, -244, -81, -22, -244, 43, -244, 46, -244, + -244, -244, 90, 156, 193, 203, -244, -244, 0, 5, + -244, -10, -244, -244, -244, -244 }; const short parser::yydefgoto_[] = { - 0, 4, 5, 6, 7, 8, 9, 10, 23, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 299, 347, 97, 221, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 98, 174, - 100, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82 + 0, 4, 5, 6, 7, 8, 9, 10, 23, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 301, 348, 100, 224, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 101, 177, + 103, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85 }; const short parser::yytable_[] = { - 11, 87, 91, 138, 22, 11, 13, 88, 92, 99, - 300, 12, 267, 173, 1, 2, 29, 14, 24, 18, - 29, 33, 34, 35, 36, 15, 89, 89, 21, 86, - 333, 90, 90, 130, 20, 84, 131, 132, 29, 101, - 85, -184, -184, 133, -184, 19, 104, 105, -184, -177, - -177, 86, -177, 134, 222, 334, -177, -184, 47, 247, - -184, 83, 89, 135, 136, -177, 99, 90, -177, 248, - 12, 3, 3, 240, 12, 3, 94, 254, 146, 102, - 103, -178, -178, 21, -178, 139, 46, 93, -178, 106, - 326, 327, 12, 3, 3, 146, 146, -178, -184, -184, - -178, 137, 167, 169, 140, 134, -177, -177, 168, 170, - 263, 263, 328, 360, 222, 224, 141, 146, 146, 142, - 292, 300, 293, 294, 372, 377, 146, 89, 89, 146, - 146, 172, 90, 90, 145, 175, 147, 231, -178, -178, - 241, 233, 90, 242, 243, 345, 346, 148, 149, 150, + 11, 90, 94, 141, 22, 11, 13, 91, 95, 1, + 2, 302, 102, 250, 12, 29, 14, 18, 24, 334, + 87, 20, 226, 251, 243, 88, 92, 92, 89, 149, + 15, 93, 93, 21, 225, -175, -175, 3, -175, 104, + 86, 135, -175, 19, 335, -182, -182, 136, -182, 109, + 327, -175, -182, 140, -175, 149, 96, 137, 51, 227, + 328, -182, 329, 361, -182, 149, 92, 149, 149, 12, + 3, 93, 102, 373, 138, 139, 97, 143, 149, 105, + 106, 378, 226, 144, 176, 137, 149, 150, 142, 3, + 265, 265, -175, -175, 225, 112, 113, 145, 149, 379, + 107, 108, -182, -182, 149, 170, 172, 245, 380, 244, + 246, 171, 173, 149, 247, 227, 227, 252, 228, 227, + 302, 125, 126, 127, 128, 129, 127, 128, 129, 249, + 92, 92, 253, 254, 175, 93, 93, 148, 178, 255, + 234, 256, 108, 260, 236, 93, 261, 262, 265, 292, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 244, 246, 263, 171, - 249, 224, 224, 250, 251, 224, 373, 255, 375, 232, - 252, 234, 378, 235, 253, 237, 379, 146, 258, 223, - 296, 146, 259, 231, 231, 385, 386, 231, 90, 90, - 260, 132, 90, 268, 342, -179, -179, 133, -179, 124, - 125, 126, -179, 269, 270, 225, 290, 304, 245, 359, - 308, -179, 105, 305, -179, 306, 89, 309, 310, 224, - 262, 90, 311, 367, 323, 369, 325, 371, 340, 132, - 132, 329, 361, 226, 332, 133, 133, 222, 222, 223, - 364, 231, 302, 380, 351, 227, 90, 109, 110, 343, - 344, 362, -179, -179, 89, 89, 365, 366, 368, 90, - 90, 225, 225, 370, 382, 225, 132, 291, 222, 263, - 222, 383, 133, 122, 123, 124, 125, 126, 297, 298, - 384, 16, 303, 17, 374, 256, 228, 222, 222, 264, - 265, 89, 257, 226, 0, 0, 90, 0, 224, 224, - 0, 227, 227, 0, 0, 227, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 0, 324, 225, - 231, 231, 229, 0, 350, 90, 90, 230, 0, 224, - 224, 224, 122, 123, 124, 125, 126, 336, 337, 338, - 339, 0, 228, 228, 0, 0, 228, 301, 224, 224, - 0, 231, 231, 231, 0, 0, 90, 90, 90, 227, - 0, 348, 349, 0, 0, 0, 0, 0, 0, 0, - 231, 231, 223, 223, 0, 90, 90, 0, 229, 229, - 0, 0, 229, 230, 230, 127, 128, 230, 29, 0, - 0, 0, 129, 376, 0, 0, 0, 0, 225, 225, - 228, 130, 0, 223, 131, 223, 0, 0, 0, -180, - -180, 0, -180, 0, 0, 0, -180, 0, 0, 0, - 0, 0, 223, 223, 0, -180, 226, 226, -180, 225, - 225, 225, 0, 0, 0, 0, 229, 0, 227, 227, - 0, 230, 12, 3, -181, -181, 0, -181, 225, 225, - 0, -181, 0, 0, 0, 0, 0, 226, 301, 226, - -181, 0, 0, -181, 0, 0, -180, -180, 0, 227, - 227, 227, 0, 0, 0, 0, 226, 226, 0, 228, - 228, 0, 0, 0, -182, -182, 0, -182, 227, 227, - 0, -182, 0, 0, 0, 0, 0, 0, 109, 110, - -182, -181, -181, -182, 115, 116, 117, 118, 0, 0, - 228, 228, 228, 0, 0, 229, 229, 0, 0, 0, - 230, 230, 0, 0, 122, 123, 124, 125, 126, 228, - 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -182, -182, 0, 0, 0, 229, 229, 229, 0, - 0, 230, 230, 230, 0, 0, 0, 0, 0, 0, - 0, 176, 177, 178, 0, 229, 229, 0, 0, 179, - 230, 230, 180, 181, 182, 0, 183, 184, 185, 0, - 186, 187, 188, 189, 190, 191, 26, 0, 0, 29, - 0, 0, 0, 0, 33, 34, 35, 36, 0, 0, - 137, 192, 86, 0, 0, 0, 176, 177, 178, 0, - 193, 194, 0, 0, 179, 0, 0, 180, 181, 182, - 0, 183, 184, 185, 0, 186, 187, 188, 189, 190, - 191, 26, 0, 0, 29, 0, 0, 0, 0, 33, - 34, 35, 36, 12, 3, 137, 266, 86, 0, 0, - 0, 176, 177, 178, 0, 193, 194, 0, 0, 179, - 0, 0, 180, 181, 182, 0, 183, 184, 185, 0, - 186, 187, 188, 189, 190, 191, 26, 0, 0, 29, - 0, 0, 25, 0, 33, 34, 35, 36, 12, 3, - 137, 0, 86, 0, 0, 0, 0, 0, 0, 0, - 193, 194, 26, 27, 28, 29, 30, 31, 32, 0, - 33, 34, 35, 36, 37, 0, 0, 0, 95, 96, - 0, 0, 39, 0, 0, -183, -183, 0, -183, 0, - 0, 0, -183, 12, 3, 0, 0, 0, 40, 41, - 0, -183, 0, 0, -183, 25, 0, 0, 0, 0, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 270, + 271, 272, 174, 227, 228, 228, 298, 306, 228, 307, + 259, 309, 235, 229, 237, 310, 238, 311, 240, 312, + 330, 294, 326, 295, 296, 324, 234, 234, 333, 341, + 234, 93, 93, 344, 135, 93, 29, 345, 362, 365, + 136, 363, 366, 226, 226, 269, 367, 369, 371, 133, + 381, 248, 134, 383, 384, 225, 225, 385, 16, 92, + 230, 17, 228, 264, 93, 375, 258, 0, 0, 266, + 267, 135, 135, 229, 226, 0, 226, 136, 136, 0, + 227, 227, 352, 0, 234, 304, 225, 265, 225, 93, + 12, 3, 0, 226, 226, 0, 92, 92, 0, 0, + 0, 93, 93, 343, 0, 225, 225, 0, 135, 0, + 293, 227, 227, 227, 136, 0, 230, 230, 360, 0, + 230, 299, 300, 0, 0, 305, 231, 303, 0, 0, + 227, 227, 368, 92, 370, 0, 372, 0, 93, 228, + 228, 125, 126, 127, 128, 129, 0, 0, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 0, + 325, 234, 234, 232, 0, 351, 93, 93, 0, 0, + 228, 228, 228, 233, 230, 0, 346, 347, 337, 338, + 339, 340, 231, 231, 0, 0, 231, 0, 0, 228, + 228, 0, 234, 234, 234, 0, 0, 93, 93, 93, + 0, 0, 349, 350, 229, 229, 0, 374, 0, 376, + 0, 234, 234, 0, 0, 0, 93, 93, 0, 232, + 232, 0, 0, 232, 0, 0, 386, 387, 0, 233, + 233, 0, 0, 233, 377, 229, 303, 229, 0, 0, + 231, -176, -176, 0, -176, 0, 0, 0, -176, 0, + 0, 230, 230, 257, 229, 229, 0, -176, 0, 21, + -176, 0, 0, 47, 48, 49, 50, 0, 0, 273, + 274, 0, 275, 276, 0, 0, 0, 232, 0, 0, + 0, 0, 230, 230, 230, 0, 0, 233, 130, 0, + 0, 29, 0, 0, 0, 0, 0, 0, -176, -176, + 0, 230, 230, 29, 133, 0, 0, 134, 33, 34, + 35, 36, 277, 278, 0, 0, 89, 231, 231, 0, + 0, 0, 0, 0, 196, 197, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, + 0, 0, 0, 0, 0, 12, 3, 0, 231, 231, + 231, 0, 25, 0, 232, 232, 0, 12, 3, 0, + 0, 0, 0, 0, 233, 233, 0, 231, 231, 0, + 0, 0, 26, 27, 28, 29, 30, 31, 32, 0, + 33, 34, 35, 36, 37, 232, 232, 232, 98, 99, + 0, 0, 39, 0, 0, 233, 233, 233, 0, 0, + 0, 0, 0, 0, 232, 232, 0, 0, 40, 41, + 0, 0, 0, 0, 233, 233, 0, 0, 0, 25, 0, 0, 0, 0, 0, 42, 0, 0, 43, 12, - 3, 21, 44, 45, 46, 26, 27, 28, 29, 30, - 31, 32, 0, 33, 34, 35, 36, 37, 0, 0, - 0, 38, -183, -183, 0, 39, 0, 261, 0, 0, - 0, 29, 0, 0, 0, 0, 33, 34, 35, 36, - 0, 40, 41, 0, 86, 0, 0, 0, 25, 0, - 0, 0, 193, 194, 0, 0, 0, 0, 42, 0, - 0, 43, 12, 3, 21, 44, 45, 46, 26, 27, - 28, 29, 30, 31, 32, 0, 33, 34, 35, 36, - 37, 236, 0, 0, 38, 12, 3, 108, 39, 0, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 0, 0, 0, 0, 40, 41, 0, 0, 0, 0, - 0, 25, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 42, 0, 0, 43, 12, 3, 21, 44, 45, - 46, 26, 27, 28, 29, 30, 31, 32, 0, 33, - 34, 35, 36, 37, 0, 0, 0, 95, 0, 0, - 0, 39, 0, 0, 0, 0, 0, 0, 0, 271, - 272, 0, 273, 274, 0, 0, 0, 40, 41, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 0, - 0, 29, 0, 0, 42, 0, 0, 43, 12, 3, - 21, 44, 45, 46, 130, 0, 0, 131, 0, 0, - 0, 0, 275, 276, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 29, 0, 0, - 0, 0, 0, 0, 0, 12, 3, 0, 0, 0, - 130, 0, 0, 131, 0, 0, 0, 0, 275, 276, + 3, 21, 44, 45, 46, 47, 48, 49, 50, 26, + 27, 28, 29, 30, 31, 32, 0, 33, 34, 35, + 36, 37, 0, 0, 0, 38, 0, 0, 0, 39, + 0, 263, -177, -177, 0, -177, 0, 0, 0, -177, + 0, 0, 0, 0, 0, 40, 41, 0, -177, 0, + 0, -177, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 42, 0, 0, 43, 12, 3, 21, 44, + 45, 46, 47, 48, 49, 50, 26, 27, 28, 29, + 30, 31, 32, 0, 33, 34, 35, 36, 37, -177, + -177, 0, 38, 0, 0, 0, 39, 0, 0, 130, + 131, 0, 29, 0, 0, 0, 132, 0, 0, 0, + 0, 0, 40, 41, 29, 133, 0, 0, 134, 33, + 34, 35, 36, 25, 0, 0, 0, 89, 0, 42, + 0, 0, 43, 12, 3, 21, 44, 45, 46, 47, + 48, 49, 50, 26, 27, 28, 29, 30, 31, 32, + 0, 33, 34, 35, 36, 37, 12, 3, 0, 98, + 0, 0, 0, 39, 112, 113, 0, 0, 12, 3, + 118, 119, 120, 121, 0, 0, 0, 0, 0, 40, + 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 125, 126, 127, 128, 129, 0, 42, 0, 0, 43, + 12, 3, 21, 44, 45, 46, 47, 48, 49, 50, + 179, 180, 181, 0, 0, 0, 0, 0, 182, 0, + 0, 183, 184, 185, 0, 186, 187, 188, 0, 189, + 190, 191, 192, 193, 194, 26, 0, 0, 29, 0, + 0, 0, 0, 33, 34, 35, 36, 0, 0, 140, + 195, 89, 0, 0, 0, 179, 180, 181, 0, 196, + 197, 0, 0, 182, 0, 0, 183, 184, 185, 0, + 186, 187, 188, 0, 189, 190, 191, 192, 193, 194, + 26, 0, 0, 29, 0, 0, 0, 0, 33, 34, + 35, 36, 12, 3, 140, 268, 89, 0, 0, 0, + 179, 180, 181, 0, 196, 197, 0, 0, 182, 0, + 0, 183, 184, 185, 0, 186, 187, 188, 0, 189, + 190, 191, 192, 193, 194, 26, 0, 0, 29, 0, + 0, 0, 0, 33, 34, 35, 36, 12, 3, 140, + 0, 89, 0, 0, -178, -178, 0, -178, 0, 196, + 197, -178, -179, -179, 0, -179, 0, 0, 0, -179, + -178, 0, 0, -178, 0, 0, 0, 0, -179, -180, + -180, -179, -180, 0, -181, -181, -180, -181, 0, 0, + 0, -181, 12, 3, 0, -180, 0, 0, -180, 0, + -181, 0, 0, -181, 0, 0, 0, 0, 29, 0, + 0, -178, -178, 0, 0, 0, 0, 0, 0, -179, + -179, 133, 0, 0, 134, 0, 0, 0, 0, 277, + 278, 0, 0, 0, 0, 0, -180, -180, 0, 0, + 0, -181, -181, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 146, 0, 0, 0, 0, 147, + 0, 0, 12, 3, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 143, 0, 0, 0, 0, 144, 0, - 0, 12, 3, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 353, 0, 0, - 0, 0, 354, 0, 0, 0, 0, 108, 0, 0, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 355, 0, 0, 0, 0, 356, 0, 0, 0, - 0, 108, 0, 0, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, - 122, 123, 124, 125, 126, 357, 0, 0, 0, 0, - 358, 0, 0, 0, 0, 108, 0, 0, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 330, - 0, 119, 120, 121, 122, 123, 124, 125, 126, 108, - 0, 0, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 331, 0, 119, 120, 121, 122, 123, - 124, 125, 126, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 335, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 108, 0, 0, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 341, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 108, 0, 0, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 352, 0, 119, 120, 121, - 122, 123, 124, 125, 126, 108, 0, 0, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 363, - 0, 119, 120, 121, 122, 123, 124, 125, 126, 108, - 0, 0, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 381, 0, 119, 120, 121, 122, 123, - 124, 125, 126, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 239, 0, 0, - 0, 0, 0, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 288, 0, 0, - 0, 0, 0, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 289, 0, 0, - 0, 0, 108, 0, 0, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, - 121, 122, 123, 124, 125, 126, 238, 0, 108, 0, - 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, - 125, 126, 107, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 295, 108, 0, - 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, - 125, 126, 307, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 108, 0, 0, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 0, 0, 0, - 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, - 109, 110, 0, 112, 113, 114, 115, 116, 117, 118, - 109, 110, 0, 0, 113, 114, 115, 116, 117, 118, - 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 109, 110, 0, 0, 113, 114, 115, 116, 117, - 118, 109, 110, 0, 0, 113, 114, 115, 116, 117, - 118, 0, 0, 0, 0, 120, 121, 122, 123, 124, - 125, 126, 0, 0, 0, 120, 0, 122, 123, 124, - 125, 126, 109, 110, 0, 0, 113, 114, 115, 116, - 117, 118, 0, 0, 0, 0, 0, 0, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 354, 0, + 0, 0, 0, 355, 0, 0, 0, 0, 111, 0, + 0, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 122, 123, 124, 125, 126, 127, + 128, 129, 356, 0, 0, 0, 0, 357, 0, 0, + 0, 0, 111, 0, 0, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 123, - 124, 125, 126 + 124, 125, 126, 127, 128, 129, 358, 0, 0, 0, + 0, 359, 0, 0, 0, 0, 111, 0, 0, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 331, 0, 122, 123, 124, 125, 126, 127, 128, 129, + 111, 0, 0, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 332, 0, 122, 123, 124, 125, + 126, 127, 128, 129, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 111, 0, + 0, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 342, 0, 122, 123, 124, 125, 126, 127, + 128, 129, 111, 0, 0, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 353, 0, 122, 123, + 124, 125, 126, 127, 128, 129, 111, 0, 0, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 364, 0, 122, 123, 124, 125, 126, 127, 128, 129, + 111, 0, 0, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 382, 0, 122, 123, 124, 125, + 126, 127, 128, 129, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 239, 0, + 0, 0, 0, 0, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 242, 0, + 0, 0, 0, 0, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 290, 0, + 0, 0, 0, 0, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 291, 0, + 0, 0, 0, 111, 0, 0, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, + 123, 124, 125, 126, 127, 128, 129, 241, 0, 111, + 0, 0, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 122, 123, 124, 125, 126, + 127, 128, 129, 110, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 297, 111, + 0, 0, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 122, 123, 124, 125, 126, + 127, 128, 129, 308, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 111, 0, 0, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 0, 0, + 0, 0, 0, 122, 123, 124, 125, 126, 127, 128, + 129, 112, 113, 0, 115, 116, 117, 118, 119, 120, + 121, 112, 113, 0, 0, 116, 117, 118, 119, 120, + 121, 0, 0, 0, 122, 123, 124, 125, 126, 127, + 128, 129, 0, 0, 122, 123, 124, 125, 126, 127, + 128, 129, 112, 113, 0, 0, 116, 117, 118, 119, + 120, 121, 112, 113, 0, 0, 116, 117, 118, 119, + 120, 121, 0, 0, 0, 0, 123, 124, 125, 126, + 127, 128, 129, 0, 0, 0, 123, 0, 125, 126, + 127, 128, 129, 112, 113, 0, 0, 116, 117, 118, + 119, 120, 121, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, + 126, 127, 128, 129 }; const short parser::yycheck_[] = { - 0, 26, 27, 84, 14, 5, 1, 26, 27, 38, - 251, 85, 197, 134, 6, 7, 31, 40, 18, 40, - 31, 36, 37, 38, 39, 0, 26, 27, 87, 44, - 21, 26, 27, 44, 50, 41, 47, 62, 31, 39, - 46, 28, 29, 62, 31, 66, 89, 90, 35, 28, - 29, 44, 31, 40, 137, 46, 35, 44, 19, 40, - 47, 41, 62, 48, 50, 44, 95, 62, 47, 50, - 85, 86, 86, 41, 85, 86, 37, 81, 46, 40, - 41, 28, 29, 87, 31, 85, 90, 44, 35, 86, - 41, 41, 85, 86, 86, 46, 46, 44, 85, 86, - 47, 42, 127, 128, 44, 40, 85, 86, 127, 128, - 193, 194, 41, 41, 197, 137, 48, 46, 46, 44, - 241, 362, 243, 244, 41, 41, 46, 127, 128, 46, - 46, 131, 127, 128, 95, 135, 45, 137, 85, 86, - 40, 141, 137, 50, 40, 330, 331, 108, 109, 110, + 0, 26, 27, 87, 14, 5, 1, 26, 27, 6, + 7, 254, 38, 40, 85, 31, 40, 40, 18, 21, + 41, 50, 140, 50, 41, 46, 26, 27, 44, 46, + 0, 26, 27, 87, 140, 28, 29, 86, 31, 39, + 41, 66, 35, 66, 46, 28, 29, 66, 31, 86, + 41, 44, 35, 42, 47, 46, 44, 40, 19, 140, + 41, 44, 41, 41, 47, 46, 66, 46, 46, 85, + 86, 66, 98, 41, 48, 50, 37, 44, 46, 40, + 41, 41, 200, 48, 137, 40, 46, 45, 88, 86, + 196, 197, 85, 86, 200, 54, 55, 44, 46, 41, + 90, 91, 85, 86, 46, 130, 131, 50, 41, 40, + 40, 130, 131, 46, 40, 196, 197, 40, 140, 200, + 363, 80, 81, 82, 83, 84, 82, 83, 84, 50, + 130, 131, 40, 40, 134, 130, 131, 98, 138, 40, + 140, 40, 91, 49, 144, 140, 50, 50, 254, 45, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 40, 50, 251, 130, - 40, 193, 194, 40, 40, 197, 361, 187, 363, 140, - 40, 142, 41, 144, 40, 146, 41, 46, 49, 137, - 41, 46, 50, 193, 194, 380, 381, 197, 193, 194, - 50, 226, 197, 50, 325, 28, 29, 226, 31, 82, - 83, 84, 35, 50, 50, 137, 45, 49, 179, 340, - 40, 44, 90, 49, 47, 49, 226, 40, 40, 251, - 191, 226, 40, 354, 45, 356, 40, 358, 40, 264, - 265, 50, 17, 137, 50, 264, 265, 330, 331, 197, - 21, 251, 252, 41, 335, 137, 251, 54, 55, 50, - 50, 50, 85, 86, 264, 265, 50, 50, 50, 264, - 265, 193, 194, 50, 50, 197, 301, 238, 361, 362, - 363, 50, 301, 80, 81, 82, 83, 84, 249, 250, - 50, 5, 253, 5, 362, 187, 137, 380, 381, 193, - 194, 301, 187, 197, -1, -1, 301, -1, 330, 331, - -1, 193, 194, -1, -1, 197, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 251, - 330, 331, 137, -1, 334, 330, 331, 137, -1, 361, - 362, 363, 80, 81, 82, 83, 84, 308, 309, 310, - 311, -1, 193, 194, -1, -1, 197, 251, 380, 381, - -1, 361, 362, 363, -1, -1, 361, 362, 363, 251, - -1, 332, 333, -1, -1, -1, -1, -1, -1, -1, - 380, 381, 330, 331, -1, 380, 381, -1, 193, 194, - -1, -1, 197, 193, 194, 28, 29, 197, 31, -1, - -1, -1, 35, 364, -1, -1, -1, -1, 330, 331, - 251, 44, -1, 361, 47, 363, -1, -1, -1, 28, - 29, -1, 31, -1, -1, -1, 35, -1, -1, -1, - -1, -1, 380, 381, -1, 44, 330, 331, 47, 361, - 362, 363, -1, -1, -1, -1, 251, -1, 330, 331, - -1, 251, 85, 86, 28, 29, -1, 31, 380, 381, - -1, 35, -1, -1, -1, -1, -1, 361, 362, 363, - 44, -1, -1, 47, -1, -1, 85, 86, -1, 361, - 362, 363, -1, -1, -1, -1, 380, 381, -1, 330, - 331, -1, -1, -1, 28, 29, -1, 31, 380, 381, - -1, 35, -1, -1, -1, -1, -1, -1, 54, 55, - 44, 85, 86, 47, 60, 61, 62, 63, -1, -1, - 361, 362, 363, -1, -1, 330, 331, -1, -1, -1, - 330, 331, -1, -1, 80, 81, 82, 83, 84, 380, - 381, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 85, 86, -1, -1, -1, 361, 362, 363, -1, - -1, 361, 362, 363, -1, -1, -1, -1, -1, -1, - -1, 3, 4, 5, -1, 380, 381, -1, -1, 11, - 380, 381, 14, 15, 16, -1, 18, 19, 20, -1, - 22, 23, 24, 25, 26, 27, 28, -1, -1, 31, - -1, -1, -1, -1, 36, 37, 38, 39, -1, -1, - 42, 43, 44, -1, -1, -1, 3, 4, 5, -1, - 52, 53, -1, -1, 11, -1, -1, 14, 15, 16, - -1, 18, 19, 20, -1, 22, 23, 24, 25, 26, - 27, 28, -1, -1, 31, -1, -1, -1, -1, 36, - 37, 38, 39, 85, 86, 42, 43, 44, -1, -1, - -1, 3, 4, 5, -1, 52, 53, -1, -1, 11, - -1, -1, 14, 15, 16, -1, 18, 19, 20, -1, - 22, 23, 24, 25, 26, 27, 28, -1, -1, 31, - -1, -1, 8, -1, 36, 37, 38, 39, 85, 86, - 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, - 52, 53, 28, 29, 30, 31, 32, 33, 34, -1, - 36, 37, 38, 39, 40, -1, -1, -1, 44, 45, - -1, -1, 48, -1, -1, 28, 29, -1, 31, -1, - -1, -1, 35, 85, 86, -1, -1, -1, 64, 65, - -1, 44, -1, -1, 47, 8, -1, -1, -1, -1, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 50, + 50, 50, 133, 254, 196, 197, 41, 49, 200, 49, + 190, 40, 143, 140, 145, 40, 147, 40, 149, 40, + 50, 244, 40, 246, 247, 45, 196, 197, 50, 40, + 200, 196, 197, 50, 229, 200, 31, 50, 17, 21, + 229, 50, 50, 331, 332, 200, 50, 50, 50, 44, + 41, 182, 47, 50, 50, 331, 332, 50, 5, 229, + 140, 5, 254, 194, 229, 363, 190, -1, -1, 196, + 197, 266, 267, 200, 362, -1, 364, 266, 267, -1, + 331, 332, 336, -1, 254, 255, 362, 363, 364, 254, + 85, 86, -1, 381, 382, -1, 266, 267, -1, -1, + -1, 266, 267, 326, -1, 381, 382, -1, 303, -1, + 241, 362, 363, 364, 303, -1, 196, 197, 341, -1, + 200, 252, 253, -1, -1, 256, 140, 254, -1, -1, + 381, 382, 355, 303, 357, -1, 359, -1, 303, 331, + 332, 80, 81, 82, 83, 84, -1, -1, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, + 291, 331, 332, 140, -1, 335, 331, 332, -1, -1, + 362, 363, 364, 140, 254, -1, 331, 332, 309, 310, + 311, 312, 196, 197, -1, -1, 200, -1, -1, 381, + 382, -1, 362, 363, 364, -1, -1, 362, 363, 364, + -1, -1, 333, 334, 331, 332, -1, 362, -1, 364, + -1, 381, 382, -1, -1, -1, 381, 382, -1, 196, + 197, -1, -1, 200, -1, -1, 381, 382, -1, 196, + 197, -1, -1, 200, 365, 362, 363, 364, -1, -1, + 254, 28, 29, -1, 31, -1, -1, -1, 35, -1, + -1, 331, 332, 81, 381, 382, -1, 44, -1, 87, + 47, -1, -1, 91, 92, 93, 94, -1, -1, 9, + 10, -1, 12, 13, -1, -1, -1, 254, -1, -1, + -1, -1, 362, 363, 364, -1, -1, 254, 28, -1, + -1, 31, -1, -1, -1, -1, -1, -1, 85, 86, + -1, 381, 382, 31, 44, -1, -1, 47, 36, 37, + 38, 39, 52, 53, -1, -1, 44, 331, 332, -1, + -1, -1, -1, -1, 52, 53, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, -1, -1, -1, + -1, -1, -1, -1, -1, 85, 86, -1, 362, 363, + 364, -1, 8, -1, 331, 332, -1, 85, 86, -1, + -1, -1, -1, -1, 331, 332, -1, 381, 382, -1, + -1, -1, 28, 29, 30, 31, 32, 33, 34, -1, + 36, 37, 38, 39, 40, 362, 363, 364, 44, 45, + -1, -1, 48, -1, -1, 362, 363, 364, -1, -1, + -1, -1, -1, -1, 381, 382, -1, -1, 64, 65, + -1, -1, -1, -1, 381, 382, -1, -1, -1, 8, -1, -1, -1, -1, -1, 81, -1, -1, 84, 85, - 86, 87, 88, 89, 90, 28, 29, 30, 31, 32, - 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, - -1, 44, 85, 86, -1, 48, -1, 50, -1, -1, - -1, 31, -1, -1, -1, -1, 36, 37, 38, 39, - -1, 64, 65, -1, 44, -1, -1, -1, 8, -1, - -1, -1, 52, 53, -1, -1, -1, -1, 81, -1, - -1, 84, 85, 86, 87, 88, 89, 90, 28, 29, - 30, 31, 32, 33, 34, -1, 36, 37, 38, 39, - 40, 45, -1, -1, 44, 85, 86, 51, 48, -1, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - -1, -1, -1, -1, 64, 65, -1, -1, -1, -1, - -1, 8, -1, 77, 78, 79, 80, 81, 82, 83, - 84, 81, -1, -1, 84, 85, 86, 87, 88, 89, - 90, 28, 29, 30, 31, 32, 33, 34, -1, 36, - 37, 38, 39, 40, -1, -1, -1, 44, -1, -1, - -1, 48, -1, -1, -1, -1, -1, -1, -1, 9, - 10, -1, 12, 13, -1, -1, -1, 64, 65, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 28, -1, - -1, 31, -1, -1, 81, -1, -1, 84, 85, 86, - 87, 88, 89, 90, 44, -1, -1, 47, -1, -1, - -1, -1, 52, 53, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 31, -1, -1, - -1, -1, -1, -1, -1, 85, 86, -1, -1, -1, - 44, -1, -1, 47, -1, -1, -1, -1, 52, 53, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 28, + 29, 30, 31, 32, 33, 34, -1, 36, 37, 38, + 39, 40, -1, -1, -1, 44, -1, -1, -1, 48, + -1, 50, 28, 29, -1, 31, -1, -1, -1, 35, + -1, -1, -1, -1, -1, 64, 65, -1, 44, -1, + -1, 47, -1, -1, -1, -1, 8, -1, -1, -1, + -1, -1, 81, -1, -1, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 28, 29, 30, 31, + 32, 33, 34, -1, 36, 37, 38, 39, 40, 85, + 86, -1, 44, -1, -1, -1, 48, -1, -1, 28, + 29, -1, 31, -1, -1, -1, 35, -1, -1, -1, + -1, -1, 64, 65, 31, 44, -1, -1, 47, 36, + 37, 38, 39, 8, -1, -1, -1, 44, -1, 81, + -1, -1, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 28, 29, 30, 31, 32, 33, 34, + -1, 36, 37, 38, 39, 40, 85, 86, -1, 44, + -1, -1, -1, 48, 54, 55, -1, -1, 85, 86, + 60, 61, 62, 63, -1, -1, -1, -1, -1, 64, + 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 80, 81, 82, 83, 84, -1, 81, -1, -1, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 3, 4, 5, -1, -1, -1, -1, -1, 11, -1, + -1, 14, 15, 16, -1, 18, 19, 20, -1, 22, + 23, 24, 25, 26, 27, 28, -1, -1, 31, -1, + -1, -1, -1, 36, 37, 38, 39, -1, -1, 42, + 43, 44, -1, -1, -1, 3, 4, 5, -1, 52, + 53, -1, -1, 11, -1, -1, 14, 15, 16, -1, + 18, 19, 20, -1, 22, 23, 24, 25, 26, 27, + 28, -1, -1, 31, -1, -1, -1, -1, 36, 37, + 38, 39, 85, 86, 42, 43, 44, -1, -1, -1, + 3, 4, 5, -1, 52, 53, -1, -1, 11, -1, + -1, 14, 15, 16, -1, 18, 19, 20, -1, 22, + 23, 24, 25, 26, 27, 28, -1, -1, 31, -1, + -1, -1, -1, 36, 37, 38, 39, 85, 86, 42, + -1, 44, -1, -1, 28, 29, -1, 31, -1, 52, + 53, 35, 28, 29, -1, 31, -1, -1, -1, 35, + 44, -1, -1, 47, -1, -1, -1, -1, 44, 28, + 29, 47, 31, -1, 28, 29, 35, 31, -1, -1, + -1, 35, 85, 86, -1, 44, -1, -1, 47, -1, + 44, -1, -1, 47, -1, -1, -1, -1, 31, -1, + -1, 85, 86, -1, -1, -1, -1, -1, -1, 85, + 86, 44, -1, -1, 47, -1, -1, -1, -1, 52, + 53, -1, -1, -1, -1, -1, 85, 86, -1, -1, + -1, 85, 86, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 41, -1, -1, -1, -1, 46, + -1, -1, 85, 86, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 41, -1, -1, -1, -1, 46, -1, - -1, 85, 86, 51, -1, -1, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, - 78, 79, 80, 81, 82, 83, 84, 41, -1, -1, - -1, -1, 46, -1, -1, -1, -1, 51, -1, -1, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 77, 78, 79, 80, 81, 82, 83, - 84, 41, -1, -1, -1, -1, 46, -1, -1, -1, - -1, 51, -1, -1, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 77, 78, 79, - 80, 81, 82, 83, 84, 41, -1, -1, -1, -1, - 46, -1, -1, -1, -1, 51, -1, -1, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, - -1, 77, 78, 79, 80, 81, 82, 83, 84, 51, - -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 41, -1, 77, 78, 79, 80, 81, - 82, 83, 84, 51, -1, -1, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 41, -1, 77, - 78, 79, 80, 81, 82, 83, 84, 51, -1, -1, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 41, -1, 77, 78, 79, 80, 81, 82, 83, - 84, 51, -1, -1, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 41, -1, 77, 78, 79, - 80, 81, 82, 83, 84, 51, -1, -1, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, - -1, 77, 78, 79, 80, 81, 82, 83, 84, 51, - -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 41, -1, 77, 78, 79, 80, 81, - 82, 83, 84, 51, -1, -1, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, - 78, 79, 80, 81, 82, 83, 84, 45, -1, -1, - -1, -1, -1, 51, -1, -1, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, - 78, 79, 80, 81, 82, 83, 84, 45, -1, -1, - -1, -1, -1, 51, -1, -1, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, - 78, 79, 80, 81, 82, 83, 84, 46, -1, -1, + 77, 78, 79, 80, 81, 82, 83, 84, 41, -1, + -1, -1, -1, 46, -1, -1, -1, -1, 51, -1, + -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 77, 78, 79, 80, 81, 82, + 83, 84, 41, -1, -1, -1, -1, 46, -1, -1, -1, -1, 51, -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, 78, - 79, 80, 81, 82, 83, 84, 49, -1, 51, -1, + 79, 80, 81, 82, 83, 84, 41, -1, -1, -1, + -1, 46, -1, -1, -1, -1, 51, -1, -1, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 41, -1, 77, 78, 79, 80, 81, 82, 83, 84, + 51, -1, -1, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 41, -1, 77, 78, 79, 80, + 81, 82, 83, 84, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, + 77, 78, 79, 80, 81, 82, 83, 84, 51, -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 77, 78, 79, 80, 81, 82, - 83, 84, 50, 51, -1, -1, 54, 55, 56, 57, + -1, -1, 41, -1, 77, 78, 79, 80, 81, 82, + 83, 84, 51, -1, -1, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 41, -1, 77, 78, + 79, 80, 81, 82, 83, 84, 51, -1, -1, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 41, -1, 77, 78, 79, 80, 81, 82, 83, 84, + 51, -1, -1, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 41, -1, 77, 78, 79, 80, + 81, 82, 83, 84, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 77, 78, 79, 80, 81, 82, 83, 84, 45, -1, + -1, -1, -1, -1, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 77, 78, 79, 80, 81, 82, 83, 84, 45, -1, + -1, -1, -1, -1, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 77, 78, 79, 80, 81, 82, 83, 84, 45, -1, + -1, -1, -1, -1, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 77, 78, 79, 80, 81, 82, 83, 84, 46, -1, + -1, -1, -1, 51, -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, - 78, 79, 80, 81, 82, 83, 84, 50, 51, -1, - -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 77, 78, 79, 80, 81, 82, - 83, 84, 50, 51, -1, -1, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 51, -1, -1, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 77, - 78, 79, 80, 81, 82, 83, 84, -1, -1, -1, - -1, -1, 77, 78, 79, 80, 81, 82, 83, 84, - 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, - 54, 55, -1, -1, 58, 59, 60, 61, 62, 63, - -1, -1, -1, 77, 78, 79, 80, 81, 82, 83, - 84, -1, -1, 77, 78, 79, 80, 81, 82, 83, - 84, 54, 55, -1, -1, 58, 59, 60, 61, 62, - 63, 54, 55, -1, -1, 58, 59, 60, 61, 62, - 63, -1, -1, -1, -1, 78, 79, 80, 81, 82, - 83, 84, -1, -1, -1, 78, -1, 80, 81, 82, - 83, 84, 54, 55, -1, -1, 58, 59, 60, 61, + 78, 79, 80, 81, 82, 83, 84, 49, -1, 51, + -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 80, 81, - 82, 83, 84 + -1, -1, -1, -1, -1, 77, 78, 79, 80, 81, + 82, 83, 84, 50, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 77, 78, 79, 80, 81, 82, 83, 84, 50, 51, + -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 77, 78, 79, 80, 81, + 82, 83, 84, 50, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 51, -1, -1, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 77, 78, 79, 80, 81, 82, 83, 84, -1, -1, + -1, -1, -1, 77, 78, 79, 80, 81, 82, 83, + 84, 54, 55, -1, 57, 58, 59, 60, 61, 62, + 63, 54, 55, -1, -1, 58, 59, 60, 61, 62, + 63, -1, -1, -1, 77, 78, 79, 80, 81, 82, + 83, 84, -1, -1, 77, 78, 79, 80, 81, 82, + 83, 84, 54, 55, -1, -1, 58, 59, 60, 61, + 62, 63, 54, 55, -1, -1, 58, 59, 60, 61, + 62, 63, -1, -1, -1, -1, 78, 79, 80, 81, + 82, 83, 84, -1, -1, -1, 78, -1, 80, 81, + 82, 83, 84, 54, 55, -1, -1, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, + 81, 82, 83, 84 }; const unsigned char parser::yystos_[] = { - 0, 6, 7, 86, 101, 102, 103, 104, 105, 106, - 107, 166, 85, 167, 40, 0, 103, 104, 40, 66, - 50, 87, 169, 108, 166, 8, 28, 29, 30, 31, + 0, 6, 7, 86, 105, 106, 107, 108, 109, 110, + 111, 172, 85, 173, 40, 0, 107, 108, 40, 66, + 50, 87, 175, 112, 172, 8, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 44, 48, - 64, 65, 81, 84, 88, 89, 90, 137, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 64, 65, 81, 84, 88, 89, 90, 91, 92, 93, + 94, 141, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 41, 41, 46, 44, 146, 147, 166, - 167, 146, 147, 44, 137, 44, 45, 137, 148, 149, - 150, 166, 137, 137, 89, 90, 86, 50, 51, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 77, - 78, 79, 80, 81, 82, 83, 84, 28, 29, 35, - 44, 47, 146, 147, 40, 48, 50, 42, 110, 166, - 44, 48, 44, 41, 46, 137, 46, 45, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 146, 147, 146, - 147, 137, 166, 148, 149, 166, 3, 4, 5, 11, - 14, 15, 16, 18, 19, 20, 22, 23, 24, 25, - 26, 27, 43, 52, 53, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 138, 143, 144, 153, 154, 156, 160, 161, 162, - 163, 166, 137, 166, 137, 137, 45, 137, 49, 45, - 41, 40, 50, 40, 40, 137, 50, 40, 50, 40, - 40, 40, 40, 40, 81, 169, 172, 174, 49, 50, - 50, 50, 137, 143, 156, 156, 43, 109, 50, 50, - 50, 9, 10, 12, 13, 52, 53, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 45, 46, - 45, 137, 148, 148, 148, 50, 41, 137, 137, 135, - 138, 156, 166, 137, 49, 49, 49, 50, 40, 40, - 40, 40, 137, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 45, 137, 40, 41, 41, 41, 50, - 41, 41, 50, 21, 46, 41, 137, 137, 137, 137, - 40, 41, 148, 50, 50, 109, 109, 136, 137, 137, - 166, 110, 41, 41, 46, 41, 46, 41, 46, 148, - 41, 17, 50, 41, 21, 50, 50, 148, 50, 148, - 50, 148, 41, 109, 135, 109, 137, 41, 41, 41, - 41, 41, 50, 50, 50, 109, 109 + 174, 175, 176, 177, 178, 179, 41, 41, 46, 44, + 150, 151, 172, 173, 150, 151, 44, 141, 44, 45, + 141, 152, 153, 154, 172, 141, 141, 90, 91, 86, + 50, 51, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 77, 78, 79, 80, 81, 82, 83, 84, + 28, 29, 35, 44, 47, 150, 151, 40, 48, 50, + 42, 114, 172, 44, 48, 44, 41, 46, 141, 46, + 45, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 150, 151, 150, 151, 141, 172, 152, 153, 172, 3, + 4, 5, 11, 14, 15, 16, 18, 19, 20, 22, + 23, 24, 25, 26, 27, 43, 52, 53, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 142, 147, 148, 157, 158, 160, + 166, 167, 168, 169, 172, 141, 172, 141, 141, 45, + 141, 49, 45, 41, 40, 50, 40, 40, 141, 50, + 40, 50, 40, 40, 40, 40, 40, 81, 162, 175, + 49, 50, 50, 50, 141, 147, 160, 160, 43, 113, + 50, 50, 50, 9, 10, 12, 13, 52, 53, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 45, 46, 45, 141, 152, 152, 152, 50, 41, 141, + 141, 139, 142, 160, 172, 141, 49, 49, 50, 40, + 40, 40, 40, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 45, 141, 40, 41, 41, 41, + 50, 41, 41, 50, 21, 46, 41, 141, 141, 141, + 141, 40, 41, 152, 50, 50, 113, 113, 140, 141, + 141, 172, 114, 41, 41, 46, 41, 46, 41, 46, + 152, 41, 17, 50, 41, 21, 50, 50, 152, 50, + 152, 50, 152, 41, 113, 139, 113, 141, 41, 41, + 41, 41, 41, 50, 50, 50, 113, 113 }; const unsigned char parser::yyr1_[] = { - 0, 100, 101, 101, 102, 102, 102, 102, 103, 104, - 104, 104, 105, 106, 107, 108, 108, 108, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 110, 110, 111, 111, 112, 112, 113, 114, - 115, 115, 116, 117, 117, 118, 118, 119, 120, 120, - 121, 122, 123, 124, 125, 125, 126, 127, 127, 127, - 128, 129, 130, 131, 131, 132, 133, 134, 135, 135, - 136, 136, 137, 137, 137, 137, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 139, 139, 139, 139, 139, 139, 139, 139, 140, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 0, 104, 105, 105, 106, 106, 106, 106, 107, 108, + 108, 108, 109, 110, 111, 112, 112, 112, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 114, 114, 115, 115, 116, 116, 117, 118, + 119, 119, 120, 121, 121, 122, 122, 123, 124, 124, + 125, 126, 127, 128, 129, 129, 130, 131, 131, 132, + 133, 134, 135, 135, 136, 137, 138, 139, 139, 140, + 140, 141, 141, 141, 141, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 143, 143, 143, 143, 144, 144, 144, 144, 145, 145, - 145, 145, 146, 146, 147, 147, 148, 148, 149, 149, - 150, 151, 151, 152, 153, 154, 155, 156, 156, 156, - 156, 156, 156, 156, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176 + 143, 143, 143, 143, 143, 143, 143, 143, 144, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 147, 147, + 147, 147, 148, 148, 148, 148, 149, 149, 149, 149, + 150, 150, 151, 151, 152, 152, 153, 153, 154, 155, + 155, 156, 157, 158, 159, 160, 160, 160, 160, 160, + 160, 160, 160, 161, 161, 162, 162, 162, 162, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179 }; const signed char @@ -4082,21 +4132,21 @@ namespace xsk { namespace gsc { namespace s1 { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 1, 2, 2, 2, 6, 8, 6, 3, 8, 6, 8, 6, 2, 2, 4, - 5, 7, 5, 9, 7, 9, 5, 3, 3, 3, - 2, 2, 2, 3, 2, 2, 5, 5, 1, 0, - 1, 0, 1, 1, 1, 1, 2, 2, 2, 2, + 5, 7, 5, 9, 7, 9, 5, 3, 3, 2, + 2, 2, 3, 2, 2, 5, 5, 1, 0, 1, + 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, + 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 3, 3, 2, 2, - 3, 3, 4, 6, 8, 9, 1, 1, 3, 1, - 0, 2, 3, 3, 4, 3, 2, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, - 1, 1, 2, 1, 1, 1, 1, 1, 7, 2, - 2, 1, 1, 1, 1 + 2, 2, 2, 2, 3, 3, 2, 2, 3, 3, + 4, 6, 8, 9, 1, 1, 3, 1, 0, 2, + 3, 3, 4, 3, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, + 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, + 1, 1, 1, 1, 7, 1, 1 }; @@ -4106,27 +4156,27 @@ namespace xsk { namespace gsc { namespace s1 { const short parser::yyrline_[] = { - 0, 243, 243, 244, 248, 250, 252, 254, 259, 264, - 265, 266, 270, 275, 280, 285, 287, 290, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 321, 322, 326, 328, 333, 335, 340, 345, - 350, 352, 357, 362, 364, 369, 371, 376, 381, 383, - 388, 393, 398, 403, 408, 410, 415, 420, 422, 424, - 429, 434, 439, 444, 446, 451, 456, 461, 466, 467, - 471, 472, 476, 477, 478, 479, 483, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 501, 502, 503, 504, 505, 506, 507, 508, 512, - 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, - 562, 563, 564, 565, 569, 570, 571, 572, 576, 577, - 578, 579, 583, 585, 590, 592, 597, 598, 602, 604, - 610, 614, 616, 621, 626, 631, 636, 641, 642, 643, - 644, 645, 646, 647, 648, 651, 652, 653, 654, 655, - 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, - 666, 667, 668, 669, 670 + 0, 246, 246, 247, 251, 253, 255, 257, 262, 267, + 268, 269, 273, 278, 283, 288, 290, 293, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 324, 325, 329, 331, 336, 338, 343, 348, + 353, 355, 360, 365, 367, 372, 374, 379, 384, 386, + 391, 396, 401, 406, 411, 413, 418, 423, 425, 430, + 435, 440, 445, 447, 452, 457, 462, 467, 468, 472, + 473, 477, 478, 479, 480, 484, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, + 502, 503, 504, 505, 506, 507, 508, 509, 513, 517, + 518, 519, 520, 521, 522, 523, 524, 525, 526, 530, + 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, + 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, + 551, 552, 553, 554, 555, 556, 557, 558, 562, 563, + 564, 565, 569, 570, 571, 572, 576, 577, 578, 579, + 583, 585, 590, 592, 597, 598, 602, 604, 610, 614, + 616, 621, 626, 631, 636, 641, 642, 643, 644, 645, + 646, 647, 648, 652, 653, 657, 658, 659, 660, 661, + 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, + 674, 675, 676, 677, 678, 679, 680 }; void @@ -4159,9 +4209,9 @@ namespace xsk { namespace gsc { namespace s1 { #line 13 "parser.ypp" } } } // xsk::gsc::s1 -#line 4163 "parser.cpp" +#line 4213 "parser.cpp" -#line 672 "parser.ypp" +#line 682 "parser.ypp" void xsk::gsc::s1::parser::error(const xsk::gsc::location& loc, const std::string& msg) diff --git a/src/s1/xsk/parser.hpp b/src/s1/xsk/parser.hpp index 4d03df1a..749f87f2 100644 --- a/src/s1/xsk/parser.hpp +++ b/src/s1/xsk/parser.hpp @@ -417,31 +417,34 @@ namespace xsk { namespace gsc { namespace s1 { // animtree char dummy3[sizeof (animtree_ptr)]; + // color + char dummy4[sizeof (color_ptr)]; + // constant - char dummy4[sizeof (constant_ptr)]; + char dummy5[sizeof (constant_ptr)]; // define - char dummy5[sizeof (define_ptr)]; + char dummy6[sizeof (define_ptr)]; // empty_array - char dummy6[sizeof (empty_array_ptr)]; + char dummy7[sizeof (empty_array_ptr)]; // expr_arguments // expr_arguments_filled // expr_arguments_empty - char dummy7[sizeof (expr_arguments_ptr)]; + char dummy8[sizeof (expr_arguments_ptr)]; // expr_assign - char dummy8[sizeof (expr_assign_ptr)]; + char dummy9[sizeof (expr_assign_ptr)]; // expr_call // expr_call_thread // expr_call_childthread - char dummy9[sizeof (expr_call_ptr)]; + char dummy10[sizeof (expr_call_ptr)]; // expr_call_function // expr_call_pointer - char dummy10[sizeof (expr_call_type_ptr)]; + char dummy11[sizeof (expr_call_type_ptr)]; // for_expr // expr @@ -449,36 +452,34 @@ namespace xsk { namespace gsc { namespace s1 { // expr_ternary // expr_binary // expr_primitive - char dummy11[sizeof (expr_ptr)]; + char dummy12[sizeof (expr_ptr)]; // false - char dummy12[sizeof (false_ptr)]; + char dummy13[sizeof (false_ptr)]; // file - char dummy13[sizeof (file_ptr)]; + char dummy14[sizeof (file_ptr)]; - // neg_float // float - char dummy14[sizeof (float_ptr)]; + char dummy15[sizeof (float_ptr)]; // game - char dummy15[sizeof (game_ptr)]; + char dummy16[sizeof (game_ptr)]; // include - char dummy16[sizeof (include_ptr)]; + char dummy17[sizeof (include_ptr)]; - // neg_integer // integer - char dummy17[sizeof (integer_ptr)]; + char dummy18[sizeof (integer_ptr)]; // istring - char dummy18[sizeof (istring_ptr)]; + char dummy19[sizeof (istring_ptr)]; // level - char dummy19[sizeof (level_ptr)]; + char dummy20[sizeof (level_ptr)]; // name - char dummy20[sizeof (name_ptr)]; + char dummy21[sizeof (name_ptr)]; // expr_function // expr_add_array @@ -486,122 +487,126 @@ namespace xsk { namespace gsc { namespace s1 { // expr_field // expr_size // object - char dummy21[sizeof (node_ptr)]; + char dummy22[sizeof (node_ptr)]; // parameters - char dummy22[sizeof (parameters_ptr)]; + char dummy23[sizeof (parameters_ptr)]; // program - char dummy23[sizeof (program_ptr)]; + char dummy24[sizeof (program_ptr)]; // self - char dummy24[sizeof (self_ptr)]; + char dummy25[sizeof (self_ptr)]; // "file path" // "identifier" // "string literal" // "localized string" + // "color" // "float" // "int" - char dummy25[sizeof (std::string)]; + // "octal int" + // "binary int" + // "hexadecimal int" + char dummy26[sizeof (std::string)]; // stmt_assign - char dummy26[sizeof (stmt_assign_ptr)]; + char dummy27[sizeof (stmt_assign_ptr)]; // stmt_break - char dummy27[sizeof (stmt_break_ptr)]; + char dummy28[sizeof (stmt_break_ptr)]; // stmt_breakpoint - char dummy28[sizeof (stmt_breakpoint_ptr)]; + char dummy29[sizeof (stmt_breakpoint_ptr)]; // stmt_call - char dummy29[sizeof (stmt_call_ptr)]; + char dummy30[sizeof (stmt_call_ptr)]; // stmt_case - char dummy30[sizeof (stmt_case_ptr)]; + char dummy31[sizeof (stmt_case_ptr)]; // stmt_continue - char dummy31[sizeof (stmt_continue_ptr)]; + char dummy32[sizeof (stmt_continue_ptr)]; // stmt_default - char dummy32[sizeof (stmt_default_ptr)]; + char dummy33[sizeof (stmt_default_ptr)]; // stmt_endon - char dummy33[sizeof (stmt_endon_ptr)]; + char dummy34[sizeof (stmt_endon_ptr)]; // stmt_for - char dummy34[sizeof (stmt_for_ptr)]; + char dummy35[sizeof (stmt_for_ptr)]; // stmt_foreach - char dummy35[sizeof (stmt_foreach_ptr)]; + char dummy36[sizeof (stmt_foreach_ptr)]; // stmt_if - char dummy36[sizeof (stmt_if_ptr)]; + char dummy37[sizeof (stmt_if_ptr)]; // stmt_ifelse - char dummy37[sizeof (stmt_ifelse_ptr)]; + char dummy38[sizeof (stmt_ifelse_ptr)]; // stmt_block // stmt_list - char dummy38[sizeof (stmt_list_ptr)]; + char dummy39[sizeof (stmt_list_ptr)]; // stmt_notify - char dummy39[sizeof (stmt_notify_ptr)]; + char dummy40[sizeof (stmt_notify_ptr)]; // stmt_prof_begin - char dummy40[sizeof (stmt_prof_begin_ptr)]; + char dummy41[sizeof (stmt_prof_begin_ptr)]; // stmt_prof_end - char dummy41[sizeof (stmt_prof_end_ptr)]; + char dummy42[sizeof (stmt_prof_end_ptr)]; // stmt // for_stmt - char dummy42[sizeof (stmt_ptr)]; + char dummy43[sizeof (stmt_ptr)]; // stmt_return - char dummy43[sizeof (stmt_return_ptr)]; + char dummy44[sizeof (stmt_return_ptr)]; // stmt_switch - char dummy44[sizeof (stmt_switch_ptr)]; + char dummy45[sizeof (stmt_switch_ptr)]; // stmt_wait - char dummy45[sizeof (stmt_wait_ptr)]; + char dummy46[sizeof (stmt_wait_ptr)]; // stmt_waitframe - char dummy46[sizeof (stmt_waitframe_ptr)]; + char dummy47[sizeof (stmt_waitframe_ptr)]; // stmt_waittill - char dummy47[sizeof (stmt_waittill_ptr)]; + char dummy48[sizeof (stmt_waittill_ptr)]; // stmt_waittillframeend - char dummy48[sizeof (stmt_waittillframeend_ptr)]; + char dummy49[sizeof (stmt_waittillframeend_ptr)]; // stmt_waittillmatch - char dummy49[sizeof (stmt_waittillmatch_ptr)]; + char dummy50[sizeof (stmt_waittillmatch_ptr)]; // stmt_while - char dummy50[sizeof (stmt_while_ptr)]; + char dummy51[sizeof (stmt_while_ptr)]; // string - char dummy51[sizeof (string_ptr)]; + char dummy52[sizeof (string_ptr)]; // thisthread - char dummy52[sizeof (thisthread_ptr)]; + char dummy53[sizeof (thisthread_ptr)]; // thread - char dummy53[sizeof (thread_ptr)]; + char dummy54[sizeof (thread_ptr)]; // true - char dummy54[sizeof (true_ptr)]; + char dummy55[sizeof (true_ptr)]; // undefined - char dummy55[sizeof (undefined_ptr)]; + char dummy56[sizeof (undefined_ptr)]; // usingtree - char dummy56[sizeof (usingtree_ptr)]; + char dummy57[sizeof (usingtree_ptr)]; // vector - char dummy57[sizeof (vector_ptr)]; + char dummy58[sizeof (vector_ptr)]; }; /// The size of the largest semantic type. @@ -739,17 +744,21 @@ namespace xsk { namespace gsc { namespace s1 { NAME = 86, // "identifier" STRING = 87, // "string literal" ISTRING = 88, // "localized string" - FLOAT = 89, // "float" - INTEGER = 90, // "int" - ADD_ARRAY = 91, // ADD_ARRAY - THEN = 92, // THEN - TERN = 93, // TERN - NEG = 94, // NEG - ANIMREF = 95, // ANIMREF - PREINC = 96, // PREINC - PREDEC = 97, // PREDEC - POSTINC = 98, // POSTINC - POSTDEC = 99 // POSTDEC + COLOR = 89, // "color" + FLOAT = 90, // "float" + INT_DEC = 91, // "int" + INT_OCT = 92, // "octal int" + INT_BIN = 93, // "binary int" + INT_HEX = 94, // "hexadecimal int" + ADD_ARRAY = 95, // ADD_ARRAY + THEN = 96, // THEN + TERN = 97, // TERN + NEG = 98, // NEG + ANIMREF = 99, // ANIMREF + PREINC = 100, // PREINC + PREDEC = 101, // PREDEC + POSTINC = 102, // POSTINC + POSTDEC = 103 // POSTDEC }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; @@ -766,7 +775,7 @@ namespace xsk { namespace gsc { namespace s1 { { enum symbol_kind_type { - YYNTOKENS = 100, ///< Number of tokens. + YYNTOKENS = 104, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error @@ -857,94 +866,97 @@ namespace xsk { namespace gsc { namespace s1 { S_NAME = 86, // "identifier" S_STRING = 87, // "string literal" S_ISTRING = 88, // "localized string" - S_FLOAT = 89, // "float" - S_INTEGER = 90, // "int" - S_ADD_ARRAY = 91, // ADD_ARRAY - S_THEN = 92, // THEN - S_TERN = 93, // TERN - S_NEG = 94, // NEG - S_ANIMREF = 95, // ANIMREF - S_PREINC = 96, // PREINC - S_PREDEC = 97, // PREDEC - S_POSTINC = 98, // POSTINC - S_POSTDEC = 99, // POSTDEC - S_YYACCEPT = 100, // $accept - S_root = 101, // root - S_program = 102, // program - S_include = 103, // include - S_define = 104, // define - S_usingtree = 105, // usingtree - S_constant = 106, // constant - S_thread = 107, // thread - S_parameters = 108, // parameters - S_stmt = 109, // stmt - S_stmt_block = 110, // stmt_block - S_stmt_list = 111, // stmt_list - S_stmt_call = 112, // stmt_call - S_stmt_assign = 113, // stmt_assign - S_stmt_endon = 114, // stmt_endon - S_stmt_notify = 115, // stmt_notify - S_stmt_wait = 116, // stmt_wait - S_stmt_waittill = 117, // stmt_waittill - S_stmt_waittillmatch = 118, // stmt_waittillmatch - S_stmt_waittillframeend = 119, // stmt_waittillframeend - S_stmt_waitframe = 120, // stmt_waitframe - S_stmt_if = 121, // stmt_if - S_stmt_ifelse = 122, // stmt_ifelse - S_stmt_while = 123, // stmt_while - S_stmt_for = 124, // stmt_for - S_stmt_foreach = 125, // stmt_foreach - S_stmt_switch = 126, // stmt_switch - S_stmt_case = 127, // stmt_case - S_stmt_default = 128, // stmt_default - S_stmt_break = 129, // stmt_break - S_stmt_continue = 130, // stmt_continue - S_stmt_return = 131, // stmt_return - S_stmt_breakpoint = 132, // stmt_breakpoint - S_stmt_prof_begin = 133, // stmt_prof_begin - S_stmt_prof_end = 134, // stmt_prof_end - S_for_stmt = 135, // for_stmt - S_for_expr = 136, // for_expr - S_expr = 137, // expr - S_expr_assign = 138, // expr_assign - S_expr_compare = 139, // expr_compare - S_expr_ternary = 140, // expr_ternary - S_expr_binary = 141, // expr_binary - S_expr_primitive = 142, // expr_primitive - S_expr_call = 143, // expr_call - S_expr_call_thread = 144, // expr_call_thread - S_expr_call_childthread = 145, // expr_call_childthread - S_expr_call_function = 146, // expr_call_function - S_expr_call_pointer = 147, // expr_call_pointer - S_expr_arguments = 148, // expr_arguments - S_expr_arguments_filled = 149, // expr_arguments_filled - S_expr_arguments_empty = 150, // expr_arguments_empty - S_expr_function = 151, // expr_function - S_expr_add_array = 152, // expr_add_array - S_expr_array = 153, // expr_array - S_expr_field = 154, // expr_field - S_expr_size = 155, // expr_size - S_object = 156, // object - S_thisthread = 157, // thisthread - S_empty_array = 158, // empty_array - S_undefined = 159, // undefined - S_game = 160, // game - S_self = 161, // self - S_anim = 162, // anim - S_level = 163, // level - S_animation = 164, // animation - S_animtree = 165, // animtree - S_name = 166, // name - S_file = 167, // file - S_istring = 168, // istring - S_string = 169, // string - S_vector = 170, // vector - S_neg_float = 171, // neg_float - S_neg_integer = 172, // neg_integer - S_float = 173, // float - S_integer = 174, // integer - S_false = 175, // false - S_true = 176 // true + S_COLOR = 89, // "color" + S_FLOAT = 90, // "float" + S_INT_DEC = 91, // "int" + S_INT_OCT = 92, // "octal int" + S_INT_BIN = 93, // "binary int" + S_INT_HEX = 94, // "hexadecimal int" + S_ADD_ARRAY = 95, // ADD_ARRAY + S_THEN = 96, // THEN + S_TERN = 97, // TERN + S_NEG = 98, // NEG + S_ANIMREF = 99, // ANIMREF + S_PREINC = 100, // PREINC + S_PREDEC = 101, // PREDEC + S_POSTINC = 102, // POSTINC + S_POSTDEC = 103, // POSTDEC + S_YYACCEPT = 104, // $accept + S_root = 105, // root + S_program = 106, // program + S_include = 107, // include + S_define = 108, // define + S_usingtree = 109, // usingtree + S_constant = 110, // constant + S_thread = 111, // thread + S_parameters = 112, // parameters + S_stmt = 113, // stmt + S_stmt_block = 114, // stmt_block + S_stmt_list = 115, // stmt_list + S_stmt_call = 116, // stmt_call + S_stmt_assign = 117, // stmt_assign + S_stmt_endon = 118, // stmt_endon + S_stmt_notify = 119, // stmt_notify + S_stmt_wait = 120, // stmt_wait + S_stmt_waittill = 121, // stmt_waittill + S_stmt_waittillmatch = 122, // stmt_waittillmatch + S_stmt_waittillframeend = 123, // stmt_waittillframeend + S_stmt_waitframe = 124, // stmt_waitframe + S_stmt_if = 125, // stmt_if + S_stmt_ifelse = 126, // stmt_ifelse + S_stmt_while = 127, // stmt_while + S_stmt_for = 128, // stmt_for + S_stmt_foreach = 129, // stmt_foreach + S_stmt_switch = 130, // stmt_switch + S_stmt_case = 131, // stmt_case + S_stmt_default = 132, // stmt_default + S_stmt_break = 133, // stmt_break + S_stmt_continue = 134, // stmt_continue + S_stmt_return = 135, // stmt_return + S_stmt_breakpoint = 136, // stmt_breakpoint + S_stmt_prof_begin = 137, // stmt_prof_begin + S_stmt_prof_end = 138, // stmt_prof_end + S_for_stmt = 139, // for_stmt + S_for_expr = 140, // for_expr + S_expr = 141, // expr + S_expr_assign = 142, // expr_assign + S_expr_compare = 143, // expr_compare + S_expr_ternary = 144, // expr_ternary + S_expr_binary = 145, // expr_binary + S_expr_primitive = 146, // expr_primitive + S_expr_call = 147, // expr_call + S_expr_call_thread = 148, // expr_call_thread + S_expr_call_childthread = 149, // expr_call_childthread + S_expr_call_function = 150, // expr_call_function + S_expr_call_pointer = 151, // expr_call_pointer + S_expr_arguments = 152, // expr_arguments + S_expr_arguments_filled = 153, // expr_arguments_filled + S_expr_arguments_empty = 154, // expr_arguments_empty + S_expr_function = 155, // expr_function + S_expr_add_array = 156, // expr_add_array + S_expr_array = 157, // expr_array + S_expr_field = 158, // expr_field + S_expr_size = 159, // expr_size + S_object = 160, // object + S_float = 161, // float + S_integer = 162, // integer + S_thisthread = 163, // thisthread + S_empty_array = 164, // empty_array + S_undefined = 165, // undefined + S_game = 166, // game + S_self = 167, // self + S_anim = 168, // anim + S_level = 169, // level + S_animation = 170, // animation + S_animtree = 171, // animtree + S_name = 172, // name + S_file = 173, // file + S_istring = 174, // istring + S_string = 175, // string + S_color = 176, // color + S_vector = 177, // vector + S_false = 178, // false + S_true = 179 // true }; }; @@ -993,6 +1005,10 @@ namespace xsk { namespace gsc { namespace s1 { value.move< animtree_ptr > (std::move (that.value)); break; + case symbol_kind::S_color: // color + value.move< color_ptr > (std::move (that.value)); + break; + case symbol_kind::S_constant: // constant value.move< constant_ptr > (std::move (that.value)); break; @@ -1043,7 +1059,6 @@ namespace xsk { namespace gsc { namespace s1 { value.move< file_ptr > (std::move (that.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.move< float_ptr > (std::move (that.value)); break; @@ -1056,7 +1071,6 @@ namespace xsk { namespace gsc { namespace s1 { value.move< include_ptr > (std::move (that.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.move< integer_ptr > (std::move (that.value)); break; @@ -1098,8 +1112,12 @@ namespace xsk { namespace gsc { namespace s1 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.move< std::string > (std::move (that.value)); break; @@ -1298,6 +1316,20 @@ namespace xsk { namespace gsc { namespace s1 { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, color_ptr&& v, location_type&& l) + : Base (t) + , value (std::move (v)) + , location (std::move (l)) + {} +#else + basic_symbol (typename Base::kind_type t, const color_ptr& v, const location_type& l) + : Base (t) + , value (v) + , location (l) + {} +#endif + #if 201103L <= YY_CPLUSPLUS basic_symbol (typename Base::kind_type t, constant_ptr&& v, location_type&& l) : Base (t) @@ -2088,6 +2120,10 @@ switch (yykind) value.template destroy< animtree_ptr > (); break; + case symbol_kind::S_color: // color + value.template destroy< color_ptr > (); + break; + case symbol_kind::S_constant: // constant value.template destroy< constant_ptr > (); break; @@ -2138,7 +2174,6 @@ switch (yykind) value.template destroy< file_ptr > (); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.template destroy< float_ptr > (); break; @@ -2151,7 +2186,6 @@ switch (yykind) value.template destroy< include_ptr > (); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.template destroy< integer_ptr > (); break; @@ -2193,8 +2227,12 @@ switch (yykind) case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.template destroy< std::string > (); break; @@ -2434,7 +2472,7 @@ switch (yykind) : super_type(token_type (tok), v, l) #endif { - S1_ASSERT ((token::FILE <= tok && tok <= token::INTEGER)); + S1_ASSERT ((token::FILE <= tok && tok <= token::INT_HEX)); } }; @@ -3819,6 +3857,21 @@ switch (yykind) return symbol_type (token::ISTRING, v, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_COLOR (std::string v, location_type l) + { + return symbol_type (token::COLOR, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_COLOR (const std::string& v, const location_type& l) + { + return symbol_type (token::COLOR, v, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -3837,16 +3890,61 @@ switch (yykind) #if 201103L <= YY_CPLUSPLUS static symbol_type - make_INTEGER (std::string v, location_type l) + make_INT_DEC (std::string v, location_type l) { - return symbol_type (token::INTEGER, std::move (v), std::move (l)); + return symbol_type (token::INT_DEC, std::move (v), std::move (l)); } #else static symbol_type - make_INTEGER (const std::string& v, const location_type& l) + make_INT_DEC (const std::string& v, const location_type& l) { - return symbol_type (token::INTEGER, v, l); + return symbol_type (token::INT_DEC, v, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_INT_OCT (std::string v, location_type l) + { + return symbol_type (token::INT_OCT, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_INT_OCT (const std::string& v, const location_type& l) + { + return symbol_type (token::INT_OCT, v, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_INT_BIN (std::string v, location_type l) + { + return symbol_type (token::INT_BIN, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_INT_BIN (const std::string& v, const location_type& l) + { + return symbol_type (token::INT_BIN, v, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_INT_HEX (std::string v, location_type l) + { + return symbol_type (token::INT_HEX, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_INT_HEX (const std::string& v, const location_type& l) + { + return symbol_type (token::INT_HEX, v, l); } #endif #if 201103L <= YY_CPLUSPLUS @@ -4328,8 +4426,8 @@ switch (yykind) /// Constants. enum { - yylast_ = 1842, ///< Last index in yytable_. - yynnts_ = 77, ///< Number of nonterminal symbols. + yylast_ = 1883, ///< Last index in yytable_. + yynnts_ = 76, ///< Number of nonterminal symbols. yyfinal_ = 15 ///< Termination state number. }; @@ -4369,6 +4467,10 @@ switch (yykind) value.copy< animtree_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_color: // color + value.copy< color_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_constant: // constant value.copy< constant_ptr > (YY_MOVE (that.value)); break; @@ -4419,7 +4521,6 @@ switch (yykind) value.copy< file_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.copy< float_ptr > (YY_MOVE (that.value)); break; @@ -4432,7 +4533,6 @@ switch (yykind) value.copy< include_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.copy< integer_ptr > (YY_MOVE (that.value)); break; @@ -4474,8 +4574,12 @@ switch (yykind) case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.copy< std::string > (YY_MOVE (that.value)); break; @@ -4650,6 +4754,10 @@ switch (yykind) value.move< animtree_ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_color: // color + value.move< color_ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_constant: // constant value.move< constant_ptr > (YY_MOVE (s.value)); break; @@ -4700,7 +4808,6 @@ switch (yykind) value.move< file_ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.move< float_ptr > (YY_MOVE (s.value)); break; @@ -4713,7 +4820,6 @@ switch (yykind) value.move< include_ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.move< integer_ptr > (YY_MOVE (s.value)); break; @@ -4755,8 +4861,12 @@ switch (yykind) case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.move< std::string > (YY_MOVE (s.value)); break; @@ -4953,7 +5063,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::s1 -#line 4957 "parser.hpp" +#line 5067 "parser.hpp" diff --git a/src/s2/xsk/compiler.cpp b/src/s2/xsk/compiler.cpp index 024c7694..bb848707 100644 --- a/src/s2/xsk/compiler.cpp +++ b/src/s2/xsk/compiler.cpp @@ -791,6 +791,7 @@ void compiler::emit_expr(const gsc::context_ptr& ctx, const gsc::expr_ptr& expr) case gsc::node_t::data_name: emit_local_variable(ctx, expr.as_name); break; case gsc::node_t::data_istring: emit_istring(ctx, expr.as_istring); break; case gsc::node_t::data_string: emit_string(ctx, expr.as_string); break; + case gsc::node_t::data_color: emit_color(ctx, expr.as_color); break; case gsc::node_t::data_vector: emit_vector(ctx, expr.as_vector); break; case gsc::node_t::data_float: emit_float(ctx, expr.as_float); break; case gsc::node_t::data_integer: emit_integer(ctx, expr.as_integer); break; @@ -1612,6 +1613,30 @@ void compiler::emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& s emit_opcode(ctx, opcode::OP_GetString, str->value); } +void compiler::emit_color(const gsc::context_ptr& ctx, const gsc::color_ptr& color) +{ + std::vector data; + std::string x, y, z; + + if(color->value.size() == 3) + { + x = "0x" + color->value.substr(0, 1) + color->value.substr(0, 1); + y = "0x" + color->value.substr(1, 1) + color->value.substr(1, 1); + z = "0x" + color->value.substr(2, 1) + color->value.substr(2, 1); + } + else + { + x = "0x" + color->value.substr(0, 2); + y = "0x" + color->value.substr(2, 2); + z = "0x" + color->value.substr(4, 2); + } + + data.push_back(gsc::utils::string::hex_to_dec(x.data())); + data.push_back(gsc::utils::string::hex_to_dec(y.data())); + data.push_back(gsc::utils::string::hex_to_dec(z.data())); + emit_opcode(ctx, opcode::OP_GetVector, data); +} + void compiler::emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec) { std::vector data; diff --git a/src/s2/xsk/compiler.hpp b/src/s2/xsk/compiler.hpp index ef9a806e..9fb89f81 100644 --- a/src/s2/xsk/compiler.hpp +++ b/src/s2/xsk/compiler.hpp @@ -102,6 +102,7 @@ private: void emit_animation(const gsc::context_ptr& ctx, const gsc::animation_ptr& animation); void emit_istring(const gsc::context_ptr& ctx, const gsc::istring_ptr& str); void emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& str); + void emit_color(const gsc::context_ptr& ctx, const gsc::color_ptr& color); void emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec); void emit_float(const gsc::context_ptr& ctx, const gsc::float_ptr& num); void emit_integer(const gsc::context_ptr& ctx, const gsc::integer_ptr& num); diff --git a/src/s2/xsk/lexer.cpp b/src/s2/xsk/lexer.cpp index c60cc5c8..31b778de 100644 --- a/src/s2/xsk/lexer.cpp +++ b/src/s2/xsk/lexer.cpp @@ -553,8 +553,8 @@ static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 101 -#define YY_END_OF_BUFFER 102 +#define YY_NUM_RULES 105 +#define YY_END_OF_BUFFER 106 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -562,42 +562,43 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[306] = +static const flex_int16_t yy_accept[319] = { 0, - 0, 0, 0, 0, 0, 0, 102, 100, 1, 2, - 89, 100, 100, 88, 92, 100, 49, 50, 86, 84, - 55, 85, 56, 87, 99, 58, 59, 73, 83, 74, - 60, 95, 53, 54, 93, 95, 95, 95, 95, 95, + 0, 0, 0, 0, 0, 0, 106, 104, 1, 2, + 89, 104, 104, 88, 92, 104, 49, 50, 86, 84, + 55, 85, 56, 87, 103, 103, 58, 59, 73, 83, + 74, 60, 95, 53, 54, 93, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 51, 91, 52, 90, 5, 6, 5, 9, 10, - 9, 70, 0, 97, 0, 0, 0, 0, 79, 0, - 68, 0, 81, 0, 0, 77, 61, 75, 62, 76, - 98, 0, 8, 4, 3, 78, 98, 99, 0, 0, - 57, 65, 71, 69, 72, 66, 95, 82, 95, 95, + 95, 95, 51, 91, 52, 90, 5, 6, 5, 9, + 10, 9, 70, 0, 97, 0, 0, 0, 0, 0, + 79, 0, 68, 0, 81, 0, 0, 77, 61, 75, + 62, 76, 99, 0, 8, 4, 3, 78, 99, 103, + 100, 0, 0, 0, 0, 57, 65, 71, 69, 72, - 95, 95, 95, 95, 95, 95, 95, 95, 95, 25, - 30, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 80, 67, 7, 11, 0, 97, 0, 0, - 0, 0, 0, 96, 0, 0, 0, 0, 97, 0, - 98, 0, 3, 98, 98, 94, 63, 64, 95, 95, - 95, 95, 95, 95, 95, 95, 95, 95, 28, 95, + 66, 95, 82, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 25, 30, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 80, 67, 7, + 11, 0, 97, 0, 0, 0, 0, 0, 0, 96, + 0, 0, 0, 0, 97, 0, 99, 0, 3, 99, + 99, 100, 101, 102, 94, 63, 64, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 28, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 0, 0, 0, 0, 96, 0, 0, 96, + 95, 98, 0, 0, 0, 0, 96, 0, 0, 96, 0, 0, 47, 95, 40, 32, 95, 95, 95, 26, + 95, 95, 95, 45, 95, 95, 95, 95, 46, 95, + 95, 95, 41, 95, 20, 95, 0, 0, 0, 0, + 44, 34, 95, 95, 95, 18, 42, 95, 48, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 27, 0, + 0, 0, 0, 95, 95, 95, 95, 95, 19, 95, + 95, 36, 31, 95, 37, 95, 95, 95, 98, 0, + 0, 0, 95, 95, 95, 33, 29, 95, 95, 95, + 95, 95, 95, 0, 15, 0, 95, 95, 35, 95, + 14, 95, 95, 95, 21, 17, 0, 95, 95, 95, + 95, 43, 24, 95, 95, 0, 12, 95, 13, 39, - 95, 95, 41, 95, 20, 95, 0, 0, 0, 44, - 34, 95, 95, 95, 18, 42, 95, 48, 95, 95, - 95, 95, 95, 95, 95, 95, 95, 27, 0, 0, - 0, 95, 95, 95, 95, 95, 19, 95, 95, 36, - 31, 95, 37, 95, 95, 95, 0, 0, 0, 95, - 95, 95, 33, 29, 95, 95, 95, 95, 95, 95, - 0, 15, 0, 95, 95, 35, 95, 14, 95, 95, - 95, 21, 17, 0, 95, 95, 95, 95, 43, 24, - 95, 95, 0, 12, 95, 13, 39, 95, 95, 0, - 38, 95, 95, 0, 95, 95, 0, 95, 22, 0, - - 95, 16, 95, 23, 0 + 95, 95, 0, 38, 95, 95, 0, 95, 95, 0, + 95, 22, 0, 95, 16, 95, 23, 0 } ; static const YY_CHAR yy_ec[256] = @@ -606,16 +607,16 @@ static const YY_CHAR yy_ec[256] = 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 5, 6, 1, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, - 22, 23, 24, 1, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 26, 27, 28, 29, 30, 1, 31, 32, 33, 34, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 20, 20, 20, 20, 20, 21, 21, 22, 23, 24, + 25, 26, 27, 1, 28, 29, 28, 28, 28, 28, + 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 31, 30, 30, + 32, 33, 34, 35, 36, 1, 37, 38, 39, 40, - 35, 36, 37, 38, 39, 25, 40, 41, 42, 43, - 44, 45, 25, 46, 47, 48, 49, 50, 51, 25, - 52, 53, 54, 55, 56, 57, 1, 1, 1, 1, + 41, 42, 43, 44, 45, 30, 46, 47, 48, 49, + 50, 51, 30, 52, 53, 54, 55, 56, 57, 31, + 58, 59, 60, 61, 62, 63, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -632,240 +633,269 @@ static const YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static const YY_CHAR yy_meta[58] = +static const YY_CHAR yy_meta[64] = { 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 1, 4, 1, 1, - 1, 1, 1, 1, 4, 1, 5, 1, 1, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 1, 1, 1, 1 + 1, 1, 1, 1, 1, 3, 1, 4, 4, 4, + 4, 1, 1, 1, 1, 1, 1, 4, 4, 5, + 5, 1, 6, 1, 1, 5, 4, 4, 4, 4, + 4, 4, 5, 5, 7, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 7, 5, 5, 5, 5, 1, + 1, 1, 1 } ; -static const flex_int16_t yy_base[320] = +static const flex_int16_t yy_base[339] = { 0, - 0, 0, 55, 56, 57, 58, 575, 576, 576, 576, - 552, 57, 34, 551, 66, 60, 576, 576, 550, 57, - 576, 63, 48, 74, 74, 552, 576, 55, 548, 59, - 576, 542, 576, 576, 546, 62, 66, 71, 72, 67, - 73, 87, 70, 76, 89, 92, 93, 94, 96, 97, - 99, 576, 100, 576, 576, 576, 576, 550, 576, 576, - 549, 576, 120, 576, 136, 522, 521, 516, 576, 122, - 576, 123, 576, 126, 143, 576, 576, 576, 576, 576, - 118, 523, 576, 576, 0, 576, 125, 140, 132, 0, - 576, 539, 576, 576, 576, 538, 532, 576, 130, 133, + 0, 0, 61, 62, 63, 64, 677, 678, 678, 678, + 651, 63, 34, 650, 67, 68, 678, 678, 649, 65, + 678, 66, 64, 81, 89, 95, 651, 678, 70, 647, + 74, 678, 638, 678, 678, 645, 53, 71, 88, 47, + 86, 93, 103, 104, 98, 79, 108, 101, 111, 112, + 114, 117, 678, 123, 678, 678, 678, 678, 652, 678, + 678, 651, 678, 144, 678, 152, 0, 618, 617, 612, + 678, 146, 678, 149, 678, 150, 162, 678, 678, 678, + 678, 678, 154, 619, 678, 678, 0, 678, 168, 181, + 187, 160, 193, 211, 0, 678, 638, 678, 678, 678, - 124, 135, 137, 139, 145, 149, 146, 150, 151, 531, - 530, 152, 155, 154, 157, 158, 161, 162, 163, 170, - 167, 168, 576, 576, 576, 576, 186, 204, 211, 517, - 522, 515, 205, 576, 212, 202, 215, 210, 213, 217, - 576, 500, 0, 205, 576, 525, 576, 576, 194, 203, - 206, 200, 216, 198, 218, 221, 223, 224, 225, 226, - 227, 231, 228, 232, 236, 238, 241, 239, 242, 248, - 246, 249, 509, 509, 506, 273, 274, 277, 275, 276, - 284, 513, 520, 104, 519, 518, 262, 268, 264, 517, - 265, 270, 279, 516, 271, 282, 287, 288, 515, 289, + 637, 628, 678, 133, 129, 171, 136, 184, 180, 182, + 158, 147, 186, 188, 627, 626, 134, 70, 192, 183, + 208, 201, 212, 210, 214, 223, 225, 678, 678, 678, + 678, 254, 255, 258, 0, 613, 618, 611, 257, 678, + 264, 262, 263, 265, 266, 270, 678, 596, 0, 262, + 678, 289, 295, 0, 621, 678, 678, 244, 252, 253, + 243, 268, 269, 279, 284, 285, 273, 286, 288, 291, + 297, 298, 300, 301, 287, 303, 304, 305, 306, 311, + 315, 0, 605, 605, 602, 344, 345, 348, 343, 349, + 351, 609, 616, 324, 615, 614, 326, 328, 330, 613, - 272, 292, 514, 294, 297, 300, 492, 490, 501, 576, - 298, 299, 301, 305, 510, 509, 304, 508, 302, 321, - 309, 311, 312, 324, 328, 313, 330, 507, 487, 498, - 501, 333, 334, 314, 335, 337, 503, 338, 339, 502, - 501, 341, 500, 343, 347, 344, 491, 490, 493, 349, - 352, 354, 496, 495, 353, 357, 365, 366, 367, 369, - 486, 576, 477, 368, 370, 492, 375, 491, 372, 379, - 377, 380, 576, 478, 381, 388, 390, 391, 489, 488, - 393, 396, 472, 473, 394, 425, 424, 399, 397, 402, - 422, 404, 405, 398, 407, 409, 405, 408, 315, 193, + 245, 331, 334, 612, 336, 346, 353, 335, 611, 341, + 342, 357, 610, 358, 359, 362, 0, 588, 586, 597, + 678, 360, 364, 365, 369, 606, 605, 366, 604, 371, + 374, 373, 375, 376, 377, 388, 390, 391, 603, 0, + 583, 594, 597, 393, 394, 392, 395, 397, 599, 398, + 399, 598, 597, 401, 596, 402, 407, 412, 678, 587, + 586, 589, 413, 404, 419, 592, 591, 421, 417, 422, + 428, 429, 432, 582, 678, 573, 433, 434, 588, 435, + 587, 437, 438, 440, 443, 678, 574, 439, 450, 451, + 455, 585, 569, 453, 457, 546, 514, 456, 513, 489, - 410, 576, 414, 159, 576, 453, 458, 463, 468, 471, - 473, 478, 483, 488, 493, 498, 68, 503, 508 + 464, 459, 467, 487, 466, 465, 467, 469, 473, 477, + 470, 483, 471, 474, 678, 475, 476, 678, 523, 530, + 537, 541, 548, 553, 557, 564, 289, 571, 578, 585, + 592, 596, 224, 603, 610, 219, 188, 93 } ; -static const flex_int16_t yy_def[320] = +static const flex_int16_t yy_def[339] = { 0, - 305, 1, 306, 306, 307, 307, 305, 305, 305, 305, - 305, 308, 305, 305, 305, 309, 305, 305, 305, 305, - 305, 305, 305, 305, 310, 305, 305, 305, 305, 305, - 305, 311, 305, 305, 305, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 308, 305, 312, 305, 305, 305, 305, 313, - 305, 314, 305, 309, 315, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 316, 305, 305, 310, 310, 317, - 305, 305, 305, 305, 305, 305, 311, 305, 311, 311, + 318, 1, 319, 319, 320, 320, 318, 318, 318, 318, + 318, 321, 322, 318, 318, 323, 318, 318, 318, 318, + 318, 318, 318, 318, 324, 324, 318, 318, 318, 318, + 318, 318, 325, 318, 318, 318, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 321, 318, 326, 327, 327, 318, 318, + 318, 328, 318, 329, 318, 323, 330, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 331, 318, 318, 324, + 324, 324, 324, 324, 332, 318, 318, 318, 318, 318, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 305, 305, 305, 305, 308, 308, 312, 305, - 305, 305, 313, 305, 318, 314, 319, 309, 309, 315, - 305, 305, 316, 305, 305, 317, 305, 305, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 305, 305, 305, 313, 313, 318, 314, 314, - 319, 305, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 318, 325, 318, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 318, 318, 318, + 318, 321, 321, 326, 333, 318, 318, 318, 328, 318, + 334, 329, 335, 323, 323, 330, 318, 318, 331, 318, + 318, 324, 324, 94, 332, 318, 318, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 336, 318, 318, 318, 328, 328, 334, 329, 329, + 335, 318, 325, 325, 325, 325, 325, 325, 325, 325, - 311, 311, 311, 311, 311, 311, 305, 305, 305, 305, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 305, 305, - 305, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 305, 305, 305, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 305, 305, 305, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 305, 305, 311, 311, 311, 311, 311, 311, - 311, 311, 305, 311, 311, 311, 311, 311, 311, 305, - 311, 311, 311, 305, 311, 311, 305, 311, 311, 305, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 337, 318, 318, 318, + 318, 325, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 338, + 318, 318, 318, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 318, 318, + 318, 318, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 318, 318, 318, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 318, 318, 325, 325, 325, + 325, 325, 325, 325, 325, 318, 325, 325, 325, 325, - 311, 305, 311, 311, 0, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305 + 325, 325, 318, 325, 325, 325, 318, 325, 325, 318, + 325, 325, 318, 325, 318, 325, 325, 0, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318 } ; -static const flex_int16_t yy_nxt[634] = +static const flex_int16_t yy_nxt[742] = { 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 8, 34, 35, 32, - 36, 37, 38, 39, 40, 41, 42, 32, 43, 32, - 44, 32, 45, 32, 46, 47, 48, 49, 50, 32, - 51, 32, 32, 52, 53, 54, 55, 57, 57, 60, - 60, 64, 61, 61, 66, 81, 58, 58, 64, 77, - 70, 146, 67, 71, 72, 92, 93, 79, 78, 83, - 95, 96, 68, 65, 80, 84, 75, 73, 90, 87, - 85, 88, 90, 90, 82, 86, 90, 90, 90, 90, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 26, + 26, 27, 28, 29, 30, 31, 32, 33, 33, 33, + 33, 34, 8, 35, 36, 33, 37, 38, 39, 40, + 41, 42, 43, 33, 44, 33, 45, 33, 46, 33, + 47, 48, 49, 50, 51, 33, 52, 33, 33, 53, + 54, 55, 56, 58, 58, 61, 61, 65, 62, 62, + 68, 72, 59, 59, 73, 74, 65, 79, 69, 95, + 81, 83, 83, 83, 83, 95, 85, 109, 70, 80, + 82, 75, 86, 97, 98, 66, 259, 87, 100, 101, - 90, 101, 90, 107, 99, 110, 104, 105, 102, 106, - 112, 100, 111, 90, 103, 90, 108, 109, 90, 90, - 90, 123, 90, 90, 64, 90, 134, 115, 116, 121, - 90, 134, 113, 118, 64, 81, 122, 114, 63, 120, - 128, 119, 144, 211, 117, 74, 65, 305, 135, 137, - 90, 139, 75, 141, 124, 87, 90, 88, 90, 90, - 145, 90, 129, 90, 151, 90, 90, 150, 149, 140, - 152, 90, 90, 153, 155, 90, 90, 90, 90, 154, - 90, 90, 157, 90, 90, 90, 158, 90, 90, 90, - 64, 156, 160, 90, 90, 159, 90, 163, 165, 166, + 77, 104, 95, 95, 89, 88, 90, 91, 91, 90, + 89, 95, 90, 90, 90, 90, 84, 93, 95, 94, + 95, 95, 105, 171, 106, 95, 93, 95, 118, 112, + 95, 107, 110, 95, 111, 95, 95, 108, 117, 114, + 95, 120, 113, 95, 95, 115, 95, 128, 65, 95, + 140, 121, 116, 126, 64, 123, 133, 140, 65, 119, + 127, 95, 125, 124, 76, 95, 95, 122, 95, 159, + 145, 83, 83, 83, 83, 318, 66, 158, 141, 95, + 162, 143, 77, 129, 134, 150, 150, 150, 150, 170, + 95, 240, 95, 167, 146, 147, 89, 166, 90, 90, - 167, 161, 162, 170, 164, 171, 172, 168, 64, 134, - 134, 169, 65, 63, 133, 128, 177, 136, 64, 74, - 90, 64, 144, 180, 90, 139, 90, 302, 137, 90, - 65, 135, 90, 184, 186, 183, 75, 129, 178, 75, - 145, 181, 90, 140, 90, 188, 185, 90, 189, 90, - 90, 90, 90, 90, 90, 190, 187, 90, 90, 193, - 194, 195, 90, 197, 90, 90, 191, 90, 90, 196, - 192, 199, 90, 202, 90, 90, 203, 134, 134, 133, - 198, 177, 204, 134, 134, 200, 136, 201, 90, 206, - 90, 90, 180, 205, 90, 212, 90, 90, 90, 135, + 90, 90, 89, 95, 152, 152, 152, 90, 318, 151, + 153, 153, 95, 95, 95, 95, 95, 160, 95, 95, + 95, 164, 217, 161, 95, 95, 318, 182, 154, 154, + 154, 154, 163, 95, 165, 169, 173, 168, 154, 154, + 95, 172, 95, 95, 95, 175, 95, 154, 154, 154, + 154, 154, 154, 179, 174, 95, 176, 95, 65, 65, + 64, 140, 133, 177, 178, 142, 139, 180, 187, 181, + 140, 190, 76, 65, 65, 95, 95, 95, 145, 150, + 150, 150, 150, 196, 95, 95, 66, 66, 194, 141, + 134, 193, 135, 226, 143, 191, 188, 77, 77, 195, - 135, 137, 137, 178, 216, 90, 213, 215, 90, 217, - 181, 218, 214, 90, 90, 90, 220, 219, 90, 223, - 90, 222, 224, 90, 90, 90, 90, 90, 90, 225, - 90, 90, 226, 221, 228, 90, 236, 90, 90, 90, - 90, 90, 232, 234, 227, 235, 233, 90, 241, 242, - 90, 240, 238, 237, 90, 239, 90, 243, 245, 90, - 90, 90, 252, 90, 90, 90, 244, 90, 246, 90, - 90, 251, 255, 90, 254, 90, 250, 259, 90, 90, - 90, 256, 253, 90, 260, 258, 257, 264, 266, 267, - 268, 90, 90, 90, 90, 90, 90, 265, 90, 269, + 95, 95, 146, 151, 89, 95, 152, 152, 152, 90, + 318, 95, 153, 153, 197, 199, 95, 95, 95, 95, + 95, 95, 198, 95, 200, 202, 203, 95, 204, 95, + 95, 205, 95, 95, 201, 95, 95, 95, 95, 207, + 210, 206, 209, 95, 212, 213, 214, 95, 140, 140, + 139, 140, 187, 142, 208, 211, 95, 140, 95, 190, + 95, 216, 95, 95, 215, 223, 95, 95, 95, 222, + 228, 227, 224, 95, 95, 143, 141, 141, 95, 233, + 188, 143, 229, 191, 225, 95, 232, 230, 231, 95, + 95, 95, 95, 235, 95, 234, 95, 95, 95, 236, - 270, 90, 278, 90, 276, 90, 90, 90, 271, 272, - 275, 280, 279, 277, 90, 281, 90, 90, 285, 90, - 90, 282, 90, 90, 287, 90, 289, 291, 284, 292, - 90, 90, 286, 90, 90, 90, 90, 296, 288, 300, - 90, 298, 301, 297, 293, 295, 299, 304, 90, 294, - 90, 90, 303, 56, 56, 56, 56, 56, 59, 59, - 59, 59, 59, 63, 63, 63, 63, 63, 74, 74, - 74, 74, 74, 89, 89, 89, 97, 97, 127, 127, - 127, 127, 127, 133, 133, 133, 133, 133, 136, 136, - 136, 136, 136, 138, 138, 138, 138, 138, 143, 90, + 237, 95, 239, 95, 248, 95, 95, 95, 95, 95, + 244, 250, 238, 246, 251, 247, 255, 245, 253, 254, + 95, 252, 95, 95, 95, 95, 95, 95, 249, 95, + 95, 95, 256, 95, 95, 258, 95, 264, 268, 95, + 267, 257, 263, 272, 95, 95, 265, 269, 266, 95, + 271, 95, 270, 95, 95, 278, 281, 277, 273, 279, + 95, 95, 282, 280, 95, 95, 95, 95, 283, 95, + 95, 95, 95, 291, 289, 95, 284, 292, 285, 290, + 293, 288, 95, 95, 294, 95, 298, 95, 95, 95, + 295, 95, 297, 302, 300, 304, 95, 95, 95, 299, - 143, 143, 143, 176, 176, 176, 176, 176, 179, 179, - 179, 179, 179, 290, 90, 90, 283, 90, 90, 274, - 273, 90, 90, 263, 262, 261, 90, 90, 90, 90, - 249, 248, 247, 90, 90, 90, 90, 231, 230, 229, - 90, 90, 90, 90, 90, 90, 90, 210, 209, 208, - 207, 90, 182, 175, 174, 173, 90, 90, 90, 148, - 147, 142, 132, 131, 130, 126, 125, 98, 90, 94, - 91, 76, 69, 62, 305, 7, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 95, 95, 309, 301, 95, 95, 95, 95, 311, + 314, 315, 306, 308, 317, 95, 312, 313, 310, 95, + 307, 95, 316, 57, 57, 57, 57, 57, 57, 57, + 60, 60, 60, 60, 60, 60, 60, 64, 64, 64, + 64, 64, 64, 64, 67, 95, 95, 67, 76, 76, + 76, 76, 76, 76, 76, 92, 92, 92, 92, 92, + 102, 102, 102, 102, 132, 132, 132, 132, 132, 132, + 132, 139, 139, 139, 139, 139, 139, 139, 142, 142, + 142, 142, 142, 142, 142, 144, 144, 144, 144, 144, + 144, 144, 149, 303, 149, 149, 149, 149, 149, 155, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305 + 155, 95, 155, 186, 186, 186, 186, 186, 186, 186, + 189, 189, 189, 189, 189, 189, 189, 95, 296, 95, + 95, 287, 286, 95, 95, 276, 275, 274, 95, 95, + 95, 95, 262, 261, 260, 95, 95, 95, 95, 243, + 242, 241, 95, 95, 95, 95, 95, 95, 95, 221, + 220, 219, 218, 95, 192, 185, 184, 183, 95, 95, + 95, 157, 156, 148, 138, 137, 136, 131, 130, 103, + 95, 99, 96, 78, 71, 63, 318, 7, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318 } ; -static const flex_int16_t yy_chk[634] = +static const flex_int16_t yy_chk[742] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 3, 4, 5, - 6, 12, 5, 6, 13, 23, 3, 4, 16, 20, - 15, 317, 13, 15, 15, 28, 28, 22, 20, 24, - 30, 30, 13, 12, 22, 24, 16, 15, 36, 25, - 24, 25, 37, 40, 23, 24, 43, 38, 39, 41, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 4, 5, 6, 12, 5, 6, + 13, 15, 3, 4, 15, 15, 16, 20, 13, 40, + 22, 23, 23, 23, 23, 37, 24, 40, 13, 20, + 22, 15, 24, 29, 29, 12, 338, 24, 31, 31, - 25, 38, 44, 41, 36, 43, 39, 40, 38, 40, - 44, 37, 43, 42, 38, 45, 41, 42, 46, 47, - 48, 53, 49, 50, 63, 51, 70, 47, 48, 51, - 184, 72, 45, 49, 74, 81, 51, 46, 65, 50, - 65, 49, 87, 184, 48, 75, 63, 89, 70, 72, - 101, 75, 74, 81, 53, 88, 99, 88, 89, 100, - 87, 102, 65, 103, 101, 104, 88, 100, 99, 75, - 101, 105, 107, 102, 104, 106, 108, 109, 112, 103, - 114, 113, 106, 115, 116, 304, 107, 117, 118, 119, - 127, 105, 109, 121, 122, 108, 120, 114, 116, 117, + 16, 37, 118, 38, 25, 24, 25, 25, 25, 25, + 26, 46, 26, 26, 26, 26, 23, 25, 41, 25, + 39, 25, 38, 118, 39, 42, 25, 26, 46, 42, + 45, 39, 41, 48, 41, 43, 44, 39, 45, 43, + 47, 48, 42, 49, 50, 44, 51, 54, 64, 52, + 72, 49, 44, 52, 66, 50, 66, 74, 76, 47, + 52, 105, 51, 50, 77, 104, 117, 49, 107, 105, + 77, 83, 83, 83, 83, 92, 64, 104, 72, 112, + 107, 74, 76, 54, 66, 89, 89, 89, 89, 117, + 111, 337, 92, 112, 77, 83, 90, 111, 90, 90, - 118, 112, 113, 120, 115, 121, 122, 118, 128, 133, - 136, 119, 127, 129, 135, 129, 135, 137, 138, 140, - 149, 139, 144, 137, 154, 140, 152, 300, 136, 150, - 128, 133, 151, 150, 152, 149, 138, 129, 135, 139, - 144, 137, 153, 140, 155, 154, 151, 156, 155, 157, - 158, 159, 160, 161, 163, 156, 153, 162, 164, 159, - 160, 161, 165, 163, 166, 168, 157, 167, 169, 162, - 158, 165, 171, 168, 170, 172, 169, 176, 177, 178, - 164, 178, 170, 179, 180, 166, 181, 167, 187, 172, - 189, 191, 181, 171, 188, 187, 192, 195, 201, 176, + 90, 90, 91, 106, 91, 91, 91, 91, 93, 89, + 93, 93, 109, 90, 110, 120, 108, 106, 113, 91, + 114, 109, 336, 106, 119, 93, 94, 333, 94, 94, + 94, 94, 108, 122, 110, 114, 120, 113, 94, 94, + 121, 119, 124, 94, 123, 122, 125, 94, 94, 94, + 94, 94, 94, 125, 121, 126, 123, 127, 132, 133, + 134, 139, 134, 123, 124, 143, 141, 126, 141, 127, + 142, 143, 146, 144, 145, 161, 158, 201, 146, 150, + 150, 150, 150, 161, 159, 160, 132, 133, 159, 139, + 134, 158, 327, 201, 142, 143, 141, 144, 145, 160, - 177, 179, 180, 178, 192, 193, 188, 191, 196, 193, - 181, 195, 189, 197, 198, 200, 197, 196, 202, 201, - 204, 200, 202, 205, 211, 212, 206, 213, 219, 204, - 217, 214, 205, 198, 206, 221, 217, 222, 223, 226, - 234, 299, 211, 213, 205, 214, 212, 220, 222, 223, - 224, 221, 220, 219, 225, 220, 227, 224, 226, 232, - 233, 235, 234, 236, 238, 239, 225, 242, 227, 244, - 246, 233, 238, 245, 236, 250, 232, 245, 251, 255, - 252, 239, 235, 256, 246, 244, 242, 250, 252, 255, - 256, 257, 258, 259, 264, 260, 265, 251, 269, 257, + 162, 163, 146, 150, 152, 167, 152, 152, 152, 152, + 153, 164, 153, 153, 162, 164, 165, 166, 168, 175, + 169, 152, 163, 170, 165, 167, 168, 153, 169, 171, + 172, 170, 173, 174, 166, 176, 177, 178, 179, 172, + 175, 171, 174, 180, 177, 178, 179, 181, 186, 187, + 188, 189, 188, 191, 173, 176, 194, 190, 197, 191, + 198, 181, 199, 202, 180, 197, 203, 208, 205, 194, + 203, 202, 198, 210, 211, 189, 186, 187, 206, 210, + 188, 190, 205, 191, 199, 207, 208, 206, 207, 212, + 214, 215, 222, 212, 216, 211, 223, 224, 228, 214, - 258, 267, 269, 271, 265, 270, 272, 275, 259, 260, - 264, 271, 270, 267, 276, 272, 277, 278, 276, 281, - 285, 272, 282, 289, 278, 288, 282, 285, 275, 288, - 292, 293, 277, 295, 298, 296, 301, 293, 281, 297, - 303, 295, 298, 294, 289, 292, 296, 303, 291, 290, - 287, 286, 301, 306, 306, 306, 306, 306, 307, 307, - 307, 307, 307, 308, 308, 308, 308, 308, 309, 309, - 309, 309, 309, 310, 310, 310, 311, 311, 312, 312, - 312, 312, 312, 313, 313, 313, 313, 313, 314, 314, - 314, 314, 314, 315, 315, 315, 315, 315, 316, 284, + 215, 225, 216, 230, 228, 232, 231, 233, 234, 235, + 222, 231, 215, 224, 231, 225, 235, 223, 233, 234, + 236, 232, 237, 238, 246, 244, 245, 247, 230, 248, + 250, 251, 236, 254, 256, 238, 264, 245, 250, 257, + 248, 237, 244, 257, 258, 263, 246, 251, 247, 269, + 256, 265, 254, 268, 270, 264, 269, 263, 258, 265, + 271, 272, 270, 268, 273, 277, 278, 280, 271, 282, + 283, 288, 284, 282, 278, 285, 272, 283, 273, 280, + 284, 277, 289, 290, 285, 294, 289, 291, 298, 295, + 285, 302, 288, 295, 291, 298, 301, 306, 305, 290, - 316, 316, 316, 318, 318, 318, 318, 318, 319, 319, - 319, 319, 319, 283, 280, 279, 274, 268, 266, 263, - 261, 254, 253, 249, 248, 247, 243, 241, 240, 237, - 231, 230, 229, 228, 218, 216, 215, 209, 208, 207, - 203, 199, 194, 190, 186, 185, 183, 182, 175, 174, - 173, 146, 142, 132, 131, 130, 111, 110, 97, 96, - 92, 82, 68, 67, 66, 61, 58, 35, 32, 29, - 26, 19, 14, 11, 7, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 301, 308, 311, 306, 294, 309, 314, 316, 317, 308, + 311, 313, 302, 305, 316, 312, 309, 310, 307, 304, + 303, 300, 314, 319, 319, 319, 319, 319, 319, 319, + 320, 320, 320, 320, 320, 320, 320, 321, 321, 321, + 321, 321, 321, 321, 322, 299, 297, 322, 323, 323, + 323, 323, 323, 323, 323, 324, 324, 324, 324, 324, + 325, 325, 325, 325, 326, 326, 326, 326, 326, 326, + 326, 328, 328, 328, 328, 328, 328, 328, 329, 329, + 329, 329, 329, 329, 329, 330, 330, 330, 330, 330, + 330, 330, 331, 296, 331, 331, 331, 331, 331, 332, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305 + 332, 293, 332, 334, 334, 334, 334, 334, 334, 334, + 335, 335, 335, 335, 335, 335, 335, 292, 287, 281, + 279, 276, 274, 267, 266, 262, 261, 260, 255, 253, + 252, 249, 243, 242, 241, 239, 229, 227, 226, 220, + 219, 218, 213, 209, 204, 200, 196, 195, 193, 192, + 185, 184, 183, 155, 148, 138, 137, 136, 116, 115, + 102, 101, 97, 84, 70, 69, 68, 62, 59, 36, + 33, 30, 27, 19, 14, 11, 7, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318 } ; /* The intent behind this definition is that it'll catch @@ -886,9 +916,9 @@ static const flex_int16_t yy_chk[634] = #line 23 "lexer.lpp" #define YY_USER_ACTION loc.columns(yyleng); -#line 889 "lexer.cpp" +#line 919 "lexer.cpp" -#line 891 "lexer.cpp" +#line 921 "lexer.cpp" #define INITIAL 0 #define COMMENT_BLOCK_STATE 1 @@ -1148,15 +1178,15 @@ YY_DECL } { -#line 36 "lexer.lpp" +#line 40 "lexer.lpp" -#line 40 "lexer.lpp" +#line 44 "lexer.lpp" loc.step(); -#line 1159 "lexer.cpp" +#line 1189 "lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1183,13 +1213,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 306 ) + if ( yy_current_state >= 319 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 305 ); + while ( yy_current_state != 318 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -1211,522 +1241,542 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 43 "lexer.lpp" +#line 47 "lexer.lpp" { loc.step(); } YY_BREAK case 2: /* rule 2 can match eol */ YY_RULE_SETUP -#line 45 "lexer.lpp" +#line 49 "lexer.lpp" { loc.lines(yyleng); loc.step(); } YY_BREAK case 3: YY_RULE_SETUP -#line 47 "lexer.lpp" +#line 51 "lexer.lpp" YY_BREAK case 4: YY_RULE_SETUP -#line 49 "lexer.lpp" +#line 53 "lexer.lpp" { BEGIN(COMMENT_BLOCK_STATE); } YY_BREAK case 5: YY_RULE_SETUP -#line 50 "lexer.lpp" +#line 54 "lexer.lpp" YY_BREAK case 6: /* rule 6 can match eol */ YY_RULE_SETUP -#line 51 "lexer.lpp" +#line 55 "lexer.lpp" { loc.lines(yyleng); loc.step(); } YY_BREAK case 7: YY_RULE_SETUP -#line 52 "lexer.lpp" +#line 56 "lexer.lpp" { BEGIN(INITIAL); } YY_BREAK case 8: YY_RULE_SETUP -#line 54 "lexer.lpp" +#line 58 "lexer.lpp" { BEGIN(DEVELOPER_BLOCK_STATE); } YY_BREAK case 9: YY_RULE_SETUP -#line 55 "lexer.lpp" +#line 59 "lexer.lpp" YY_BREAK case 10: /* rule 10 can match eol */ YY_RULE_SETUP -#line 56 "lexer.lpp" +#line 60 "lexer.lpp" { loc.lines(yyleng); loc.step(); } YY_BREAK case 11: YY_RULE_SETUP -#line 57 "lexer.lpp" +#line 61 "lexer.lpp" { BEGIN(INITIAL); } YY_BREAK case 12: YY_RULE_SETUP -#line 59 "lexer.lpp" +#line 63 "lexer.lpp" { return s2::parser::make_BREAKPOINT(loc); } YY_BREAK case 13: YY_RULE_SETUP -#line 60 "lexer.lpp" +#line 64 "lexer.lpp" { return s2::parser::make_PROFBEGIN(loc); } YY_BREAK case 14: YY_RULE_SETUP -#line 61 "lexer.lpp" +#line 65 "lexer.lpp" { return s2::parser::make_PROFEND(loc); } YY_BREAK case 15: YY_RULE_SETUP -#line 62 "lexer.lpp" +#line 66 "lexer.lpp" { return s2::parser::make_INCLUDE(loc); } YY_BREAK case 16: YY_RULE_SETUP -#line 63 "lexer.lpp" +#line 67 "lexer.lpp" { return s2::parser::make_USINGTREE(loc); } YY_BREAK case 17: YY_RULE_SETUP -#line 64 "lexer.lpp" +#line 68 "lexer.lpp" { return s2::parser::make_ANIMTREE(loc); } YY_BREAK case 18: YY_RULE_SETUP -#line 65 "lexer.lpp" +#line 69 "lexer.lpp" { return s2::parser::make_ENDON(loc); } YY_BREAK case 19: YY_RULE_SETUP -#line 66 "lexer.lpp" +#line 70 "lexer.lpp" { return s2::parser::make_NOTIFY(loc); } YY_BREAK case 20: YY_RULE_SETUP -#line 67 "lexer.lpp" +#line 71 "lexer.lpp" { return s2::parser::make_WAIT(loc); } YY_BREAK case 21: YY_RULE_SETUP -#line 68 "lexer.lpp" +#line 72 "lexer.lpp" { return s2::parser::make_WAITTILL(loc); } YY_BREAK case 22: YY_RULE_SETUP -#line 69 "lexer.lpp" +#line 73 "lexer.lpp" { return s2::parser::make_WAITTILLMATCH(loc); } YY_BREAK case 23: YY_RULE_SETUP -#line 70 "lexer.lpp" +#line 74 "lexer.lpp" { return s2::parser::make_WAITTILLFRAMEEND(loc); } YY_BREAK case 24: YY_RULE_SETUP -#line 71 "lexer.lpp" +#line 75 "lexer.lpp" { return s2::parser::make_WAITFRAME(loc); } YY_BREAK case 25: YY_RULE_SETUP -#line 72 "lexer.lpp" +#line 76 "lexer.lpp" { return s2::parser::make_IF(loc); } YY_BREAK case 26: YY_RULE_SETUP -#line 73 "lexer.lpp" +#line 77 "lexer.lpp" { return s2::parser::make_ELSE(loc); } YY_BREAK case 27: YY_RULE_SETUP -#line 74 "lexer.lpp" +#line 78 "lexer.lpp" { return s2::parser::make_WHILE(loc); } YY_BREAK case 28: YY_RULE_SETUP -#line 75 "lexer.lpp" +#line 79 "lexer.lpp" { return s2::parser::make_FOR(loc); } YY_BREAK case 29: YY_RULE_SETUP -#line 76 "lexer.lpp" +#line 80 "lexer.lpp" { return s2::parser::make_FOREACH(loc); } YY_BREAK case 30: YY_RULE_SETUP -#line 77 "lexer.lpp" +#line 81 "lexer.lpp" { return s2::parser::make_IN(loc); } YY_BREAK case 31: YY_RULE_SETUP -#line 78 "lexer.lpp" +#line 82 "lexer.lpp" { return s2::parser::make_SWITCH(loc); } YY_BREAK case 32: YY_RULE_SETUP -#line 79 "lexer.lpp" +#line 83 "lexer.lpp" { return s2::parser::make_CASE(loc); } YY_BREAK case 33: YY_RULE_SETUP -#line 80 "lexer.lpp" +#line 84 "lexer.lpp" { return s2::parser::make_DEFAULT(loc); } YY_BREAK case 34: YY_RULE_SETUP -#line 81 "lexer.lpp" +#line 85 "lexer.lpp" { return s2::parser::make_BREAK(loc); } YY_BREAK case 35: YY_RULE_SETUP -#line 82 "lexer.lpp" +#line 86 "lexer.lpp" { return s2::parser::make_CONTINUE(loc); } YY_BREAK case 36: YY_RULE_SETUP -#line 83 "lexer.lpp" +#line 87 "lexer.lpp" { return s2::parser::make_RETURN(loc); } YY_BREAK case 37: YY_RULE_SETUP -#line 84 "lexer.lpp" +#line 88 "lexer.lpp" { return s2::parser::make_THREAD(loc); } YY_BREAK case 38: YY_RULE_SETUP -#line 85 "lexer.lpp" +#line 89 "lexer.lpp" { return s2::parser::make_CHILDTHREAD(loc); } YY_BREAK case 39: YY_RULE_SETUP -#line 86 "lexer.lpp" +#line 90 "lexer.lpp" { return s2::parser::make_THISTHREAD(loc); } YY_BREAK case 40: YY_RULE_SETUP -#line 87 "lexer.lpp" +#line 91 "lexer.lpp" { return s2::parser::make_CALL(loc); } YY_BREAK case 41: YY_RULE_SETUP -#line 88 "lexer.lpp" +#line 92 "lexer.lpp" { return s2::parser::make_TRUE(loc); } YY_BREAK case 42: YY_RULE_SETUP -#line 89 "lexer.lpp" +#line 93 "lexer.lpp" { return s2::parser::make_FALSE(loc); } YY_BREAK case 43: YY_RULE_SETUP -#line 90 "lexer.lpp" +#line 94 "lexer.lpp" { return s2::parser::make_UNDEFINED(loc); } YY_BREAK case 44: YY_RULE_SETUP -#line 91 "lexer.lpp" +#line 95 "lexer.lpp" { return s2::parser::make_SIZE(loc); } YY_BREAK case 45: YY_RULE_SETUP -#line 92 "lexer.lpp" +#line 96 "lexer.lpp" { return s2::parser::make_GAME(loc); } YY_BREAK case 46: YY_RULE_SETUP -#line 93 "lexer.lpp" +#line 97 "lexer.lpp" { return s2::parser::make_SELF(loc); } YY_BREAK case 47: YY_RULE_SETUP -#line 94 "lexer.lpp" +#line 98 "lexer.lpp" { return s2::parser::make_ANIM(loc); } YY_BREAK case 48: YY_RULE_SETUP -#line 95 "lexer.lpp" +#line 99 "lexer.lpp" { return s2::parser::make_LEVEL(loc); } YY_BREAK case 49: YY_RULE_SETUP -#line 96 "lexer.lpp" +#line 100 "lexer.lpp" { return s2::parser::make_LPAREN(loc); } YY_BREAK case 50: YY_RULE_SETUP -#line 97 "lexer.lpp" +#line 101 "lexer.lpp" { return s2::parser::make_RPAREN(loc); } YY_BREAK case 51: YY_RULE_SETUP -#line 98 "lexer.lpp" +#line 102 "lexer.lpp" { return s2::parser::make_LBRACE(loc); } YY_BREAK case 52: YY_RULE_SETUP -#line 99 "lexer.lpp" +#line 103 "lexer.lpp" { return s2::parser::make_RBRACE(loc); } YY_BREAK case 53: YY_RULE_SETUP -#line 100 "lexer.lpp" +#line 104 "lexer.lpp" { return s2::parser::make_LBRACKET(loc); } YY_BREAK case 54: YY_RULE_SETUP -#line 101 "lexer.lpp" +#line 105 "lexer.lpp" { return s2::parser::make_RBRACKET(loc); } YY_BREAK case 55: YY_RULE_SETUP -#line 102 "lexer.lpp" +#line 106 "lexer.lpp" { return s2::parser::make_COMMA(loc); } YY_BREAK case 56: YY_RULE_SETUP -#line 103 "lexer.lpp" +#line 107 "lexer.lpp" { return s2::parser::make_DOT(loc); } YY_BREAK case 57: YY_RULE_SETUP -#line 104 "lexer.lpp" +#line 108 "lexer.lpp" { return s2::parser::make_DOUBLECOLON(loc); } YY_BREAK case 58: YY_RULE_SETUP -#line 105 "lexer.lpp" +#line 109 "lexer.lpp" { return s2::parser::make_COLON(loc); } YY_BREAK case 59: YY_RULE_SETUP -#line 106 "lexer.lpp" +#line 110 "lexer.lpp" { return s2::parser::make_SEMICOLON(loc); } YY_BREAK case 60: YY_RULE_SETUP -#line 107 "lexer.lpp" +#line 111 "lexer.lpp" { return s2::parser::make_QMARK(loc); } YY_BREAK case 61: YY_RULE_SETUP -#line 108 "lexer.lpp" +#line 112 "lexer.lpp" { return s2::parser::make_INCREMENT(loc); } YY_BREAK case 62: YY_RULE_SETUP -#line 109 "lexer.lpp" +#line 113 "lexer.lpp" { return s2::parser::make_DECREMENT(loc); } YY_BREAK case 63: YY_RULE_SETUP -#line 110 "lexer.lpp" +#line 114 "lexer.lpp" { return s2::parser::make_ASSIGN_LSHIFT(loc); } YY_BREAK case 64: YY_RULE_SETUP -#line 111 "lexer.lpp" +#line 115 "lexer.lpp" { return s2::parser::make_ASSIGN_RSHIFT(loc); } YY_BREAK case 65: YY_RULE_SETUP -#line 112 "lexer.lpp" +#line 116 "lexer.lpp" { return s2::parser::make_LSHIFT(loc); } YY_BREAK case 66: YY_RULE_SETUP -#line 113 "lexer.lpp" +#line 117 "lexer.lpp" { return s2::parser::make_RSHIFT(loc); } YY_BREAK case 67: YY_RULE_SETUP -#line 114 "lexer.lpp" +#line 118 "lexer.lpp" { return s2::parser::make_OR(loc); } YY_BREAK case 68: YY_RULE_SETUP -#line 115 "lexer.lpp" +#line 119 "lexer.lpp" { return s2::parser::make_AND(loc); } YY_BREAK case 69: YY_RULE_SETUP -#line 116 "lexer.lpp" +#line 120 "lexer.lpp" { return s2::parser::make_EQUALITY(loc); } YY_BREAK case 70: YY_RULE_SETUP -#line 117 "lexer.lpp" +#line 121 "lexer.lpp" { return s2::parser::make_INEQUALITY(loc); } YY_BREAK case 71: YY_RULE_SETUP -#line 118 "lexer.lpp" +#line 122 "lexer.lpp" { return s2::parser::make_LESS_EQUAL(loc); } YY_BREAK case 72: YY_RULE_SETUP -#line 119 "lexer.lpp" +#line 123 "lexer.lpp" { return s2::parser::make_GREATER_EQUAL(loc); } YY_BREAK case 73: YY_RULE_SETUP -#line 120 "lexer.lpp" +#line 124 "lexer.lpp" { return s2::parser::make_LESS(loc); } YY_BREAK case 74: YY_RULE_SETUP -#line 121 "lexer.lpp" +#line 125 "lexer.lpp" { return s2::parser::make_GREATER(loc); } YY_BREAK case 75: YY_RULE_SETUP -#line 122 "lexer.lpp" +#line 126 "lexer.lpp" { return s2::parser::make_ASSIGN_ADD(loc); } YY_BREAK case 76: YY_RULE_SETUP -#line 123 "lexer.lpp" +#line 127 "lexer.lpp" { return s2::parser::make_ASSIGN_SUB(loc); } YY_BREAK case 77: YY_RULE_SETUP -#line 124 "lexer.lpp" +#line 128 "lexer.lpp" { return s2::parser::make_ASSIGN_MULT(loc); } YY_BREAK case 78: YY_RULE_SETUP -#line 125 "lexer.lpp" +#line 129 "lexer.lpp" { return s2::parser::make_ASSIGN_DIV(loc); } YY_BREAK case 79: YY_RULE_SETUP -#line 126 "lexer.lpp" +#line 130 "lexer.lpp" { return s2::parser::make_ASSIGN_MOD(loc); } YY_BREAK case 80: YY_RULE_SETUP -#line 127 "lexer.lpp" +#line 131 "lexer.lpp" { return s2::parser::make_ASSIGN_BITWISE_OR(loc); } YY_BREAK case 81: YY_RULE_SETUP -#line 128 "lexer.lpp" +#line 132 "lexer.lpp" { return s2::parser::make_ASSIGN_BITWISE_AND(loc); } YY_BREAK case 82: YY_RULE_SETUP -#line 129 "lexer.lpp" +#line 133 "lexer.lpp" { return s2::parser::make_ASSIGN_BITWISE_EXOR(loc); } YY_BREAK case 83: YY_RULE_SETUP -#line 130 "lexer.lpp" +#line 134 "lexer.lpp" { return s2::parser::make_ASSIGN(loc); } YY_BREAK case 84: YY_RULE_SETUP -#line 131 "lexer.lpp" +#line 135 "lexer.lpp" { return s2::parser::make_ADD(loc); } YY_BREAK case 85: YY_RULE_SETUP -#line 132 "lexer.lpp" +#line 136 "lexer.lpp" { return s2::parser::make_SUB(loc); } YY_BREAK case 86: YY_RULE_SETUP -#line 133 "lexer.lpp" +#line 137 "lexer.lpp" { return s2::parser::make_MULT(loc); } YY_BREAK case 87: YY_RULE_SETUP -#line 134 "lexer.lpp" +#line 138 "lexer.lpp" { return s2::parser::make_DIV(loc); } YY_BREAK case 88: YY_RULE_SETUP -#line 135 "lexer.lpp" +#line 139 "lexer.lpp" { return s2::parser::make_MOD(loc); } YY_BREAK case 89: YY_RULE_SETUP -#line 136 "lexer.lpp" +#line 140 "lexer.lpp" { return s2::parser::make_NOT(loc); } YY_BREAK case 90: YY_RULE_SETUP -#line 137 "lexer.lpp" +#line 141 "lexer.lpp" { return s2::parser::make_COMPLEMENT(loc); } YY_BREAK case 91: YY_RULE_SETUP -#line 138 "lexer.lpp" +#line 142 "lexer.lpp" { return s2::parser::make_BITWISE_OR(loc); } YY_BREAK case 92: YY_RULE_SETUP -#line 139 "lexer.lpp" +#line 143 "lexer.lpp" { return s2::parser::make_BITWISE_AND(loc); } YY_BREAK case 93: YY_RULE_SETUP -#line 140 "lexer.lpp" +#line 144 "lexer.lpp" { return s2::parser::make_BITWISE_EXOR(loc); } YY_BREAK case 94: YY_RULE_SETUP -#line 141 "lexer.lpp" +#line 145 "lexer.lpp" { return s2::parser::make_FILE(utils::string::fordslash(yytext), loc); } YY_BREAK case 95: YY_RULE_SETUP -#line 142 "lexer.lpp" +#line 146 "lexer.lpp" { return s2::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); } YY_BREAK case 96: /* rule 96 can match eol */ YY_RULE_SETUP -#line 143 "lexer.lpp" +#line 147 "lexer.lpp" { return s2::parser::make_ISTRING(std::string(yytext).substr(1), loc); } YY_BREAK case 97: /* rule 97 can match eol */ YY_RULE_SETUP -#line 144 "lexer.lpp" +#line 148 "lexer.lpp" { return s2::parser::make_STRING(std::string(yytext), loc); } YY_BREAK case 98: YY_RULE_SETUP -#line 145 "lexer.lpp" -{ return s2::parser::make_FLOAT(std::string(yytext), loc); } +#line 149 "lexer.lpp" +{ return s2::parser::make_COLOR(std::string(yytext).substr(1), loc); } YY_BREAK case 99: YY_RULE_SETUP -#line 146 "lexer.lpp" -{ return s2::parser::make_INTEGER(std::string(yytext), loc); } +#line 150 "lexer.lpp" +{ return s2::parser::make_FLOAT(std::string(yytext), loc); } + YY_BREAK +case 100: +YY_RULE_SETUP +#line 151 "lexer.lpp" +{ return s2::parser::make_INT_OCT(utils::string::oct_to_dec(yytext), loc); } + YY_BREAK +case 101: +YY_RULE_SETUP +#line 152 "lexer.lpp" +{ return s2::parser::make_INT_BIN(utils::string::bin_to_dec(yytext), loc); } + YY_BREAK +case 102: +YY_RULE_SETUP +#line 153 "lexer.lpp" +{ return s2::parser::make_INT_HEX(utils::string::hex_to_dec(yytext), loc); } + YY_BREAK +case 103: +YY_RULE_SETUP +#line 154 "lexer.lpp" +{ return s2::parser::make_INT_DEC(std::string(yytext), loc); } YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT_BLOCK_STATE): case YY_STATE_EOF(DEVELOPER_BLOCK_STATE): -#line 147 "lexer.lpp" +#line 155 "lexer.lpp" { return s2::parser::make_S2EOF(loc); } YY_BREAK -case 100: -/* rule 100 can match eol */ +case 104: +/* rule 104 can match eol */ YY_RULE_SETUP -#line 148 "lexer.lpp" +#line 156 "lexer.lpp" { throw s2::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); } YY_BREAK -case 101: +case 105: YY_RULE_SETUP -#line 150 "lexer.lpp" +#line 158 "lexer.lpp" ECHO; YY_BREAK -#line 1729 "lexer.cpp" +#line 1779 "lexer.cpp" case YY_END_OF_BUFFER: { @@ -2024,7 +2074,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 306 ) + if ( yy_current_state >= 319 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2053,11 +2103,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 306 ) + if ( yy_current_state >= 319 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 305); + yy_is_jam = (yy_current_state == 318); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -2856,6 +2906,6 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 150 "lexer.lpp" +#line 158 "lexer.lpp" diff --git a/src/s2/xsk/lexer.hpp b/src/s2/xsk/lexer.hpp index a934a9c5..1918a2a9 100644 --- a/src/s2/xsk/lexer.hpp +++ b/src/s2/xsk/lexer.hpp @@ -700,7 +700,7 @@ extern int yylex (yyscan_t yyscanner); #undef yyTABLES_NAME #endif -#line 150 "lexer.lpp" +#line 158 "lexer.lpp" #line 706 "lexer.hpp" diff --git a/src/s2/xsk/parser.cpp b/src/s2/xsk/parser.cpp index 227ba725..9d35d3c2 100644 --- a/src/s2/xsk/parser.cpp +++ b/src/s2/xsk/parser.cpp @@ -228,6 +228,10 @@ namespace xsk { namespace gsc { namespace s2 { value.YY_MOVE_OR_COPY< animtree_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_color: // color + value.YY_MOVE_OR_COPY< color_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_constant: // constant value.YY_MOVE_OR_COPY< constant_ptr > (YY_MOVE (that.value)); break; @@ -278,7 +282,6 @@ namespace xsk { namespace gsc { namespace s2 { value.YY_MOVE_OR_COPY< file_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.YY_MOVE_OR_COPY< float_ptr > (YY_MOVE (that.value)); break; @@ -291,7 +294,6 @@ namespace xsk { namespace gsc { namespace s2 { value.YY_MOVE_OR_COPY< include_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.YY_MOVE_OR_COPY< integer_ptr > (YY_MOVE (that.value)); break; @@ -333,8 +335,12 @@ namespace xsk { namespace gsc { namespace s2 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value)); break; @@ -495,6 +501,10 @@ namespace xsk { namespace gsc { namespace s2 { value.move< animtree_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_color: // color + value.move< color_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_constant: // constant value.move< constant_ptr > (YY_MOVE (that.value)); break; @@ -545,7 +555,6 @@ namespace xsk { namespace gsc { namespace s2 { value.move< file_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.move< float_ptr > (YY_MOVE (that.value)); break; @@ -558,7 +567,6 @@ namespace xsk { namespace gsc { namespace s2 { value.move< include_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.move< integer_ptr > (YY_MOVE (that.value)); break; @@ -600,8 +608,12 @@ namespace xsk { namespace gsc { namespace s2 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.move< std::string > (YY_MOVE (that.value)); break; @@ -762,6 +774,10 @@ namespace xsk { namespace gsc { namespace s2 { value.copy< animtree_ptr > (that.value); break; + case symbol_kind::S_color: // color + value.copy< color_ptr > (that.value); + break; + case symbol_kind::S_constant: // constant value.copy< constant_ptr > (that.value); break; @@ -812,7 +828,6 @@ namespace xsk { namespace gsc { namespace s2 { value.copy< file_ptr > (that.value); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.copy< float_ptr > (that.value); break; @@ -825,7 +840,6 @@ namespace xsk { namespace gsc { namespace s2 { value.copy< include_ptr > (that.value); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.copy< integer_ptr > (that.value); break; @@ -867,8 +881,12 @@ namespace xsk { namespace gsc { namespace s2 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.copy< std::string > (that.value); break; @@ -1028,6 +1046,10 @@ namespace xsk { namespace gsc { namespace s2 { value.move< animtree_ptr > (that.value); break; + case symbol_kind::S_color: // color + value.move< color_ptr > (that.value); + break; + case symbol_kind::S_constant: // constant value.move< constant_ptr > (that.value); break; @@ -1078,7 +1100,6 @@ namespace xsk { namespace gsc { namespace s2 { value.move< file_ptr > (that.value); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.move< float_ptr > (that.value); break; @@ -1091,7 +1112,6 @@ namespace xsk { namespace gsc { namespace s2 { value.move< include_ptr > (that.value); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.move< integer_ptr > (that.value); break; @@ -1133,8 +1153,12 @@ namespace xsk { namespace gsc { namespace s2 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.move< std::string > (that.value); break; @@ -1549,6 +1573,10 @@ namespace xsk { namespace gsc { namespace s2 { yylhs.value.emplace< animtree_ptr > (); break; + case symbol_kind::S_color: // color + yylhs.value.emplace< color_ptr > (); + break; + case symbol_kind::S_constant: // constant yylhs.value.emplace< constant_ptr > (); break; @@ -1599,7 +1627,6 @@ namespace xsk { namespace gsc { namespace s2 { yylhs.value.emplace< file_ptr > (); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float yylhs.value.emplace< float_ptr > (); break; @@ -1612,7 +1639,6 @@ namespace xsk { namespace gsc { namespace s2 { yylhs.value.emplace< include_ptr > (); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer yylhs.value.emplace< integer_ptr > (); break; @@ -1654,8 +1680,12 @@ namespace xsk { namespace gsc { namespace s2 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" yylhs.value.emplace< std::string > (); break; @@ -1810,1225 +1840,1237 @@ namespace xsk { namespace gsc { namespace s2 { switch (yyn) { case 2: // root: program -#line 243 "parser.ypp" +#line 246 "parser.ypp" { ast = std::move(yystack_[0].value.as < program_ptr > ()); } -#line 1816 "parser.cpp" - break; - - case 3: // root: %empty -#line 244 "parser.ypp" - { ast = std::make_unique(yylhs.location); } -#line 1822 "parser.cpp" - break; - - case 4: // program: program include -#line 249 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } -#line 1828 "parser.cpp" - break; - - case 5: // program: program define -#line 251 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } -#line 1834 "parser.cpp" - break; - - case 6: // program: include -#line 253 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } -#line 1840 "parser.cpp" - break; - - case 7: // program: define -#line 255 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1846 "parser.cpp" break; - case 8: // include: "#include" file ";" -#line 260 "parser.ypp" - { yylhs.value.as < include_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < file_ptr > ())); } + case 3: // root: %empty +#line 247 "parser.ypp" + { ast = std::make_unique(yylhs.location); } #line 1852 "parser.cpp" break; - case 9: // define: usingtree -#line 264 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_usingtree = std::move(yystack_[0].value.as < usingtree_ptr > ()); } + case 4: // program: program include +#line 252 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } #line 1858 "parser.cpp" break; - case 10: // define: constant -#line 265 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_constant = std::move(yystack_[0].value.as < constant_ptr > ()); } + case 5: // program: program define +#line 254 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1864 "parser.cpp" break; - case 11: // define: thread -#line 266 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_thread = std::move(yystack_[0].value.as < thread_ptr > ()); } + case 6: // program: include +#line 256 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } #line 1870 "parser.cpp" break; - case 12: // usingtree: "#using_animtree" "(" string ")" ";" -#line 271 "parser.ypp" - { yylhs.value.as < usingtree_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < string_ptr > ())); } + case 7: // program: define +#line 258 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1876 "parser.cpp" break; - case 13: // constant: name "=" expr ";" -#line 276 "parser.ypp" - { yylhs.value.as < constant_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 8: // include: "#include" file ";" +#line 263 "parser.ypp" + { yylhs.value.as < include_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < file_ptr > ())); } #line 1882 "parser.cpp" break; - case 14: // thread: name "(" parameters ")" stmt_block -#line 281 "parser.ypp" - { yylhs.value.as < thread_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < name_ptr > ()), std::move(yystack_[2].value.as < parameters_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } + case 9: // define: usingtree +#line 267 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_usingtree = std::move(yystack_[0].value.as < usingtree_ptr > ()); } #line 1888 "parser.cpp" break; - case 15: // parameters: parameters "," name -#line 286 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::move(yystack_[2].value.as < parameters_ptr > ()); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } + case 10: // define: constant +#line 268 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_constant = std::move(yystack_[0].value.as < constant_ptr > ()); } #line 1894 "parser.cpp" break; - case 16: // parameters: name -#line 288 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } + case 11: // define: thread +#line 269 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_thread = std::move(yystack_[0].value.as < thread_ptr > ()); } #line 1900 "parser.cpp" break; - case 17: // parameters: %empty -#line 290 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); } + case 12: // usingtree: "#using_animtree" "(" string ")" ";" +#line 274 "parser.ypp" + { yylhs.value.as < usingtree_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < string_ptr > ())); } #line 1906 "parser.cpp" break; - case 18: // stmt: stmt_block -#line 294 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_list = std::move(yystack_[0].value.as < stmt_list_ptr > ()); } + case 13: // constant: name "=" expr ";" +#line 279 "parser.ypp" + { yylhs.value.as < constant_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } #line 1912 "parser.cpp" break; - case 19: // stmt: stmt_call -#line 295 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_call = std::move(yystack_[0].value.as < stmt_call_ptr > ()); } + case 14: // thread: name "(" parameters ")" stmt_block +#line 284 "parser.ypp" + { yylhs.value.as < thread_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < name_ptr > ()), std::move(yystack_[2].value.as < parameters_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } #line 1918 "parser.cpp" break; - case 20: // stmt: stmt_assign -#line 296 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_assign = std::move(yystack_[0].value.as < stmt_assign_ptr > ()); } + case 15: // parameters: parameters "," name +#line 289 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::move(yystack_[2].value.as < parameters_ptr > ()); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } #line 1924 "parser.cpp" break; - case 21: // stmt: stmt_endon -#line 297 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_endon = std::move(yystack_[0].value.as < stmt_endon_ptr > ()); } + case 16: // parameters: name +#line 291 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } #line 1930 "parser.cpp" break; - case 22: // stmt: stmt_notify -#line 298 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_notify = std::move(yystack_[0].value.as < stmt_notify_ptr > ()); } + case 17: // parameters: %empty +#line 293 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); } #line 1936 "parser.cpp" break; - case 23: // stmt: stmt_wait -#line 299 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_wait = std::move(yystack_[0].value.as < stmt_wait_ptr > ()); } + case 18: // stmt: stmt_block +#line 297 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_list = std::move(yystack_[0].value.as < stmt_list_ptr > ()); } #line 1942 "parser.cpp" break; - case 24: // stmt: stmt_waittill -#line 300 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill_ptr > ()); } + case 19: // stmt: stmt_call +#line 298 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_call = std::move(yystack_[0].value.as < stmt_call_ptr > ()); } #line 1948 "parser.cpp" break; - case 25: // stmt: stmt_waittillmatch -#line 301 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch_ptr > ()); } + case 20: // stmt: stmt_assign +#line 299 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_assign = std::move(yystack_[0].value.as < stmt_assign_ptr > ()); } #line 1954 "parser.cpp" break; - case 26: // stmt: stmt_waittillframeend -#line 302 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend_ptr > ()); } + case 21: // stmt: stmt_endon +#line 300 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_endon = std::move(yystack_[0].value.as < stmt_endon_ptr > ()); } #line 1960 "parser.cpp" break; - case 27: // stmt: stmt_waitframe -#line 303 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waitframe = std::move(yystack_[0].value.as < stmt_waitframe_ptr > ()); } + case 22: // stmt: stmt_notify +#line 301 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_notify = std::move(yystack_[0].value.as < stmt_notify_ptr > ()); } #line 1966 "parser.cpp" break; - case 28: // stmt: stmt_if -#line 304 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_if = std::move(yystack_[0].value.as < stmt_if_ptr > ()); } + case 23: // stmt: stmt_wait +#line 302 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_wait = std::move(yystack_[0].value.as < stmt_wait_ptr > ()); } #line 1972 "parser.cpp" break; - case 29: // stmt: stmt_ifelse -#line 305 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse_ptr > ()); } + case 24: // stmt: stmt_waittill +#line 303 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill_ptr > ()); } #line 1978 "parser.cpp" break; - case 30: // stmt: stmt_while -#line 306 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_while = std::move(yystack_[0].value.as < stmt_while_ptr > ()); } + case 25: // stmt: stmt_waittillmatch +#line 304 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch_ptr > ()); } #line 1984 "parser.cpp" break; - case 31: // stmt: stmt_for -#line 307 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_for = std::move(yystack_[0].value.as < stmt_for_ptr > ()); } + case 26: // stmt: stmt_waittillframeend +#line 305 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend_ptr > ()); } #line 1990 "parser.cpp" break; - case 32: // stmt: stmt_foreach -#line 308 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach_ptr > ()); } + case 27: // stmt: stmt_waitframe +#line 306 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waitframe = std::move(yystack_[0].value.as < stmt_waitframe_ptr > ()); } #line 1996 "parser.cpp" break; - case 33: // stmt: stmt_switch -#line 309 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_switch = std::move(yystack_[0].value.as < stmt_switch_ptr > ()); } + case 28: // stmt: stmt_if +#line 307 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_if = std::move(yystack_[0].value.as < stmt_if_ptr > ()); } #line 2002 "parser.cpp" break; - case 34: // stmt: stmt_case -#line 310 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_case = std::move(yystack_[0].value.as < stmt_case_ptr > ()); } + case 29: // stmt: stmt_ifelse +#line 308 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse_ptr > ()); } #line 2008 "parser.cpp" break; - case 35: // stmt: stmt_default -#line 311 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_default = std::move(yystack_[0].value.as < stmt_default_ptr > ()); } + case 30: // stmt: stmt_while +#line 309 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_while = std::move(yystack_[0].value.as < stmt_while_ptr > ()); } #line 2014 "parser.cpp" break; - case 36: // stmt: stmt_break -#line 312 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_break = std::move(yystack_[0].value.as < stmt_break_ptr > ()); } + case 31: // stmt: stmt_for +#line 310 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_for = std::move(yystack_[0].value.as < stmt_for_ptr > ()); } #line 2020 "parser.cpp" break; - case 37: // stmt: stmt_continue -#line 313 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_continue = std::move(yystack_[0].value.as < stmt_continue_ptr > ()); } + case 32: // stmt: stmt_foreach +#line 311 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach_ptr > ()); } #line 2026 "parser.cpp" break; - case 38: // stmt: stmt_return -#line 314 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_return = std::move(yystack_[0].value.as < stmt_return_ptr > ()); } + case 33: // stmt: stmt_switch +#line 312 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_switch = std::move(yystack_[0].value.as < stmt_switch_ptr > ()); } #line 2032 "parser.cpp" break; - case 39: // stmt: stmt_breakpoint -#line 315 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_breakpoint = std::move(yystack_[0].value.as < stmt_breakpoint_ptr > ()); } + case 34: // stmt: stmt_case +#line 313 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_case = std::move(yystack_[0].value.as < stmt_case_ptr > ()); } #line 2038 "parser.cpp" break; - case 40: // stmt: stmt_prof_begin -#line 316 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_prof_begin = std::move(yystack_[0].value.as < stmt_prof_begin_ptr > ()); } + case 35: // stmt: stmt_default +#line 314 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_default = std::move(yystack_[0].value.as < stmt_default_ptr > ()); } #line 2044 "parser.cpp" break; - case 41: // stmt: stmt_prof_end -#line 317 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_prof_end = std::move(yystack_[0].value.as < stmt_prof_end_ptr > ()); } + case 36: // stmt: stmt_break +#line 315 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_break = std::move(yystack_[0].value.as < stmt_break_ptr > ()); } #line 2050 "parser.cpp" break; - case 42: // stmt_block: "{" stmt_list "}" -#line 321 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); } + case 37: // stmt: stmt_continue +#line 316 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_continue = std::move(yystack_[0].value.as < stmt_continue_ptr > ()); } #line 2056 "parser.cpp" break; - case 43: // stmt_block: "{" "}" -#line 322 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); } + case 38: // stmt: stmt_return +#line 317 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_return = std::move(yystack_[0].value.as < stmt_return_ptr > ()); } #line 2062 "parser.cpp" break; - case 44: // stmt_list: stmt_list stmt -#line 327 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 39: // stmt: stmt_breakpoint +#line 318 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_breakpoint = std::move(yystack_[0].value.as < stmt_breakpoint_ptr > ()); } #line 2068 "parser.cpp" break; - case 45: // stmt_list: stmt -#line 329 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 40: // stmt: stmt_prof_begin +#line 319 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_prof_begin = std::move(yystack_[0].value.as < stmt_prof_begin_ptr > ()); } #line 2074 "parser.cpp" break; - case 46: // stmt_call: expr_call ";" -#line 334 "parser.ypp" - { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } + case 41: // stmt: stmt_prof_end +#line 320 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_prof_end = std::move(yystack_[0].value.as < stmt_prof_end_ptr > ()); } #line 2080 "parser.cpp" break; - case 47: // stmt_call: expr_call_thread ";" -#line 336 "parser.ypp" - { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } + case 42: // stmt_block: "{" stmt_list "}" +#line 324 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); } #line 2086 "parser.cpp" break; - case 48: // stmt_assign: expr_assign ";" -#line 341 "parser.ypp" - { yylhs.value.as < stmt_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_assign_ptr > ())); } + case 43: // stmt_block: "{" "}" +#line 325 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); } #line 2092 "parser.cpp" break; - case 49: // stmt_endon: object "endon" "(" expr ")" ";" -#line 346 "parser.ypp" - { yylhs.value.as < stmt_endon_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ())); } + case 44: // stmt_list: stmt_list stmt +#line 330 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2098 "parser.cpp" break; - case 50: // stmt_notify: object "notify" "(" expr "," expr_arguments ")" ";" -#line 351 "parser.ypp" - { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 45: // stmt_list: stmt +#line 332 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2104 "parser.cpp" break; - case 51: // stmt_notify: object "notify" "(" expr ")" ";" -#line 353 "parser.ypp" - { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 46: // stmt_call: expr_call ";" +#line 337 "parser.ypp" + { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } #line 2110 "parser.cpp" break; - case 52: // stmt_wait: "wait" expr ";" -#line 358 "parser.ypp" - { yylhs.value.as < stmt_wait_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } + case 47: // stmt_call: expr_call_thread ";" +#line 339 "parser.ypp" + { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } #line 2116 "parser.cpp" break; - case 53: // stmt_waittill: object "waittill" "(" expr "," expr_arguments ")" ";" -#line 363 "parser.ypp" - { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 48: // stmt_assign: expr_assign ";" +#line 344 "parser.ypp" + { yylhs.value.as < stmt_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_assign_ptr > ())); } #line 2122 "parser.cpp" break; - case 54: // stmt_waittill: object "waittill" "(" expr ")" ";" -#line 365 "parser.ypp" - { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 49: // stmt_endon: object "endon" "(" expr ")" ";" +#line 349 "parser.ypp" + { yylhs.value.as < stmt_endon_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ())); } #line 2128 "parser.cpp" break; - case 55: // stmt_waittillmatch: object "waittillmatch" "(" expr "," expr_arguments ")" ";" -#line 370 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 50: // stmt_notify: object "notify" "(" expr "," expr_arguments ")" ";" +#line 354 "parser.ypp" + { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2134 "parser.cpp" break; - case 56: // stmt_waittillmatch: object "waittillmatch" "(" expr ")" ";" -#line 372 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 51: // stmt_notify: object "notify" "(" expr ")" ";" +#line 356 "parser.ypp" + { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2140 "parser.cpp" break; - case 57: // stmt_waittillframeend: "waittillframeend" ";" -#line 377 "parser.ypp" - { yylhs.value.as < stmt_waittillframeend_ptr > () = std::make_unique(yylhs.location); } + case 52: // stmt_wait: "wait" expr ";" +#line 361 "parser.ypp" + { yylhs.value.as < stmt_wait_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2146 "parser.cpp" break; - case 58: // stmt_waitframe: "waitframe" ";" -#line 382 "parser.ypp" - { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } + case 53: // stmt_waittill: object "waittill" "(" expr "," expr_arguments ")" ";" +#line 366 "parser.ypp" + { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2152 "parser.cpp" break; - case 59: // stmt_waitframe: "waitframe" "(" ")" ";" -#line 384 "parser.ypp" - { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } + case 54: // stmt_waittill: object "waittill" "(" expr ")" ";" +#line 368 "parser.ypp" + { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2158 "parser.cpp" break; - case 60: // stmt_if: "if" "(" expr ")" stmt -#line 389 "parser.ypp" - { yylhs.value.as < stmt_if_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 55: // stmt_waittillmatch: object "waittillmatch" "(" expr "," expr_arguments ")" ";" +#line 373 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2164 "parser.cpp" break; - case 61: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 394 "parser.ypp" - { yylhs.value.as < stmt_ifelse_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 56: // stmt_waittillmatch: object "waittillmatch" "(" expr ")" ";" +#line 375 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2170 "parser.cpp" break; - case 62: // stmt_while: "while" "(" expr ")" stmt -#line 399 "parser.ypp" - { yylhs.value.as < stmt_while_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 57: // stmt_waittillframeend: "waittillframeend" ";" +#line 380 "parser.ypp" + { yylhs.value.as < stmt_waittillframeend_ptr > () = std::make_unique(yylhs.location); } #line 2176 "parser.cpp" break; - case 63: // stmt_for: "for" "(" for_stmt ";" for_expr ";" for_stmt ")" stmt -#line 404 "parser.ypp" - { yylhs.value.as < stmt_for_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[6].value.as < stmt_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 58: // stmt_waitframe: "waitframe" ";" +#line 385 "parser.ypp" + { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } #line 2182 "parser.cpp" break; - case 64: // stmt_foreach: "foreach" "(" name "in" expr ")" stmt -#line 409 "parser.ypp" - { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 59: // stmt_waitframe: "waitframe" "(" ")" ";" +#line 387 "parser.ypp" + { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } #line 2188 "parser.cpp" break; - case 65: // stmt_foreach: "foreach" "(" name "," name "in" expr ")" stmt -#line 411 "parser.ypp" - { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[6].value.as < name_ptr > ())), expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 60: // stmt_if: "if" "(" expr ")" stmt +#line 392 "parser.ypp" + { yylhs.value.as < stmt_if_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2194 "parser.cpp" break; - case 66: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 416 "parser.ypp" - { yylhs.value.as < stmt_switch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } + case 61: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 397 "parser.ypp" + { yylhs.value.as < stmt_ifelse_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2200 "parser.cpp" break; - case 67: // stmt_case: "case" integer ":" -#line 421 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } + case 62: // stmt_while: "while" "(" expr ")" stmt +#line 402 "parser.ypp" + { yylhs.value.as < stmt_while_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2206 "parser.cpp" break; - case 68: // stmt_case: "case" neg_integer ":" -#line 423 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } + case 63: // stmt_for: "for" "(" for_stmt ";" for_expr ";" for_stmt ")" stmt +#line 407 "parser.ypp" + { yylhs.value.as < stmt_for_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[6].value.as < stmt_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2212 "parser.cpp" break; - case 69: // stmt_case: "case" string ":" -#line 425 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < string_ptr > ())), std::make_unique(yylhs.location)); } + case 64: // stmt_foreach: "foreach" "(" name "in" expr ")" stmt +#line 412 "parser.ypp" + { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2218 "parser.cpp" break; - case 70: // stmt_default: "default" ":" -#line 430 "parser.ypp" - { yylhs.value.as < stmt_default_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } + case 65: // stmt_foreach: "foreach" "(" name "," name "in" expr ")" stmt +#line 414 "parser.ypp" + { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[6].value.as < name_ptr > ())), expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2224 "parser.cpp" break; - case 71: // stmt_break: "break" ";" -#line 435 "parser.ypp" - { yylhs.value.as < stmt_break_ptr > () = std::make_unique(yylhs.location); } + case 66: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 419 "parser.ypp" + { yylhs.value.as < stmt_switch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } #line 2230 "parser.cpp" break; - case 72: // stmt_continue: "continue" ";" -#line 440 "parser.ypp" - { yylhs.value.as < stmt_continue_ptr > () = std::make_unique(yylhs.location); } + case 67: // stmt_case: "case" integer ":" +#line 424 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } #line 2236 "parser.cpp" break; - case 73: // stmt_return: "return" expr ";" -#line 445 "parser.ypp" - { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } + case 68: // stmt_case: "case" string ":" +#line 426 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < string_ptr > ())), std::make_unique(yylhs.location)); } #line 2242 "parser.cpp" break; - case 74: // stmt_return: "return" ";" -#line 447 "parser.ypp" - { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } + case 69: // stmt_default: "default" ":" +#line 431 "parser.ypp" + { yylhs.value.as < stmt_default_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2248 "parser.cpp" break; - case 75: // stmt_breakpoint: "breakpoint" ";" -#line 452 "parser.ypp" - { yylhs.value.as < stmt_breakpoint_ptr > () = std::make_unique(yylhs.location); } + case 70: // stmt_break: "break" ";" +#line 436 "parser.ypp" + { yylhs.value.as < stmt_break_ptr > () = std::make_unique(yylhs.location); } #line 2254 "parser.cpp" break; - case 76: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 457 "parser.ypp" - { yylhs.value.as < stmt_prof_begin_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 71: // stmt_continue: "continue" ";" +#line 441 "parser.ypp" + { yylhs.value.as < stmt_continue_ptr > () = std::make_unique(yylhs.location); } #line 2260 "parser.cpp" break; - case 77: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 462 "parser.ypp" - { yylhs.value.as < stmt_prof_end_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 72: // stmt_return: "return" expr ";" +#line 446 "parser.ypp" + { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2266 "parser.cpp" break; - case 78: // for_stmt: expr_assign -#line 466 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_list = std::make_unique(yylhs.location); yylhs.value.as < stmt_ptr > ().as_list->stmts.push_back(stmt_ptr(std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_assign_ptr > ())))); } + case 73: // stmt_return: "return" ";" +#line 448 "parser.ypp" + { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2272 "parser.cpp" break; - case 79: // for_stmt: %empty -#line 467 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_node = std::make_unique(yylhs.location); } + case 74: // stmt_breakpoint: "breakpoint" ";" +#line 453 "parser.ypp" + { yylhs.value.as < stmt_breakpoint_ptr > () = std::make_unique(yylhs.location); } #line 2278 "parser.cpp" break; - case 80: // for_expr: expr -#line 471 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 75: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" +#line 458 "parser.ypp" + { yylhs.value.as < stmt_prof_begin_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2284 "parser.cpp" break; - case 81: // for_expr: %empty -#line 472 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location); } + case 76: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" +#line 463 "parser.ypp" + { yylhs.value.as < stmt_prof_end_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2290 "parser.cpp" break; - case 82: // expr: expr_compare -#line 476 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 77: // for_stmt: expr_assign +#line 467 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_list = std::make_unique(yylhs.location); yylhs.value.as < stmt_ptr > ().as_list->stmts.push_back(stmt_ptr(std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_assign_ptr > ())))); } #line 2296 "parser.cpp" break; - case 83: // expr: expr_ternary -#line 477 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 78: // for_stmt: %empty +#line 468 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_node = std::make_unique(yylhs.location); } #line 2302 "parser.cpp" break; - case 84: // expr: expr_binary -#line 478 "parser.ypp" + case 79: // for_expr: expr +#line 472 "parser.ypp" { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2308 "parser.cpp" break; - case 85: // expr: expr_primitive -#line 479 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 80: // for_expr: %empty +#line 473 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location); } #line 2314 "parser.cpp" break; - case 86: // expr_assign: "++" object -#line 483 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } + case 81: // expr: expr_compare +#line 477 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2320 "parser.cpp" break; - case 87: // expr_assign: "--" object -#line 484 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } + case 82: // expr: expr_ternary +#line 478 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2326 "parser.cpp" break; - case 88: // expr_assign: object "++" -#line 485 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 83: // expr: expr_binary +#line 479 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2332 "parser.cpp" break; - case 89: // expr_assign: object "--" -#line 486 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 84: // expr: expr_primitive +#line 480 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2338 "parser.cpp" break; - case 90: // expr_assign: object "=" expr -#line 487 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 85: // expr_assign: "++" object +#line 484 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } #line 2344 "parser.cpp" break; - case 91: // expr_assign: object "|=" expr -#line 488 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 86: // expr_assign: "--" object +#line 485 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } #line 2350 "parser.cpp" break; - case 92: // expr_assign: object "&=" expr -#line 489 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 87: // expr_assign: object "++" +#line 486 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2356 "parser.cpp" break; - case 93: // expr_assign: object "^=" expr -#line 490 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 88: // expr_assign: object "--" +#line 487 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2362 "parser.cpp" break; - case 94: // expr_assign: object "<<=" expr -#line 491 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()),std::move( yystack_[0].value.as < expr_ptr > ())); } + case 89: // expr_assign: object "=" expr +#line 488 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2368 "parser.cpp" break; - case 95: // expr_assign: object ">>=" expr -#line 492 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 90: // expr_assign: object "|=" expr +#line 489 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2374 "parser.cpp" break; - case 96: // expr_assign: object "+=" expr -#line 493 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 91: // expr_assign: object "&=" expr +#line 490 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2380 "parser.cpp" break; - case 97: // expr_assign: object "-=" expr -#line 494 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 92: // expr_assign: object "^=" expr +#line 491 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2386 "parser.cpp" break; - case 98: // expr_assign: object "*=" expr -#line 495 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 93: // expr_assign: object "<<=" expr +#line 492 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()),std::move( yystack_[0].value.as < expr_ptr > ())); } #line 2392 "parser.cpp" break; - case 99: // expr_assign: object "/=" expr -#line 496 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 94: // expr_assign: object ">>=" expr +#line 493 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2398 "parser.cpp" break; - case 100: // expr_assign: object "%=" expr -#line 497 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 95: // expr_assign: object "+=" expr +#line 494 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2404 "parser.cpp" break; - case 101: // expr_compare: expr "||" expr -#line 501 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 96: // expr_assign: object "-=" expr +#line 495 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2410 "parser.cpp" break; - case 102: // expr_compare: expr "&&" expr -#line 502 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 97: // expr_assign: object "*=" expr +#line 496 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2416 "parser.cpp" break; - case 103: // expr_compare: expr "==" expr -#line 503 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 98: // expr_assign: object "/=" expr +#line 497 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2422 "parser.cpp" break; - case 104: // expr_compare: expr "!=" expr -#line 504 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 99: // expr_assign: object "%=" expr +#line 498 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2428 "parser.cpp" break; - case 105: // expr_compare: expr "<=" expr -#line 505 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 100: // expr_compare: expr "||" expr +#line 502 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2434 "parser.cpp" break; - case 106: // expr_compare: expr ">=" expr -#line 506 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 101: // expr_compare: expr "&&" expr +#line 503 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2440 "parser.cpp" break; - case 107: // expr_compare: expr "<" expr -#line 507 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 102: // expr_compare: expr "==" expr +#line 504 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2446 "parser.cpp" break; - case 108: // expr_compare: expr ">" expr -#line 508 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 103: // expr_compare: expr "!=" expr +#line 505 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2452 "parser.cpp" break; - case 109: // expr_ternary: expr "?" expr ":" expr -#line 512 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 104: // expr_compare: expr "<=" expr +#line 506 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2458 "parser.cpp" break; - case 110: // expr_binary: expr "|" expr -#line 516 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 105: // expr_compare: expr ">=" expr +#line 507 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2464 "parser.cpp" break; - case 111: // expr_binary: expr "&" expr -#line 517 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 106: // expr_compare: expr "<" expr +#line 508 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2470 "parser.cpp" break; - case 112: // expr_binary: expr "^" expr -#line 518 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 107: // expr_compare: expr ">" expr +#line 509 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2476 "parser.cpp" break; - case 113: // expr_binary: expr "<<" expr -#line 519 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 108: // expr_ternary: expr "?" expr ":" expr +#line 513 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2482 "parser.cpp" break; - case 114: // expr_binary: expr ">>" expr -#line 520 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 109: // expr_binary: expr "|" expr +#line 517 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2488 "parser.cpp" break; - case 115: // expr_binary: expr "+" expr -#line 521 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 110: // expr_binary: expr "&" expr +#line 518 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2494 "parser.cpp" break; - case 116: // expr_binary: expr "-" expr -#line 522 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 111: // expr_binary: expr "^" expr +#line 519 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2500 "parser.cpp" break; - case 117: // expr_binary: expr "*" expr -#line 523 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 112: // expr_binary: expr "<<" expr +#line 520 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2506 "parser.cpp" break; - case 118: // expr_binary: expr "/" expr -#line 524 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 113: // expr_binary: expr ">>" expr +#line 521 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2512 "parser.cpp" break; - case 119: // expr_binary: expr "%" expr -#line 525 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 114: // expr_binary: expr "+" expr +#line 522 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2518 "parser.cpp" break; - case 120: // expr_primitive: "(" expr ")" -#line 529 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[1].value.as < expr_ptr > ()); } + case 115: // expr_binary: expr "-" expr +#line 523 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2524 "parser.cpp" break; - case 121: // expr_primitive: "~" expr -#line 530 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } + case 116: // expr_binary: expr "*" expr +#line 524 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2530 "parser.cpp" break; - case 122: // expr_primitive: "!" expr -#line 531 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } + case 117: // expr_binary: expr "/" expr +#line 525 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2536 "parser.cpp" break; - case 123: // expr_primitive: expr_call -#line 532 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 118: // expr_binary: expr "%" expr +#line 526 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2542 "parser.cpp" break; - case 124: // expr_primitive: expr_call_thread -#line 533 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 119: // expr_primitive: "(" expr ")" +#line 530 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[1].value.as < expr_ptr > ()); } #line 2548 "parser.cpp" break; - case 125: // expr_primitive: expr_call_childthread -#line 534 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 120: // expr_primitive: "~" expr +#line 531 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2554 "parser.cpp" break; - case 126: // expr_primitive: expr_function -#line 535 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 121: // expr_primitive: "!" expr +#line 532 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2560 "parser.cpp" break; - case 127: // expr_primitive: expr_add_array -#line 536 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 122: // expr_primitive: expr_call +#line 533 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2566 "parser.cpp" break; - case 128: // expr_primitive: expr_array -#line 537 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 123: // expr_primitive: expr_call_thread +#line 534 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2572 "parser.cpp" break; - case 129: // expr_primitive: expr_field -#line 538 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 124: // expr_primitive: expr_call_childthread +#line 535 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2578 "parser.cpp" break; - case 130: // expr_primitive: expr_size -#line 539 "parser.ypp" + case 125: // expr_primitive: expr_function +#line 536 "parser.ypp" { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2584 "parser.cpp" break; - case 131: // expr_primitive: thisthread -#line 540 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < thisthread_ptr > ()); } + case 126: // expr_primitive: expr_add_array +#line 537 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2590 "parser.cpp" break; - case 132: // expr_primitive: empty_array -#line 541 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < empty_array_ptr > ()); } + case 127: // expr_primitive: expr_array +#line 538 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2596 "parser.cpp" break; - case 133: // expr_primitive: undefined -#line 542 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < undefined_ptr > ()); } + case 128: // expr_primitive: expr_field +#line 539 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2602 "parser.cpp" break; - case 134: // expr_primitive: game -#line 543 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < game_ptr > ()); } + case 129: // expr_primitive: expr_size +#line 540 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2608 "parser.cpp" break; - case 135: // expr_primitive: self -#line 544 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < self_ptr > ()); } + case 130: // expr_primitive: thisthread +#line 541 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < thisthread_ptr > ()); } #line 2614 "parser.cpp" break; - case 136: // expr_primitive: anim -#line 545 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < anim_ptr > ()); } + case 131: // expr_primitive: empty_array +#line 542 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < empty_array_ptr > ()); } #line 2620 "parser.cpp" break; - case 137: // expr_primitive: level -#line 546 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < level_ptr > ()); } + case 132: // expr_primitive: undefined +#line 543 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < undefined_ptr > ()); } #line 2626 "parser.cpp" break; - case 138: // expr_primitive: animation -#line 547 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animation_ptr > ()); } + case 133: // expr_primitive: game +#line 544 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < game_ptr > ()); } #line 2632 "parser.cpp" break; - case 139: // expr_primitive: animtree -#line 548 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animtree_ptr > ()); } + case 134: // expr_primitive: self +#line 545 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < self_ptr > ()); } #line 2638 "parser.cpp" break; - case 140: // expr_primitive: name -#line 549 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < name_ptr > ()); } + case 135: // expr_primitive: anim +#line 546 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < anim_ptr > ()); } #line 2644 "parser.cpp" break; - case 141: // expr_primitive: istring -#line 550 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < istring_ptr > ()); } + case 136: // expr_primitive: level +#line 547 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < level_ptr > ()); } #line 2650 "parser.cpp" break; - case 142: // expr_primitive: string -#line 551 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < string_ptr > ()); } + case 137: // expr_primitive: animation +#line 548 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animation_ptr > ()); } #line 2656 "parser.cpp" break; - case 143: // expr_primitive: vector -#line 552 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < vector_ptr > ()); } + case 138: // expr_primitive: animtree +#line 549 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animtree_ptr > ()); } #line 2662 "parser.cpp" break; - case 144: // expr_primitive: neg_float -#line 553 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } + case 139: // expr_primitive: name +#line 550 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < name_ptr > ()); } #line 2668 "parser.cpp" break; - case 145: // expr_primitive: neg_integer -#line 554 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } + case 140: // expr_primitive: istring +#line 551 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < istring_ptr > ()); } #line 2674 "parser.cpp" break; - case 146: // expr_primitive: float -#line 555 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } + case 141: // expr_primitive: string +#line 552 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < string_ptr > ()); } #line 2680 "parser.cpp" break; - case 147: // expr_primitive: integer -#line 556 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } + case 142: // expr_primitive: color +#line 553 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < color_ptr > ()); } #line 2686 "parser.cpp" break; - case 148: // expr_primitive: false -#line 557 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < false_ptr > ()); } + case 143: // expr_primitive: vector +#line 554 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < vector_ptr > ()); } #line 2692 "parser.cpp" break; - case 149: // expr_primitive: true -#line 558 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < true_ptr > ()); } + case 144: // expr_primitive: float +#line 555 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } #line 2698 "parser.cpp" break; - case 150: // expr_call: expr_call_function -#line 562 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 145: // expr_primitive: integer +#line 556 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } #line 2704 "parser.cpp" break; - case 151: // expr_call: expr_call_pointer -#line 563 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 146: // expr_primitive: false +#line 557 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < false_ptr > ()); } #line 2710 "parser.cpp" break; - case 152: // expr_call: object expr_call_function -#line 564 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 147: // expr_primitive: true +#line 558 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < true_ptr > ()); } #line 2716 "parser.cpp" break; - case 153: // expr_call: object expr_call_pointer -#line 565 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 148: // expr_call: expr_call_function +#line 562 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2722 "parser.cpp" break; - case 154: // expr_call_thread: "thread" expr_call_function -#line 569 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 149: // expr_call: expr_call_pointer +#line 563 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2728 "parser.cpp" break; - case 155: // expr_call_thread: "thread" expr_call_pointer -#line 570 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 150: // expr_call: object expr_call_function +#line 564 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2734 "parser.cpp" break; - case 156: // expr_call_thread: object "thread" expr_call_function -#line 571 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 151: // expr_call: object expr_call_pointer +#line 565 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2740 "parser.cpp" break; - case 157: // expr_call_thread: object "thread" expr_call_pointer -#line 572 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 152: // expr_call_thread: "thread" expr_call_function +#line 569 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2746 "parser.cpp" break; - case 158: // expr_call_childthread: "childthread" expr_call_function -#line 576 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 153: // expr_call_thread: "thread" expr_call_pointer +#line 570 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2752 "parser.cpp" break; - case 159: // expr_call_childthread: "childthread" expr_call_pointer -#line 577 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 154: // expr_call_thread: object "thread" expr_call_function +#line 571 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2758 "parser.cpp" break; - case 160: // expr_call_childthread: object "childthread" expr_call_function -#line 578 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 155: // expr_call_thread: object "thread" expr_call_pointer +#line 572 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2764 "parser.cpp" break; - case 161: // expr_call_childthread: object "childthread" expr_call_pointer -#line 579 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 156: // expr_call_childthread: "childthread" expr_call_function +#line 576 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2770 "parser.cpp" break; - case 162: // expr_call_function: name "(" expr_arguments ")" -#line 584 "parser.ypp" - {yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::make_unique(), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 157: // expr_call_childthread: "childthread" expr_call_pointer +#line 577 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2776 "parser.cpp" break; - case 163: // expr_call_function: file "::" name "(" expr_arguments ")" -#line 586 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < file_ptr > ()), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 158: // expr_call_childthread: object "childthread" expr_call_function +#line 578 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2782 "parser.cpp" break; - case 164: // expr_call_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 591 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, false, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 159: // expr_call_childthread: object "childthread" expr_call_pointer +#line 579 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2788 "parser.cpp" break; - case 165: // expr_call_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 593 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, true, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 160: // expr_call_function: name "(" expr_arguments ")" +#line 584 "parser.ypp" + {yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::make_unique(), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2794 "parser.cpp" break; - case 166: // expr_arguments: expr_arguments_filled -#line 597 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } + case 161: // expr_call_function: file "::" name "(" expr_arguments ")" +#line 586 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < file_ptr > ()), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2800 "parser.cpp" break; - case 167: // expr_arguments: expr_arguments_empty -#line 598 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } + case 162: // expr_call_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 591 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, false, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2806 "parser.cpp" break; - case 168: // expr_arguments_filled: expr_arguments "," expr -#line 603 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[2].value.as < expr_arguments_ptr > ()); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } + case 163: // expr_call_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 593 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, true, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2812 "parser.cpp" break; - case 169: // expr_arguments_filled: expr -#line 605 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } + case 164: // expr_arguments: expr_arguments_filled +#line 597 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } #line 2818 "parser.cpp" break; - case 170: // expr_arguments_empty: %empty -#line 610 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); } + case 165: // expr_arguments: expr_arguments_empty +#line 598 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } #line 2824 "parser.cpp" break; - case 171: // expr_function: "::" name -#line 615 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < name_ptr > ())); } + case 166: // expr_arguments_filled: expr_arguments "," expr +#line 603 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[2].value.as < expr_arguments_ptr > ()); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2830 "parser.cpp" break; - case 172: // expr_function: file "::" name -#line 617 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < file_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } + case 167: // expr_arguments_filled: expr +#line 605 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2836 "parser.cpp" break; - case 173: // expr_add_array: "[" expr_arguments_filled "]" -#line 622 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 168: // expr_arguments_empty: %empty +#line 610 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); } #line 2842 "parser.cpp" break; - case 174: // expr_array: object "[" expr "]" -#line 627 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < node_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 169: // expr_function: "::" name +#line 615 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2848 "parser.cpp" break; - case 175: // expr_field: object "." name -#line 632 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } + case 170: // expr_function: file "::" name +#line 617 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < file_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2854 "parser.cpp" break; - case 176: // expr_size: object ".size" -#line 637 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 171: // expr_add_array: "[" expr_arguments_filled "]" +#line 622 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2860 "parser.cpp" break; - case 177: // object: expr_call -#line 641 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 172: // expr_array: object "[" expr "]" +#line 627 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < node_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2866 "parser.cpp" break; - case 178: // object: expr_array -#line 642 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } + case 173: // expr_field: object "." name +#line 632 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2872 "parser.cpp" break; - case 179: // object: expr_field -#line 643 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } + case 174: // expr_size: object ".size" +#line 637 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2878 "parser.cpp" break; - case 180: // object: game -#line 644 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < game_ptr > ()); } + case 175: // object: expr_call +#line 641 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2884 "parser.cpp" break; - case 181: // object: self -#line 645 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < self_ptr > ()); } + case 176: // object: expr_array +#line 642 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2890 "parser.cpp" break; - case 182: // object: anim -#line 646 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < anim_ptr > ()); } + case 177: // object: expr_field +#line 643 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2896 "parser.cpp" break; - case 183: // object: level -#line 647 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < level_ptr > ()); } + case 178: // object: game +#line 644 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < game_ptr > ()); } #line 2902 "parser.cpp" break; - case 184: // object: name -#line 648 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < name_ptr > ()); } + case 179: // object: self +#line 645 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < self_ptr > ()); } #line 2908 "parser.cpp" break; - case 185: // thisthread: "thisthread" -#line 651 "parser.ypp" - { yylhs.value.as < thisthread_ptr > () = std::make_unique(yylhs.location); } + case 180: // object: anim +#line 646 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < anim_ptr > ()); } #line 2914 "parser.cpp" break; - case 186: // empty_array: "[" "]" -#line 652 "parser.ypp" - { yylhs.value.as < empty_array_ptr > () = std::make_unique(yylhs.location); } + case 181: // object: level +#line 647 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < level_ptr > ()); } #line 2920 "parser.cpp" break; - case 187: // undefined: "undefined" -#line 653 "parser.ypp" - { yylhs.value.as < undefined_ptr > () = std::make_unique(yylhs.location); } + case 182: // object: name +#line 648 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < name_ptr > ()); } #line 2926 "parser.cpp" break; - case 188: // game: "game" -#line 654 "parser.ypp" - { yylhs.value.as < game_ptr > () = std::make_unique(yylhs.location); } + case 183: // float: "-" "float" +#line 652 "parser.ypp" + { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 2932 "parser.cpp" break; - case 189: // self: "self" -#line 655 "parser.ypp" - { yylhs.value.as < self_ptr > () = std::make_unique(yylhs.location); } + case 184: // float: "float" +#line 653 "parser.ypp" + { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2938 "parser.cpp" break; - case 190: // anim: "anim" -#line 656 "parser.ypp" - { yylhs.value.as < anim_ptr > () = std::make_unique(yylhs.location); } + case 185: // integer: "-" "int" +#line 657 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 2944 "parser.cpp" break; - case 191: // level: "level" -#line 657 "parser.ypp" - { yylhs.value.as < level_ptr > () = std::make_unique(yylhs.location); } + case 186: // integer: "int" +#line 658 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2950 "parser.cpp" break; - case 192: // animation: "%" "identifier" -#line 658 "parser.ypp" - { yylhs.value.as < animation_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 187: // integer: "octal int" +#line 659 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2956 "parser.cpp" break; - case 193: // animtree: "#animtree" -#line 659 "parser.ypp" - { yylhs.value.as < animtree_ptr > () = std::make_unique(yylhs.location); } + case 188: // integer: "binary int" +#line 660 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2962 "parser.cpp" break; - case 194: // name: "identifier" -#line 660 "parser.ypp" - { yylhs.value.as < name_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 189: // integer: "hexadecimal int" +#line 661 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 2968 "parser.cpp" break; - case 195: // file: "file path" -#line 661 "parser.ypp" - { yylhs.value.as < file_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 190: // thisthread: "thisthread" +#line 664 "parser.ypp" + { yylhs.value.as < thisthread_ptr > () = std::make_unique(yylhs.location); } #line 2974 "parser.cpp" break; - case 196: // istring: "localized string" -#line 662 "parser.ypp" - { yylhs.value.as < istring_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 191: // empty_array: "[" "]" +#line 665 "parser.ypp" + { yylhs.value.as < empty_array_ptr > () = std::make_unique(yylhs.location); } #line 2980 "parser.cpp" break; - case 197: // string: "string literal" -#line 663 "parser.ypp" - { yylhs.value.as < string_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 192: // undefined: "undefined" +#line 666 "parser.ypp" + { yylhs.value.as < undefined_ptr > () = std::make_unique(yylhs.location); } #line 2986 "parser.cpp" break; - case 198: // vector: "(" expr "," expr "," expr ")" -#line 664 "parser.ypp" - { yylhs.value.as < vector_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[3].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 193: // game: "game" +#line 667 "parser.ypp" + { yylhs.value.as < game_ptr > () = std::make_unique(yylhs.location); } #line 2992 "parser.cpp" break; - case 199: // neg_float: "-" "float" -#line 665 "parser.ypp" - { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 194: // self: "self" +#line 668 "parser.ypp" + { yylhs.value.as < self_ptr > () = std::make_unique(yylhs.location); } #line 2998 "parser.cpp" break; - case 200: // neg_integer: "-" "int" -#line 666 "parser.ypp" - { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 195: // anim: "anim" +#line 669 "parser.ypp" + { yylhs.value.as < anim_ptr > () = std::make_unique(yylhs.location); } #line 3004 "parser.cpp" break; - case 201: // float: "float" -#line 667 "parser.ypp" - { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 196: // level: "level" +#line 670 "parser.ypp" + { yylhs.value.as < level_ptr > () = std::make_unique(yylhs.location); } #line 3010 "parser.cpp" break; - case 202: // integer: "int" -#line 668 "parser.ypp" - { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 197: // animation: "%" "identifier" +#line 671 "parser.ypp" + { yylhs.value.as < animation_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3016 "parser.cpp" break; - case 203: // false: "false" -#line 669 "parser.ypp" - { yylhs.value.as < false_ptr > () = std::make_unique(yylhs.location); } + case 198: // animtree: "#animtree" +#line 672 "parser.ypp" + { yylhs.value.as < animtree_ptr > () = std::make_unique(yylhs.location); } #line 3022 "parser.cpp" break; - case 204: // true: "true" -#line 670 "parser.ypp" - { yylhs.value.as < true_ptr > () = std::make_unique(yylhs.location); } + case 199: // name: "identifier" +#line 673 "parser.ypp" + { yylhs.value.as < name_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3028 "parser.cpp" break; + case 200: // file: "file path" +#line 674 "parser.ypp" + { yylhs.value.as < file_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3034 "parser.cpp" + break; -#line 3032 "parser.cpp" + case 201: // istring: "localized string" +#line 675 "parser.ypp" + { yylhs.value.as < istring_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3040 "parser.cpp" + break; + + case 202: // string: "string literal" +#line 676 "parser.ypp" + { yylhs.value.as < string_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3046 "parser.cpp" + break; + + case 203: // color: "color" +#line 677 "parser.ypp" + { yylhs.value.as < color_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3052 "parser.cpp" + break; + + case 204: // vector: "(" expr "," expr "," expr ")" +#line 678 "parser.ypp" + { yylhs.value.as < vector_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[3].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } +#line 3058 "parser.cpp" + break; + + case 205: // false: "false" +#line 679 "parser.ypp" + { yylhs.value.as < false_ptr > () = std::make_unique(yylhs.location); } +#line 3064 "parser.cpp" + break; + + case 206: // true: "true" +#line 680 "parser.ypp" + { yylhs.value.as < true_ptr > () = std::make_unique(yylhs.location); } +#line 3070 "parser.cpp" + break; + + +#line 3074 "parser.cpp" default: break; @@ -3222,8 +3264,9 @@ namespace xsk { namespace gsc { namespace s2 { ",", ".", "::", ":", ";", "?", "++", "--", "<<", ">>", "||", "&&", "==", "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", "%", - "file path", "identifier", "string literal", "localized string", "float", - "int", "ADD_ARRAY", "THEN", "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", + "file path", "identifier", "string literal", "localized string", "color", + "float", "int", "octal int", "binary int", "hexadecimal int", + "ADD_ARRAY", "THEN", "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", "$accept", "root", "program", "include", "define", "usingtree", "constant", "thread", "parameters", "stmt", "stmt_block", "stmt_list", "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", @@ -3237,10 +3280,9 @@ namespace xsk { namespace gsc { namespace s2 { "expr_call_childthread", "expr_call_function", "expr_call_pointer", "expr_arguments", "expr_arguments_filled", "expr_arguments_empty", "expr_function", "expr_add_array", "expr_array", "expr_field", - "expr_size", "object", "thisthread", "empty_array", "undefined", "game", - "self", "anim", "level", "animation", "animtree", "name", "file", - "istring", "string", "vector", "neg_float", "neg_integer", "float", - "integer", "false", "true", YY_NULLPTR + "expr_size", "object", "float", "integer", "thisthread", "empty_array", + "undefined", "game", "self", "anim", "level", "animation", "animtree", + "name", "file", "istring", "string", "color", "vector", "false", "true", YY_NULLPTR }; return yy_sname[yysymbol]; } @@ -3505,572 +3547,580 @@ namespace xsk { namespace gsc { namespace s2 { } - const short parser::yypact_ninf_ = -242; + const short parser::yypact_ninf_ = -244; - const short parser::yytable_ninf_ = -185; + const short parser::yytable_ninf_ = -183; const short parser::yypact_[] = { - 8, -74, -23, -242, 25, 8, -242, -242, -242, -242, - -242, -21, -242, -16, -59, -242, -242, -242, -14, 810, - -242, -242, 20, -6, -242, -242, 7, 7, -242, 43, - -242, -242, -242, -242, -242, -242, -242, 810, 684, -14, - 810, 810, -43, 3, -242, -242, -242, 1562, -242, -242, - -242, -242, 21, -242, -242, -242, -242, -242, -242, 53, - 177, -242, 367, -242, -242, -242, 391, 426, 466, 707, - -242, -242, 13, 15, -242, -242, -242, -242, -242, -242, - -242, -242, -242, 14, 59, -14, 60, -242, -242, 65, - 68, -242, -242, 75, 1002, 684, -242, 1645, 80, 91, - -242, -242, -242, -242, -242, -242, -242, -242, 810, 810, - 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, - 810, 810, 810, 810, 810, 810, 810, 7, 7, -242, - 873, -14, -242, -242, 810, -14, -242, 568, -242, -242, - 810, -14, 810, -242, 810, 806, 810, -242, 1527, 262, - 262, 1676, 1686, 454, 454, 203, 203, 203, 203, 1717, - 1758, 1727, 127, 127, -242, -242, -242, -242, -242, -242, - -242, 1412, -242, 32, -242, 100, 93, 104, 126, 810, - 117, 19, 130, 133, 134, 140, 144, -4, 139, 142, - 150, 747, -242, -15, -15, -242, -242, 613, -242, -242, - -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, - -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, - -242, 153, 163, 164, -242, -242, 920, -242, -242, -242, - -242, 65, 806, 100, 1452, 1491, 171, 1645, 810, -242, - -242, 810, -242, 810, 810, 1597, -242, 149, -242, 810, - 810, 770, -14, 810, 132, 168, 174, 176, -242, -242, - -242, -242, 1632, -242, -11, -11, -242, -242, -242, -242, - -242, 180, 187, 188, 192, -242, -242, 810, 810, 810, - 810, 810, 810, 810, 810, 810, 810, 810, 189, 810, - 196, 1645, 49, 50, 71, -242, 191, 1168, 1202, 194, - -242, 966, 9, 1236, -242, -242, -242, -242, 810, 810, - 810, 810, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, - 1645, 1645, 1645, 198, 1270, 810, -242, 209, 210, -242, - 658, 658, 810, 810, -14, 59, 1304, 1046, 1090, 1134, - 810, -242, 72, -242, -242, 225, -242, 211, 1645, 1338, - 229, -242, 216, 217, 810, 218, 810, 223, 810, 83, - -242, 658, 770, 658, 810, -242, -242, 84, -242, 141, - -242, 145, -242, -242, 212, -242, 1372, 224, 231, 240, - 658, 658, -242, -242, -242, -242, -242 + 3, -71, -24, -244, 30, 3, -244, -244, -244, -244, + -244, -23, -244, -29, -54, -244, -244, -244, -49, 648, + -244, -244, -1, -21, -244, -244, -16, -16, -244, 12, + -244, -244, -244, -244, -244, -244, -244, 648, 514, -49, + 648, 648, 10, -37, -244, -244, -244, -244, -244, -244, + -244, 1603, -244, -244, -244, -244, 7, -244, -244, -244, + -244, -244, -244, 383, 604, -244, 671, -244, -244, -244, + -244, -244, 916, 924, 941, 946, -244, -244, 17, 26, + -244, -244, -244, -244, -244, -244, 25, 11, -49, 33, + -244, -244, 45, 35, -244, -244, 53, 1003, 514, -244, + 1686, 52, 42, -244, -244, -244, -244, -244, -244, -244, + -244, 648, 648, 648, 648, 648, 648, 648, 648, 648, + 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, + -16, -16, -244, 715, -49, -244, -244, 648, -49, -244, + 807, -244, -244, 648, -49, 648, -244, 648, 1413, 648, + -244, 1568, 231, 231, 1717, 1727, 710, 710, 41, 41, + 41, 41, 1758, 1799, 1768, 44, 44, -244, -244, -244, + -244, -244, -244, -244, 1453, -244, -17, -244, 69, 57, + 70, 74, 648, 79, -27, 77, 92, 93, 99, 101, + 342, 94, 96, 97, 581, -244, 683, 683, -244, -244, + 852, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, 119, 120, 121, -244, -244, 430, + -244, -244, -244, -244, 45, 1413, 69, 1493, 1532, 104, + 1686, 648, -244, -244, 648, -244, 648, 648, 1638, -244, + 135, -244, 648, 648, 442, -49, 648, 51, 128, 130, + -244, -244, -244, -244, 1673, -244, 175, 175, -244, -244, + -244, -244, -244, 141, 145, 147, 149, -244, -244, 648, + 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, + 150, 648, 152, 1686, 9, 19, 21, -244, 140, 1169, + 1203, 148, -244, 967, -2, 1237, -244, -244, -244, 648, + 648, 648, 648, 1686, 1686, 1686, 1686, 1686, 1686, 1686, + 1686, 1686, 1686, 1686, 159, 1271, 648, -244, 153, 157, + -244, 897, 897, 648, 648, -49, 11, 1305, 1047, 1091, + 1135, 648, -244, 22, -244, -244, 191, -244, 161, 1686, + 1339, 188, -244, 162, 166, 648, 167, 648, 168, 648, + 32, -244, 897, 442, 897, 648, -244, -244, 40, -244, + 58, -244, 67, -244, -244, 179, -244, 1373, 173, 174, + 177, 897, 897, -244, -244, -244, -244, -244 }; const unsigned char parser::yydefact_[] = { - 3, 0, 0, 194, 0, 2, 6, 7, 9, 10, - 11, 0, 195, 0, 0, 1, 4, 5, 17, 0, - 8, 197, 0, 0, 16, 193, 0, 0, 185, 0, - 204, 203, 187, 188, 189, 190, 191, 0, 170, 0, - 0, 0, 0, 0, 196, 201, 202, 0, 82, 83, - 84, 85, 123, 124, 125, 150, 151, 126, 127, 128, - 129, 130, 0, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 0, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 0, 0, 0, 0, 154, 155, 0, - 0, 158, 159, 0, 0, 170, 186, 169, 0, 166, - 167, 171, 122, 121, 199, 200, 192, 13, 0, 0, + 3, 0, 0, 199, 0, 2, 6, 7, 9, 10, + 11, 0, 200, 0, 0, 1, 4, 5, 17, 0, + 8, 202, 0, 0, 16, 198, 0, 0, 190, 0, + 206, 205, 192, 193, 194, 195, 196, 0, 168, 0, + 0, 0, 0, 0, 201, 203, 184, 186, 187, 188, + 189, 0, 81, 82, 83, 84, 122, 123, 124, 148, + 149, 125, 126, 127, 128, 129, 0, 144, 145, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 0, + 140, 141, 142, 143, 146, 147, 0, 0, 0, 0, + 152, 153, 0, 0, 156, 157, 0, 0, 168, 191, + 167, 0, 164, 165, 169, 121, 120, 183, 185, 197, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, - 0, 0, 152, 153, 170, 0, 12, 0, 14, 15, - 0, 0, 0, 120, 0, 169, 0, 173, 0, 113, - 114, 101, 102, 103, 104, 105, 106, 107, 108, 110, - 111, 112, 115, 116, 117, 118, 119, 156, 157, 160, - 161, 0, 175, 0, 166, 172, 0, 0, 0, 0, + 0, 0, 174, 0, 0, 150, 151, 168, 0, 12, + 0, 14, 15, 0, 0, 0, 119, 0, 167, 0, + 171, 0, 112, 113, 100, 101, 102, 103, 104, 105, + 106, 107, 109, 110, 111, 114, 115, 116, 117, 118, + 154, 155, 158, 159, 0, 173, 0, 164, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 43, 0, 0, 45, 18, 0, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 0, 177, 0, 178, 179, 0, 180, 181, 182, - 183, 184, 0, 0, 0, 0, 0, 168, 0, 174, - 162, 170, 75, 170, 170, 0, 57, 0, 58, 0, - 0, 79, 0, 0, 0, 0, 0, 0, 70, 71, - 72, 74, 0, 177, 86, 87, 42, 44, 48, 46, - 47, 0, 0, 0, 0, 88, 89, 0, 0, 0, + 0, 0, 0, 0, 0, 43, 0, 0, 45, 18, + 0, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 0, 175, 0, 176, 177, 0, + 178, 179, 180, 181, 182, 0, 0, 0, 0, 0, + 166, 0, 172, 160, 168, 74, 168, 168, 0, 57, + 0, 58, 0, 0, 78, 0, 0, 0, 0, 0, + 69, 70, 71, 73, 0, 175, 85, 86, 42, 44, + 48, 46, 47, 0, 0, 0, 0, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 109, 0, 0, 0, 52, 0, 0, 0, 0, - 78, 0, 0, 0, 69, 68, 67, 73, 0, 0, - 0, 0, 90, 96, 97, 98, 99, 100, 91, 92, - 93, 95, 94, 0, 0, 170, 163, 0, 0, 59, - 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, - 170, 198, 0, 76, 77, 60, 62, 0, 80, 0, - 0, 66, 0, 0, 170, 0, 170, 0, 170, 0, - 164, 0, 79, 0, 0, 49, 51, 0, 54, 0, - 56, 0, 165, 61, 0, 64, 0, 0, 0, 0, - 0, 0, 50, 53, 55, 63, 65 + 0, 0, 0, 108, 0, 0, 0, 52, 0, 0, + 0, 0, 77, 0, 0, 0, 67, 68, 72, 0, + 0, 0, 0, 89, 95, 96, 97, 98, 99, 90, + 91, 92, 94, 93, 0, 0, 168, 161, 0, 0, + 59, 0, 0, 80, 0, 0, 0, 0, 0, 0, + 0, 168, 204, 0, 75, 76, 60, 62, 0, 79, + 0, 0, 66, 0, 0, 168, 0, 168, 0, 168, + 0, 162, 0, 78, 0, 0, 49, 51, 0, 54, + 0, 56, 0, 163, 61, 0, 64, 0, 0, 0, + 0, 0, 0, 50, 53, 55, 63, 65 }; const short parser::yypgoto_[] = { - -242, -242, -242, 286, 288, -242, -242, -242, -242, -185, - -81, -242, -242, -242, -242, -242, -242, -242, -242, -242, - -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, - -242, -242, -242, -242, -242, -68, -242, 39, -241, -242, - -242, -242, -242, -83, 52, -242, -25, -19, -121, -29, - -242, -242, -242, -22, 78, -242, 106, -242, -242, -242, - 118, 159, 195, 200, -242, -242, 0, 5, -242, -10, - -242, -242, 108, -242, 115, -242, -242 + -244, -244, -244, 223, 226, -244, -244, -244, -244, 15, + -84, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -128, -244, 39, -243, -244, + -244, -244, -244, -106, -118, -244, -25, -19, -53, -26, + -244, -244, -244, -81, -22, -244, 43, -244, 46, -244, + -244, -244, 90, 156, 193, 203, -244, -244, 0, 5, + -244, -10, -244, -244, -244, -244 }; const short parser::yydefgoto_[] = { - 0, 4, 5, 6, 7, 8, 9, 10, 23, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 299, 347, 97, 221, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 98, 174, - 100, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82 + 0, 4, 5, 6, 7, 8, 9, 10, 23, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 301, 348, 100, 224, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 101, 177, + 103, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85 }; const short parser::yytable_[] = { - 11, 87, 91, 138, 22, 11, 13, 88, 92, 99, - 300, 12, 267, 173, 1, 2, 29, 14, 24, 18, - 29, 33, 34, 35, 36, 15, 89, 89, 21, 86, - 333, 90, 90, 130, 20, 84, 131, 132, 29, 101, - 85, -184, -184, 133, -184, 19, 104, 105, -184, -177, - -177, 86, -177, 134, 222, 334, -177, -184, 47, 247, - -184, 83, 89, 135, 136, -177, 99, 90, -177, 248, - 12, 3, 3, 240, 12, 3, 94, 254, 146, 102, - 103, -178, -178, 21, -178, 139, 46, 93, -178, 106, - 326, 327, 12, 3, 3, 146, 146, -178, -184, -184, - -178, 137, 167, 169, 140, 134, -177, -177, 168, 170, - 263, 263, 328, 360, 222, 224, 141, 146, 146, 142, - 292, 300, 293, 294, 372, 377, 146, 89, 89, 146, - 146, 172, 90, 90, 145, 175, 147, 231, -178, -178, - 241, 233, 90, 242, 243, 345, 346, 148, 149, 150, + 11, 90, 94, 141, 22, 11, 13, 91, 95, 1, + 2, 302, 102, 250, 12, 29, 14, 18, 24, 334, + 87, 20, 226, 251, 243, 88, 92, 92, 89, 149, + 15, 93, 93, 21, 225, -175, -175, 3, -175, 104, + 86, 135, -175, 19, 335, -182, -182, 136, -182, 109, + 327, -175, -182, 140, -175, 149, 96, 137, 51, 227, + 328, -182, 329, 361, -182, 149, 92, 149, 149, 12, + 3, 93, 102, 373, 138, 139, 97, 143, 149, 105, + 106, 378, 226, 144, 176, 137, 149, 150, 142, 3, + 265, 265, -175, -175, 225, 112, 113, 145, 149, 379, + 107, 108, -182, -182, 149, 170, 172, 245, 380, 244, + 246, 171, 173, 149, 247, 227, 227, 252, 228, 227, + 302, 125, 126, 127, 128, 129, 127, 128, 129, 249, + 92, 92, 253, 254, 175, 93, 93, 148, 178, 255, + 234, 256, 108, 260, 236, 93, 261, 262, 265, 292, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 244, 246, 263, 171, - 249, 224, 224, 250, 251, 224, 373, 255, 375, 232, - 252, 234, 378, 235, 253, 237, 379, 146, 258, 223, - 296, 146, 259, 231, 231, 385, 386, 231, 90, 90, - 260, 132, 90, 268, 342, -179, -179, 133, -179, 124, - 125, 126, -179, 269, 270, 225, 290, 304, 245, 359, - 308, -179, 105, 305, -179, 306, 89, 309, 310, 224, - 262, 90, 311, 367, 323, 369, 325, 371, 340, 132, - 132, 329, 361, 226, 332, 133, 133, 222, 222, 223, - 364, 231, 302, 380, 351, 227, 90, 109, 110, 343, - 344, 362, -179, -179, 89, 89, 365, 366, 368, 90, - 90, 225, 225, 370, 382, 225, 132, 291, 222, 263, - 222, 383, 133, 122, 123, 124, 125, 126, 297, 298, - 384, 16, 303, 17, 374, 256, 228, 222, 222, 264, - 265, 89, 257, 226, 0, 0, 90, 0, 224, 224, - 0, 227, 227, 0, 0, 227, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 0, 324, 225, - 231, 231, 229, 0, 350, 90, 90, 230, 0, 224, - 224, 224, 122, 123, 124, 125, 126, 336, 337, 338, - 339, 0, 228, 228, 0, 0, 228, 301, 224, 224, - 0, 231, 231, 231, 0, 0, 90, 90, 90, 227, - 0, 348, 349, 0, 0, 0, 0, 0, 0, 0, - 231, 231, 223, 223, 0, 90, 90, 0, 229, 229, - 0, 0, 229, 230, 230, 127, 128, 230, 29, 0, - 0, 0, 129, 376, 0, 0, 0, 0, 225, 225, - 228, 130, 0, 223, 131, 223, 0, 0, 0, -180, - -180, 0, -180, 0, 0, 0, -180, 0, 0, 0, - 0, 0, 223, 223, 0, -180, 226, 226, -180, 225, - 225, 225, 0, 0, 0, 0, 229, 0, 227, 227, - 0, 230, 12, 3, -181, -181, 0, -181, 225, 225, - 0, -181, 0, 0, 0, 0, 0, 226, 301, 226, - -181, 0, 0, -181, 0, 0, -180, -180, 0, 227, - 227, 227, 0, 0, 0, 0, 226, 226, 0, 228, - 228, 0, 0, 0, -182, -182, 0, -182, 227, 227, - 0, -182, 0, 0, 0, 0, 0, 0, 109, 110, - -182, -181, -181, -182, 115, 116, 117, 118, 0, 0, - 228, 228, 228, 0, 0, 229, 229, 0, 0, 0, - 230, 230, 0, 0, 122, 123, 124, 125, 126, 228, - 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -182, -182, 0, 0, 0, 229, 229, 229, 0, - 0, 230, 230, 230, 0, 0, 0, 0, 0, 0, - 0, 176, 177, 178, 0, 229, 229, 0, 0, 179, - 230, 230, 180, 181, 182, 0, 183, 184, 185, 0, - 186, 187, 188, 189, 190, 191, 26, 0, 0, 29, - 0, 0, 0, 0, 33, 34, 35, 36, 0, 0, - 137, 192, 86, 0, 0, 0, 176, 177, 178, 0, - 193, 194, 0, 0, 179, 0, 0, 180, 181, 182, - 0, 183, 184, 185, 0, 186, 187, 188, 189, 190, - 191, 26, 0, 0, 29, 0, 0, 0, 0, 33, - 34, 35, 36, 12, 3, 137, 266, 86, 0, 0, - 0, 176, 177, 178, 0, 193, 194, 0, 0, 179, - 0, 0, 180, 181, 182, 0, 183, 184, 185, 0, - 186, 187, 188, 189, 190, 191, 26, 0, 0, 29, - 0, 0, 25, 0, 33, 34, 35, 36, 12, 3, - 137, 0, 86, 0, 0, 0, 0, 0, 0, 0, - 193, 194, 26, 27, 28, 29, 30, 31, 32, 0, - 33, 34, 35, 36, 37, 0, 0, 0, 95, 96, - 0, 0, 39, 0, 0, -183, -183, 0, -183, 0, - 0, 0, -183, 12, 3, 0, 0, 0, 40, 41, - 0, -183, 0, 0, -183, 25, 0, 0, 0, 0, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 270, + 271, 272, 174, 227, 228, 228, 298, 306, 228, 307, + 259, 309, 235, 229, 237, 310, 238, 311, 240, 312, + 330, 294, 326, 295, 296, 324, 234, 234, 333, 341, + 234, 93, 93, 344, 135, 93, 29, 345, 362, 365, + 136, 363, 366, 226, 226, 269, 367, 369, 371, 133, + 381, 248, 134, 383, 384, 225, 225, 385, 16, 92, + 230, 17, 228, 264, 93, 375, 258, 0, 0, 266, + 267, 135, 135, 229, 226, 0, 226, 136, 136, 0, + 227, 227, 352, 0, 234, 304, 225, 265, 225, 93, + 12, 3, 0, 226, 226, 0, 92, 92, 0, 0, + 0, 93, 93, 343, 0, 225, 225, 0, 135, 0, + 293, 227, 227, 227, 136, 0, 230, 230, 360, 0, + 230, 299, 300, 0, 0, 305, 231, 303, 0, 0, + 227, 227, 368, 92, 370, 0, 372, 0, 93, 228, + 228, 125, 126, 127, 128, 129, 0, 0, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 0, + 325, 234, 234, 232, 0, 351, 93, 93, 0, 0, + 228, 228, 228, 233, 230, 0, 346, 347, 337, 338, + 339, 340, 231, 231, 0, 0, 231, 0, 0, 228, + 228, 0, 234, 234, 234, 0, 0, 93, 93, 93, + 0, 0, 349, 350, 229, 229, 0, 374, 0, 376, + 0, 234, 234, 0, 0, 0, 93, 93, 0, 232, + 232, 0, 0, 232, 0, 0, 386, 387, 0, 233, + 233, 0, 0, 233, 377, 229, 303, 229, 0, 0, + 231, -176, -176, 0, -176, 0, 0, 0, -176, 0, + 0, 230, 230, 257, 229, 229, 0, -176, 0, 21, + -176, 0, 0, 47, 48, 49, 50, 0, 0, 273, + 274, 0, 275, 276, 0, 0, 0, 232, 0, 0, + 0, 0, 230, 230, 230, 0, 0, 233, 130, 0, + 0, 29, 0, 0, 0, 0, 0, 0, -176, -176, + 0, 230, 230, 29, 133, 0, 0, 134, 33, 34, + 35, 36, 277, 278, 0, 0, 89, 231, 231, 0, + 0, 0, 0, 0, 196, 197, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, + 0, 0, 0, 0, 0, 12, 3, 0, 231, 231, + 231, 0, 25, 0, 232, 232, 0, 12, 3, 0, + 0, 0, 0, 0, 233, 233, 0, 231, 231, 0, + 0, 0, 26, 27, 28, 29, 30, 31, 32, 0, + 33, 34, 35, 36, 37, 232, 232, 232, 98, 99, + 0, 0, 39, 0, 0, 233, 233, 233, 0, 0, + 0, 0, 0, 0, 232, 232, 0, 0, 40, 41, + 0, 0, 0, 0, 233, 233, 0, 0, 0, 25, 0, 0, 0, 0, 0, 42, 0, 0, 43, 12, - 3, 21, 44, 45, 46, 26, 27, 28, 29, 30, - 31, 32, 0, 33, 34, 35, 36, 37, 0, 0, - 0, 38, -183, -183, 0, 39, 0, 261, 0, 0, - 0, 29, 0, 0, 0, 0, 33, 34, 35, 36, - 0, 40, 41, 0, 86, 0, 0, 0, 25, 0, - 0, 0, 193, 194, 0, 0, 0, 0, 42, 0, - 0, 43, 12, 3, 21, 44, 45, 46, 26, 27, - 28, 29, 30, 31, 32, 0, 33, 34, 35, 36, - 37, 236, 0, 0, 38, 12, 3, 108, 39, 0, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 0, 0, 0, 0, 40, 41, 0, 0, 0, 0, - 0, 25, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 42, 0, 0, 43, 12, 3, 21, 44, 45, - 46, 26, 27, 28, 29, 30, 31, 32, 0, 33, - 34, 35, 36, 37, 0, 0, 0, 95, 0, 0, - 0, 39, 0, 0, 0, 0, 0, 0, 0, 271, - 272, 0, 273, 274, 0, 0, 0, 40, 41, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 0, - 0, 29, 0, 0, 42, 0, 0, 43, 12, 3, - 21, 44, 45, 46, 130, 0, 0, 131, 0, 0, - 0, 0, 275, 276, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 29, 0, 0, - 0, 0, 0, 0, 0, 12, 3, 0, 0, 0, - 130, 0, 0, 131, 0, 0, 0, 0, 275, 276, + 3, 21, 44, 45, 46, 47, 48, 49, 50, 26, + 27, 28, 29, 30, 31, 32, 0, 33, 34, 35, + 36, 37, 0, 0, 0, 38, 0, 0, 0, 39, + 0, 263, -177, -177, 0, -177, 0, 0, 0, -177, + 0, 0, 0, 0, 0, 40, 41, 0, -177, 0, + 0, -177, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 42, 0, 0, 43, 12, 3, 21, 44, + 45, 46, 47, 48, 49, 50, 26, 27, 28, 29, + 30, 31, 32, 0, 33, 34, 35, 36, 37, -177, + -177, 0, 38, 0, 0, 0, 39, 0, 0, 130, + 131, 0, 29, 0, 0, 0, 132, 0, 0, 0, + 0, 0, 40, 41, 29, 133, 0, 0, 134, 33, + 34, 35, 36, 25, 0, 0, 0, 89, 0, 42, + 0, 0, 43, 12, 3, 21, 44, 45, 46, 47, + 48, 49, 50, 26, 27, 28, 29, 30, 31, 32, + 0, 33, 34, 35, 36, 37, 12, 3, 0, 98, + 0, 0, 0, 39, 112, 113, 0, 0, 12, 3, + 118, 119, 120, 121, 0, 0, 0, 0, 0, 40, + 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 125, 126, 127, 128, 129, 0, 42, 0, 0, 43, + 12, 3, 21, 44, 45, 46, 47, 48, 49, 50, + 179, 180, 181, 0, 0, 0, 0, 0, 182, 0, + 0, 183, 184, 185, 0, 186, 187, 188, 0, 189, + 190, 191, 192, 193, 194, 26, 0, 0, 29, 0, + 0, 0, 0, 33, 34, 35, 36, 0, 0, 140, + 195, 89, 0, 0, 0, 179, 180, 181, 0, 196, + 197, 0, 0, 182, 0, 0, 183, 184, 185, 0, + 186, 187, 188, 0, 189, 190, 191, 192, 193, 194, + 26, 0, 0, 29, 0, 0, 0, 0, 33, 34, + 35, 36, 12, 3, 140, 268, 89, 0, 0, 0, + 179, 180, 181, 0, 196, 197, 0, 0, 182, 0, + 0, 183, 184, 185, 0, 186, 187, 188, 0, 189, + 190, 191, 192, 193, 194, 26, 0, 0, 29, 0, + 0, 0, 0, 33, 34, 35, 36, 12, 3, 140, + 0, 89, 0, 0, -178, -178, 0, -178, 0, 196, + 197, -178, -179, -179, 0, -179, 0, 0, 0, -179, + -178, 0, 0, -178, 0, 0, 0, 0, -179, -180, + -180, -179, -180, 0, -181, -181, -180, -181, 0, 0, + 0, -181, 12, 3, 0, -180, 0, 0, -180, 0, + -181, 0, 0, -181, 0, 0, 0, 0, 29, 0, + 0, -178, -178, 0, 0, 0, 0, 0, 0, -179, + -179, 133, 0, 0, 134, 0, 0, 0, 0, 277, + 278, 0, 0, 0, 0, 0, -180, -180, 0, 0, + 0, -181, -181, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 146, 0, 0, 0, 0, 147, + 0, 0, 12, 3, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 143, 0, 0, 0, 0, 144, 0, - 0, 12, 3, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 353, 0, 0, - 0, 0, 354, 0, 0, 0, 0, 108, 0, 0, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 355, 0, 0, 0, 0, 356, 0, 0, 0, - 0, 108, 0, 0, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, - 122, 123, 124, 125, 126, 357, 0, 0, 0, 0, - 358, 0, 0, 0, 0, 108, 0, 0, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 330, - 0, 119, 120, 121, 122, 123, 124, 125, 126, 108, - 0, 0, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 331, 0, 119, 120, 121, 122, 123, - 124, 125, 126, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 335, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 108, 0, 0, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 341, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 108, 0, 0, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 352, 0, 119, 120, 121, - 122, 123, 124, 125, 126, 108, 0, 0, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 363, - 0, 119, 120, 121, 122, 123, 124, 125, 126, 108, - 0, 0, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 381, 0, 119, 120, 121, 122, 123, - 124, 125, 126, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 239, 0, 0, - 0, 0, 0, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 288, 0, 0, - 0, 0, 0, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 289, 0, 0, - 0, 0, 108, 0, 0, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, - 121, 122, 123, 124, 125, 126, 238, 0, 108, 0, - 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, - 125, 126, 107, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 295, 108, 0, - 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, - 125, 126, 307, 108, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 108, 0, 0, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 0, 0, 0, - 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, - 109, 110, 0, 112, 113, 114, 115, 116, 117, 118, - 109, 110, 0, 0, 113, 114, 115, 116, 117, 118, - 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 109, 110, 0, 0, 113, 114, 115, 116, 117, - 118, 109, 110, 0, 0, 113, 114, 115, 116, 117, - 118, 0, 0, 0, 0, 120, 121, 122, 123, 124, - 125, 126, 0, 0, 0, 120, 0, 122, 123, 124, - 125, 126, 109, 110, 0, 0, 113, 114, 115, 116, - 117, 118, 0, 0, 0, 0, 0, 0, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 354, 0, + 0, 0, 0, 355, 0, 0, 0, 0, 111, 0, + 0, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 122, 123, 124, 125, 126, 127, + 128, 129, 356, 0, 0, 0, 0, 357, 0, 0, + 0, 0, 111, 0, 0, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 123, - 124, 125, 126 + 124, 125, 126, 127, 128, 129, 358, 0, 0, 0, + 0, 359, 0, 0, 0, 0, 111, 0, 0, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 331, 0, 122, 123, 124, 125, 126, 127, 128, 129, + 111, 0, 0, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 332, 0, 122, 123, 124, 125, + 126, 127, 128, 129, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 111, 0, + 0, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 342, 0, 122, 123, 124, 125, 126, 127, + 128, 129, 111, 0, 0, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 353, 0, 122, 123, + 124, 125, 126, 127, 128, 129, 111, 0, 0, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 364, 0, 122, 123, 124, 125, 126, 127, 128, 129, + 111, 0, 0, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 382, 0, 122, 123, 124, 125, + 126, 127, 128, 129, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 239, 0, + 0, 0, 0, 0, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 242, 0, + 0, 0, 0, 0, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 290, 0, + 0, 0, 0, 0, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 291, 0, + 0, 0, 0, 111, 0, 0, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, + 123, 124, 125, 126, 127, 128, 129, 241, 0, 111, + 0, 0, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 122, 123, 124, 125, 126, + 127, 128, 129, 110, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 297, 111, + 0, 0, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 122, 123, 124, 125, 126, + 127, 128, 129, 308, 111, 0, 0, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 111, 0, 0, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 0, 0, + 0, 0, 0, 122, 123, 124, 125, 126, 127, 128, + 129, 112, 113, 0, 115, 116, 117, 118, 119, 120, + 121, 112, 113, 0, 0, 116, 117, 118, 119, 120, + 121, 0, 0, 0, 122, 123, 124, 125, 126, 127, + 128, 129, 0, 0, 122, 123, 124, 125, 126, 127, + 128, 129, 112, 113, 0, 0, 116, 117, 118, 119, + 120, 121, 112, 113, 0, 0, 116, 117, 118, 119, + 120, 121, 0, 0, 0, 0, 123, 124, 125, 126, + 127, 128, 129, 0, 0, 0, 123, 0, 125, 126, + 127, 128, 129, 112, 113, 0, 0, 116, 117, 118, + 119, 120, 121, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, + 126, 127, 128, 129 }; const short parser::yycheck_[] = { - 0, 26, 27, 84, 14, 5, 1, 26, 27, 38, - 251, 85, 197, 134, 6, 7, 31, 40, 18, 40, - 31, 36, 37, 38, 39, 0, 26, 27, 87, 44, - 21, 26, 27, 44, 50, 41, 47, 62, 31, 39, - 46, 28, 29, 62, 31, 66, 89, 90, 35, 28, - 29, 44, 31, 40, 137, 46, 35, 44, 19, 40, - 47, 41, 62, 48, 50, 44, 95, 62, 47, 50, - 85, 86, 86, 41, 85, 86, 37, 81, 46, 40, - 41, 28, 29, 87, 31, 85, 90, 44, 35, 86, - 41, 41, 85, 86, 86, 46, 46, 44, 85, 86, - 47, 42, 127, 128, 44, 40, 85, 86, 127, 128, - 193, 194, 41, 41, 197, 137, 48, 46, 46, 44, - 241, 362, 243, 244, 41, 41, 46, 127, 128, 46, - 46, 131, 127, 128, 95, 135, 45, 137, 85, 86, - 40, 141, 137, 50, 40, 330, 331, 108, 109, 110, + 0, 26, 27, 87, 14, 5, 1, 26, 27, 6, + 7, 254, 38, 40, 85, 31, 40, 40, 18, 21, + 41, 50, 140, 50, 41, 46, 26, 27, 44, 46, + 0, 26, 27, 87, 140, 28, 29, 86, 31, 39, + 41, 66, 35, 66, 46, 28, 29, 66, 31, 86, + 41, 44, 35, 42, 47, 46, 44, 40, 19, 140, + 41, 44, 41, 41, 47, 46, 66, 46, 46, 85, + 86, 66, 98, 41, 48, 50, 37, 44, 46, 40, + 41, 41, 200, 48, 137, 40, 46, 45, 88, 86, + 196, 197, 85, 86, 200, 54, 55, 44, 46, 41, + 90, 91, 85, 86, 46, 130, 131, 50, 41, 40, + 40, 130, 131, 46, 40, 196, 197, 40, 140, 200, + 363, 80, 81, 82, 83, 84, 82, 83, 84, 50, + 130, 131, 40, 40, 134, 130, 131, 98, 138, 40, + 140, 40, 91, 49, 144, 140, 50, 50, 254, 45, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 40, 50, 251, 130, - 40, 193, 194, 40, 40, 197, 361, 187, 363, 140, - 40, 142, 41, 144, 40, 146, 41, 46, 49, 137, - 41, 46, 50, 193, 194, 380, 381, 197, 193, 194, - 50, 226, 197, 50, 325, 28, 29, 226, 31, 82, - 83, 84, 35, 50, 50, 137, 45, 49, 179, 340, - 40, 44, 90, 49, 47, 49, 226, 40, 40, 251, - 191, 226, 40, 354, 45, 356, 40, 358, 40, 264, - 265, 50, 17, 137, 50, 264, 265, 330, 331, 197, - 21, 251, 252, 41, 335, 137, 251, 54, 55, 50, - 50, 50, 85, 86, 264, 265, 50, 50, 50, 264, - 265, 193, 194, 50, 50, 197, 301, 238, 361, 362, - 363, 50, 301, 80, 81, 82, 83, 84, 249, 250, - 50, 5, 253, 5, 362, 187, 137, 380, 381, 193, - 194, 301, 187, 197, -1, -1, 301, -1, 330, 331, - -1, 193, 194, -1, -1, 197, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 251, - 330, 331, 137, -1, 334, 330, 331, 137, -1, 361, - 362, 363, 80, 81, 82, 83, 84, 308, 309, 310, - 311, -1, 193, 194, -1, -1, 197, 251, 380, 381, - -1, 361, 362, 363, -1, -1, 361, 362, 363, 251, - -1, 332, 333, -1, -1, -1, -1, -1, -1, -1, - 380, 381, 330, 331, -1, 380, 381, -1, 193, 194, - -1, -1, 197, 193, 194, 28, 29, 197, 31, -1, - -1, -1, 35, 364, -1, -1, -1, -1, 330, 331, - 251, 44, -1, 361, 47, 363, -1, -1, -1, 28, - 29, -1, 31, -1, -1, -1, 35, -1, -1, -1, - -1, -1, 380, 381, -1, 44, 330, 331, 47, 361, - 362, 363, -1, -1, -1, -1, 251, -1, 330, 331, - -1, 251, 85, 86, 28, 29, -1, 31, 380, 381, - -1, 35, -1, -1, -1, -1, -1, 361, 362, 363, - 44, -1, -1, 47, -1, -1, 85, 86, -1, 361, - 362, 363, -1, -1, -1, -1, 380, 381, -1, 330, - 331, -1, -1, -1, 28, 29, -1, 31, 380, 381, - -1, 35, -1, -1, -1, -1, -1, -1, 54, 55, - 44, 85, 86, 47, 60, 61, 62, 63, -1, -1, - 361, 362, 363, -1, -1, 330, 331, -1, -1, -1, - 330, 331, -1, -1, 80, 81, 82, 83, 84, 380, - 381, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 85, 86, -1, -1, -1, 361, 362, 363, -1, - -1, 361, 362, 363, -1, -1, -1, -1, -1, -1, - -1, 3, 4, 5, -1, 380, 381, -1, -1, 11, - 380, 381, 14, 15, 16, -1, 18, 19, 20, -1, - 22, 23, 24, 25, 26, 27, 28, -1, -1, 31, - -1, -1, -1, -1, 36, 37, 38, 39, -1, -1, - 42, 43, 44, -1, -1, -1, 3, 4, 5, -1, - 52, 53, -1, -1, 11, -1, -1, 14, 15, 16, - -1, 18, 19, 20, -1, 22, 23, 24, 25, 26, - 27, 28, -1, -1, 31, -1, -1, -1, -1, 36, - 37, 38, 39, 85, 86, 42, 43, 44, -1, -1, - -1, 3, 4, 5, -1, 52, 53, -1, -1, 11, - -1, -1, 14, 15, 16, -1, 18, 19, 20, -1, - 22, 23, 24, 25, 26, 27, 28, -1, -1, 31, - -1, -1, 8, -1, 36, 37, 38, 39, 85, 86, - 42, -1, 44, -1, -1, -1, -1, -1, -1, -1, - 52, 53, 28, 29, 30, 31, 32, 33, 34, -1, - 36, 37, 38, 39, 40, -1, -1, -1, 44, 45, - -1, -1, 48, -1, -1, 28, 29, -1, 31, -1, - -1, -1, 35, 85, 86, -1, -1, -1, 64, 65, - -1, 44, -1, -1, 47, 8, -1, -1, -1, -1, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 50, + 50, 50, 133, 254, 196, 197, 41, 49, 200, 49, + 190, 40, 143, 140, 145, 40, 147, 40, 149, 40, + 50, 244, 40, 246, 247, 45, 196, 197, 50, 40, + 200, 196, 197, 50, 229, 200, 31, 50, 17, 21, + 229, 50, 50, 331, 332, 200, 50, 50, 50, 44, + 41, 182, 47, 50, 50, 331, 332, 50, 5, 229, + 140, 5, 254, 194, 229, 363, 190, -1, -1, 196, + 197, 266, 267, 200, 362, -1, 364, 266, 267, -1, + 331, 332, 336, -1, 254, 255, 362, 363, 364, 254, + 85, 86, -1, 381, 382, -1, 266, 267, -1, -1, + -1, 266, 267, 326, -1, 381, 382, -1, 303, -1, + 241, 362, 363, 364, 303, -1, 196, 197, 341, -1, + 200, 252, 253, -1, -1, 256, 140, 254, -1, -1, + 381, 382, 355, 303, 357, -1, 359, -1, 303, 331, + 332, 80, 81, 82, 83, 84, -1, -1, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, + 291, 331, 332, 140, -1, 335, 331, 332, -1, -1, + 362, 363, 364, 140, 254, -1, 331, 332, 309, 310, + 311, 312, 196, 197, -1, -1, 200, -1, -1, 381, + 382, -1, 362, 363, 364, -1, -1, 362, 363, 364, + -1, -1, 333, 334, 331, 332, -1, 362, -1, 364, + -1, 381, 382, -1, -1, -1, 381, 382, -1, 196, + 197, -1, -1, 200, -1, -1, 381, 382, -1, 196, + 197, -1, -1, 200, 365, 362, 363, 364, -1, -1, + 254, 28, 29, -1, 31, -1, -1, -1, 35, -1, + -1, 331, 332, 81, 381, 382, -1, 44, -1, 87, + 47, -1, -1, 91, 92, 93, 94, -1, -1, 9, + 10, -1, 12, 13, -1, -1, -1, 254, -1, -1, + -1, -1, 362, 363, 364, -1, -1, 254, 28, -1, + -1, 31, -1, -1, -1, -1, -1, -1, 85, 86, + -1, 381, 382, 31, 44, -1, -1, 47, 36, 37, + 38, 39, 52, 53, -1, -1, 44, 331, 332, -1, + -1, -1, -1, -1, 52, 53, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, -1, -1, -1, + -1, -1, -1, -1, -1, 85, 86, -1, 362, 363, + 364, -1, 8, -1, 331, 332, -1, 85, 86, -1, + -1, -1, -1, -1, 331, 332, -1, 381, 382, -1, + -1, -1, 28, 29, 30, 31, 32, 33, 34, -1, + 36, 37, 38, 39, 40, 362, 363, 364, 44, 45, + -1, -1, 48, -1, -1, 362, 363, 364, -1, -1, + -1, -1, -1, -1, 381, 382, -1, -1, 64, 65, + -1, -1, -1, -1, 381, 382, -1, -1, -1, 8, -1, -1, -1, -1, -1, 81, -1, -1, 84, 85, - 86, 87, 88, 89, 90, 28, 29, 30, 31, 32, - 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, - -1, 44, 85, 86, -1, 48, -1, 50, -1, -1, - -1, 31, -1, -1, -1, -1, 36, 37, 38, 39, - -1, 64, 65, -1, 44, -1, -1, -1, 8, -1, - -1, -1, 52, 53, -1, -1, -1, -1, 81, -1, - -1, 84, 85, 86, 87, 88, 89, 90, 28, 29, - 30, 31, 32, 33, 34, -1, 36, 37, 38, 39, - 40, 45, -1, -1, 44, 85, 86, 51, 48, -1, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - -1, -1, -1, -1, 64, 65, -1, -1, -1, -1, - -1, 8, -1, 77, 78, 79, 80, 81, 82, 83, - 84, 81, -1, -1, 84, 85, 86, 87, 88, 89, - 90, 28, 29, 30, 31, 32, 33, 34, -1, 36, - 37, 38, 39, 40, -1, -1, -1, 44, -1, -1, - -1, 48, -1, -1, -1, -1, -1, -1, -1, 9, - 10, -1, 12, 13, -1, -1, -1, 64, 65, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 28, -1, - -1, 31, -1, -1, 81, -1, -1, 84, 85, 86, - 87, 88, 89, 90, 44, -1, -1, 47, -1, -1, - -1, -1, 52, 53, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 31, -1, -1, - -1, -1, -1, -1, -1, 85, 86, -1, -1, -1, - 44, -1, -1, 47, -1, -1, -1, -1, 52, 53, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 28, + 29, 30, 31, 32, 33, 34, -1, 36, 37, 38, + 39, 40, -1, -1, -1, 44, -1, -1, -1, 48, + -1, 50, 28, 29, -1, 31, -1, -1, -1, 35, + -1, -1, -1, -1, -1, 64, 65, -1, 44, -1, + -1, 47, -1, -1, -1, -1, 8, -1, -1, -1, + -1, -1, 81, -1, -1, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 28, 29, 30, 31, + 32, 33, 34, -1, 36, 37, 38, 39, 40, 85, + 86, -1, 44, -1, -1, -1, 48, -1, -1, 28, + 29, -1, 31, -1, -1, -1, 35, -1, -1, -1, + -1, -1, 64, 65, 31, 44, -1, -1, 47, 36, + 37, 38, 39, 8, -1, -1, -1, 44, -1, 81, + -1, -1, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 28, 29, 30, 31, 32, 33, 34, + -1, 36, 37, 38, 39, 40, 85, 86, -1, 44, + -1, -1, -1, 48, 54, 55, -1, -1, 85, 86, + 60, 61, 62, 63, -1, -1, -1, -1, -1, 64, + 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 80, 81, 82, 83, 84, -1, 81, -1, -1, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 3, 4, 5, -1, -1, -1, -1, -1, 11, -1, + -1, 14, 15, 16, -1, 18, 19, 20, -1, 22, + 23, 24, 25, 26, 27, 28, -1, -1, 31, -1, + -1, -1, -1, 36, 37, 38, 39, -1, -1, 42, + 43, 44, -1, -1, -1, 3, 4, 5, -1, 52, + 53, -1, -1, 11, -1, -1, 14, 15, 16, -1, + 18, 19, 20, -1, 22, 23, 24, 25, 26, 27, + 28, -1, -1, 31, -1, -1, -1, -1, 36, 37, + 38, 39, 85, 86, 42, 43, 44, -1, -1, -1, + 3, 4, 5, -1, 52, 53, -1, -1, 11, -1, + -1, 14, 15, 16, -1, 18, 19, 20, -1, 22, + 23, 24, 25, 26, 27, 28, -1, -1, 31, -1, + -1, -1, -1, 36, 37, 38, 39, 85, 86, 42, + -1, 44, -1, -1, 28, 29, -1, 31, -1, 52, + 53, 35, 28, 29, -1, 31, -1, -1, -1, 35, + 44, -1, -1, 47, -1, -1, -1, -1, 44, 28, + 29, 47, 31, -1, 28, 29, 35, 31, -1, -1, + -1, 35, 85, 86, -1, 44, -1, -1, 47, -1, + 44, -1, -1, 47, -1, -1, -1, -1, 31, -1, + -1, 85, 86, -1, -1, -1, -1, -1, -1, 85, + 86, 44, -1, -1, 47, -1, -1, -1, -1, 52, + 53, -1, -1, -1, -1, -1, 85, 86, -1, -1, + -1, 85, 86, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 41, -1, -1, -1, -1, 46, + -1, -1, 85, 86, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 41, -1, -1, -1, -1, 46, -1, - -1, 85, 86, 51, -1, -1, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, - 78, 79, 80, 81, 82, 83, 84, 41, -1, -1, - -1, -1, 46, -1, -1, -1, -1, 51, -1, -1, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 77, 78, 79, 80, 81, 82, 83, - 84, 41, -1, -1, -1, -1, 46, -1, -1, -1, - -1, 51, -1, -1, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 77, 78, 79, - 80, 81, 82, 83, 84, 41, -1, -1, -1, -1, - 46, -1, -1, -1, -1, 51, -1, -1, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, - -1, 77, 78, 79, 80, 81, 82, 83, 84, 51, - -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 41, -1, 77, 78, 79, 80, 81, - 82, 83, 84, 51, -1, -1, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 41, -1, 77, - 78, 79, 80, 81, 82, 83, 84, 51, -1, -1, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 41, -1, 77, 78, 79, 80, 81, 82, 83, - 84, 51, -1, -1, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 41, -1, 77, 78, 79, - 80, 81, 82, 83, 84, 51, -1, -1, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, - -1, 77, 78, 79, 80, 81, 82, 83, 84, 51, - -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 41, -1, 77, 78, 79, 80, 81, - 82, 83, 84, 51, -1, -1, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, - 78, 79, 80, 81, 82, 83, 84, 45, -1, -1, - -1, -1, -1, 51, -1, -1, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, - 78, 79, 80, 81, 82, 83, 84, 45, -1, -1, - -1, -1, -1, 51, -1, -1, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, - 78, 79, 80, 81, 82, 83, 84, 46, -1, -1, + 77, 78, 79, 80, 81, 82, 83, 84, 41, -1, + -1, -1, -1, 46, -1, -1, -1, -1, 51, -1, + -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 77, 78, 79, 80, 81, 82, + 83, 84, 41, -1, -1, -1, -1, 46, -1, -1, -1, -1, 51, -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, 78, - 79, 80, 81, 82, 83, 84, 49, -1, 51, -1, + 79, 80, 81, 82, 83, 84, 41, -1, -1, -1, + -1, 46, -1, -1, -1, -1, 51, -1, -1, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 41, -1, 77, 78, 79, 80, 81, 82, 83, 84, + 51, -1, -1, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 41, -1, 77, 78, 79, 80, + 81, 82, 83, 84, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, + 77, 78, 79, 80, 81, 82, 83, 84, 51, -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 77, 78, 79, 80, 81, 82, - 83, 84, 50, 51, -1, -1, 54, 55, 56, 57, + -1, -1, 41, -1, 77, 78, 79, 80, 81, 82, + 83, 84, 51, -1, -1, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 41, -1, 77, 78, + 79, 80, 81, 82, 83, 84, 51, -1, -1, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 41, -1, 77, 78, 79, 80, 81, 82, 83, 84, + 51, -1, -1, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 41, -1, 77, 78, 79, 80, + 81, 82, 83, 84, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 77, 78, 79, 80, 81, 82, 83, 84, 45, -1, + -1, -1, -1, -1, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 77, 78, 79, 80, 81, 82, 83, 84, 45, -1, + -1, -1, -1, -1, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 77, 78, 79, 80, 81, 82, 83, 84, 45, -1, + -1, -1, -1, -1, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 77, 78, 79, 80, 81, 82, 83, 84, 46, -1, + -1, -1, -1, 51, -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, - 78, 79, 80, 81, 82, 83, 84, 50, 51, -1, - -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 77, 78, 79, 80, 81, 82, - 83, 84, 50, 51, -1, -1, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 51, -1, -1, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 77, - 78, 79, 80, 81, 82, 83, 84, -1, -1, -1, - -1, -1, 77, 78, 79, 80, 81, 82, 83, 84, - 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, - 54, 55, -1, -1, 58, 59, 60, 61, 62, 63, - -1, -1, -1, 77, 78, 79, 80, 81, 82, 83, - 84, -1, -1, 77, 78, 79, 80, 81, 82, 83, - 84, 54, 55, -1, -1, 58, 59, 60, 61, 62, - 63, 54, 55, -1, -1, 58, 59, 60, 61, 62, - 63, -1, -1, -1, -1, 78, 79, 80, 81, 82, - 83, 84, -1, -1, -1, 78, -1, 80, 81, 82, - 83, 84, 54, 55, -1, -1, 58, 59, 60, 61, + 78, 79, 80, 81, 82, 83, 84, 49, -1, 51, + -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 80, 81, - 82, 83, 84 + -1, -1, -1, -1, -1, 77, 78, 79, 80, 81, + 82, 83, 84, 50, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 77, 78, 79, 80, 81, 82, 83, 84, 50, 51, + -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 77, 78, 79, 80, 81, + 82, 83, 84, 50, 51, -1, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 51, -1, -1, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 77, 78, 79, 80, 81, 82, 83, 84, -1, -1, + -1, -1, -1, 77, 78, 79, 80, 81, 82, 83, + 84, 54, 55, -1, 57, 58, 59, 60, 61, 62, + 63, 54, 55, -1, -1, 58, 59, 60, 61, 62, + 63, -1, -1, -1, 77, 78, 79, 80, 81, 82, + 83, 84, -1, -1, 77, 78, 79, 80, 81, 82, + 83, 84, 54, 55, -1, -1, 58, 59, 60, 61, + 62, 63, 54, 55, -1, -1, 58, 59, 60, 61, + 62, 63, -1, -1, -1, -1, 78, 79, 80, 81, + 82, 83, 84, -1, -1, -1, 78, -1, 80, 81, + 82, 83, 84, 54, 55, -1, -1, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, + 81, 82, 83, 84 }; const unsigned char parser::yystos_[] = { - 0, 6, 7, 86, 101, 102, 103, 104, 105, 106, - 107, 166, 85, 167, 40, 0, 103, 104, 40, 66, - 50, 87, 169, 108, 166, 8, 28, 29, 30, 31, + 0, 6, 7, 86, 105, 106, 107, 108, 109, 110, + 111, 172, 85, 173, 40, 0, 107, 108, 40, 66, + 50, 87, 175, 112, 172, 8, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 44, 48, - 64, 65, 81, 84, 88, 89, 90, 137, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 64, 65, 81, 84, 88, 89, 90, 91, 92, 93, + 94, 141, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 41, 41, 46, 44, 146, 147, 166, - 167, 146, 147, 44, 137, 44, 45, 137, 148, 149, - 150, 166, 137, 137, 89, 90, 86, 50, 51, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 77, - 78, 79, 80, 81, 82, 83, 84, 28, 29, 35, - 44, 47, 146, 147, 40, 48, 50, 42, 110, 166, - 44, 48, 44, 41, 46, 137, 46, 45, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 146, 147, 146, - 147, 137, 166, 148, 149, 166, 3, 4, 5, 11, - 14, 15, 16, 18, 19, 20, 22, 23, 24, 25, - 26, 27, 43, 52, 53, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 138, 143, 144, 153, 154, 156, 160, 161, 162, - 163, 166, 137, 166, 137, 137, 45, 137, 49, 45, - 41, 40, 50, 40, 40, 137, 50, 40, 50, 40, - 40, 40, 40, 40, 81, 169, 172, 174, 49, 50, - 50, 50, 137, 143, 156, 156, 43, 109, 50, 50, - 50, 9, 10, 12, 13, 52, 53, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 45, 46, - 45, 137, 148, 148, 148, 50, 41, 137, 137, 135, - 138, 156, 166, 137, 49, 49, 49, 50, 40, 40, - 40, 40, 137, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 45, 137, 40, 41, 41, 41, 50, - 41, 41, 50, 21, 46, 41, 137, 137, 137, 137, - 40, 41, 148, 50, 50, 109, 109, 136, 137, 137, - 166, 110, 41, 41, 46, 41, 46, 41, 46, 148, - 41, 17, 50, 41, 21, 50, 50, 148, 50, 148, - 50, 148, 41, 109, 135, 109, 137, 41, 41, 41, - 41, 41, 50, 50, 50, 109, 109 + 174, 175, 176, 177, 178, 179, 41, 41, 46, 44, + 150, 151, 172, 173, 150, 151, 44, 141, 44, 45, + 141, 152, 153, 154, 172, 141, 141, 90, 91, 86, + 50, 51, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 77, 78, 79, 80, 81, 82, 83, 84, + 28, 29, 35, 44, 47, 150, 151, 40, 48, 50, + 42, 114, 172, 44, 48, 44, 41, 46, 141, 46, + 45, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 150, 151, 150, 151, 141, 172, 152, 153, 172, 3, + 4, 5, 11, 14, 15, 16, 18, 19, 20, 22, + 23, 24, 25, 26, 27, 43, 52, 53, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 142, 147, 148, 157, 158, 160, + 166, 167, 168, 169, 172, 141, 172, 141, 141, 45, + 141, 49, 45, 41, 40, 50, 40, 40, 141, 50, + 40, 50, 40, 40, 40, 40, 40, 81, 162, 175, + 49, 50, 50, 50, 141, 147, 160, 160, 43, 113, + 50, 50, 50, 9, 10, 12, 13, 52, 53, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 45, 46, 45, 141, 152, 152, 152, 50, 41, 141, + 141, 139, 142, 160, 172, 141, 49, 49, 50, 40, + 40, 40, 40, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 45, 141, 40, 41, 41, 41, + 50, 41, 41, 50, 21, 46, 41, 141, 141, 141, + 141, 40, 41, 152, 50, 50, 113, 113, 140, 141, + 141, 172, 114, 41, 41, 46, 41, 46, 41, 46, + 152, 41, 17, 50, 41, 21, 50, 50, 152, 50, + 152, 50, 152, 41, 113, 139, 113, 141, 41, 41, + 41, 41, 41, 50, 50, 50, 113, 113 }; const unsigned char parser::yyr1_[] = { - 0, 100, 101, 101, 102, 102, 102, 102, 103, 104, - 104, 104, 105, 106, 107, 108, 108, 108, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 110, 110, 111, 111, 112, 112, 113, 114, - 115, 115, 116, 117, 117, 118, 118, 119, 120, 120, - 121, 122, 123, 124, 125, 125, 126, 127, 127, 127, - 128, 129, 130, 131, 131, 132, 133, 134, 135, 135, - 136, 136, 137, 137, 137, 137, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 139, 139, 139, 139, 139, 139, 139, 139, 140, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 0, 104, 105, 105, 106, 106, 106, 106, 107, 108, + 108, 108, 109, 110, 111, 112, 112, 112, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 114, 114, 115, 115, 116, 116, 117, 118, + 119, 119, 120, 121, 121, 122, 122, 123, 124, 124, + 125, 126, 127, 128, 129, 129, 130, 131, 131, 132, + 133, 134, 135, 135, 136, 137, 138, 139, 139, 140, + 140, 141, 141, 141, 141, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 143, 143, 143, 143, 144, 144, 144, 144, 145, 145, - 145, 145, 146, 146, 147, 147, 148, 148, 149, 149, - 150, 151, 151, 152, 153, 154, 155, 156, 156, 156, - 156, 156, 156, 156, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176 + 143, 143, 143, 143, 143, 143, 143, 143, 144, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 147, 147, + 147, 147, 148, 148, 148, 148, 149, 149, 149, 149, + 150, 150, 151, 151, 152, 152, 153, 153, 154, 155, + 155, 156, 157, 158, 159, 160, 160, 160, 160, 160, + 160, 160, 160, 161, 161, 162, 162, 162, 162, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179 }; const signed char @@ -4082,21 +4132,21 @@ namespace xsk { namespace gsc { namespace s2 { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 1, 2, 2, 2, 6, 8, 6, 3, 8, 6, 8, 6, 2, 2, 4, - 5, 7, 5, 9, 7, 9, 5, 3, 3, 3, - 2, 2, 2, 3, 2, 2, 5, 5, 1, 0, - 1, 0, 1, 1, 1, 1, 2, 2, 2, 2, + 5, 7, 5, 9, 7, 9, 5, 3, 3, 2, + 2, 2, 3, 2, 2, 5, 5, 1, 0, 1, + 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, + 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 3, 3, 2, 2, - 3, 3, 4, 6, 8, 9, 1, 1, 3, 1, - 0, 2, 3, 3, 4, 3, 2, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, - 1, 1, 2, 1, 1, 1, 1, 1, 7, 2, - 2, 1, 1, 1, 1 + 2, 2, 2, 2, 3, 3, 2, 2, 3, 3, + 4, 6, 8, 9, 1, 1, 3, 1, 0, 2, + 3, 3, 4, 3, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, + 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, + 1, 1, 1, 1, 7, 1, 1 }; @@ -4106,27 +4156,27 @@ namespace xsk { namespace gsc { namespace s2 { const short parser::yyrline_[] = { - 0, 243, 243, 244, 248, 250, 252, 254, 259, 264, - 265, 266, 270, 275, 280, 285, 287, 290, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 321, 322, 326, 328, 333, 335, 340, 345, - 350, 352, 357, 362, 364, 369, 371, 376, 381, 383, - 388, 393, 398, 403, 408, 410, 415, 420, 422, 424, - 429, 434, 439, 444, 446, 451, 456, 461, 466, 467, - 471, 472, 476, 477, 478, 479, 483, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 501, 502, 503, 504, 505, 506, 507, 508, 512, - 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, - 562, 563, 564, 565, 569, 570, 571, 572, 576, 577, - 578, 579, 583, 585, 590, 592, 597, 598, 602, 604, - 610, 614, 616, 621, 626, 631, 636, 641, 642, 643, - 644, 645, 646, 647, 648, 651, 652, 653, 654, 655, - 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, - 666, 667, 668, 669, 670 + 0, 246, 246, 247, 251, 253, 255, 257, 262, 267, + 268, 269, 273, 278, 283, 288, 290, 293, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 324, 325, 329, 331, 336, 338, 343, 348, + 353, 355, 360, 365, 367, 372, 374, 379, 384, 386, + 391, 396, 401, 406, 411, 413, 418, 423, 425, 430, + 435, 440, 445, 447, 452, 457, 462, 467, 468, 472, + 473, 477, 478, 479, 480, 484, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, + 502, 503, 504, 505, 506, 507, 508, 509, 513, 517, + 518, 519, 520, 521, 522, 523, 524, 525, 526, 530, + 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, + 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, + 551, 552, 553, 554, 555, 556, 557, 558, 562, 563, + 564, 565, 569, 570, 571, 572, 576, 577, 578, 579, + 583, 585, 590, 592, 597, 598, 602, 604, 610, 614, + 616, 621, 626, 631, 636, 641, 642, 643, 644, 645, + 646, 647, 648, 652, 653, 657, 658, 659, 660, 661, + 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, + 674, 675, 676, 677, 678, 679, 680 }; void @@ -4159,9 +4209,9 @@ namespace xsk { namespace gsc { namespace s2 { #line 13 "parser.ypp" } } } // xsk::gsc::s2 -#line 4163 "parser.cpp" +#line 4213 "parser.cpp" -#line 672 "parser.ypp" +#line 682 "parser.ypp" void xsk::gsc::s2::parser::error(const xsk::gsc::location& loc, const std::string& msg) diff --git a/src/s2/xsk/parser.hpp b/src/s2/xsk/parser.hpp index 9e6600d6..6742bc22 100644 --- a/src/s2/xsk/parser.hpp +++ b/src/s2/xsk/parser.hpp @@ -417,31 +417,34 @@ namespace xsk { namespace gsc { namespace s2 { // animtree char dummy3[sizeof (animtree_ptr)]; + // color + char dummy4[sizeof (color_ptr)]; + // constant - char dummy4[sizeof (constant_ptr)]; + char dummy5[sizeof (constant_ptr)]; // define - char dummy5[sizeof (define_ptr)]; + char dummy6[sizeof (define_ptr)]; // empty_array - char dummy6[sizeof (empty_array_ptr)]; + char dummy7[sizeof (empty_array_ptr)]; // expr_arguments // expr_arguments_filled // expr_arguments_empty - char dummy7[sizeof (expr_arguments_ptr)]; + char dummy8[sizeof (expr_arguments_ptr)]; // expr_assign - char dummy8[sizeof (expr_assign_ptr)]; + char dummy9[sizeof (expr_assign_ptr)]; // expr_call // expr_call_thread // expr_call_childthread - char dummy9[sizeof (expr_call_ptr)]; + char dummy10[sizeof (expr_call_ptr)]; // expr_call_function // expr_call_pointer - char dummy10[sizeof (expr_call_type_ptr)]; + char dummy11[sizeof (expr_call_type_ptr)]; // for_expr // expr @@ -449,36 +452,34 @@ namespace xsk { namespace gsc { namespace s2 { // expr_ternary // expr_binary // expr_primitive - char dummy11[sizeof (expr_ptr)]; + char dummy12[sizeof (expr_ptr)]; // false - char dummy12[sizeof (false_ptr)]; + char dummy13[sizeof (false_ptr)]; // file - char dummy13[sizeof (file_ptr)]; + char dummy14[sizeof (file_ptr)]; - // neg_float // float - char dummy14[sizeof (float_ptr)]; + char dummy15[sizeof (float_ptr)]; // game - char dummy15[sizeof (game_ptr)]; + char dummy16[sizeof (game_ptr)]; // include - char dummy16[sizeof (include_ptr)]; + char dummy17[sizeof (include_ptr)]; - // neg_integer // integer - char dummy17[sizeof (integer_ptr)]; + char dummy18[sizeof (integer_ptr)]; // istring - char dummy18[sizeof (istring_ptr)]; + char dummy19[sizeof (istring_ptr)]; // level - char dummy19[sizeof (level_ptr)]; + char dummy20[sizeof (level_ptr)]; // name - char dummy20[sizeof (name_ptr)]; + char dummy21[sizeof (name_ptr)]; // expr_function // expr_add_array @@ -486,122 +487,126 @@ namespace xsk { namespace gsc { namespace s2 { // expr_field // expr_size // object - char dummy21[sizeof (node_ptr)]; + char dummy22[sizeof (node_ptr)]; // parameters - char dummy22[sizeof (parameters_ptr)]; + char dummy23[sizeof (parameters_ptr)]; // program - char dummy23[sizeof (program_ptr)]; + char dummy24[sizeof (program_ptr)]; // self - char dummy24[sizeof (self_ptr)]; + char dummy25[sizeof (self_ptr)]; // "file path" // "identifier" // "string literal" // "localized string" + // "color" // "float" // "int" - char dummy25[sizeof (std::string)]; + // "octal int" + // "binary int" + // "hexadecimal int" + char dummy26[sizeof (std::string)]; // stmt_assign - char dummy26[sizeof (stmt_assign_ptr)]; + char dummy27[sizeof (stmt_assign_ptr)]; // stmt_break - char dummy27[sizeof (stmt_break_ptr)]; + char dummy28[sizeof (stmt_break_ptr)]; // stmt_breakpoint - char dummy28[sizeof (stmt_breakpoint_ptr)]; + char dummy29[sizeof (stmt_breakpoint_ptr)]; // stmt_call - char dummy29[sizeof (stmt_call_ptr)]; + char dummy30[sizeof (stmt_call_ptr)]; // stmt_case - char dummy30[sizeof (stmt_case_ptr)]; + char dummy31[sizeof (stmt_case_ptr)]; // stmt_continue - char dummy31[sizeof (stmt_continue_ptr)]; + char dummy32[sizeof (stmt_continue_ptr)]; // stmt_default - char dummy32[sizeof (stmt_default_ptr)]; + char dummy33[sizeof (stmt_default_ptr)]; // stmt_endon - char dummy33[sizeof (stmt_endon_ptr)]; + char dummy34[sizeof (stmt_endon_ptr)]; // stmt_for - char dummy34[sizeof (stmt_for_ptr)]; + char dummy35[sizeof (stmt_for_ptr)]; // stmt_foreach - char dummy35[sizeof (stmt_foreach_ptr)]; + char dummy36[sizeof (stmt_foreach_ptr)]; // stmt_if - char dummy36[sizeof (stmt_if_ptr)]; + char dummy37[sizeof (stmt_if_ptr)]; // stmt_ifelse - char dummy37[sizeof (stmt_ifelse_ptr)]; + char dummy38[sizeof (stmt_ifelse_ptr)]; // stmt_block // stmt_list - char dummy38[sizeof (stmt_list_ptr)]; + char dummy39[sizeof (stmt_list_ptr)]; // stmt_notify - char dummy39[sizeof (stmt_notify_ptr)]; + char dummy40[sizeof (stmt_notify_ptr)]; // stmt_prof_begin - char dummy40[sizeof (stmt_prof_begin_ptr)]; + char dummy41[sizeof (stmt_prof_begin_ptr)]; // stmt_prof_end - char dummy41[sizeof (stmt_prof_end_ptr)]; + char dummy42[sizeof (stmt_prof_end_ptr)]; // stmt // for_stmt - char dummy42[sizeof (stmt_ptr)]; + char dummy43[sizeof (stmt_ptr)]; // stmt_return - char dummy43[sizeof (stmt_return_ptr)]; + char dummy44[sizeof (stmt_return_ptr)]; // stmt_switch - char dummy44[sizeof (stmt_switch_ptr)]; + char dummy45[sizeof (stmt_switch_ptr)]; // stmt_wait - char dummy45[sizeof (stmt_wait_ptr)]; + char dummy46[sizeof (stmt_wait_ptr)]; // stmt_waitframe - char dummy46[sizeof (stmt_waitframe_ptr)]; + char dummy47[sizeof (stmt_waitframe_ptr)]; // stmt_waittill - char dummy47[sizeof (stmt_waittill_ptr)]; + char dummy48[sizeof (stmt_waittill_ptr)]; // stmt_waittillframeend - char dummy48[sizeof (stmt_waittillframeend_ptr)]; + char dummy49[sizeof (stmt_waittillframeend_ptr)]; // stmt_waittillmatch - char dummy49[sizeof (stmt_waittillmatch_ptr)]; + char dummy50[sizeof (stmt_waittillmatch_ptr)]; // stmt_while - char dummy50[sizeof (stmt_while_ptr)]; + char dummy51[sizeof (stmt_while_ptr)]; // string - char dummy51[sizeof (string_ptr)]; + char dummy52[sizeof (string_ptr)]; // thisthread - char dummy52[sizeof (thisthread_ptr)]; + char dummy53[sizeof (thisthread_ptr)]; // thread - char dummy53[sizeof (thread_ptr)]; + char dummy54[sizeof (thread_ptr)]; // true - char dummy54[sizeof (true_ptr)]; + char dummy55[sizeof (true_ptr)]; // undefined - char dummy55[sizeof (undefined_ptr)]; + char dummy56[sizeof (undefined_ptr)]; // usingtree - char dummy56[sizeof (usingtree_ptr)]; + char dummy57[sizeof (usingtree_ptr)]; // vector - char dummy57[sizeof (vector_ptr)]; + char dummy58[sizeof (vector_ptr)]; }; /// The size of the largest semantic type. @@ -739,17 +744,21 @@ namespace xsk { namespace gsc { namespace s2 { NAME = 86, // "identifier" STRING = 87, // "string literal" ISTRING = 88, // "localized string" - FLOAT = 89, // "float" - INTEGER = 90, // "int" - ADD_ARRAY = 91, // ADD_ARRAY - THEN = 92, // THEN - TERN = 93, // TERN - NEG = 94, // NEG - ANIMREF = 95, // ANIMREF - PREINC = 96, // PREINC - PREDEC = 97, // PREDEC - POSTINC = 98, // POSTINC - POSTDEC = 99 // POSTDEC + COLOR = 89, // "color" + FLOAT = 90, // "float" + INT_DEC = 91, // "int" + INT_OCT = 92, // "octal int" + INT_BIN = 93, // "binary int" + INT_HEX = 94, // "hexadecimal int" + ADD_ARRAY = 95, // ADD_ARRAY + THEN = 96, // THEN + TERN = 97, // TERN + NEG = 98, // NEG + ANIMREF = 99, // ANIMREF + PREINC = 100, // PREINC + PREDEC = 101, // PREDEC + POSTINC = 102, // POSTINC + POSTDEC = 103 // POSTDEC }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; @@ -766,7 +775,7 @@ namespace xsk { namespace gsc { namespace s2 { { enum symbol_kind_type { - YYNTOKENS = 100, ///< Number of tokens. + YYNTOKENS = 104, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error @@ -857,94 +866,97 @@ namespace xsk { namespace gsc { namespace s2 { S_NAME = 86, // "identifier" S_STRING = 87, // "string literal" S_ISTRING = 88, // "localized string" - S_FLOAT = 89, // "float" - S_INTEGER = 90, // "int" - S_ADD_ARRAY = 91, // ADD_ARRAY - S_THEN = 92, // THEN - S_TERN = 93, // TERN - S_NEG = 94, // NEG - S_ANIMREF = 95, // ANIMREF - S_PREINC = 96, // PREINC - S_PREDEC = 97, // PREDEC - S_POSTINC = 98, // POSTINC - S_POSTDEC = 99, // POSTDEC - S_YYACCEPT = 100, // $accept - S_root = 101, // root - S_program = 102, // program - S_include = 103, // include - S_define = 104, // define - S_usingtree = 105, // usingtree - S_constant = 106, // constant - S_thread = 107, // thread - S_parameters = 108, // parameters - S_stmt = 109, // stmt - S_stmt_block = 110, // stmt_block - S_stmt_list = 111, // stmt_list - S_stmt_call = 112, // stmt_call - S_stmt_assign = 113, // stmt_assign - S_stmt_endon = 114, // stmt_endon - S_stmt_notify = 115, // stmt_notify - S_stmt_wait = 116, // stmt_wait - S_stmt_waittill = 117, // stmt_waittill - S_stmt_waittillmatch = 118, // stmt_waittillmatch - S_stmt_waittillframeend = 119, // stmt_waittillframeend - S_stmt_waitframe = 120, // stmt_waitframe - S_stmt_if = 121, // stmt_if - S_stmt_ifelse = 122, // stmt_ifelse - S_stmt_while = 123, // stmt_while - S_stmt_for = 124, // stmt_for - S_stmt_foreach = 125, // stmt_foreach - S_stmt_switch = 126, // stmt_switch - S_stmt_case = 127, // stmt_case - S_stmt_default = 128, // stmt_default - S_stmt_break = 129, // stmt_break - S_stmt_continue = 130, // stmt_continue - S_stmt_return = 131, // stmt_return - S_stmt_breakpoint = 132, // stmt_breakpoint - S_stmt_prof_begin = 133, // stmt_prof_begin - S_stmt_prof_end = 134, // stmt_prof_end - S_for_stmt = 135, // for_stmt - S_for_expr = 136, // for_expr - S_expr = 137, // expr - S_expr_assign = 138, // expr_assign - S_expr_compare = 139, // expr_compare - S_expr_ternary = 140, // expr_ternary - S_expr_binary = 141, // expr_binary - S_expr_primitive = 142, // expr_primitive - S_expr_call = 143, // expr_call - S_expr_call_thread = 144, // expr_call_thread - S_expr_call_childthread = 145, // expr_call_childthread - S_expr_call_function = 146, // expr_call_function - S_expr_call_pointer = 147, // expr_call_pointer - S_expr_arguments = 148, // expr_arguments - S_expr_arguments_filled = 149, // expr_arguments_filled - S_expr_arguments_empty = 150, // expr_arguments_empty - S_expr_function = 151, // expr_function - S_expr_add_array = 152, // expr_add_array - S_expr_array = 153, // expr_array - S_expr_field = 154, // expr_field - S_expr_size = 155, // expr_size - S_object = 156, // object - S_thisthread = 157, // thisthread - S_empty_array = 158, // empty_array - S_undefined = 159, // undefined - S_game = 160, // game - S_self = 161, // self - S_anim = 162, // anim - S_level = 163, // level - S_animation = 164, // animation - S_animtree = 165, // animtree - S_name = 166, // name - S_file = 167, // file - S_istring = 168, // istring - S_string = 169, // string - S_vector = 170, // vector - S_neg_float = 171, // neg_float - S_neg_integer = 172, // neg_integer - S_float = 173, // float - S_integer = 174, // integer - S_false = 175, // false - S_true = 176 // true + S_COLOR = 89, // "color" + S_FLOAT = 90, // "float" + S_INT_DEC = 91, // "int" + S_INT_OCT = 92, // "octal int" + S_INT_BIN = 93, // "binary int" + S_INT_HEX = 94, // "hexadecimal int" + S_ADD_ARRAY = 95, // ADD_ARRAY + S_THEN = 96, // THEN + S_TERN = 97, // TERN + S_NEG = 98, // NEG + S_ANIMREF = 99, // ANIMREF + S_PREINC = 100, // PREINC + S_PREDEC = 101, // PREDEC + S_POSTINC = 102, // POSTINC + S_POSTDEC = 103, // POSTDEC + S_YYACCEPT = 104, // $accept + S_root = 105, // root + S_program = 106, // program + S_include = 107, // include + S_define = 108, // define + S_usingtree = 109, // usingtree + S_constant = 110, // constant + S_thread = 111, // thread + S_parameters = 112, // parameters + S_stmt = 113, // stmt + S_stmt_block = 114, // stmt_block + S_stmt_list = 115, // stmt_list + S_stmt_call = 116, // stmt_call + S_stmt_assign = 117, // stmt_assign + S_stmt_endon = 118, // stmt_endon + S_stmt_notify = 119, // stmt_notify + S_stmt_wait = 120, // stmt_wait + S_stmt_waittill = 121, // stmt_waittill + S_stmt_waittillmatch = 122, // stmt_waittillmatch + S_stmt_waittillframeend = 123, // stmt_waittillframeend + S_stmt_waitframe = 124, // stmt_waitframe + S_stmt_if = 125, // stmt_if + S_stmt_ifelse = 126, // stmt_ifelse + S_stmt_while = 127, // stmt_while + S_stmt_for = 128, // stmt_for + S_stmt_foreach = 129, // stmt_foreach + S_stmt_switch = 130, // stmt_switch + S_stmt_case = 131, // stmt_case + S_stmt_default = 132, // stmt_default + S_stmt_break = 133, // stmt_break + S_stmt_continue = 134, // stmt_continue + S_stmt_return = 135, // stmt_return + S_stmt_breakpoint = 136, // stmt_breakpoint + S_stmt_prof_begin = 137, // stmt_prof_begin + S_stmt_prof_end = 138, // stmt_prof_end + S_for_stmt = 139, // for_stmt + S_for_expr = 140, // for_expr + S_expr = 141, // expr + S_expr_assign = 142, // expr_assign + S_expr_compare = 143, // expr_compare + S_expr_ternary = 144, // expr_ternary + S_expr_binary = 145, // expr_binary + S_expr_primitive = 146, // expr_primitive + S_expr_call = 147, // expr_call + S_expr_call_thread = 148, // expr_call_thread + S_expr_call_childthread = 149, // expr_call_childthread + S_expr_call_function = 150, // expr_call_function + S_expr_call_pointer = 151, // expr_call_pointer + S_expr_arguments = 152, // expr_arguments + S_expr_arguments_filled = 153, // expr_arguments_filled + S_expr_arguments_empty = 154, // expr_arguments_empty + S_expr_function = 155, // expr_function + S_expr_add_array = 156, // expr_add_array + S_expr_array = 157, // expr_array + S_expr_field = 158, // expr_field + S_expr_size = 159, // expr_size + S_object = 160, // object + S_float = 161, // float + S_integer = 162, // integer + S_thisthread = 163, // thisthread + S_empty_array = 164, // empty_array + S_undefined = 165, // undefined + S_game = 166, // game + S_self = 167, // self + S_anim = 168, // anim + S_level = 169, // level + S_animation = 170, // animation + S_animtree = 171, // animtree + S_name = 172, // name + S_file = 173, // file + S_istring = 174, // istring + S_string = 175, // string + S_color = 176, // color + S_vector = 177, // vector + S_false = 178, // false + S_true = 179 // true }; }; @@ -993,6 +1005,10 @@ namespace xsk { namespace gsc { namespace s2 { value.move< animtree_ptr > (std::move (that.value)); break; + case symbol_kind::S_color: // color + value.move< color_ptr > (std::move (that.value)); + break; + case symbol_kind::S_constant: // constant value.move< constant_ptr > (std::move (that.value)); break; @@ -1043,7 +1059,6 @@ namespace xsk { namespace gsc { namespace s2 { value.move< file_ptr > (std::move (that.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.move< float_ptr > (std::move (that.value)); break; @@ -1056,7 +1071,6 @@ namespace xsk { namespace gsc { namespace s2 { value.move< include_ptr > (std::move (that.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.move< integer_ptr > (std::move (that.value)); break; @@ -1098,8 +1112,12 @@ namespace xsk { namespace gsc { namespace s2 { case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.move< std::string > (std::move (that.value)); break; @@ -1298,6 +1316,20 @@ namespace xsk { namespace gsc { namespace s2 { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, color_ptr&& v, location_type&& l) + : Base (t) + , value (std::move (v)) + , location (std::move (l)) + {} +#else + basic_symbol (typename Base::kind_type t, const color_ptr& v, const location_type& l) + : Base (t) + , value (v) + , location (l) + {} +#endif + #if 201103L <= YY_CPLUSPLUS basic_symbol (typename Base::kind_type t, constant_ptr&& v, location_type&& l) : Base (t) @@ -2088,6 +2120,10 @@ switch (yykind) value.template destroy< animtree_ptr > (); break; + case symbol_kind::S_color: // color + value.template destroy< color_ptr > (); + break; + case symbol_kind::S_constant: // constant value.template destroy< constant_ptr > (); break; @@ -2138,7 +2174,6 @@ switch (yykind) value.template destroy< file_ptr > (); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.template destroy< float_ptr > (); break; @@ -2151,7 +2186,6 @@ switch (yykind) value.template destroy< include_ptr > (); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.template destroy< integer_ptr > (); break; @@ -2193,8 +2227,12 @@ switch (yykind) case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.template destroy< std::string > (); break; @@ -2434,7 +2472,7 @@ switch (yykind) : super_type(token_type (tok), v, l) #endif { - S2_ASSERT ((token::FILE <= tok && tok <= token::INTEGER)); + S2_ASSERT ((token::FILE <= tok && tok <= token::INT_HEX)); } }; @@ -3819,6 +3857,21 @@ switch (yykind) return symbol_type (token::ISTRING, v, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_COLOR (std::string v, location_type l) + { + return symbol_type (token::COLOR, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_COLOR (const std::string& v, const location_type& l) + { + return symbol_type (token::COLOR, v, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -3837,16 +3890,61 @@ switch (yykind) #if 201103L <= YY_CPLUSPLUS static symbol_type - make_INTEGER (std::string v, location_type l) + make_INT_DEC (std::string v, location_type l) { - return symbol_type (token::INTEGER, std::move (v), std::move (l)); + return symbol_type (token::INT_DEC, std::move (v), std::move (l)); } #else static symbol_type - make_INTEGER (const std::string& v, const location_type& l) + make_INT_DEC (const std::string& v, const location_type& l) { - return symbol_type (token::INTEGER, v, l); + return symbol_type (token::INT_DEC, v, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_INT_OCT (std::string v, location_type l) + { + return symbol_type (token::INT_OCT, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_INT_OCT (const std::string& v, const location_type& l) + { + return symbol_type (token::INT_OCT, v, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_INT_BIN (std::string v, location_type l) + { + return symbol_type (token::INT_BIN, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_INT_BIN (const std::string& v, const location_type& l) + { + return symbol_type (token::INT_BIN, v, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_INT_HEX (std::string v, location_type l) + { + return symbol_type (token::INT_HEX, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_INT_HEX (const std::string& v, const location_type& l) + { + return symbol_type (token::INT_HEX, v, l); } #endif #if 201103L <= YY_CPLUSPLUS @@ -4328,8 +4426,8 @@ switch (yykind) /// Constants. enum { - yylast_ = 1842, ///< Last index in yytable_. - yynnts_ = 77, ///< Number of nonterminal symbols. + yylast_ = 1883, ///< Last index in yytable_. + yynnts_ = 76, ///< Number of nonterminal symbols. yyfinal_ = 15 ///< Termination state number. }; @@ -4369,6 +4467,10 @@ switch (yykind) value.copy< animtree_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_color: // color + value.copy< color_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_constant: // constant value.copy< constant_ptr > (YY_MOVE (that.value)); break; @@ -4419,7 +4521,6 @@ switch (yykind) value.copy< file_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.copy< float_ptr > (YY_MOVE (that.value)); break; @@ -4432,7 +4533,6 @@ switch (yykind) value.copy< include_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.copy< integer_ptr > (YY_MOVE (that.value)); break; @@ -4474,8 +4574,12 @@ switch (yykind) case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.copy< std::string > (YY_MOVE (that.value)); break; @@ -4650,6 +4754,10 @@ switch (yykind) value.move< animtree_ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_color: // color + value.move< color_ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_constant: // constant value.move< constant_ptr > (YY_MOVE (s.value)); break; @@ -4700,7 +4808,6 @@ switch (yykind) value.move< file_ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_neg_float: // neg_float case symbol_kind::S_float: // float value.move< float_ptr > (YY_MOVE (s.value)); break; @@ -4713,7 +4820,6 @@ switch (yykind) value.move< include_ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_neg_integer: // neg_integer case symbol_kind::S_integer: // integer value.move< integer_ptr > (YY_MOVE (s.value)); break; @@ -4755,8 +4861,12 @@ switch (yykind) case symbol_kind::S_NAME: // "identifier" case symbol_kind::S_STRING: // "string literal" case symbol_kind::S_ISTRING: // "localized string" + case symbol_kind::S_COLOR: // "color" case symbol_kind::S_FLOAT: // "float" - case symbol_kind::S_INTEGER: // "int" + case symbol_kind::S_INT_DEC: // "int" + case symbol_kind::S_INT_OCT: // "octal int" + case symbol_kind::S_INT_BIN: // "binary int" + case symbol_kind::S_INT_HEX: // "hexadecimal int" value.move< std::string > (YY_MOVE (s.value)); break; @@ -4953,7 +5063,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::s2 -#line 4957 "parser.hpp" +#line 5067 "parser.hpp" diff --git a/src/utils/xsk/gsc/nodetree.hpp b/src/utils/xsk/gsc/nodetree.hpp index 7b039cb4..9bdd598c 100644 --- a/src/utils/xsk/gsc/nodetree.hpp +++ b/src/utils/xsk/gsc/nodetree.hpp @@ -16,6 +16,7 @@ enum class node_t data_integer, data_float, data_vector, + data_color, data_string, data_istring, data_file, @@ -126,6 +127,7 @@ struct node_false; struct node_integer; struct node_float; struct node_vector; +struct node_color; struct node_string; struct node_istring; struct node_file; @@ -234,6 +236,7 @@ using false_ptr = std::unique_ptr; using integer_ptr = std::unique_ptr; using float_ptr = std::unique_ptr; using vector_ptr = std::unique_ptr; +using color_ptr = std::unique_ptr; using string_ptr = std::unique_ptr; using istring_ptr = std::unique_ptr; using file_ptr = std::unique_ptr; @@ -358,6 +361,7 @@ union expr_ptr integer_ptr as_integer; float_ptr as_float; vector_ptr as_vector; + color_ptr as_color; string_ptr as_string; istring_ptr as_istring; file_ptr as_file; @@ -699,6 +703,27 @@ struct node_vector : public node } }; +struct node_color : public node +{ + std::string value; + + node_color(const std::string& value) + : node(node_t::data_color), value(value) {} + + node_color(const location& loc, const std::string& value) + : node(node_t::data_color, loc), value(value) {} + + auto print() -> std::string override + { + return "#"s += value; + } + + friend bool operator==(const node_color& lhs, const node_color& rhs) + { + return lhs.value == rhs.value; + } +}; + struct node_string : public node { std::string value; diff --git a/src/utils/xsk/string.cpp b/src/utils/xsk/string.cpp index 3425d19d..a672caf0 100644 --- a/src/utils/xsk/string.cpp +++ b/src/utils/xsk/string.cpp @@ -8,6 +8,21 @@ namespace xsk::gsc::utils { +auto string::oct_to_dec(const char* str) -> std::string +{ + return std::to_string(std::stoi(str, nullptr, 8)); +} + +auto string::bin_to_dec(const char* str) -> std::string +{ + return std::to_string(std::stoi(&str[2], nullptr, 2)); // str must prefix 0[bB] +} + +auto string::hex_to_dec(const char* str) -> std::string +{ + return std::to_string(std::stoi(&str[2], nullptr, 16)); // str must prefix 0[xX] +} + auto string::iequals(const std::string& a, const std::string& b) -> bool { return (a.size() == b.size()) && std::equal(a.begin(), a.end(), b.begin(), b.end(), diff --git a/src/utils/xsk/string.hpp b/src/utils/xsk/string.hpp index 5db7d130..4831973c 100644 --- a/src/utils/xsk/string.hpp +++ b/src/utils/xsk/string.hpp @@ -21,6 +21,9 @@ public: return std::string(buf.data(), buf.data() + size - 1); } + static auto oct_to_dec(const char* str) -> std::string; + static auto bin_to_dec(const char* str) -> std::string; + static auto hex_to_dec(const char* str) -> std::string; static auto iequals(const std::string& a, const std::string& b) -> bool; static auto is_number(const std::string& s) -> bool; static auto is_hex_number(const std::string& s) -> bool; diff --git a/src/utils/xsk/utils.cpp b/src/utils/xsk/utils.cpp index 3078e404..b0af9a21 100644 --- a/src/utils/xsk/utils.cpp +++ b/src/utils/xsk/utils.cpp @@ -35,6 +35,7 @@ expr_ptr::~expr_ptr() case node_t::data_integer: as_integer.~integer_ptr(); break; case node_t::data_float: as_float.~float_ptr(); break; case node_t::data_vector: as_vector.~vector_ptr(); break; + case node_t::data_color: as_color.~color_ptr(); break; case node_t::data_string: as_string.~string_ptr(); break; case node_t::data_istring: as_istring.~istring_ptr(); break; case node_t::data_file: as_file.~file_ptr(); break; @@ -156,6 +157,7 @@ bool expr_ptr::operator==(const expr_ptr& rhs) const case node_t::data_integer: return *as_integer == *rhs.as_integer; case node_t::data_float: return *as_float == *rhs.as_float; case node_t::data_vector: return *as_vector == *rhs.as_vector; + case node_t::data_color: return *as_color == *rhs.as_color; case node_t::data_string: return *as_string == *rhs.as_string; case node_t::data_istring: return *as_istring == *rhs.as_istring; case node_t::data_file: return *as_file == *rhs.as_file;