From 9dbdd37f15552bd7e879a4567a8793680bc5924c Mon Sep 17 00:00:00 2001 From: xensik Date: Fri, 31 Dec 2021 15:22:21 +0100 Subject: [PATCH] enhance developer mode --- gen/h1/lexer.lpp | 36 +- gen/h1/parser.ypp | 15 +- gen/h2/lexer.lpp | 36 +- gen/h2/parser.ypp | 15 +- gen/iw5/lexer.lpp | 36 +- gen/iw5/parser.ypp | 15 +- gen/iw6/lexer.lpp | 36 +- gen/iw6/parser.ypp | 15 +- gen/iw7/lexer.lpp | 36 +- gen/iw7/parser.ypp | 15 +- gen/iw8/lexer.lpp | 36 +- gen/iw8/parser.ypp | 15 +- gen/s1/lexer.lpp | 36 +- gen/s1/parser.ypp | 15 +- gen/s2/lexer.lpp | 36 +- gen/s2/parser.ypp | 15 +- gen/s4/lexer.lpp | 36 +- gen/s4/parser.ypp | 15 +- src/h1/xsk/compiler.cpp | 10 + src/h1/xsk/lexer.cpp | 998 +++++------ src/h1/xsk/lexer.hpp | 8 +- src/h1/xsk/parser.cpp | 2918 ++++++++++++++++--------------- src/h1/xsk/parser.hpp | 622 +++---- src/h2/xsk/compiler.cpp | 10 + src/h2/xsk/lexer.cpp | 998 +++++------ src/h2/xsk/lexer.hpp | 8 +- src/h2/xsk/parser.cpp | 2918 ++++++++++++++++--------------- src/h2/xsk/parser.hpp | 622 +++---- src/iw5/xsk/compiler.cpp | 10 + src/iw5/xsk/lexer.cpp | 987 +++++------ src/iw5/xsk/lexer.hpp | 8 +- src/iw5/xsk/parser.cpp | 2892 +++++++++++++++--------------- src/iw5/xsk/parser.hpp | 616 ++++--- src/iw6/xsk/compiler.cpp | 10 + src/iw6/xsk/lexer.cpp | 987 +++++------ src/iw6/xsk/lexer.hpp | 8 +- src/iw6/xsk/parser.cpp | 2892 +++++++++++++++--------------- src/iw6/xsk/parser.hpp | 616 ++++--- src/iw7/xsk/compiler.cpp | 10 + src/iw7/xsk/lexer.cpp | 987 +++++------ src/iw7/xsk/lexer.hpp | 8 +- src/iw7/xsk/parser.cpp | 2892 +++++++++++++++--------------- src/iw7/xsk/parser.hpp | 616 ++++--- src/iw8/xsk/compiler.cpp | 10 + src/iw8/xsk/lexer.cpp | 1035 +++++------ src/iw8/xsk/lexer.hpp | 8 +- src/iw8/xsk/parser.cpp | 2990 ++++++++++++++++---------------- src/iw8/xsk/parser.hpp | 634 +++---- src/s1/xsk/compiler.cpp | 10 + src/s1/xsk/lexer.cpp | 998 +++++------ src/s1/xsk/lexer.hpp | 8 +- src/s1/xsk/parser.cpp | 2918 ++++++++++++++++--------------- src/s1/xsk/parser.hpp | 622 +++---- src/s2/xsk/compiler.cpp | 10 + src/s2/xsk/lexer.cpp | 998 +++++------ src/s2/xsk/lexer.hpp | 8 +- src/s2/xsk/parser.cpp | 2918 ++++++++++++++++--------------- src/s2/xsk/parser.hpp | 622 +++---- src/s4/xsk/compiler.cpp | 10 + src/s4/xsk/lexer.cpp | 1035 +++++------ src/s4/xsk/lexer.hpp | 8 +- src/s4/xsk/parser.cpp | 2990 ++++++++++++++++---------------- src/s4/xsk/parser.hpp | 634 +++---- src/utils/xsk/gsc/nodetree.cpp | 18 + src/utils/xsk/gsc/nodetree.hpp | 24 + 65 files changed, 21605 insertions(+), 20013 deletions(-) diff --git a/gen/h1/lexer.lpp b/gen/h1/lexer.lpp index d0701060..c43ff1ea 100644 --- a/gen/h1/lexer.lpp +++ b/gen/h1/lexer.lpp @@ -36,9 +36,9 @@ RGX_INT_HEX 0[xX][0-9a-fA-F]+ RGX_INT_DEC [0-9]+ RGX_DEFAULT (.|\n) -%x COMMENT_BLOCK_STATE -%s DEVBLOCK_ON_STATE -%x DEVBLOCK_OFF_STATE +%x COMMENT_STATE +%x DEV_OFF_STATE +%s DEV_ON_STATE %% @@ -46,24 +46,28 @@ RGX_DEFAULT (.|\n) ctx->loc.step(); %} -[ \t\r] { ctx->loc.step(); } - -\n { ctx->loc.lines(yyleng); ctx->loc.step(); } +[ \t\r] { ctx->loc.step(); } +\n { ctx->loc.lines(yyleng); ctx->loc.step(); } "//".* -"/*" { BEGIN(COMMENT_BLOCK_STATE); } -. -\n { ctx->loc.lines(yyleng); ctx->loc.step(); } -"*/" { BEGIN(INITIAL); } +"/*" { BEGIN(COMMENT_STATE); } +. +\n { ctx->loc.lines(yyleng); ctx->loc.step(); } +"*/" { BEGIN(INITIAL); } +<> { throw h1::parser::syntax_error(ctx->loc, "unmatched multiline comment start ('/*')"); } +"*/" { throw h1::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } -"/#" { BEGIN(ctx->mode == xsk::gsc::build::dev ? DEVBLOCK_ON_STATE : DEVBLOCK_OFF_STATE); } -. -\n { ctx->loc.lines(yyleng); ctx->loc.step(); } -"#/" { BEGIN(INITIAL); } +"/#" { throw h1::parser::syntax_error(ctx->loc, "cannot recurse devblock ('/#')"); } +"#/" { BEGIN(INITIAL); return h1::parser::make_DEVEND(ctx->loc); } +<> { throw h1::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } -"*/" { throw h1::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } -"#/" { throw h1::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } +"/#" { BEGIN(ctx->mode == xsk::gsc::build::dev ? DEV_ON_STATE : DEV_OFF_STATE); if(ctx->mode == xsk::gsc::build::dev) return h1::parser::make_DEVBEGIN(ctx->loc); } +. +\n { ctx->loc.lines(yyleng); ctx->loc.step(); } +"#/" { BEGIN(INITIAL); } +<> { throw h1::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } +"#/" { throw h1::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } "#inline" { return h1::parser::make_INLINE(ctx->loc); } "#include" { return h1::parser::make_INCLUDE(ctx->loc); } diff --git a/gen/h1/parser.ypp b/gen/h1/parser.ypp index 2b27c639..e67e7d49 100644 --- a/gen/h1/parser.ypp +++ b/gen/h1/parser.ypp @@ -45,6 +45,8 @@ using namespace xsk::gsc; xsk::gsc::h1::parser::symbol_type H1lex(yyscan_t yyscanner, xsk::gsc::context* ctx); } +%token DEVBEGIN "/#" +%token DEVEND "#/" %token INLINE "#inline" %token INCLUDE "#include" %token USINGTREE "#using_animtree" @@ -147,6 +149,7 @@ xsk::gsc::h1::parser::symbol_type H1lex(yyscan_t yyscanner, xsk::gsc::context* c %type decl_constant %type decl_thread %type stmt +%type stmt_dev %type stmt_block %type stmt_list %type stmt_expr @@ -277,7 +280,9 @@ include ; declaration - : decl_usingtree { $$.as_usingtree = std::move($1); } + : DEVBEGIN { $$.as_dev_begin = std::make_unique(@$); } + | DEVEND { $$.as_dev_end = std::make_unique(@$); } + | decl_usingtree { $$.as_usingtree = std::move($1); } | decl_constant { $$.as_constant = std::move($1); } | decl_thread { $$.as_thread = std::move($1); } ; @@ -298,7 +303,8 @@ decl_thread ; stmt - : stmt_block { $$.as_list = std::move($1); } + : stmt_dev { $$.as_list = std::move($1); } + | stmt_block { $$.as_list = std::move($1); } | stmt_call { $$.as_call = std::move($1); } | stmt_assign { $$.as_assign = std::move($1); } | stmt_endon { $$.as_endon = std::move($1); } @@ -325,6 +331,11 @@ stmt | stmt_prof_end { $$.as_prof_end = std::move($1); } ; +stmt_dev + : DEVBEGIN stmt_list DEVEND { $$ = std::move($2); } + | DEVBEGIN DEVEND { $$ = std::make_unique(@$); } + ; + stmt_block : LBRACE stmt_list RBRACE { $$ = std::move($2); } | LBRACE RBRACE { $$ = std::make_unique(@$); } diff --git a/gen/h2/lexer.lpp b/gen/h2/lexer.lpp index 0b38394f..c8b70bda 100644 --- a/gen/h2/lexer.lpp +++ b/gen/h2/lexer.lpp @@ -36,9 +36,9 @@ RGX_INT_HEX 0[xX][0-9a-fA-F]+ RGX_INT_DEC [0-9]+ RGX_DEFAULT (.|\n) -%x COMMENT_BLOCK_STATE -%s DEVBLOCK_ON_STATE -%x DEVBLOCK_OFF_STATE +%x COMMENT_STATE +%x DEV_OFF_STATE +%s DEV_ON_STATE %% @@ -46,24 +46,28 @@ RGX_DEFAULT (.|\n) ctx->loc.step(); %} -[ \t\r] { ctx->loc.step(); } - -\n { ctx->loc.lines(yyleng); ctx->loc.step(); } +[ \t\r] { ctx->loc.step(); } +\n { ctx->loc.lines(yyleng); ctx->loc.step(); } "//".* -"/*" { BEGIN(COMMENT_BLOCK_STATE); } -. -\n { ctx->loc.lines(yyleng); ctx->loc.step(); } -"*/" { BEGIN(INITIAL); } +"/*" { BEGIN(COMMENT_STATE); } +. +\n { ctx->loc.lines(yyleng); ctx->loc.step(); } +"*/" { BEGIN(INITIAL); } +<> { throw h2::parser::syntax_error(ctx->loc, "unmatched multiline comment start ('/*')"); } +"*/" { throw h2::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } -"/#" { BEGIN(ctx->mode == xsk::gsc::build::dev ? DEVBLOCK_ON_STATE : DEVBLOCK_OFF_STATE); } -. -\n { ctx->loc.lines(yyleng); ctx->loc.step(); } -"#/" { BEGIN(INITIAL); } +"/#" { throw h2::parser::syntax_error(ctx->loc, "cannot recurse devblock ('/#')"); } +"#/" { BEGIN(INITIAL); return h2::parser::make_DEVEND(ctx->loc); } +<> { throw h2::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } -"*/" { throw h2::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } -"#/" { throw h2::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } +"/#" { BEGIN(ctx->mode == xsk::gsc::build::dev ? DEV_ON_STATE : DEV_OFF_STATE); if(ctx->mode == xsk::gsc::build::dev) return h2::parser::make_DEVBEGIN(ctx->loc); } +. +\n { ctx->loc.lines(yyleng); ctx->loc.step(); } +"#/" { BEGIN(INITIAL); } +<> { throw h2::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } +"#/" { throw h2::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } "#inline" { return h2::parser::make_INLINE(ctx->loc); } "#include" { return h2::parser::make_INCLUDE(ctx->loc); } diff --git a/gen/h2/parser.ypp b/gen/h2/parser.ypp index 6597431d..3f66a29c 100644 --- a/gen/h2/parser.ypp +++ b/gen/h2/parser.ypp @@ -45,6 +45,8 @@ using namespace xsk::gsc; xsk::gsc::h2::parser::symbol_type H2lex(yyscan_t yyscanner, xsk::gsc::context* ctx); } +%token DEVBEGIN "/#" +%token DEVEND "#/" %token INLINE "#inline" %token INCLUDE "#include" %token USINGTREE "#using_animtree" @@ -147,6 +149,7 @@ xsk::gsc::h2::parser::symbol_type H2lex(yyscan_t yyscanner, xsk::gsc::context* c %type decl_constant %type decl_thread %type stmt +%type stmt_dev %type stmt_block %type stmt_list %type stmt_expr @@ -277,7 +280,9 @@ include ; declaration - : decl_usingtree { $$.as_usingtree = std::move($1); } + : DEVBEGIN { $$.as_dev_begin = std::make_unique(@$); } + | DEVEND { $$.as_dev_end = std::make_unique(@$); } + | decl_usingtree { $$.as_usingtree = std::move($1); } | decl_constant { $$.as_constant = std::move($1); } | decl_thread { $$.as_thread = std::move($1); } ; @@ -298,7 +303,8 @@ decl_thread ; stmt - : stmt_block { $$.as_list = std::move($1); } + : stmt_dev { $$.as_list = std::move($1); } + | stmt_block { $$.as_list = std::move($1); } | stmt_call { $$.as_call = std::move($1); } | stmt_assign { $$.as_assign = std::move($1); } | stmt_endon { $$.as_endon = std::move($1); } @@ -325,6 +331,11 @@ stmt | stmt_prof_end { $$.as_prof_end = std::move($1); } ; +stmt_dev + : DEVBEGIN stmt_list DEVEND { $$ = std::move($2); } + | DEVBEGIN DEVEND { $$ = std::make_unique(@$); } + ; + stmt_block : LBRACE stmt_list RBRACE { $$ = std::move($2); } | LBRACE RBRACE { $$ = std::make_unique(@$); } diff --git a/gen/iw5/lexer.lpp b/gen/iw5/lexer.lpp index 9d84ac15..a60643d5 100644 --- a/gen/iw5/lexer.lpp +++ b/gen/iw5/lexer.lpp @@ -36,9 +36,9 @@ RGX_INT_HEX 0[xX][0-9a-fA-F]+ RGX_INT_DEC [0-9]+ RGX_DEFAULT (.|\n) -%x COMMENT_BLOCK_STATE -%s DEVBLOCK_ON_STATE -%x DEVBLOCK_OFF_STATE +%x COMMENT_STATE +%x DEV_OFF_STATE +%s DEV_ON_STATE %% @@ -46,24 +46,28 @@ RGX_DEFAULT (.|\n) ctx->loc.step(); %} -[ \t\r] { ctx->loc.step(); } - -\n { ctx->loc.lines(yyleng); ctx->loc.step(); } +[ \t\r] { ctx->loc.step(); } +\n { ctx->loc.lines(yyleng); ctx->loc.step(); } "//".* -"/*" { BEGIN(COMMENT_BLOCK_STATE); } -. -\n { ctx->loc.lines(yyleng); ctx->loc.step(); } -"*/" { BEGIN(INITIAL); } +"/*" { BEGIN(COMMENT_STATE); } +. +\n { ctx->loc.lines(yyleng); ctx->loc.step(); } +"*/" { BEGIN(INITIAL); } +<> { throw iw5::parser::syntax_error(ctx->loc, "unmatched multiline comment start ('/*')"); } +"*/" { throw iw5::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } -"/#" { BEGIN(ctx->mode == xsk::gsc::build::dev ? DEVBLOCK_ON_STATE : DEVBLOCK_OFF_STATE); } -. -\n { ctx->loc.lines(yyleng); ctx->loc.step(); } -"#/" { BEGIN(INITIAL); } +"/#" { throw iw5::parser::syntax_error(ctx->loc, "cannot recurse devblock ('/#')"); } +"#/" { BEGIN(INITIAL); return iw5::parser::make_DEVEND(ctx->loc); } +<> { throw iw5::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } -"*/" { throw iw5::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } -"#/" { throw iw5::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } +"/#" { BEGIN(ctx->mode == xsk::gsc::build::dev ? DEV_ON_STATE : DEV_OFF_STATE); if(ctx->mode == xsk::gsc::build::dev) return iw5::parser::make_DEVBEGIN(ctx->loc); } +. +\n { ctx->loc.lines(yyleng); ctx->loc.step(); } +"#/" { BEGIN(INITIAL); } +<> { throw iw5::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } +"#/" { throw iw5::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } "#inline" { return iw5::parser::make_INLINE(ctx->loc); } "#include" { return iw5::parser::make_INCLUDE(ctx->loc); } diff --git a/gen/iw5/parser.ypp b/gen/iw5/parser.ypp index d29fdbd7..f7f12241 100644 --- a/gen/iw5/parser.ypp +++ b/gen/iw5/parser.ypp @@ -45,6 +45,8 @@ using namespace xsk::gsc; xsk::gsc::iw5::parser::symbol_type IW5lex(yyscan_t yyscanner, xsk::gsc::context* ctx); } +%token DEVBEGIN "/#" +%token DEVEND "#/" %token INLINE "#inline" %token INCLUDE "#include" %token USINGTREE "#using_animtree" @@ -146,6 +148,7 @@ xsk::gsc::iw5::parser::symbol_type IW5lex(yyscan_t yyscanner, xsk::gsc::context* %type decl_constant %type decl_thread %type stmt +%type stmt_dev %type stmt_block %type stmt_list %type stmt_expr @@ -275,7 +278,9 @@ include ; declaration - : decl_usingtree { $$.as_usingtree = std::move($1); } + : DEVBEGIN { $$.as_dev_begin = std::make_unique(@$); } + | DEVEND { $$.as_dev_end = std::make_unique(@$); } + | decl_usingtree { $$.as_usingtree = std::move($1); } | decl_constant { $$.as_constant = std::move($1); } | decl_thread { $$.as_thread = std::move($1); } ; @@ -296,7 +301,8 @@ decl_thread ; stmt - : stmt_block { $$.as_list = std::move($1); } + : stmt_dev { $$.as_list = std::move($1); } + | stmt_block { $$.as_list = std::move($1); } | stmt_call { $$.as_call = std::move($1); } | stmt_assign { $$.as_assign = std::move($1); } | stmt_endon { $$.as_endon = std::move($1); } @@ -322,6 +328,11 @@ stmt | stmt_prof_end { $$.as_prof_end = std::move($1); } ; +stmt_dev + : DEVBEGIN stmt_list DEVEND { $$ = std::move($2); } + | DEVBEGIN DEVEND { $$ = std::make_unique(@$); } + ; + stmt_block : LBRACE stmt_list RBRACE { $$ = std::move($2); } | LBRACE RBRACE { $$ = std::make_unique(@$); } diff --git a/gen/iw6/lexer.lpp b/gen/iw6/lexer.lpp index fa2f5e16..afbf91a4 100644 --- a/gen/iw6/lexer.lpp +++ b/gen/iw6/lexer.lpp @@ -36,9 +36,9 @@ RGX_INT_HEX 0[xX][0-9a-fA-F]+ RGX_INT_DEC [0-9]+ RGX_DEFAULT (.|\n) -%x COMMENT_BLOCK_STATE -%s DEVBLOCK_ON_STATE -%x DEVBLOCK_OFF_STATE +%x COMMENT_STATE +%x DEV_OFF_STATE +%s DEV_ON_STATE %% @@ -46,24 +46,28 @@ RGX_DEFAULT (.|\n) ctx->loc.step(); %} -[ \t\r] { ctx->loc.step(); } - -\n { ctx->loc.lines(yyleng); ctx->loc.step(); } +[ \t\r] { ctx->loc.step(); } +\n { ctx->loc.lines(yyleng); ctx->loc.step(); } "//".* -"/*" { BEGIN(COMMENT_BLOCK_STATE); } -. -\n { ctx->loc.lines(yyleng); ctx->loc.step(); } -"*/" { BEGIN(INITIAL); } +"/*" { BEGIN(COMMENT_STATE); } +. +\n { ctx->loc.lines(yyleng); ctx->loc.step(); } +"*/" { BEGIN(INITIAL); } +<> { throw iw6::parser::syntax_error(ctx->loc, "unmatched multiline comment start ('/*')"); } +"*/" { throw iw6::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } -"/#" { BEGIN(ctx->mode == xsk::gsc::build::dev ? DEVBLOCK_ON_STATE : DEVBLOCK_OFF_STATE); } -. -\n { ctx->loc.lines(yyleng); ctx->loc.step(); } -"#/" { BEGIN(INITIAL); } +"/#" { throw iw6::parser::syntax_error(ctx->loc, "cannot recurse devblock ('/#')"); } +"#/" { BEGIN(INITIAL); return iw6::parser::make_DEVEND(ctx->loc); } +<> { throw iw6::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } -"*/" { throw iw6::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } -"#/" { throw iw6::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } +"/#" { BEGIN(ctx->mode == xsk::gsc::build::dev ? DEV_ON_STATE : DEV_OFF_STATE); if(ctx->mode == xsk::gsc::build::dev) return iw6::parser::make_DEVBEGIN(ctx->loc); } +. +\n { ctx->loc.lines(yyleng); ctx->loc.step(); } +"#/" { BEGIN(INITIAL); } +<> { throw iw6::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } +"#/" { throw iw6::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } "#inline" { return iw6::parser::make_INLINE(ctx->loc); } "#include" { return iw6::parser::make_INCLUDE(ctx->loc); } diff --git a/gen/iw6/parser.ypp b/gen/iw6/parser.ypp index 3967a98a..93ed7b22 100644 --- a/gen/iw6/parser.ypp +++ b/gen/iw6/parser.ypp @@ -45,6 +45,8 @@ using namespace xsk::gsc; xsk::gsc::iw6::parser::symbol_type IW6lex(yyscan_t yyscanner, xsk::gsc::context* ctx); } +%token DEVBEGIN "/#" +%token DEVEND "#/" %token INLINE "#inline" %token INCLUDE "#include" %token USINGTREE "#using_animtree" @@ -146,6 +148,7 @@ xsk::gsc::iw6::parser::symbol_type IW6lex(yyscan_t yyscanner, xsk::gsc::context* %type decl_constant %type decl_thread %type stmt +%type stmt_dev %type stmt_block %type stmt_list %type stmt_expr @@ -275,7 +278,9 @@ include ; declaration - : decl_usingtree { $$.as_usingtree = std::move($1); } + : DEVBEGIN { $$.as_dev_begin = std::make_unique(@$); } + | DEVEND { $$.as_dev_end = std::make_unique(@$); } + | decl_usingtree { $$.as_usingtree = std::move($1); } | decl_constant { $$.as_constant = std::move($1); } | decl_thread { $$.as_thread = std::move($1); } ; @@ -296,7 +301,8 @@ decl_thread ; stmt - : stmt_block { $$.as_list = std::move($1); } + : stmt_dev { $$.as_list = std::move($1); } + | stmt_block { $$.as_list = std::move($1); } | stmt_call { $$.as_call = std::move($1); } | stmt_assign { $$.as_assign = std::move($1); } | stmt_endon { $$.as_endon = std::move($1); } @@ -322,6 +328,11 @@ stmt | stmt_prof_end { $$.as_prof_end = std::move($1); } ; +stmt_dev + : DEVBEGIN stmt_list DEVEND { $$ = std::move($2); } + | DEVBEGIN DEVEND { $$ = std::make_unique(@$); } + ; + stmt_block : LBRACE stmt_list RBRACE { $$ = std::move($2); } | LBRACE RBRACE { $$ = std::make_unique(@$); } diff --git a/gen/iw7/lexer.lpp b/gen/iw7/lexer.lpp index 7e34291a..b80544aa 100644 --- a/gen/iw7/lexer.lpp +++ b/gen/iw7/lexer.lpp @@ -36,9 +36,9 @@ RGX_INT_HEX 0[xX][0-9a-fA-F]+ RGX_INT_DEC [0-9]+ RGX_DEFAULT (.|\n) -%x COMMENT_BLOCK_STATE -%s DEVBLOCK_ON_STATE -%x DEVBLOCK_OFF_STATE +%x COMMENT_STATE +%x DEV_OFF_STATE +%s DEV_ON_STATE %% @@ -46,24 +46,28 @@ RGX_DEFAULT (.|\n) ctx->loc.step(); %} -[ \t\r] { ctx->loc.step(); } - -\n { ctx->loc.lines(yyleng); ctx->loc.step(); } +[ \t\r] { ctx->loc.step(); } +\n { ctx->loc.lines(yyleng); ctx->loc.step(); } "//".* -"/*" { BEGIN(COMMENT_BLOCK_STATE); } -. -\n { ctx->loc.lines(yyleng); ctx->loc.step(); } -"*/" { BEGIN(INITIAL); } +"/*" { BEGIN(COMMENT_STATE); } +. +\n { ctx->loc.lines(yyleng); ctx->loc.step(); } +"*/" { BEGIN(INITIAL); } +<> { throw iw7::parser::syntax_error(ctx->loc, "unmatched multiline comment start ('/*')"); } +"*/" { throw iw7::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } -"/#" { BEGIN(ctx->mode == xsk::gsc::build::dev ? DEVBLOCK_ON_STATE : DEVBLOCK_OFF_STATE); } -. -\n { ctx->loc.lines(yyleng); ctx->loc.step(); } -"#/" { BEGIN(INITIAL); } +"/#" { throw iw7::parser::syntax_error(ctx->loc, "cannot recurse devblock ('/#')"); } +"#/" { BEGIN(INITIAL); return iw7::parser::make_DEVEND(ctx->loc); } +<> { throw iw7::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } -"*/" { throw iw7::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } -"#/" { throw iw7::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } +"/#" { BEGIN(ctx->mode == xsk::gsc::build::dev ? DEV_ON_STATE : DEV_OFF_STATE); if(ctx->mode == xsk::gsc::build::dev) return iw7::parser::make_DEVBEGIN(ctx->loc); } +. +\n { ctx->loc.lines(yyleng); ctx->loc.step(); } +"#/" { BEGIN(INITIAL); } +<> { throw iw7::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } +"#/" { throw iw7::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } "#inline" { return iw7::parser::make_INLINE(ctx->loc); } "#include" { return iw7::parser::make_INCLUDE(ctx->loc); } diff --git a/gen/iw7/parser.ypp b/gen/iw7/parser.ypp index 7149fab1..ee4b169c 100644 --- a/gen/iw7/parser.ypp +++ b/gen/iw7/parser.ypp @@ -45,6 +45,8 @@ using namespace xsk::gsc; xsk::gsc::iw7::parser::symbol_type IW7lex(yyscan_t yyscanner, xsk::gsc::context* ctx); } +%token DEVBEGIN "/#" +%token DEVEND "#/" %token INLINE "#inline" %token INCLUDE "#include" %token USINGTREE "#using_animtree" @@ -146,6 +148,7 @@ xsk::gsc::iw7::parser::symbol_type IW7lex(yyscan_t yyscanner, xsk::gsc::context* %type decl_constant %type decl_thread %type stmt +%type stmt_dev %type stmt_block %type stmt_list %type stmt_expr @@ -275,7 +278,9 @@ include ; declaration - : decl_usingtree { $$.as_usingtree = std::move($1); } + : DEVBEGIN { $$.as_dev_begin = std::make_unique(@$); } + | DEVEND { $$.as_dev_end = std::make_unique(@$); } + | decl_usingtree { $$.as_usingtree = std::move($1); } | decl_constant { $$.as_constant = std::move($1); } | decl_thread { $$.as_thread = std::move($1); } ; @@ -296,7 +301,8 @@ decl_thread ; stmt - : stmt_block { $$.as_list = std::move($1); } + : stmt_dev { $$.as_list = std::move($1); } + | stmt_block { $$.as_list = std::move($1); } | stmt_call { $$.as_call = std::move($1); } | stmt_assign { $$.as_assign = std::move($1); } | stmt_endon { $$.as_endon = std::move($1); } @@ -322,6 +328,11 @@ stmt | stmt_prof_end { $$.as_prof_end = std::move($1); } ; +stmt_dev + : DEVBEGIN stmt_list DEVEND { $$ = std::move($2); } + | DEVBEGIN DEVEND { $$ = std::make_unique(@$); } + ; + stmt_block : LBRACE stmt_list RBRACE { $$ = std::move($2); } | LBRACE RBRACE { $$ = std::make_unique(@$); } diff --git a/gen/iw8/lexer.lpp b/gen/iw8/lexer.lpp index ad9479ae..b1b8dcda 100644 --- a/gen/iw8/lexer.lpp +++ b/gen/iw8/lexer.lpp @@ -36,9 +36,9 @@ RGX_INT_HEX 0[xX][0-9a-fA-F]+ RGX_INT_DEC [0-9]+ RGX_DEFAULT (.|\n) -%x COMMENT_BLOCK_STATE -%s DEVBLOCK_ON_STATE -%x DEVBLOCK_OFF_STATE +%x COMMENT_STATE +%x DEV_OFF_STATE +%s DEV_ON_STATE %% @@ -46,24 +46,28 @@ RGX_DEFAULT (.|\n) ctx->loc.step(); %} -[ \t\r] { ctx->loc.step(); } - -\n { ctx->loc.lines(yyleng); ctx->loc.step(); } +[ \t\r] { ctx->loc.step(); } +\n { ctx->loc.lines(yyleng); ctx->loc.step(); } "//".* -"/*" { BEGIN(COMMENT_BLOCK_STATE); } -. -\n { ctx->loc.lines(yyleng); ctx->loc.step(); } -"*/" { BEGIN(INITIAL); } +"/*" { BEGIN(COMMENT_STATE); } +. +\n { ctx->loc.lines(yyleng); ctx->loc.step(); } +"*/" { BEGIN(INITIAL); } +<> { throw iw8::parser::syntax_error(ctx->loc, "unmatched multiline comment start ('/*')"); } +"*/" { throw iw8::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } -"/#" { BEGIN(ctx->mode == xsk::gsc::build::dev ? DEVBLOCK_ON_STATE : DEVBLOCK_OFF_STATE); } -. -\n { ctx->loc.lines(yyleng); ctx->loc.step(); } -"#/" { BEGIN(INITIAL); } +"/#" { throw iw8::parser::syntax_error(ctx->loc, "cannot recurse devblock ('/#')"); } +"#/" { BEGIN(INITIAL); return iw8::parser::make_DEVEND(ctx->loc); } +<> { throw iw8::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } -"*/" { throw iw8::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } -"#/" { throw iw8::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } +"/#" { BEGIN(ctx->mode == xsk::gsc::build::dev ? DEV_ON_STATE : DEV_OFF_STATE); if(ctx->mode == xsk::gsc::build::dev) return iw8::parser::make_DEVBEGIN(ctx->loc); } +. +\n { ctx->loc.lines(yyleng); ctx->loc.step(); } +"#/" { BEGIN(INITIAL); } +<> { throw iw8::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } +"#/" { throw iw8::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } "#inline" { return iw8::parser::make_INLINE(ctx->loc); } "#include" { return iw8::parser::make_INCLUDE(ctx->loc); } diff --git a/gen/iw8/parser.ypp b/gen/iw8/parser.ypp index ec8bb155..9ac91fba 100644 --- a/gen/iw8/parser.ypp +++ b/gen/iw8/parser.ypp @@ -45,6 +45,8 @@ using namespace xsk::gsc; xsk::gsc::iw8::parser::symbol_type IW8lex(yyscan_t yyscanner, xsk::gsc::context* ctx); } +%token DEVBEGIN "/#" +%token DEVEND "#/" %token INLINE "#inline" %token INCLUDE "#include" %token USINGTREE "#using_animtree" @@ -149,6 +151,7 @@ xsk::gsc::iw8::parser::symbol_type IW8lex(yyscan_t yyscanner, xsk::gsc::context* %type decl_constant %type decl_thread %type stmt +%type stmt_dev %type stmt_block %type stmt_list %type stmt_expr @@ -281,7 +284,9 @@ include ; declaration - : decl_usingtree { $$.as_usingtree = std::move($1); } + : DEVBEGIN { $$.as_dev_begin = std::make_unique(@$); } + | DEVEND { $$.as_dev_end = std::make_unique(@$); } + | decl_usingtree { $$.as_usingtree = std::move($1); } | decl_constant { $$.as_constant = std::move($1); } | decl_thread { $$.as_thread = std::move($1); } ; @@ -302,7 +307,8 @@ decl_thread ; stmt - : stmt_block { $$.as_list = std::move($1); } + : stmt_dev { $$.as_list = std::move($1); } + | stmt_block { $$.as_list = std::move($1); } | stmt_call { $$.as_call = std::move($1); } | stmt_assign { $$.as_assign = std::move($1); } | stmt_endon { $$.as_endon = std::move($1); } @@ -329,6 +335,11 @@ stmt | stmt_prof_end { $$.as_prof_end = std::move($1); } ; +stmt_dev + : DEVBEGIN stmt_list DEVEND { $$ = std::move($2); } + | DEVBEGIN DEVEND { $$ = std::make_unique(@$); } + ; + stmt_block : LBRACE stmt_list RBRACE { $$ = std::move($2); } | LBRACE RBRACE { $$ = std::make_unique(@$); } diff --git a/gen/s1/lexer.lpp b/gen/s1/lexer.lpp index 4a32a474..3c9fc46f 100644 --- a/gen/s1/lexer.lpp +++ b/gen/s1/lexer.lpp @@ -36,9 +36,9 @@ RGX_INT_HEX 0[xX][0-9a-fA-F]+ RGX_INT_DEC [0-9]+ RGX_DEFAULT (.|\n) -%x COMMENT_BLOCK_STATE -%s DEVBLOCK_ON_STATE -%x DEVBLOCK_OFF_STATE +%x COMMENT_STATE +%x DEV_OFF_STATE +%s DEV_ON_STATE %% @@ -46,24 +46,28 @@ RGX_DEFAULT (.|\n) ctx->loc.step(); %} -[ \t\r] { ctx->loc.step(); } - -\n { ctx->loc.lines(yyleng); ctx->loc.step(); } +[ \t\r] { ctx->loc.step(); } +\n { ctx->loc.lines(yyleng); ctx->loc.step(); } "//".* -"/*" { BEGIN(COMMENT_BLOCK_STATE); } -. -\n { ctx->loc.lines(yyleng); ctx->loc.step(); } -"*/" { BEGIN(INITIAL); } +"/*" { BEGIN(COMMENT_STATE); } +. +\n { ctx->loc.lines(yyleng); ctx->loc.step(); } +"*/" { BEGIN(INITIAL); } +<> { throw s1::parser::syntax_error(ctx->loc, "unmatched multiline comment start ('/*')"); } +"*/" { throw s1::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } -"/#" { BEGIN(ctx->mode == xsk::gsc::build::dev ? DEVBLOCK_ON_STATE : DEVBLOCK_OFF_STATE); } -. -\n { ctx->loc.lines(yyleng); ctx->loc.step(); } -"#/" { BEGIN(INITIAL); } +"/#" { throw s1::parser::syntax_error(ctx->loc, "cannot recurse devblock ('/#')"); } +"#/" { BEGIN(INITIAL); return s1::parser::make_DEVEND(ctx->loc); } +<> { throw s1::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } -"*/" { throw s1::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } -"#/" { throw s1::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } +"/#" { BEGIN(ctx->mode == xsk::gsc::build::dev ? DEV_ON_STATE : DEV_OFF_STATE); if(ctx->mode == xsk::gsc::build::dev) return s1::parser::make_DEVBEGIN(ctx->loc); } +. +\n { ctx->loc.lines(yyleng); ctx->loc.step(); } +"#/" { BEGIN(INITIAL); } +<> { throw s1::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } +"#/" { throw s1::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } "#inline" { return s1::parser::make_INLINE(ctx->loc); } "#include" { return s1::parser::make_INCLUDE(ctx->loc); } diff --git a/gen/s1/parser.ypp b/gen/s1/parser.ypp index 767f2fbb..413ca946 100644 --- a/gen/s1/parser.ypp +++ b/gen/s1/parser.ypp @@ -45,6 +45,8 @@ using namespace xsk::gsc; xsk::gsc::s1::parser::symbol_type S1lex(yyscan_t yyscanner, xsk::gsc::context* ctx); } +%token DEVBEGIN "/#" +%token DEVEND "#/" %token INLINE "#inline" %token INCLUDE "#include" %token USINGTREE "#using_animtree" @@ -147,6 +149,7 @@ xsk::gsc::s1::parser::symbol_type S1lex(yyscan_t yyscanner, xsk::gsc::context* c %type decl_constant %type decl_thread %type stmt +%type stmt_dev %type stmt_block %type stmt_list %type stmt_expr @@ -277,7 +280,9 @@ include ; declaration - : decl_usingtree { $$.as_usingtree = std::move($1); } + : DEVBEGIN { $$.as_dev_begin = std::make_unique(@$); } + | DEVEND { $$.as_dev_end = std::make_unique(@$); } + | decl_usingtree { $$.as_usingtree = std::move($1); } | decl_constant { $$.as_constant = std::move($1); } | decl_thread { $$.as_thread = std::move($1); } ; @@ -298,7 +303,8 @@ decl_thread ; stmt - : stmt_block { $$.as_list = std::move($1); } + : stmt_dev { $$.as_list = std::move($1); } + | stmt_block { $$.as_list = std::move($1); } | stmt_call { $$.as_call = std::move($1); } | stmt_assign { $$.as_assign = std::move($1); } | stmt_endon { $$.as_endon = std::move($1); } @@ -325,6 +331,11 @@ stmt | stmt_prof_end { $$.as_prof_end = std::move($1); } ; +stmt_dev + : DEVBEGIN stmt_list DEVEND { $$ = std::move($2); } + | DEVBEGIN DEVEND { $$ = std::make_unique(@$); } + ; + stmt_block : LBRACE stmt_list RBRACE { $$ = std::move($2); } | LBRACE RBRACE { $$ = std::make_unique(@$); } diff --git a/gen/s2/lexer.lpp b/gen/s2/lexer.lpp index cbd94cb1..16e56506 100644 --- a/gen/s2/lexer.lpp +++ b/gen/s2/lexer.lpp @@ -36,9 +36,9 @@ RGX_INT_HEX 0[xX][0-9a-fA-F]+ RGX_INT_DEC [0-9]+ RGX_DEFAULT (.|\n) -%x COMMENT_BLOCK_STATE -%s DEVBLOCK_ON_STATE -%x DEVBLOCK_OFF_STATE +%x COMMENT_STATE +%x DEV_OFF_STATE +%s DEV_ON_STATE %% @@ -46,24 +46,28 @@ RGX_DEFAULT (.|\n) ctx->loc.step(); %} -[ \t\r] { ctx->loc.step(); } - -\n { ctx->loc.lines(yyleng); ctx->loc.step(); } +[ \t\r] { ctx->loc.step(); } +\n { ctx->loc.lines(yyleng); ctx->loc.step(); } "//".* -"/*" { BEGIN(COMMENT_BLOCK_STATE); } -. -\n { ctx->loc.lines(yyleng); ctx->loc.step(); } -"*/" { BEGIN(INITIAL); } +"/*" { BEGIN(COMMENT_STATE); } +. +\n { ctx->loc.lines(yyleng); ctx->loc.step(); } +"*/" { BEGIN(INITIAL); } +<> { throw s2::parser::syntax_error(ctx->loc, "unmatched multiline comment start ('/*')"); } +"*/" { throw s2::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } -"/#" { BEGIN(ctx->mode == xsk::gsc::build::dev ? DEVBLOCK_ON_STATE : DEVBLOCK_OFF_STATE); } -. -\n { ctx->loc.lines(yyleng); ctx->loc.step(); } -"#/" { BEGIN(INITIAL); } +"/#" { throw s2::parser::syntax_error(ctx->loc, "cannot recurse devblock ('/#')"); } +"#/" { BEGIN(INITIAL); return s2::parser::make_DEVEND(ctx->loc); } +<> { throw s2::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } -"*/" { throw s2::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } -"#/" { throw s2::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } +"/#" { BEGIN(ctx->mode == xsk::gsc::build::dev ? DEV_ON_STATE : DEV_OFF_STATE); if(ctx->mode == xsk::gsc::build::dev) return s2::parser::make_DEVBEGIN(ctx->loc); } +. +\n { ctx->loc.lines(yyleng); ctx->loc.step(); } +"#/" { BEGIN(INITIAL); } +<> { throw s2::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } +"#/" { throw s2::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } "#inline" { return s2::parser::make_INLINE(ctx->loc); } "#include" { return s2::parser::make_INCLUDE(ctx->loc); } diff --git a/gen/s2/parser.ypp b/gen/s2/parser.ypp index d16ecc50..bcfe681f 100644 --- a/gen/s2/parser.ypp +++ b/gen/s2/parser.ypp @@ -45,6 +45,8 @@ using namespace xsk::gsc; xsk::gsc::s2::parser::symbol_type S2lex(yyscan_t yyscanner, xsk::gsc::context* ctx); } +%token DEVBEGIN "/#" +%token DEVEND "#/" %token INLINE "#inline" %token INCLUDE "#include" %token USINGTREE "#using_animtree" @@ -147,6 +149,7 @@ xsk::gsc::s2::parser::symbol_type S2lex(yyscan_t yyscanner, xsk::gsc::context* c %type decl_constant %type decl_thread %type stmt +%type stmt_dev %type stmt_block %type stmt_list %type stmt_expr @@ -277,7 +280,9 @@ include ; declaration - : decl_usingtree { $$.as_usingtree = std::move($1); } + : DEVBEGIN { $$.as_dev_begin = std::make_unique(@$); } + | DEVEND { $$.as_dev_end = std::make_unique(@$); } + | decl_usingtree { $$.as_usingtree = std::move($1); } | decl_constant { $$.as_constant = std::move($1); } | decl_thread { $$.as_thread = std::move($1); } ; @@ -298,7 +303,8 @@ decl_thread ; stmt - : stmt_block { $$.as_list = std::move($1); } + : stmt_dev { $$.as_list = std::move($1); } + | stmt_block { $$.as_list = std::move($1); } | stmt_call { $$.as_call = std::move($1); } | stmt_assign { $$.as_assign = std::move($1); } | stmt_endon { $$.as_endon = std::move($1); } @@ -325,6 +331,11 @@ stmt | stmt_prof_end { $$.as_prof_end = std::move($1); } ; +stmt_dev + : DEVBEGIN stmt_list DEVEND { $$ = std::move($2); } + | DEVBEGIN DEVEND { $$ = std::make_unique(@$); } + ; + stmt_block : LBRACE stmt_list RBRACE { $$ = std::move($2); } | LBRACE RBRACE { $$ = std::make_unique(@$); } diff --git a/gen/s4/lexer.lpp b/gen/s4/lexer.lpp index 4669a8e9..3b856402 100644 --- a/gen/s4/lexer.lpp +++ b/gen/s4/lexer.lpp @@ -36,9 +36,9 @@ RGX_INT_HEX 0[xX][0-9a-fA-F]+ RGX_INT_DEC [0-9]+ RGX_DEFAULT (.|\n) -%x COMMENT_BLOCK_STATE -%s DEVBLOCK_ON_STATE -%x DEVBLOCK_OFF_STATE +%x COMMENT_STATE +%x DEV_OFF_STATE +%s DEV_ON_STATE %% @@ -46,24 +46,28 @@ RGX_DEFAULT (.|\n) ctx->loc.step(); %} -[ \t\r] { ctx->loc.step(); } - -\n { ctx->loc.lines(yyleng); ctx->loc.step(); } +[ \t\r] { ctx->loc.step(); } +\n { ctx->loc.lines(yyleng); ctx->loc.step(); } "//".* -"/*" { BEGIN(COMMENT_BLOCK_STATE); } -. -\n { ctx->loc.lines(yyleng); ctx->loc.step(); } -"*/" { BEGIN(INITIAL); } +"/*" { BEGIN(COMMENT_STATE); } +. +\n { ctx->loc.lines(yyleng); ctx->loc.step(); } +"*/" { BEGIN(INITIAL); } +<> { throw s4::parser::syntax_error(ctx->loc, "unmatched multiline comment start ('/*')"); } +"*/" { throw s4::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } -"/#" { BEGIN(ctx->mode == xsk::gsc::build::dev ? DEVBLOCK_ON_STATE : DEVBLOCK_OFF_STATE); } -. -\n { ctx->loc.lines(yyleng); ctx->loc.step(); } -"#/" { BEGIN(INITIAL); } +"/#" { throw s4::parser::syntax_error(ctx->loc, "cannot recurse devblock ('/#')"); } +"#/" { BEGIN(INITIAL); return s4::parser::make_DEVEND(ctx->loc); } +<> { throw s4::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } -"*/" { throw s4::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } -"#/" { throw s4::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } +"/#" { BEGIN(ctx->mode == xsk::gsc::build::dev ? DEV_ON_STATE : DEV_OFF_STATE); if(ctx->mode == xsk::gsc::build::dev) return s4::parser::make_DEVBEGIN(ctx->loc); } +. +\n { ctx->loc.lines(yyleng); ctx->loc.step(); } +"#/" { BEGIN(INITIAL); } +<> { throw s4::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } +"#/" { throw s4::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } "#inline" { return s4::parser::make_INLINE(ctx->loc); } "#include" { return s4::parser::make_INCLUDE(ctx->loc); } diff --git a/gen/s4/parser.ypp b/gen/s4/parser.ypp index f869cc41..3d3274a1 100644 --- a/gen/s4/parser.ypp +++ b/gen/s4/parser.ypp @@ -45,6 +45,8 @@ using namespace xsk::gsc; xsk::gsc::s4::parser::symbol_type S4lex(yyscan_t yyscanner, xsk::gsc::context* ctx); } +%token DEVBEGIN "/#" +%token DEVEND "#/" %token INLINE "#inline" %token INCLUDE "#include" %token USINGTREE "#using_animtree" @@ -149,6 +151,7 @@ xsk::gsc::s4::parser::symbol_type S4lex(yyscan_t yyscanner, xsk::gsc::context* c %type decl_constant %type decl_thread %type stmt +%type stmt_dev %type stmt_block %type stmt_list %type stmt_expr @@ -281,7 +284,9 @@ include ; declaration - : decl_usingtree { $$.as_usingtree = std::move($1); } + : DEVBEGIN { $$.as_dev_begin = std::make_unique(@$); } + | DEVEND { $$.as_dev_end = std::make_unique(@$); } + | decl_usingtree { $$.as_usingtree = std::move($1); } | decl_constant { $$.as_constant = std::move($1); } | decl_thread { $$.as_thread = std::move($1); } ; @@ -302,7 +307,8 @@ decl_thread ; stmt - : stmt_block { $$.as_list = std::move($1); } + : stmt_dev { $$.as_list = std::move($1); } + | stmt_block { $$.as_list = std::move($1); } | stmt_call { $$.as_call = std::move($1); } | stmt_assign { $$.as_assign = std::move($1); } | stmt_endon { $$.as_endon = std::move($1); } @@ -329,6 +335,11 @@ stmt | stmt_prof_end { $$.as_prof_end = std::move($1); } ; +stmt_dev + : DEVBEGIN stmt_list DEVEND { $$ = std::move($2); } + | DEVBEGIN DEVEND { $$ = std::make_unique(@$); } + ; + stmt_block : LBRACE stmt_list RBRACE { $$ = std::move($2); } | LBRACE RBRACE { $$ = std::make_unique(@$); } diff --git a/src/h1/xsk/compiler.cpp b/src/h1/xsk/compiler.cpp index c6cc1137..0386d148 100644 --- a/src/h1/xsk/compiler.cpp +++ b/src/h1/xsk/compiler.cpp @@ -85,6 +85,7 @@ void compiler::compile_program(const ast::program::ptr& program) constants_.clear(); local_functions_.clear(); index_ = 1; + developer_thread_ = false; for (const auto& entry : program->declarations) { @@ -150,6 +151,12 @@ void compiler::emit_declaration(const ast::decl& decl) { switch (decl.kind()) { + case ast::kind::decl_dev_begin: + developer_thread_ = true; + break; + case ast::kind::decl_dev_end: + developer_thread_ = false; + break; case ast::kind::decl_usingtree: emit_decl_usingtree(decl.as_usingtree); break; @@ -166,6 +173,9 @@ void compiler::emit_declaration(const ast::decl& decl) void compiler::emit_decl_usingtree(const ast::decl_usingtree::ptr& animtree) { + if(developer_thread_) + throw comp_error(animtree->loc(), "cannot put #using_animtree inside /# ... #/ comment"); + animtrees_.push_back({ animtree->name->value, false }); } diff --git a/src/h1/xsk/lexer.cpp b/src/h1/xsk/lexer.cpp index e6ca5b73..d5a97226 100644 --- a/src/h1/xsk/lexer.cpp +++ b/src/h1/xsk/lexer.cpp @@ -555,8 +555,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 109 -#define YY_END_OF_BUFFER 110 +#define YY_NUM_RULES 111 +#define YY_END_OF_BUFFER 112 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -564,44 +564,45 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[330] = +static const flex_int16_t yy_accept[333] = { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 110, 108, - 1, 2, 93, 108, 108, 92, 96, 108, 53, 54, - 90, 88, 59, 89, 60, 91, 107, 107, 62, 63, - 77, 87, 78, 64, 99, 57, 58, 97, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 55, 95, 56, 94, 5, 6, - 5, 108, 90, 9, 10, 9, 74, 0, 101, 0, - 13, 0, 0, 0, 0, 83, 0, 72, 0, 85, - 0, 0, 12, 81, 65, 79, 66, 80, 103, 0, - 8, 4, 3, 82, 103, 107, 104, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 112, 110, + 1, 2, 95, 110, 110, 94, 98, 110, 55, 56, + 92, 90, 61, 91, 62, 93, 109, 109, 64, 65, + 79, 89, 80, 66, 101, 59, 60, 99, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 57, 97, 58, 96, 5, 6, + 5, 12, 13, 12, 110, 92, 93, 76, 0, 103, + 0, 15, 0, 0, 0, 0, 85, 0, 74, 0, + 87, 0, 0, 8, 83, 67, 81, 68, 82, 105, + 0, 11, 4, 3, 84, 105, 109, 106, 0, 0, - 0, 61, 69, 75, 73, 76, 70, 99, 86, 99, - 99, 99, 99, 99, 99, 27, 99, 99, 99, 99, - 99, 25, 31, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 84, 71, 7, 11, 0, 101, - 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, - 0, 101, 0, 103, 0, 3, 103, 103, 104, 105, - 106, 98, 67, 68, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 29, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, 102, 0, - 0, 0, 0, 0, 100, 0, 0, 100, 0, 0, + 0, 0, 63, 71, 77, 75, 78, 72, 101, 88, + 101, 101, 101, 101, 101, 101, 29, 101, 101, 101, + 101, 101, 27, 33, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 86, 73, 7, 14, 10, + 9, 0, 103, 0, 0, 0, 0, 0, 0, 102, + 0, 0, 0, 0, 103, 0, 105, 0, 3, 105, + 105, 106, 107, 108, 100, 69, 70, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 31, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 104, 0, 0, 0, 0, 0, 102, 0, 0, - 51, 99, 44, 33, 99, 99, 99, 26, 99, 99, - 99, 49, 99, 99, 99, 99, 50, 99, 99, 99, - 45, 99, 20, 99, 0, 0, 0, 0, 0, 48, - 35, 99, 99, 99, 18, 46, 99, 52, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 28, 0, 0, - 0, 0, 0, 99, 99, 99, 99, 99, 19, 99, - 99, 37, 32, 99, 41, 99, 99, 99, 102, 0, - 0, 14, 0, 99, 99, 99, 34, 30, 99, 99, - 99, 99, 99, 99, 0, 15, 0, 99, 99, 36, - 99, 40, 99, 99, 99, 21, 17, 0, 99, 99, + 102, 0, 0, 53, 101, 46, 35, 101, 101, 101, + 28, 101, 101, 101, 51, 101, 101, 101, 101, 52, + 101, 101, 101, 47, 101, 22, 101, 0, 0, 0, + 0, 0, 50, 37, 101, 101, 101, 20, 48, 101, + 54, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 30, 0, 0, 0, 0, 0, 101, 101, 101, 101, + 101, 21, 101, 101, 39, 34, 101, 43, 101, 101, + 101, 104, 0, 0, 16, 0, 101, 101, 101, 36, + 32, 101, 101, 101, 101, 101, 101, 0, 17, 0, + 101, 101, 38, 101, 42, 101, 101, 101, 23, 19, - 99, 99, 47, 24, 99, 99, 0, 38, 99, 39, - 43, 99, 99, 0, 42, 99, 99, 0, 99, 99, - 0, 99, 22, 0, 99, 16, 99, 23, 0 + 0, 101, 101, 101, 101, 49, 26, 101, 101, 0, + 40, 101, 41, 45, 101, 101, 0, 44, 101, 101, + 0, 101, 101, 0, 101, 24, 0, 101, 18, 101, + 25, 0 } ; static const YY_CHAR yy_ec[256] = @@ -647,91 +648,93 @@ static const YY_CHAR yy_meta[64] = 1, 1, 1 } ; -static const flex_int16_t yy_base[350] = +static const flex_int16_t yy_base[353] = { 0, - 0, 0, 61, 62, 60, 63, 64, 65, 706, 707, - 707, 707, 680, 71, 60, 679, 73, 70, 707, 707, - 63, 70, 707, 69, 71, 94, 102, 109, 681, 707, - 61, 677, 76, 707, 668, 707, 707, 675, 60, 74, - 99, 104, 63, 101, 80, 106, 75, 108, 111, 119, - 120, 113, 117, 131, 707, 122, 707, 707, 707, 707, - 682, 139, 673, 707, 707, 680, 707, 154, 707, 164, - 707, 0, 647, 646, 641, 707, 157, 707, 162, 707, - 163, 170, 707, 707, 707, 707, 707, 707, 180, 648, - 707, 707, 0, 707, 186, 192, 198, 158, 205, 223, + 0, 0, 61, 62, 63, 64, 65, 66, 712, 713, + 713, 713, 686, 63, 58, 685, 76, 67, 713, 713, + 62, 67, 713, 73, 86, 85, 96, 102, 687, 713, + 65, 683, 68, 713, 674, 713, 713, 681, 75, 76, + 93, 99, 98, 105, 111, 108, 78, 103, 100, 113, + 118, 125, 123, 127, 713, 136, 713, 713, 713, 713, + 688, 713, 713, 687, 145, 678, 161, 713, 158, 713, + 163, 713, 0, 653, 652, 647, 713, 160, 713, 161, + 713, 165, 176, 713, 713, 713, 713, 713, 713, 183, + 654, 713, 713, 0, 713, 187, 194, 200, 195, 216, - 0, 707, 667, 707, 707, 707, 666, 657, 707, 54, - 137, 182, 147, 153, 194, 656, 156, 148, 187, 193, - 199, 655, 654, 197, 200, 207, 204, 222, 226, 233, - 213, 234, 237, 239, 707, 707, 707, 707, 243, 244, - 270, 0, 641, 146, 640, 274, 707, 278, 271, 283, - 279, 280, 284, 707, 625, 0, 276, 707, 303, 282, - 0, 650, 707, 707, 257, 269, 281, 258, 287, 275, - 293, 292, 277, 298, 299, 302, 304, 305, 306, 308, - 311, 313, 309, 314, 316, 319, 321, 323, 0, 634, - 634, 635, 630, 353, 354, 361, 352, 356, 365, 637, + 234, 0, 713, 673, 713, 713, 713, 672, 663, 713, + 143, 148, 184, 147, 150, 197, 662, 189, 203, 191, + 193, 208, 661, 660, 190, 207, 214, 211, 233, 215, + 225, 224, 245, 236, 249, 713, 713, 713, 713, 713, + 713, 254, 263, 281, 0, 647, 148, 646, 278, 713, + 285, 280, 288, 283, 284, 292, 713, 631, 0, 284, + 713, 311, 290, 0, 656, 713, 713, 267, 287, 265, + 266, 286, 289, 301, 295, 302, 304, 306, 307, 308, + 309, 313, 312, 317, 318, 320, 323, 325, 327, 328, + 329, 0, 640, 640, 641, 636, 358, 360, 366, 361, - 644, 336, 643, 642, 338, 339, 340, 641, 343, 347, - 344, 640, 346, 357, 364, 350, 639, 368, 358, 371, - 638, 363, 373, 370, 0, 616, 614, 619, 624, 707, - 377, 376, 380, 384, 633, 632, 381, 631, 383, 385, - 386, 388, 389, 403, 392, 401, 405, 630, 0, 610, - 621, 619, 623, 406, 407, 391, 409, 411, 625, 416, - 412, 624, 623, 414, 622, 415, 421, 426, 707, 613, - 612, 707, 615, 427, 419, 429, 618, 617, 432, 434, - 435, 436, 445, 447, 608, 707, 599, 446, 448, 614, - 451, 613, 449, 450, 458, 455, 707, 600, 452, 465, + 365, 372, 643, 650, 53, 649, 648, 344, 345, 346, + 647, 347, 354, 352, 646, 350, 367, 370, 355, 645, + 353, 369, 371, 644, 377, 378, 380, 0, 622, 620, + 625, 630, 713, 379, 381, 382, 389, 639, 638, 385, + 637, 383, 396, 384, 394, 395, 407, 409, 392, 410, + 636, 0, 616, 627, 625, 629, 412, 413, 393, 416, + 417, 631, 418, 419, 630, 629, 420, 628, 425, 423, + 430, 713, 619, 618, 713, 621, 431, 432, 434, 624, + 623, 436, 433, 445, 447, 448, 438, 614, 713, 605, + 449, 450, 620, 454, 619, 456, 457, 459, 461, 713, - 459, 467, 611, 610, 468, 472, 577, 583, 471, 541, - 530, 477, 479, 508, 501, 480, 482, 480, 483, 485, - 490, 484, 494, 485, 486, 707, 490, 489, 707, 535, - 543, 551, 556, 564, 570, 574, 582, 482, 590, 598, - 606, 614, 618, 304, 626, 634, 245, 177, 109 + 606, 462, 468, 469, 471, 617, 616, 473, 475, 600, + 597, 474, 588, 546, 480, 477, 514, 534, 482, 487, + 487, 486, 488, 496, 495, 502, 493, 489, 713, 500, + 496, 713, 540, 548, 556, 561, 569, 575, 579, 587, + 519, 595, 603, 611, 619, 623, 518, 631, 639, 305, + 246, 179 } ; -static const flex_int16_t yy_def[350] = +static const flex_int16_t yy_def[353] = { 0, - 329, 1, 330, 330, 1, 1, 331, 331, 329, 329, - 329, 329, 329, 332, 333, 329, 329, 334, 329, 329, - 329, 329, 329, 329, 329, 329, 335, 335, 329, 329, - 329, 329, 329, 329, 336, 329, 329, 329, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 329, 329, 329, 329, 329, 329, - 329, 333, 329, 329, 329, 329, 329, 332, 329, 337, - 329, 338, 338, 329, 329, 329, 339, 329, 340, 329, - 334, 341, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 342, 329, 329, 335, 335, 335, 335, 335, + 332, 1, 333, 333, 334, 334, 1, 1, 332, 332, + 332, 332, 332, 335, 336, 332, 332, 337, 332, 332, + 332, 332, 332, 332, 332, 332, 338, 338, 332, 332, + 332, 332, 332, 332, 339, 332, 332, 332, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 336, 332, 332, 332, 335, 332, + 340, 332, 341, 341, 332, 332, 332, 342, 332, 343, + 332, 337, 344, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 345, 332, 332, 338, 338, 338, 338, - 343, 329, 329, 329, 329, 329, 329, 336, 329, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 329, 329, 329, 329, 332, 332, - 337, 344, 329, 329, 329, 339, 329, 345, 340, 346, - 334, 334, 341, 329, 329, 342, 329, 329, 335, 335, - 100, 343, 329, 329, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 347, 329, - 329, 329, 329, 339, 339, 345, 340, 340, 346, 329, + 338, 346, 332, 332, 332, 332, 332, 332, 339, 332, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 332, 332, 332, 332, 332, + 332, 335, 335, 340, 347, 332, 332, 332, 342, 332, + 348, 343, 349, 337, 337, 344, 332, 332, 345, 332, + 332, 338, 338, 101, 346, 332, 332, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 350, 332, 332, 332, 332, 342, 342, 348, 343, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 348, 329, 329, 329, 329, 329, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 349, 329, - 329, 329, 329, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 329, 329, - 329, 329, 329, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 329, 329, 329, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 329, 329, 336, 336, + 343, 349, 332, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 351, 332, 332, + 332, 332, 332, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 352, 332, 332, 332, 332, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 332, 332, 332, 332, 332, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 332, 332, 332, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 332, - 336, 336, 336, 336, 336, 336, 329, 336, 336, 336, - 336, 336, 336, 329, 336, 336, 336, 329, 336, 336, - 329, 336, 336, 329, 336, 329, 336, 336, 0, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329 + 332, 339, 339, 339, 339, 339, 339, 339, 339, 332, + 339, 339, 339, 339, 339, 339, 332, 339, 339, 339, + 332, 339, 339, 332, 339, 339, 332, 339, 332, 339, + 339, 0, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332 } ; -static const flex_int16_t yy_nxt[771] = +static const flex_int16_t yy_nxt[777] = { 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 28, @@ -739,87 +742,88 @@ static const flex_int16_t yy_nxt[771] = 35, 36, 10, 37, 38, 35, 39, 40, 41, 42, 43, 44, 45, 35, 46, 35, 47, 35, 48, 35, 49, 50, 51, 52, 53, 35, 54, 35, 35, 55, - 56, 57, 58, 60, 60, 62, 65, 65, 62, 66, - 66, 63, 61, 61, 63, 69, 71, 77, 69, 83, - 78, 79, 85, 87, 103, 104, 101, 84, 89, 89, - 89, 89, 101, 88, 86, 101, 73, 80, 165, 91, + 56, 57, 58, 60, 60, 63, 63, 70, 64, 64, + 65, 65, 61, 61, 72, 70, 66, 66, 84, 86, + 78, 67, 67, 79, 80, 102, 85, 88, 104, 105, + 92, 87, 107, 108, 74, 71, 93, 89, 234, 83, - 106, 107, 82, 70, 74, 92, 101, 101, 110, 117, - 93, 118, 101, 269, 75, 124, 121, 95, 94, 96, - 97, 97, 96, 90, 95, 111, 96, 96, 96, 96, - 99, 101, 100, 101, 101, 112, 101, 119, 101, 99, - 101, 101, 113, 101, 115, 101, 135, 122, 114, 101, - 120, 101, 101, 116, 123, 138, 130, 125, 69, 127, - 128, 147, 126, 101, 131, 132, 68, 133, 140, 101, - 147, 69, 81, 329, 134, 73, 129, 166, 152, 101, - 101, 249, 136, 74, 191, 101, 70, 173, 101, 148, - 101, 169, 192, 75, 150, 82, 141, 89, 89, 89, + 81, 94, 75, 90, 90, 90, 90, 102, 102, 95, + 102, 96, 76, 97, 98, 98, 97, 96, 125, 97, + 97, 97, 97, 111, 100, 102, 101, 112, 102, 113, + 102, 102, 102, 100, 102, 102, 114, 102, 91, 116, + 102, 120, 115, 102, 118, 102, 119, 122, 117, 123, + 102, 127, 126, 128, 121, 102, 124, 102, 129, 102, + 136, 140, 70, 134, 150, 69, 141, 143, 131, 150, + 135, 133, 93, 70, 130, 102, 132, 94, 82, 102, + 102, 74, 102, 272, 155, 95, 194, 168, 169, 75, + 71, 172, 151, 153, 195, 144, 137, 83, 173, 76, - 89, 170, 153, 157, 157, 157, 157, 95, 172, 96, - 96, 96, 96, 95, 101, 159, 159, 159, 96, 101, - 329, 154, 160, 160, 101, 101, 101, 158, 167, 101, - 101, 101, 101, 174, 168, 171, 101, 101, 329, 101, - 161, 161, 161, 161, 175, 101, 176, 69, 69, 225, - 161, 161, 177, 178, 101, 101, 179, 180, 101, 161, - 161, 161, 161, 161, 161, 101, 101, 185, 181, 101, - 182, 101, 68, 186, 140, 70, 70, 183, 147, 147, - 146, 187, 195, 188, 184, 149, 81, 69, 69, 101, - 101, 198, 152, 157, 157, 157, 157, 329, 204, 160, + 90, 90, 90, 90, 160, 160, 160, 160, 156, 96, + 332, 97, 97, 97, 97, 96, 102, 162, 162, 162, + 97, 102, 102, 102, 157, 102, 102, 102, 161, 102, + 170, 332, 102, 163, 163, 102, 171, 177, 174, 102, + 102, 175, 176, 102, 178, 180, 102, 102, 102, 332, + 252, 164, 164, 164, 164, 179, 102, 102, 70, 185, + 181, 164, 164, 182, 183, 102, 102, 70, 102, 186, + 164, 164, 164, 164, 164, 164, 187, 102, 188, 184, + 190, 102, 150, 69, 189, 143, 71, 149, 150, 198, + 152, 70, 70, 191, 82, 71, 201, 102, 102, 102, - 160, 101, 141, 150, 201, 202, 148, 101, 189, 101, - 196, 82, 82, 101, 101, 199, 153, 158, 95, 101, - 159, 159, 159, 96, 101, 101, 209, 203, 206, 207, - 101, 101, 208, 205, 101, 101, 101, 101, 101, 211, - 101, 101, 212, 101, 213, 101, 101, 215, 101, 214, - 210, 101, 217, 101, 220, 101, 221, 147, 147, 222, - 147, 219, 216, 146, 147, 195, 218, 149, 101, 224, - 101, 101, 101, 198, 223, 101, 101, 232, 101, 101, - 237, 231, 101, 233, 150, 148, 148, 236, 150, 101, - 101, 235, 238, 196, 234, 101, 101, 199, 239, 240, + 155, 160, 160, 160, 160, 332, 207, 163, 163, 228, + 151, 206, 153, 144, 204, 83, 83, 199, 102, 102, + 202, 102, 102, 205, 156, 161, 96, 102, 162, 162, + 162, 97, 208, 102, 102, 211, 102, 210, 102, 102, + 102, 102, 209, 102, 102, 102, 214, 215, 216, 102, + 102, 212, 102, 217, 218, 102, 213, 102, 220, 102, + 102, 102, 150, 223, 150, 224, 219, 225, 149, 150, + 198, 221, 222, 150, 152, 227, 102, 102, 102, 102, + 201, 226, 102, 235, 102, 102, 102, 102, 240, 236, + 151, 245, 151, 153, 239, 238, 241, 153, 199, 102, - 101, 241, 101, 101, 245, 101, 242, 244, 101, 101, - 248, 243, 101, 101, 246, 101, 101, 101, 101, 258, - 101, 101, 260, 101, 101, 261, 247, 254, 256, 255, - 257, 263, 264, 101, 262, 101, 266, 101, 101, 101, - 259, 101, 265, 101, 101, 276, 101, 101, 101, 268, - 275, 101, 267, 101, 278, 274, 279, 283, 101, 101, - 280, 101, 277, 282, 101, 281, 101, 101, 101, 290, - 289, 288, 284, 292, 291, 293, 294, 101, 101, 101, - 101, 101, 101, 101, 101, 302, 142, 101, 300, 303, - 101, 101, 295, 296, 299, 301, 305, 101, 304, 101, + 237, 102, 102, 102, 202, 243, 244, 247, 242, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 248, 249, + 251, 102, 246, 261, 102, 102, 102, 102, 102, 257, + 259, 250, 265, 263, 258, 260, 264, 266, 267, 102, + 262, 102, 102, 270, 102, 102, 268, 279, 102, 102, + 102, 102, 102, 269, 271, 102, 278, 102, 282, 286, + 281, 277, 102, 102, 102, 102, 102, 283, 102, 280, + 102, 284, 295, 285, 293, 291, 287, 102, 294, 102, + 102, 102, 102, 292, 299, 296, 102, 297, 102, 102, + 303, 102, 305, 102, 102, 298, 306, 302, 304, 307, - 101, 309, 306, 101, 101, 308, 311, 310, 313, 101, - 315, 101, 101, 316, 101, 101, 101, 101, 101, 312, - 320, 101, 101, 322, 325, 326, 101, 319, 323, 328, - 324, 321, 317, 101, 327, 59, 59, 59, 59, 59, - 59, 59, 59, 64, 64, 64, 64, 64, 64, 64, - 64, 68, 68, 68, 68, 68, 68, 68, 68, 72, - 72, 318, 101, 72, 81, 81, 81, 81, 81, 81, - 81, 81, 98, 101, 98, 98, 98, 98, 108, 108, - 108, 108, 139, 139, 139, 139, 139, 139, 139, 139, - 146, 146, 146, 146, 146, 146, 146, 146, 149, 149, + 102, 102, 308, 102, 312, 102, 102, 102, 309, 102, + 314, 316, 102, 318, 102, 311, 319, 313, 102, 102, + 102, 102, 192, 145, 315, 323, 325, 102, 102, 322, + 320, 326, 102, 329, 102, 328, 327, 330, 324, 331, + 59, 59, 59, 59, 59, 59, 59, 59, 62, 62, + 62, 62, 62, 62, 62, 62, 69, 69, 69, 69, + 69, 69, 69, 69, 73, 73, 102, 321, 73, 82, + 82, 82, 82, 82, 82, 82, 82, 99, 102, 99, + 99, 99, 99, 109, 109, 109, 109, 142, 142, 142, + 142, 142, 142, 142, 142, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 151, 151, 151, 151, - 151, 151, 151, 151, 156, 101, 156, 156, 156, 156, - 156, 156, 162, 162, 314, 162, 194, 194, 194, 194, - 194, 194, 194, 194, 197, 197, 197, 197, 197, 197, - 197, 197, 101, 101, 307, 101, 101, 298, 297, 101, - 101, 287, 286, 285, 101, 101, 101, 101, 273, 272, - 271, 270, 101, 101, 101, 101, 253, 252, 251, 250, - 101, 101, 101, 101, 101, 101, 101, 230, 229, 228, - 227, 226, 101, 200, 193, 190, 101, 101, 101, 101, - 164, 163, 155, 145, 144, 143, 138, 84, 137, 109, + 149, 149, 149, 152, 152, 152, 152, 152, 152, 152, + 152, 154, 154, 154, 154, 154, 154, 154, 154, 159, + 102, 159, 159, 159, 159, 159, 159, 165, 165, 102, + 165, 197, 197, 197, 197, 197, 197, 197, 197, 200, + 200, 200, 200, 200, 200, 200, 200, 317, 102, 102, + 310, 102, 102, 301, 300, 102, 102, 290, 289, 288, + 102, 102, 102, 102, 276, 275, 274, 273, 102, 102, + 102, 102, 256, 255, 254, 253, 102, 102, 102, 102, + 102, 102, 102, 233, 232, 231, 230, 229, 102, 203, + 196, 193, 102, 102, 102, 102, 167, 166, 158, 148, - 101, 105, 102, 76, 67, 329, 9, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329 + 147, 146, 85, 139, 138, 110, 102, 106, 103, 77, + 68, 332, 9, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332 } ; -static const flex_int16_t yy_chk[771] = +static const flex_int16_t yy_chk[777] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -827,84 +831,85 @@ static const flex_int16_t yy_chk[771] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 7, 8, 6, 7, - 8, 5, 3, 4, 6, 14, 15, 17, 18, 21, - 17, 17, 22, 24, 31, 31, 110, 21, 25, 25, - 25, 25, 39, 24, 22, 43, 15, 17, 110, 26, + 1, 1, 1, 3, 4, 5, 6, 14, 5, 6, + 7, 8, 3, 4, 15, 18, 7, 8, 21, 22, + 17, 7, 8, 17, 17, 205, 21, 24, 31, 31, + 26, 22, 33, 33, 15, 14, 26, 24, 205, 18, - 33, 33, 18, 14, 15, 26, 40, 47, 39, 43, - 26, 43, 45, 349, 15, 47, 45, 27, 26, 27, - 27, 27, 27, 25, 28, 40, 28, 28, 28, 28, - 27, 41, 27, 44, 27, 41, 42, 44, 46, 27, - 48, 28, 41, 49, 42, 52, 56, 46, 41, 53, - 44, 50, 51, 42, 46, 62, 52, 48, 68, 50, - 51, 77, 49, 54, 52, 53, 70, 54, 70, 111, - 79, 81, 82, 98, 54, 62, 51, 111, 82, 113, - 118, 348, 56, 62, 144, 114, 68, 118, 117, 77, - 98, 113, 144, 62, 79, 81, 70, 89, 89, 89, + 17, 26, 15, 25, 25, 25, 25, 39, 40, 26, + 47, 27, 15, 27, 27, 27, 27, 28, 47, 28, + 28, 28, 28, 39, 27, 41, 27, 40, 27, 41, + 43, 42, 49, 27, 28, 48, 41, 44, 25, 42, + 46, 44, 41, 45, 43, 50, 43, 45, 42, 46, + 51, 49, 48, 50, 44, 53, 46, 52, 51, 54, + 56, 65, 69, 54, 78, 71, 67, 71, 52, 80, + 54, 53, 67, 82, 51, 111, 52, 67, 83, 114, + 112, 65, 115, 352, 83, 67, 147, 111, 112, 65, + 69, 114, 78, 80, 147, 71, 56, 82, 115, 65, - 89, 114, 82, 95, 95, 95, 95, 96, 117, 96, - 96, 96, 96, 97, 112, 97, 97, 97, 97, 119, - 99, 89, 99, 99, 96, 120, 115, 95, 112, 124, - 97, 121, 125, 119, 112, 115, 127, 99, 100, 126, - 100, 100, 100, 100, 120, 131, 121, 139, 140, 347, - 100, 100, 124, 125, 128, 100, 126, 127, 129, 100, - 100, 100, 100, 100, 100, 130, 132, 131, 128, 133, - 129, 134, 141, 132, 141, 139, 140, 130, 146, 149, - 148, 133, 148, 134, 130, 150, 153, 151, 152, 165, - 168, 150, 153, 157, 157, 157, 157, 160, 168, 160, + 90, 90, 90, 90, 96, 96, 96, 96, 83, 97, + 99, 97, 97, 97, 97, 98, 113, 98, 98, 98, + 98, 118, 125, 120, 90, 121, 97, 99, 96, 116, + 113, 100, 98, 100, 100, 119, 113, 120, 116, 126, + 122, 118, 119, 128, 121, 125, 127, 130, 100, 101, + 351, 101, 101, 101, 101, 122, 132, 131, 142, 130, + 126, 101, 101, 127, 128, 129, 101, 143, 134, 131, + 101, 101, 101, 101, 101, 101, 131, 133, 132, 129, + 134, 135, 149, 144, 133, 144, 142, 151, 152, 151, + 153, 154, 155, 135, 156, 143, 153, 170, 171, 168, - 160, 166, 141, 149, 165, 166, 146, 170, 344, 173, - 148, 151, 152, 167, 160, 150, 153, 157, 159, 169, - 159, 159, 159, 159, 172, 171, 173, 167, 170, 171, - 174, 175, 172, 169, 176, 159, 177, 178, 179, 175, - 180, 183, 176, 181, 177, 182, 184, 179, 185, 178, - 174, 186, 181, 187, 184, 188, 185, 194, 195, 186, - 197, 183, 180, 196, 198, 196, 182, 199, 202, 188, - 205, 206, 207, 199, 187, 209, 211, 205, 213, 210, - 211, 202, 216, 206, 197, 194, 195, 210, 198, 214, - 219, 209, 213, 196, 207, 222, 215, 199, 214, 215, + 156, 160, 160, 160, 160, 163, 171, 163, 163, 350, + 149, 170, 152, 144, 168, 154, 155, 151, 172, 169, + 153, 173, 163, 169, 156, 160, 162, 175, 162, 162, + 162, 162, 172, 174, 176, 175, 177, 174, 178, 179, + 180, 181, 173, 162, 183, 182, 178, 179, 180, 184, + 185, 176, 186, 181, 182, 187, 177, 188, 184, 189, + 190, 191, 197, 187, 198, 188, 183, 189, 199, 200, + 199, 185, 186, 201, 202, 191, 208, 209, 210, 212, + 202, 190, 216, 208, 214, 221, 213, 219, 214, 209, + 197, 221, 198, 200, 213, 212, 216, 201, 199, 217, - 218, 216, 224, 220, 222, 223, 218, 220, 232, 231, - 224, 219, 233, 237, 223, 239, 234, 240, 241, 237, - 242, 243, 240, 256, 245, 240, 223, 231, 233, 232, - 234, 242, 243, 246, 241, 244, 245, 247, 254, 255, - 239, 257, 244, 258, 261, 256, 264, 266, 260, 247, - 255, 275, 246, 267, 258, 254, 260, 267, 268, 274, - 261, 276, 257, 266, 279, 264, 280, 281, 282, 276, - 275, 274, 268, 280, 279, 281, 282, 283, 288, 284, - 289, 293, 294, 291, 299, 293, 338, 296, 289, 294, - 295, 301, 283, 284, 288, 291, 296, 300, 295, 302, + 210, 222, 218, 223, 202, 218, 219, 223, 217, 225, + 226, 234, 227, 235, 236, 242, 244, 240, 225, 226, + 227, 237, 222, 240, 249, 259, 245, 246, 243, 234, + 236, 226, 244, 243, 235, 237, 243, 245, 246, 247, + 242, 248, 250, 249, 257, 258, 247, 259, 260, 261, + 263, 264, 267, 248, 250, 270, 258, 269, 263, 270, + 261, 257, 271, 277, 278, 283, 279, 264, 282, 260, + 287, 267, 283, 269, 279, 277, 271, 284, 282, 285, + 286, 291, 292, 278, 287, 284, 294, 285, 296, 297, + 292, 298, 296, 299, 302, 286, 297, 291, 294, 298, - 305, 300, 296, 309, 306, 299, 302, 301, 306, 312, - 309, 313, 316, 312, 317, 319, 322, 320, 325, 305, - 317, 328, 327, 319, 322, 324, 323, 316, 320, 327, - 321, 318, 313, 315, 325, 330, 330, 330, 330, 330, - 330, 330, 330, 331, 331, 331, 331, 331, 331, 331, - 331, 332, 332, 332, 332, 332, 332, 332, 332, 333, - 333, 314, 311, 333, 334, 334, 334, 334, 334, 334, - 334, 334, 335, 310, 335, 335, 335, 335, 336, 336, - 336, 336, 337, 337, 337, 337, 337, 337, 337, 337, - 339, 339, 339, 339, 339, 339, 339, 339, 340, 340, + 303, 304, 299, 305, 303, 308, 312, 309, 299, 316, + 305, 309, 315, 312, 319, 302, 315, 304, 322, 320, + 323, 328, 347, 341, 308, 320, 322, 325, 331, 319, + 316, 323, 330, 327, 326, 325, 324, 328, 321, 330, + 333, 333, 333, 333, 333, 333, 333, 333, 334, 334, + 334, 334, 334, 334, 334, 334, 335, 335, 335, 335, + 335, 335, 335, 335, 336, 336, 318, 317, 336, 337, + 337, 337, 337, 337, 337, 337, 337, 338, 314, 338, + 338, 338, 338, 339, 339, 339, 339, 340, 340, 340, + 340, 340, 340, 340, 340, 342, 342, 342, 342, 342, - 340, 340, 340, 340, 340, 340, 341, 341, 341, 341, - 341, 341, 341, 341, 342, 308, 342, 342, 342, 342, - 342, 342, 343, 343, 307, 343, 345, 345, 345, 345, - 345, 345, 345, 345, 346, 346, 346, 346, 346, 346, - 346, 346, 304, 303, 298, 292, 290, 287, 285, 278, - 277, 273, 271, 270, 265, 263, 262, 259, 253, 252, - 251, 250, 248, 238, 236, 235, 229, 228, 227, 226, - 221, 217, 212, 208, 204, 203, 201, 200, 193, 192, - 191, 190, 162, 155, 145, 143, 123, 122, 116, 108, - 107, 103, 90, 75, 74, 73, 66, 63, 61, 38, + 342, 342, 342, 343, 343, 343, 343, 343, 343, 343, + 343, 344, 344, 344, 344, 344, 344, 344, 344, 345, + 313, 345, 345, 345, 345, 345, 345, 346, 346, 311, + 346, 348, 348, 348, 348, 348, 348, 348, 348, 349, + 349, 349, 349, 349, 349, 349, 349, 310, 307, 306, + 301, 295, 293, 290, 288, 281, 280, 276, 274, 273, + 268, 266, 265, 262, 256, 255, 254, 253, 251, 241, + 239, 238, 232, 231, 230, 229, 224, 220, 215, 211, + 207, 206, 204, 203, 196, 195, 194, 193, 165, 158, + 148, 146, 124, 123, 117, 109, 108, 104, 91, 76, - 35, 32, 29, 16, 13, 9, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329 + 75, 74, 66, 64, 61, 38, 35, 32, 29, 16, + 13, 9, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332 } ; /* The intent behind this definition is that it'll catch @@ -925,14 +930,14 @@ static const flex_int16_t yy_chk[771] = #line 25 "lexer.lpp" #define YY_USER_ACTION ctx->loc.columns(yyleng); -#line 928 "lexer.cpp" +#line 933 "lexer.cpp" -#line 930 "lexer.cpp" +#line 935 "lexer.cpp" #define INITIAL 0 -#define COMMENT_BLOCK_STATE 1 -#define DEVBLOCK_ON_STATE 2 -#define DEVBLOCK_OFF_STATE 3 +#define COMMENT_STATE 1 +#define DEV_OFF_STATE 2 +#define DEV_ON_STATE 3 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way @@ -1196,7 +1201,7 @@ YY_DECL ctx->loc.step(); -#line 1199 "lexer.cpp" +#line 1204 "lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1223,13 +1228,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 >= 330 ) + if ( yy_current_state >= 333 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 329 ); + while ( yy_current_state != 332 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -1257,557 +1262,576 @@ YY_RULE_SETUP case 2: /* rule 2 can match eol */ YY_RULE_SETUP -#line 52 "lexer.lpp" +#line 51 "lexer.lpp" { ctx->loc.lines(yyleng); ctx->loc.step(); } YY_BREAK case 3: YY_RULE_SETUP -#line 54 "lexer.lpp" +#line 53 "lexer.lpp" YY_BREAK case 4: YY_RULE_SETUP -#line 56 "lexer.lpp" -{ BEGIN(COMMENT_BLOCK_STATE); } +#line 55 "lexer.lpp" +{ BEGIN(COMMENT_STATE); } YY_BREAK case 5: YY_RULE_SETUP -#line 57 "lexer.lpp" +#line 56 "lexer.lpp" YY_BREAK case 6: /* rule 6 can match eol */ YY_RULE_SETUP -#line 58 "lexer.lpp" +#line 57 "lexer.lpp" { ctx->loc.lines(yyleng); ctx->loc.step(); } YY_BREAK case 7: YY_RULE_SETUP -#line 59 "lexer.lpp" +#line 58 "lexer.lpp" { BEGIN(INITIAL); } YY_BREAK +case YY_STATE_EOF(COMMENT_STATE): +#line 59 "lexer.lpp" +{ throw h1::parser::syntax_error(ctx->loc, "unmatched multiline comment start ('/*')"); } + YY_BREAK case 8: YY_RULE_SETUP -#line 61 "lexer.lpp" -{ BEGIN(ctx->mode == xsk::gsc::build::dev ? DEVBLOCK_ON_STATE : DEVBLOCK_OFF_STATE); } +#line 60 "lexer.lpp" +{ throw h1::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } YY_BREAK case 9: YY_RULE_SETUP #line 62 "lexer.lpp" - +{ throw h1::parser::syntax_error(ctx->loc, "cannot recurse devblock ('/#')"); } YY_BREAK case 10: -/* rule 10 can match eol */ YY_RULE_SETUP #line 63 "lexer.lpp" -{ ctx->loc.lines(yyleng); ctx->loc.step(); } +{ BEGIN(INITIAL); return h1::parser::make_DEVEND(ctx->loc); } + YY_BREAK +case YY_STATE_EOF(DEV_ON_STATE): +#line 64 "lexer.lpp" +{ throw h1::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } YY_BREAK case 11: YY_RULE_SETUP -#line 64 "lexer.lpp" -{ BEGIN(INITIAL); } +#line 66 "lexer.lpp" +{ BEGIN(ctx->mode == xsk::gsc::build::dev ? DEV_ON_STATE : DEV_OFF_STATE); if(ctx->mode == xsk::gsc::build::dev) return h1::parser::make_DEVBEGIN(ctx->loc); } YY_BREAK case 12: YY_RULE_SETUP -#line 66 "lexer.lpp" -{ throw h1::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } +#line 67 "lexer.lpp" + YY_BREAK case 13: +/* rule 13 can match eol */ YY_RULE_SETUP -#line 67 "lexer.lpp" -{ throw h1::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } +#line 68 "lexer.lpp" +{ ctx->loc.lines(yyleng); ctx->loc.step(); } YY_BREAK case 14: YY_RULE_SETUP #line 69 "lexer.lpp" -{ return h1::parser::make_INLINE(ctx->loc); } +{ BEGIN(INITIAL); } + YY_BREAK +case YY_STATE_EOF(DEV_OFF_STATE): +#line 70 "lexer.lpp" +{ throw h1::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } YY_BREAK case 15: YY_RULE_SETUP -#line 70 "lexer.lpp" -{ return h1::parser::make_INCLUDE(ctx->loc); } +#line 71 "lexer.lpp" +{ throw h1::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } YY_BREAK case 16: YY_RULE_SETUP -#line 71 "lexer.lpp" -{ return h1::parser::make_USINGTREE(ctx->loc); } +#line 73 "lexer.lpp" +{ return h1::parser::make_INLINE(ctx->loc); } YY_BREAK case 17: YY_RULE_SETUP -#line 72 "lexer.lpp" -{ return h1::parser::make_ANIMTREE(ctx->loc); } +#line 74 "lexer.lpp" +{ return h1::parser::make_INCLUDE(ctx->loc); } YY_BREAK case 18: YY_RULE_SETUP -#line 73 "lexer.lpp" -{ return h1::parser::make_ENDON(ctx->loc); } +#line 75 "lexer.lpp" +{ return h1::parser::make_USINGTREE(ctx->loc); } YY_BREAK case 19: YY_RULE_SETUP -#line 74 "lexer.lpp" -{ return h1::parser::make_NOTIFY(ctx->loc); } +#line 76 "lexer.lpp" +{ return h1::parser::make_ANIMTREE(ctx->loc); } YY_BREAK case 20: YY_RULE_SETUP -#line 75 "lexer.lpp" -{ return h1::parser::make_WAIT(ctx->loc); } +#line 77 "lexer.lpp" +{ return h1::parser::make_ENDON(ctx->loc); } YY_BREAK case 21: YY_RULE_SETUP -#line 76 "lexer.lpp" -{ return h1::parser::make_WAITTILL(ctx->loc); } +#line 78 "lexer.lpp" +{ return h1::parser::make_NOTIFY(ctx->loc); } YY_BREAK case 22: YY_RULE_SETUP -#line 77 "lexer.lpp" -{ return h1::parser::make_WAITTILLMATCH(ctx->loc); } +#line 79 "lexer.lpp" +{ return h1::parser::make_WAIT(ctx->loc); } YY_BREAK case 23: YY_RULE_SETUP -#line 78 "lexer.lpp" -{ return h1::parser::make_WAITTILLFRAMEEND(ctx->loc); } +#line 80 "lexer.lpp" +{ return h1::parser::make_WAITTILL(ctx->loc); } YY_BREAK case 24: YY_RULE_SETUP -#line 79 "lexer.lpp" -{ return h1::parser::make_WAITFRAME(ctx->loc); } +#line 81 "lexer.lpp" +{ return h1::parser::make_WAITTILLMATCH(ctx->loc); } YY_BREAK case 25: YY_RULE_SETUP -#line 80 "lexer.lpp" -{ return h1::parser::make_IF(ctx->loc); } +#line 82 "lexer.lpp" +{ return h1::parser::make_WAITTILLFRAMEEND(ctx->loc); } YY_BREAK case 26: YY_RULE_SETUP -#line 81 "lexer.lpp" -{ return h1::parser::make_ELSE(ctx->loc); } +#line 83 "lexer.lpp" +{ return h1::parser::make_WAITFRAME(ctx->loc); } YY_BREAK case 27: YY_RULE_SETUP -#line 82 "lexer.lpp" -{ return h1::parser::make_DO(ctx->loc); } +#line 84 "lexer.lpp" +{ return h1::parser::make_IF(ctx->loc); } YY_BREAK case 28: YY_RULE_SETUP -#line 83 "lexer.lpp" -{ return h1::parser::make_WHILE(ctx->loc); } +#line 85 "lexer.lpp" +{ return h1::parser::make_ELSE(ctx->loc); } YY_BREAK case 29: YY_RULE_SETUP -#line 84 "lexer.lpp" -{ return h1::parser::make_FOR(ctx->loc); } +#line 86 "lexer.lpp" +{ return h1::parser::make_DO(ctx->loc); } YY_BREAK case 30: YY_RULE_SETUP -#line 85 "lexer.lpp" -{ return h1::parser::make_FOREACH(ctx->loc); } +#line 87 "lexer.lpp" +{ return h1::parser::make_WHILE(ctx->loc); } YY_BREAK case 31: YY_RULE_SETUP -#line 86 "lexer.lpp" -{ return h1::parser::make_IN(ctx->loc); } +#line 88 "lexer.lpp" +{ return h1::parser::make_FOR(ctx->loc); } YY_BREAK case 32: YY_RULE_SETUP -#line 87 "lexer.lpp" -{ return h1::parser::make_SWITCH(ctx->loc); } +#line 89 "lexer.lpp" +{ return h1::parser::make_FOREACH(ctx->loc); } YY_BREAK case 33: YY_RULE_SETUP -#line 88 "lexer.lpp" -{ return h1::parser::make_CASE(ctx->loc); } +#line 90 "lexer.lpp" +{ return h1::parser::make_IN(ctx->loc); } YY_BREAK case 34: YY_RULE_SETUP -#line 89 "lexer.lpp" -{ return h1::parser::make_DEFAULT(ctx->loc); } +#line 91 "lexer.lpp" +{ return h1::parser::make_SWITCH(ctx->loc); } YY_BREAK case 35: YY_RULE_SETUP -#line 90 "lexer.lpp" -{ return h1::parser::make_BREAK(ctx->loc); } +#line 92 "lexer.lpp" +{ return h1::parser::make_CASE(ctx->loc); } YY_BREAK case 36: YY_RULE_SETUP -#line 91 "lexer.lpp" -{ return h1::parser::make_CONTINUE(ctx->loc); } +#line 93 "lexer.lpp" +{ return h1::parser::make_DEFAULT(ctx->loc); } YY_BREAK case 37: YY_RULE_SETUP -#line 92 "lexer.lpp" -{ return h1::parser::make_RETURN(ctx->loc); } +#line 94 "lexer.lpp" +{ return h1::parser::make_BREAK(ctx->loc); } YY_BREAK case 38: YY_RULE_SETUP -#line 93 "lexer.lpp" -{ return h1::parser::make_BREAKPOINT(ctx->loc); } +#line 95 "lexer.lpp" +{ return h1::parser::make_CONTINUE(ctx->loc); } YY_BREAK case 39: YY_RULE_SETUP -#line 94 "lexer.lpp" -{ return h1::parser::make_PROFBEGIN(ctx->loc); } +#line 96 "lexer.lpp" +{ return h1::parser::make_RETURN(ctx->loc); } YY_BREAK case 40: YY_RULE_SETUP -#line 95 "lexer.lpp" -{ return h1::parser::make_PROFEND(ctx->loc); } +#line 97 "lexer.lpp" +{ return h1::parser::make_BREAKPOINT(ctx->loc); } YY_BREAK case 41: YY_RULE_SETUP -#line 96 "lexer.lpp" -{ return h1::parser::make_THREAD(ctx->loc); } +#line 98 "lexer.lpp" +{ return h1::parser::make_PROFBEGIN(ctx->loc); } YY_BREAK case 42: YY_RULE_SETUP -#line 97 "lexer.lpp" -{ return h1::parser::make_CHILDTHREAD(ctx->loc); } +#line 99 "lexer.lpp" +{ return h1::parser::make_PROFEND(ctx->loc); } YY_BREAK case 43: YY_RULE_SETUP -#line 98 "lexer.lpp" -{ return h1::parser::make_THISTHREAD(ctx->loc); } +#line 100 "lexer.lpp" +{ return h1::parser::make_THREAD(ctx->loc); } YY_BREAK case 44: YY_RULE_SETUP -#line 99 "lexer.lpp" -{ return h1::parser::make_CALL(ctx->loc); } +#line 101 "lexer.lpp" +{ return h1::parser::make_CHILDTHREAD(ctx->loc); } YY_BREAK case 45: YY_RULE_SETUP -#line 100 "lexer.lpp" -{ return h1::parser::make_TRUE(ctx->loc); } +#line 102 "lexer.lpp" +{ return h1::parser::make_THISTHREAD(ctx->loc); } YY_BREAK case 46: YY_RULE_SETUP -#line 101 "lexer.lpp" -{ return h1::parser::make_FALSE(ctx->loc); } +#line 103 "lexer.lpp" +{ return h1::parser::make_CALL(ctx->loc); } YY_BREAK case 47: YY_RULE_SETUP -#line 102 "lexer.lpp" -{ return h1::parser::make_UNDEFINED(ctx->loc); } +#line 104 "lexer.lpp" +{ return h1::parser::make_TRUE(ctx->loc); } YY_BREAK case 48: YY_RULE_SETUP -#line 103 "lexer.lpp" -{ return h1::parser::make_SIZE(ctx->loc); } +#line 105 "lexer.lpp" +{ return h1::parser::make_FALSE(ctx->loc); } YY_BREAK case 49: YY_RULE_SETUP -#line 104 "lexer.lpp" -{ return h1::parser::make_GAME(ctx->loc); } +#line 106 "lexer.lpp" +{ return h1::parser::make_UNDEFINED(ctx->loc); } YY_BREAK case 50: YY_RULE_SETUP -#line 105 "lexer.lpp" -{ return h1::parser::make_SELF(ctx->loc); } +#line 107 "lexer.lpp" +{ return h1::parser::make_SIZE(ctx->loc); } YY_BREAK case 51: YY_RULE_SETUP -#line 106 "lexer.lpp" -{ return h1::parser::make_ANIM(ctx->loc); } +#line 108 "lexer.lpp" +{ return h1::parser::make_GAME(ctx->loc); } YY_BREAK case 52: YY_RULE_SETUP -#line 107 "lexer.lpp" -{ return h1::parser::make_LEVEL(ctx->loc); } +#line 109 "lexer.lpp" +{ return h1::parser::make_SELF(ctx->loc); } YY_BREAK case 53: YY_RULE_SETUP -#line 108 "lexer.lpp" -{ return h1::parser::make_LPAREN(ctx->loc); } +#line 110 "lexer.lpp" +{ return h1::parser::make_ANIM(ctx->loc); } YY_BREAK case 54: YY_RULE_SETUP -#line 109 "lexer.lpp" -{ return h1::parser::make_RPAREN(ctx->loc); } +#line 111 "lexer.lpp" +{ return h1::parser::make_LEVEL(ctx->loc); } YY_BREAK case 55: YY_RULE_SETUP -#line 110 "lexer.lpp" -{ return h1::parser::make_LBRACE(ctx->loc); } +#line 112 "lexer.lpp" +{ return h1::parser::make_LPAREN(ctx->loc); } YY_BREAK case 56: YY_RULE_SETUP -#line 111 "lexer.lpp" -{ return h1::parser::make_RBRACE(ctx->loc); } +#line 113 "lexer.lpp" +{ return h1::parser::make_RPAREN(ctx->loc); } YY_BREAK case 57: YY_RULE_SETUP -#line 112 "lexer.lpp" -{ return h1::parser::make_LBRACKET(ctx->loc); } +#line 114 "lexer.lpp" +{ return h1::parser::make_LBRACE(ctx->loc); } YY_BREAK case 58: YY_RULE_SETUP -#line 113 "lexer.lpp" -{ return h1::parser::make_RBRACKET(ctx->loc); } +#line 115 "lexer.lpp" +{ return h1::parser::make_RBRACE(ctx->loc); } YY_BREAK case 59: YY_RULE_SETUP -#line 114 "lexer.lpp" -{ return h1::parser::make_COMMA(ctx->loc); } +#line 116 "lexer.lpp" +{ return h1::parser::make_LBRACKET(ctx->loc); } YY_BREAK case 60: YY_RULE_SETUP -#line 115 "lexer.lpp" -{ return h1::parser::make_DOT(ctx->loc); } +#line 117 "lexer.lpp" +{ return h1::parser::make_RBRACKET(ctx->loc); } YY_BREAK case 61: YY_RULE_SETUP -#line 116 "lexer.lpp" -{ return h1::parser::make_DOUBLECOLON(ctx->loc); } +#line 118 "lexer.lpp" +{ return h1::parser::make_COMMA(ctx->loc); } YY_BREAK case 62: YY_RULE_SETUP -#line 117 "lexer.lpp" -{ return h1::parser::make_COLON(ctx->loc); } +#line 119 "lexer.lpp" +{ return h1::parser::make_DOT(ctx->loc); } YY_BREAK case 63: YY_RULE_SETUP -#line 118 "lexer.lpp" -{ return h1::parser::make_SEMICOLON(ctx->loc); } +#line 120 "lexer.lpp" +{ return h1::parser::make_DOUBLECOLON(ctx->loc); } YY_BREAK case 64: YY_RULE_SETUP -#line 119 "lexer.lpp" -{ return h1::parser::make_QMARK(ctx->loc); } +#line 121 "lexer.lpp" +{ return h1::parser::make_COLON(ctx->loc); } YY_BREAK case 65: YY_RULE_SETUP -#line 120 "lexer.lpp" -{ return h1::parser::make_INCREMENT(ctx->loc); } +#line 122 "lexer.lpp" +{ return h1::parser::make_SEMICOLON(ctx->loc); } YY_BREAK case 66: YY_RULE_SETUP -#line 121 "lexer.lpp" -{ return h1::parser::make_DECREMENT(ctx->loc); } +#line 123 "lexer.lpp" +{ return h1::parser::make_QMARK(ctx->loc); } YY_BREAK case 67: YY_RULE_SETUP -#line 122 "lexer.lpp" -{ return h1::parser::make_ASSIGN_LSHIFT(ctx->loc); } +#line 124 "lexer.lpp" +{ return h1::parser::make_INCREMENT(ctx->loc); } YY_BREAK case 68: YY_RULE_SETUP -#line 123 "lexer.lpp" -{ return h1::parser::make_ASSIGN_RSHIFT(ctx->loc); } +#line 125 "lexer.lpp" +{ return h1::parser::make_DECREMENT(ctx->loc); } YY_BREAK case 69: YY_RULE_SETUP -#line 124 "lexer.lpp" -{ return h1::parser::make_LSHIFT(ctx->loc); } +#line 126 "lexer.lpp" +{ return h1::parser::make_ASSIGN_LSHIFT(ctx->loc); } YY_BREAK case 70: YY_RULE_SETUP -#line 125 "lexer.lpp" -{ return h1::parser::make_RSHIFT(ctx->loc); } +#line 127 "lexer.lpp" +{ return h1::parser::make_ASSIGN_RSHIFT(ctx->loc); } YY_BREAK case 71: YY_RULE_SETUP -#line 126 "lexer.lpp" -{ return h1::parser::make_OR(ctx->loc); } +#line 128 "lexer.lpp" +{ return h1::parser::make_LSHIFT(ctx->loc); } YY_BREAK case 72: YY_RULE_SETUP -#line 127 "lexer.lpp" -{ return h1::parser::make_AND(ctx->loc); } +#line 129 "lexer.lpp" +{ return h1::parser::make_RSHIFT(ctx->loc); } YY_BREAK case 73: YY_RULE_SETUP -#line 128 "lexer.lpp" -{ return h1::parser::make_EQUALITY(ctx->loc); } +#line 130 "lexer.lpp" +{ return h1::parser::make_OR(ctx->loc); } YY_BREAK case 74: YY_RULE_SETUP -#line 129 "lexer.lpp" -{ return h1::parser::make_INEQUALITY(ctx->loc); } +#line 131 "lexer.lpp" +{ return h1::parser::make_AND(ctx->loc); } YY_BREAK case 75: YY_RULE_SETUP -#line 130 "lexer.lpp" -{ return h1::parser::make_LESS_EQUAL(ctx->loc); } +#line 132 "lexer.lpp" +{ return h1::parser::make_EQUALITY(ctx->loc); } YY_BREAK case 76: YY_RULE_SETUP -#line 131 "lexer.lpp" -{ return h1::parser::make_GREATER_EQUAL(ctx->loc); } +#line 133 "lexer.lpp" +{ return h1::parser::make_INEQUALITY(ctx->loc); } YY_BREAK case 77: YY_RULE_SETUP -#line 132 "lexer.lpp" -{ return h1::parser::make_LESS(ctx->loc); } +#line 134 "lexer.lpp" +{ return h1::parser::make_LESS_EQUAL(ctx->loc); } YY_BREAK case 78: YY_RULE_SETUP -#line 133 "lexer.lpp" -{ return h1::parser::make_GREATER(ctx->loc); } +#line 135 "lexer.lpp" +{ return h1::parser::make_GREATER_EQUAL(ctx->loc); } YY_BREAK case 79: YY_RULE_SETUP -#line 134 "lexer.lpp" -{ return h1::parser::make_ASSIGN_ADD(ctx->loc); } +#line 136 "lexer.lpp" +{ return h1::parser::make_LESS(ctx->loc); } YY_BREAK case 80: YY_RULE_SETUP -#line 135 "lexer.lpp" -{ return h1::parser::make_ASSIGN_SUB(ctx->loc); } +#line 137 "lexer.lpp" +{ return h1::parser::make_GREATER(ctx->loc); } YY_BREAK case 81: YY_RULE_SETUP -#line 136 "lexer.lpp" -{ return h1::parser::make_ASSIGN_MUL(ctx->loc); } +#line 138 "lexer.lpp" +{ return h1::parser::make_ASSIGN_ADD(ctx->loc); } YY_BREAK case 82: YY_RULE_SETUP -#line 137 "lexer.lpp" -{ return h1::parser::make_ASSIGN_DIV(ctx->loc); } +#line 139 "lexer.lpp" +{ return h1::parser::make_ASSIGN_SUB(ctx->loc); } YY_BREAK case 83: YY_RULE_SETUP -#line 138 "lexer.lpp" -{ return h1::parser::make_ASSIGN_MOD(ctx->loc); } +#line 140 "lexer.lpp" +{ return h1::parser::make_ASSIGN_MUL(ctx->loc); } YY_BREAK case 84: YY_RULE_SETUP -#line 139 "lexer.lpp" -{ return h1::parser::make_ASSIGN_BW_OR(ctx->loc); } +#line 141 "lexer.lpp" +{ return h1::parser::make_ASSIGN_DIV(ctx->loc); } YY_BREAK case 85: YY_RULE_SETUP -#line 140 "lexer.lpp" -{ return h1::parser::make_ASSIGN_BW_AND(ctx->loc); } +#line 142 "lexer.lpp" +{ return h1::parser::make_ASSIGN_MOD(ctx->loc); } YY_BREAK case 86: YY_RULE_SETUP -#line 141 "lexer.lpp" -{ return h1::parser::make_ASSIGN_BW_EXOR(ctx->loc); } +#line 143 "lexer.lpp" +{ return h1::parser::make_ASSIGN_BW_OR(ctx->loc); } YY_BREAK case 87: YY_RULE_SETUP -#line 142 "lexer.lpp" -{ return h1::parser::make_ASSIGN(ctx->loc); } +#line 144 "lexer.lpp" +{ return h1::parser::make_ASSIGN_BW_AND(ctx->loc); } YY_BREAK case 88: YY_RULE_SETUP -#line 143 "lexer.lpp" -{ return h1::parser::make_ADD(ctx->loc); } +#line 145 "lexer.lpp" +{ return h1::parser::make_ASSIGN_BW_EXOR(ctx->loc); } YY_BREAK case 89: YY_RULE_SETUP -#line 144 "lexer.lpp" -{ return h1::parser::make_SUB(ctx->loc); } +#line 146 "lexer.lpp" +{ return h1::parser::make_ASSIGN(ctx->loc); } YY_BREAK case 90: YY_RULE_SETUP -#line 145 "lexer.lpp" -{ return h1::parser::make_MUL(ctx->loc); } +#line 147 "lexer.lpp" +{ return h1::parser::make_ADD(ctx->loc); } YY_BREAK case 91: YY_RULE_SETUP -#line 146 "lexer.lpp" -{ return h1::parser::make_DIV(ctx->loc); } +#line 148 "lexer.lpp" +{ return h1::parser::make_SUB(ctx->loc); } YY_BREAK case 92: YY_RULE_SETUP -#line 147 "lexer.lpp" -{ return h1::parser::make_MOD(ctx->loc); } +#line 149 "lexer.lpp" +{ return h1::parser::make_MUL(ctx->loc); } YY_BREAK case 93: YY_RULE_SETUP -#line 148 "lexer.lpp" -{ return h1::parser::make_NOT(ctx->loc); } +#line 150 "lexer.lpp" +{ return h1::parser::make_DIV(ctx->loc); } YY_BREAK case 94: YY_RULE_SETUP -#line 149 "lexer.lpp" -{ return h1::parser::make_COMPLEMENT(ctx->loc); } +#line 151 "lexer.lpp" +{ return h1::parser::make_MOD(ctx->loc); } YY_BREAK case 95: YY_RULE_SETUP -#line 150 "lexer.lpp" -{ return h1::parser::make_BITWISE_OR(ctx->loc); } +#line 152 "lexer.lpp" +{ return h1::parser::make_NOT(ctx->loc); } YY_BREAK case 96: YY_RULE_SETUP -#line 151 "lexer.lpp" -{ return h1::parser::make_BITWISE_AND(ctx->loc); } +#line 153 "lexer.lpp" +{ return h1::parser::make_COMPLEMENT(ctx->loc); } YY_BREAK case 97: YY_RULE_SETUP -#line 152 "lexer.lpp" -{ return h1::parser::make_BITWISE_EXOR(ctx->loc); } +#line 154 "lexer.lpp" +{ return h1::parser::make_BITWISE_OR(ctx->loc); } YY_BREAK case 98: YY_RULE_SETUP -#line 153 "lexer.lpp" -{ return h1::parser::make_PATH(xsk::utils::string::fordslash(yytext), ctx->loc); } +#line 155 "lexer.lpp" +{ return h1::parser::make_BITWISE_AND(ctx->loc); } YY_BREAK case 99: YY_RULE_SETUP -#line 154 "lexer.lpp" -{ return h1::parser::make_IDENTIFIER((std::string(yytext, 3) == "_ID") ? std::string(yytext) : xsk::utils::string::to_lower(yytext), ctx->loc); } +#line 156 "lexer.lpp" +{ return h1::parser::make_BITWISE_EXOR(ctx->loc); } YY_BREAK case 100: -/* rule 100 can match eol */ -YY_RULE_SETUP -#line 155 "lexer.lpp" -{ return h1::parser::make_ISTRING(std::string(yytext).substr(1), ctx->loc); } - YY_BREAK -case 101: -/* rule 101 can match eol */ -YY_RULE_SETUP -#line 156 "lexer.lpp" -{ return h1::parser::make_STRING(std::string(yytext), ctx->loc); } - YY_BREAK -case 102: YY_RULE_SETUP #line 157 "lexer.lpp" -{ return h1::parser::make_COLOR(std::string(yytext).substr(1), ctx->loc); } +{ return h1::parser::make_PATH(xsk::utils::string::fordslash(yytext), ctx->loc); } YY_BREAK -case 103: +case 101: YY_RULE_SETUP #line 158 "lexer.lpp" -{ return h1::parser::make_FLOAT(std::string(yytext), ctx->loc); } +{ return h1::parser::make_IDENTIFIER((std::string(yytext, 3) == "_ID") ? std::string(yytext) : xsk::utils::string::to_lower(yytext), ctx->loc); } + YY_BREAK +case 102: +/* rule 102 can match eol */ +YY_RULE_SETUP +#line 159 "lexer.lpp" +{ return h1::parser::make_ISTRING(std::string(yytext).substr(1), ctx->loc); } + YY_BREAK +case 103: +/* rule 103 can match eol */ +YY_RULE_SETUP +#line 160 "lexer.lpp" +{ return h1::parser::make_STRING(std::string(yytext), ctx->loc); } YY_BREAK case 104: YY_RULE_SETUP -#line 159 "lexer.lpp" -{ return h1::parser::make_INT_OCT(xsk::utils::string::oct_to_dec(yytext), ctx->loc); } +#line 161 "lexer.lpp" +{ return h1::parser::make_COLOR(std::string(yytext).substr(1), ctx->loc); } YY_BREAK case 105: YY_RULE_SETUP -#line 160 "lexer.lpp" -{ return h1::parser::make_INT_BIN(xsk::utils::string::bin_to_dec(yytext), ctx->loc); } +#line 162 "lexer.lpp" +{ return h1::parser::make_FLOAT(std::string(yytext), ctx->loc); } YY_BREAK case 106: YY_RULE_SETUP -#line 161 "lexer.lpp" -{ return h1::parser::make_INT_HEX(xsk::utils::string::hex_to_dec(yytext), ctx->loc); } +#line 163 "lexer.lpp" +{ return h1::parser::make_INT_OCT(xsk::utils::string::oct_to_dec(yytext), ctx->loc); } YY_BREAK case 107: YY_RULE_SETUP -#line 162 "lexer.lpp" -{ return h1::parser::make_INT_DEC(std::string(yytext), ctx->loc); } - YY_BREAK -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(COMMENT_BLOCK_STATE): -case YY_STATE_EOF(DEVBLOCK_ON_STATE): -case YY_STATE_EOF(DEVBLOCK_OFF_STATE): -#line 163 "lexer.lpp" -{ if(ctx->header_top > 0) h1_pop_header(ctx); else return h1::parser::make_H1EOF(ctx->loc); } +#line 164 "lexer.lpp" +{ return h1::parser::make_INT_BIN(xsk::utils::string::bin_to_dec(yytext), ctx->loc); } YY_BREAK case 108: -/* rule 108 can match eol */ YY_RULE_SETUP -#line 164 "lexer.lpp" -{ throw h1::parser::syntax_error(ctx->loc, "bad token: \'" + std::string(yytext) + "\'"); } +#line 165 "lexer.lpp" +{ return h1::parser::make_INT_HEX(xsk::utils::string::hex_to_dec(yytext), ctx->loc); } YY_BREAK case 109: YY_RULE_SETUP #line 166 "lexer.lpp" +{ return h1::parser::make_INT_DEC(std::string(yytext), ctx->loc); } + YY_BREAK +case YY_STATE_EOF(INITIAL): +#line 167 "lexer.lpp" +{ if(ctx->header_top > 0) h1_pop_header(ctx); else return h1::parser::make_H1EOF(ctx->loc); } + YY_BREAK +case 110: +/* rule 110 can match eol */ +YY_RULE_SETUP +#line 168 "lexer.lpp" +{ throw h1::parser::syntax_error(ctx->loc, "bad token: \'" + std::string(yytext) + "\'"); } + YY_BREAK +case 111: +YY_RULE_SETUP +#line 170 "lexer.lpp" ECHO; YY_BREAK -#line 1810 "lexer.cpp" +#line 1834 "lexer.cpp" case YY_END_OF_BUFFER: { @@ -2105,7 +2129,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 >= 330 ) + if ( yy_current_state >= 333 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2134,11 +2158,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 >= 330 ) + if ( yy_current_state >= 333 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 329); + yy_is_jam = (yy_current_state == 332); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -2937,7 +2961,7 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 166 "lexer.lpp" +#line 170 "lexer.lpp" void h1_push_header(xsk::gsc::context* ctx, const std::string& file) diff --git a/src/h1/xsk/lexer.hpp b/src/h1/xsk/lexer.hpp index 510a8006..12052011 100644 --- a/src/h1/xsk/lexer.hpp +++ b/src/h1/xsk/lexer.hpp @@ -439,9 +439,9 @@ void yyfree ( void * , yyscan_t yyscanner ); #ifdef YY_HEADER_EXPORT_START_CONDITIONS #define INITIAL 0 -#define COMMENT_BLOCK_STATE 1 -#define DEVBLOCK_ON_STATE 2 -#define DEVBLOCK_OFF_STATE 3 +#define COMMENT_STATE 1 +#define DEV_OFF_STATE 2 +#define DEV_ON_STATE 3 #endif @@ -703,7 +703,7 @@ extern int yylex (yyscan_t yyscanner); #undef yyTABLES_NAME #endif -#line 166 "lexer.lpp" +#line 170 "lexer.lpp" #line 709 "lexer.hpp" diff --git a/src/h1/xsk/parser.cpp b/src/h1/xsk/parser.cpp index 138bfc89..ff7dc1fc 100644 --- a/src/h1/xsk/parser.cpp +++ b/src/h1/xsk/parser.cpp @@ -442,6 +442,7 @@ namespace xsk { namespace gsc { namespace h1 { value.YY_MOVE_OR_COPY< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.YY_MOVE_OR_COPY< ast::stmt_list::ptr > (YY_MOVE (that.value)); @@ -745,6 +746,7 @@ namespace xsk { namespace gsc { namespace h1 { value.move< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (YY_MOVE (that.value)); @@ -1048,6 +1050,7 @@ namespace xsk { namespace gsc { namespace h1 { value.copy< ast::stmt_ifelse::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.copy< ast::stmt_list::ptr > (that.value); @@ -1350,6 +1353,7 @@ namespace xsk { namespace gsc { namespace h1 { value.move< ast::stmt_ifelse::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (that.value); @@ -1907,6 +1911,7 @@ namespace xsk { namespace gsc { namespace h1 { yylhs.value.emplace< ast::stmt_ifelse::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list yylhs.value.emplace< ast::stmt_list::ptr > (); @@ -1990,1291 +1995,1321 @@ namespace xsk { namespace gsc { namespace h1 { switch (yyn) { case 2: // root: program -#line 251 "parser.ypp" +#line 254 "parser.ypp" { ast = std::move(yystack_[0].value.as < ast::program::ptr > ()); } -#line 1996 "parser.cpp" +#line 2001 "parser.cpp" break; case 3: // root: %empty -#line 252 "parser.ypp" +#line 255 "parser.ypp" { ast = std::make_unique(yylhs.location); } -#line 2002 "parser.cpp" +#line 2007 "parser.cpp" break; case 4: // program: program inline -#line 257 "parser.ypp" +#line 260 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); } -#line 2008 "parser.cpp" +#line 2013 "parser.cpp" break; case 5: // program: program include -#line 259 "parser.ypp" +#line 262 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 2014 "parser.cpp" +#line 2019 "parser.cpp" break; case 6: // program: program declaration -#line 261 "parser.ypp" +#line 264 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2020 "parser.cpp" +#line 2025 "parser.cpp" break; case 7: // program: inline -#line 263 "parser.ypp" +#line 266 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); } -#line 2026 "parser.cpp" +#line 2031 "parser.cpp" break; case 8: // program: include -#line 265 "parser.ypp" +#line 268 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 2032 "parser.cpp" +#line 2037 "parser.cpp" break; case 9: // program: declaration -#line 267 "parser.ypp" +#line 270 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2038 "parser.cpp" +#line 2043 "parser.cpp" break; case 10: // inline: "#inline" expr_path ";" -#line 271 "parser.ypp" +#line 274 "parser.ypp" { h1_push_header(ctx, yystack_[1].value.as < ast::expr_path::ptr > ()->value); } -#line 2044 "parser.cpp" +#line 2049 "parser.cpp" break; case 11: // include: "#include" expr_path ";" -#line 276 "parser.ypp" +#line 279 "parser.ypp" { yylhs.value.as < ast::include::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_path::ptr > ())); } -#line 2050 "parser.cpp" +#line 2055 "parser.cpp" break; - case 12: // declaration: decl_usingtree -#line 280 "parser.ypp" + case 12: // declaration: "/#" +#line 283 "parser.ypp" + { yylhs.value.as < ast::decl > ().as_dev_begin = std::make_unique(yylhs.location); } +#line 2061 "parser.cpp" + break; + + case 13: // declaration: "#/" +#line 284 "parser.ypp" + { yylhs.value.as < ast::decl > ().as_dev_end = std::make_unique(yylhs.location); } +#line 2067 "parser.cpp" + break; + + case 14: // declaration: decl_usingtree +#line 285 "parser.ypp" { yylhs.value.as < ast::decl > ().as_usingtree = std::move(yystack_[0].value.as < ast::decl_usingtree::ptr > ()); } -#line 2056 "parser.cpp" +#line 2073 "parser.cpp" break; - case 13: // declaration: decl_constant -#line 281 "parser.ypp" + case 15: // declaration: decl_constant +#line 286 "parser.ypp" { yylhs.value.as < ast::decl > ().as_constant = std::move(yystack_[0].value.as < ast::decl_constant::ptr > ()); } -#line 2062 "parser.cpp" +#line 2079 "parser.cpp" break; - case 14: // declaration: decl_thread -#line 282 "parser.ypp" - { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } -#line 2068 "parser.cpp" - break; - - case 15: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" + case 16: // declaration: decl_thread #line 287 "parser.ypp" - { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_usingtree::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_string::ptr > ())); } -#line 2074 "parser.cpp" + { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } +#line 2085 "parser.cpp" break; - case 16: // decl_constant: expr_identifier "=" expr ";" + case 17: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" #line 292 "parser.ypp" - { yylhs.value.as < ast::decl_constant::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2080 "parser.cpp" + { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_usingtree::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_string::ptr > ())); } +#line 2091 "parser.cpp" break; - case 17: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block + case 18: // decl_constant: expr_identifier "=" expr ";" #line 297 "parser.ypp" - { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_thread::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2086 "parser.cpp" + { yylhs.value.as < ast::decl_constant::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } +#line 2097 "parser.cpp" break; - case 18: // stmt: stmt_block -#line 301 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } -#line 2092 "parser.cpp" - break; - - case 19: // stmt: stmt_call + case 19: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block #line 302 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } -#line 2098 "parser.cpp" + { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_thread::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } +#line 2103 "parser.cpp" break; - case 20: // stmt: stmt_assign -#line 303 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } -#line 2104 "parser.cpp" - break; - - case 21: // stmt: stmt_endon -#line 304 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } -#line 2110 "parser.cpp" - break; - - case 22: // stmt: stmt_notify -#line 305 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } -#line 2116 "parser.cpp" - break; - - case 23: // stmt: stmt_wait + case 20: // stmt: stmt_dev #line 306 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } -#line 2122 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } +#line 2109 "parser.cpp" break; - case 24: // stmt: stmt_waittill + case 21: // stmt: stmt_block #line 307 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } -#line 2128 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } +#line 2115 "parser.cpp" break; - case 25: // stmt: stmt_waittillmatch + case 22: // stmt: stmt_call #line 308 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } -#line 2134 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } +#line 2121 "parser.cpp" break; - case 26: // stmt: stmt_waittillframeend + case 23: // stmt: stmt_assign #line 309 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } -#line 2140 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } +#line 2127 "parser.cpp" break; - case 27: // stmt: stmt_waitframe + case 24: // stmt: stmt_endon #line 310 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waitframe = std::move(yystack_[0].value.as < ast::stmt_waitframe::ptr > ()); } -#line 2146 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } +#line 2133 "parser.cpp" break; - case 28: // stmt: stmt_if + case 25: // stmt: stmt_notify #line 311 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } -#line 2152 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } +#line 2139 "parser.cpp" break; - case 29: // stmt: stmt_ifelse + case 26: // stmt: stmt_wait #line 312 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } -#line 2158 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } +#line 2145 "parser.cpp" break; - case 30: // stmt: stmt_while + case 27: // stmt: stmt_waittill #line 313 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } -#line 2164 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } +#line 2151 "parser.cpp" break; - case 31: // stmt: stmt_dowhile + case 28: // stmt: stmt_waittillmatch #line 314 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } -#line 2170 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } +#line 2157 "parser.cpp" break; - case 32: // stmt: stmt_for + case 29: // stmt: stmt_waittillframeend #line 315 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } -#line 2176 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } +#line 2163 "parser.cpp" break; - case 33: // stmt: stmt_foreach + case 30: // stmt: stmt_waitframe #line 316 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } -#line 2182 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waitframe = std::move(yystack_[0].value.as < ast::stmt_waitframe::ptr > ()); } +#line 2169 "parser.cpp" break; - case 34: // stmt: stmt_switch + case 31: // stmt: stmt_if #line 317 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } -#line 2188 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } +#line 2175 "parser.cpp" break; - case 35: // stmt: stmt_case + case 32: // stmt: stmt_ifelse #line 318 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } -#line 2194 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } +#line 2181 "parser.cpp" break; - case 36: // stmt: stmt_default + case 33: // stmt: stmt_while #line 319 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } -#line 2200 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } +#line 2187 "parser.cpp" break; - case 37: // stmt: stmt_break + case 34: // stmt: stmt_dowhile #line 320 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } -#line 2206 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } +#line 2193 "parser.cpp" break; - case 38: // stmt: stmt_continue + case 35: // stmt: stmt_for #line 321 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } -#line 2212 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } +#line 2199 "parser.cpp" break; - case 39: // stmt: stmt_return + case 36: // stmt: stmt_foreach #line 322 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } -#line 2218 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } +#line 2205 "parser.cpp" break; - case 40: // stmt: stmt_breakpoint + case 37: // stmt: stmt_switch #line 323 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } -#line 2224 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } +#line 2211 "parser.cpp" break; - case 41: // stmt: stmt_prof_begin + case 38: // stmt: stmt_case #line 324 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } -#line 2230 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } +#line 2217 "parser.cpp" break; - case 42: // stmt: stmt_prof_end + case 39: // stmt: stmt_default #line 325 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } -#line 2236 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } +#line 2223 "parser.cpp" break; - case 43: // stmt_block: "{" stmt_list "}" + case 40: // stmt: stmt_break +#line 326 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } +#line 2229 "parser.cpp" + break; + + case 41: // stmt: stmt_continue +#line 327 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } +#line 2235 "parser.cpp" + break; + + case 42: // stmt: stmt_return +#line 328 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } +#line 2241 "parser.cpp" + break; + + case 43: // stmt: stmt_breakpoint #line 329 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } -#line 2242 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } +#line 2247 "parser.cpp" break; - case 44: // stmt_block: "{" "}" + case 44: // stmt: stmt_prof_begin #line 330 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } -#line 2248 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } +#line 2253 "parser.cpp" break; - case 45: // stmt_list: stmt_list stmt + case 45: // stmt: stmt_prof_end +#line 331 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } +#line 2259 "parser.cpp" + break; + + case 46: // stmt_dev: "/#" stmt_list "#/" #line 335 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2254 "parser.cpp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } +#line 2265 "parser.cpp" break; - case 46: // stmt_list: stmt -#line 337 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2260 "parser.cpp" + case 47: // stmt_dev: "/#" "#/" +#line 336 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } +#line 2271 "parser.cpp" break; - case 47: // stmt_expr: expr_assign -#line 342 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2266 "parser.cpp" + case 48: // stmt_block: "{" stmt_list "}" +#line 340 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } +#line 2277 "parser.cpp" break; - case 48: // stmt_expr: expr_increment -#line 344 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2272 "parser.cpp" + case 49: // stmt_block: "{" "}" +#line 341 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } +#line 2283 "parser.cpp" break; - case 49: // stmt_expr: expr_decrement + case 50: // stmt_list: stmt_list stmt #line 346 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2278 "parser.cpp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2289 "parser.cpp" break; - case 50: // stmt_expr: %empty + case 51: // stmt_list: stmt #line 348 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2284 "parser.cpp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2295 "parser.cpp" break; - case 51: // stmt_call: expr_call ";" + case 52: // stmt_expr: expr_assign #line 353 "parser.ypp" - { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } -#line 2290 "parser.cpp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2301 "parser.cpp" break; - case 52: // stmt_call: expr_method ";" + case 53: // stmt_expr: expr_increment #line 355 "parser.ypp" - { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_method::ptr > ()))); } -#line 2296 "parser.cpp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2307 "parser.cpp" break; - case 53: // stmt_assign: expr_assign ";" -#line 360 "parser.ypp" - { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2302 "parser.cpp" + case 54: // stmt_expr: expr_decrement +#line 357 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2313 "parser.cpp" break; - case 54: // stmt_assign: expr_increment ";" -#line 362 "parser.ypp" - { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2308 "parser.cpp" + case 55: // stmt_expr: %empty +#line 359 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } +#line 2319 "parser.cpp" break; - case 55: // stmt_assign: expr_decrement ";" + case 56: // stmt_call: expr_call ";" #line 364 "parser.ypp" + { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } +#line 2325 "parser.cpp" + break; + + case 57: // stmt_call: expr_method ";" +#line 366 "parser.ypp" + { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_method::ptr > ()))); } +#line 2331 "parser.cpp" + break; + + case 58: // stmt_assign: expr_assign ";" +#line 371 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2314 "parser.cpp" +#line 2337 "parser.cpp" break; - case 56: // stmt_endon: expr_object "endon" "(" expr ")" ";" -#line 369 "parser.ypp" + case 59: // stmt_assign: expr_increment ";" +#line 373 "parser.ypp" + { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 2343 "parser.cpp" + break; + + case 60: // stmt_assign: expr_decrement ";" +#line 375 "parser.ypp" + { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 2349 "parser.cpp" + break; + + case 61: // stmt_endon: expr_object "endon" "(" expr ")" ";" +#line 380 "parser.ypp" { yylhs.value.as < ast::stmt_endon::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ())); } -#line 2320 "parser.cpp" +#line 2355 "parser.cpp" break; - case 57: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" -#line 374 "parser.ypp" + case 62: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" +#line 385 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2326 "parser.cpp" +#line 2361 "parser.cpp" break; - case 58: // stmt_notify: expr_object "notify" "(" expr ")" ";" -#line 376 "parser.ypp" + case 63: // stmt_notify: expr_object "notify" "(" expr ")" ";" +#line 387 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2332 "parser.cpp" +#line 2367 "parser.cpp" break; - case 59: // stmt_wait: "wait" expr ";" -#line 381 "parser.ypp" + case 64: // stmt_wait: "wait" expr ";" +#line 392 "parser.ypp" { yylhs.value.as < ast::stmt_wait::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2338 "parser.cpp" +#line 2373 "parser.cpp" break; - case 60: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" -#line 386 "parser.ypp" + case 65: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" +#line 397 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2344 "parser.cpp" +#line 2379 "parser.cpp" break; - case 61: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" -#line 388 "parser.ypp" + case 66: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" +#line 399 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2350 "parser.cpp" +#line 2385 "parser.cpp" break; - case 62: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" -#line 393 "parser.ypp" + case 67: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" +#line 404 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2356 "parser.cpp" +#line 2391 "parser.cpp" break; - case 63: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" -#line 395 "parser.ypp" + case 68: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" +#line 406 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2362 "parser.cpp" +#line 2397 "parser.cpp" break; - case 64: // stmt_waittillframeend: "waittillframeend" ";" -#line 400 "parser.ypp" + case 69: // stmt_waittillframeend: "waittillframeend" ";" +#line 411 "parser.ypp" { yylhs.value.as < ast::stmt_waittillframeend::ptr > () = std::make_unique(yylhs.location); } -#line 2368 "parser.cpp" +#line 2403 "parser.cpp" break; - case 65: // stmt_waitframe: "waitframe" ";" -#line 405 "parser.ypp" + case 70: // stmt_waitframe: "waitframe" ";" +#line 416 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } -#line 2374 "parser.cpp" +#line 2409 "parser.cpp" break; - case 66: // stmt_waitframe: "waitframe" "(" ")" ";" -#line 407 "parser.ypp" + case 71: // stmt_waitframe: "waitframe" "(" ")" ";" +#line 418 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } -#line 2380 "parser.cpp" +#line 2415 "parser.cpp" break; - case 67: // stmt_if: "if" "(" expr ")" stmt -#line 412 "parser.ypp" + case 72: // stmt_if: "if" "(" expr ")" stmt +#line 423 "parser.ypp" { yylhs.value.as < ast::stmt_if::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2386 "parser.cpp" +#line 2421 "parser.cpp" break; - case 68: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 417 "parser.ypp" + case 73: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 428 "parser.ypp" { yylhs.value.as < ast::stmt_ifelse::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::stmt > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2392 "parser.cpp" +#line 2427 "parser.cpp" break; - case 69: // stmt_while: "while" "(" expr ")" stmt -#line 422 "parser.ypp" + case 74: // stmt_while: "while" "(" expr ")" stmt +#line 433 "parser.ypp" { yylhs.value.as < ast::stmt_while::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2398 "parser.cpp" +#line 2433 "parser.cpp" break; - case 70: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" -#line 427 "parser.ypp" + case 75: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" +#line 438 "parser.ypp" { yylhs.value.as < ast::stmt_dowhile::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[5].value.as < ast::stmt > ())); } -#line 2404 "parser.cpp" +#line 2439 "parser.cpp" break; - case 71: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt -#line 432 "parser.ypp" + case 76: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt +#line 443 "parser.ypp" { yylhs.value.as < ast::stmt_for::ptr > () = std::make_unique(yylhs.location, ast::stmt(std::move(yystack_[6].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[4].value.as < ast::expr > ()), ast::stmt(std::move(yystack_[2].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2410 "parser.cpp" +#line 2445 "parser.cpp" break; - case 72: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt -#line 437 "parser.ypp" + case 77: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt +#line 448 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2416 "parser.cpp" +#line 2451 "parser.cpp" break; - case 73: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt -#line 439 "parser.ypp" + case 78: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt +#line 450 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[6].value.as < ast::expr_identifier::ptr > ())), ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2422 "parser.cpp" +#line 2457 "parser.cpp" break; - case 74: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 444 "parser.ypp" + case 79: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 455 "parser.ypp" { yylhs.value.as < ast::stmt_switch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2428 "parser.cpp" +#line 2463 "parser.cpp" break; - case 75: // stmt_case: "case" expr_integer ":" -#line 449 "parser.ypp" + case 80: // stmt_case: "case" expr_integer ":" +#line 460 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_integer::ptr > ())), std::make_unique(yylhs.location)); } -#line 2434 "parser.cpp" +#line 2469 "parser.cpp" break; - case 76: // stmt_case: "case" expr_string ":" -#line 451 "parser.ypp" + case 81: // stmt_case: "case" expr_string ":" +#line 462 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_string::ptr > ())), std::make_unique(yylhs.location)); } -#line 2440 "parser.cpp" +#line 2475 "parser.cpp" break; - case 77: // stmt_default: "default" ":" -#line 456 "parser.ypp" + case 82: // stmt_default: "default" ":" +#line 467 "parser.ypp" { yylhs.value.as < ast::stmt_default::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2446 "parser.cpp" +#line 2481 "parser.cpp" break; - case 78: // stmt_break: "break" ";" -#line 461 "parser.ypp" + case 83: // stmt_break: "break" ";" +#line 472 "parser.ypp" { yylhs.value.as < ast::stmt_break::ptr > () = std::make_unique(yylhs.location); } -#line 2452 "parser.cpp" +#line 2487 "parser.cpp" break; - case 79: // stmt_continue: "continue" ";" -#line 466 "parser.ypp" + case 84: // stmt_continue: "continue" ";" +#line 477 "parser.ypp" { yylhs.value.as < ast::stmt_continue::ptr > () = std::make_unique(yylhs.location); } -#line 2458 "parser.cpp" +#line 2493 "parser.cpp" break; - case 80: // stmt_return: "return" expr ";" -#line 471 "parser.ypp" + case 85: // stmt_return: "return" expr ";" +#line 482 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2464 "parser.cpp" +#line 2499 "parser.cpp" break; - case 81: // stmt_return: "return" ";" -#line 473 "parser.ypp" + case 86: // stmt_return: "return" ";" +#line 484 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2470 "parser.cpp" +#line 2505 "parser.cpp" break; - case 82: // stmt_breakpoint: "breakpoint" ";" -#line 478 "parser.ypp" + case 87: // stmt_breakpoint: "breakpoint" ";" +#line 489 "parser.ypp" { yylhs.value.as < ast::stmt_breakpoint::ptr > () = std::make_unique(yylhs.location); } -#line 2476 "parser.cpp" +#line 2511 "parser.cpp" break; - case 83: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 483 "parser.ypp" - { yylhs.value.as < ast::stmt_prof_begin::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2482 "parser.cpp" - break; - - case 84: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 488 "parser.ypp" - { yylhs.value.as < ast::stmt_prof_end::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2488 "parser.cpp" - break; - - case 85: // expr: expr_ternary -#line 492 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2494 "parser.cpp" - break; - - case 86: // expr: expr_binary -#line 493 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2500 "parser.cpp" - break; - - case 87: // expr: expr_primitive + case 88: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" #line 494 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2506 "parser.cpp" + { yylhs.value.as < ast::stmt_prof_begin::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } +#line 2517 "parser.cpp" break; - case 88: // expr_or_empty: expr -#line 498 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2512 "parser.cpp" - break; - - case 89: // expr_or_empty: %empty + case 89: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" #line 499 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } -#line 2518 "parser.cpp" + { yylhs.value.as < ast::stmt_prof_end::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } +#line 2523 "parser.cpp" break; - case 90: // expr_assign: expr_object "=" expr + case 90: // expr: expr_ternary +#line 503 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2529 "parser.cpp" + break; + + case 91: // expr: expr_binary #line 504 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2524 "parser.cpp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2535 "parser.cpp" break; - case 91: // expr_assign: expr_object "|=" expr -#line 506 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2530 "parser.cpp" + case 92: // expr: expr_primitive +#line 505 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2541 "parser.cpp" break; - case 92: // expr_assign: expr_object "&=" expr -#line 508 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2536 "parser.cpp" + case 93: // expr_or_empty: expr +#line 509 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2547 "parser.cpp" break; - case 93: // expr_assign: expr_object "^=" expr + case 94: // expr_or_empty: %empty #line 510 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } +#line 2553 "parser.cpp" + break; + + case 95: // expr_assign: expr_object "=" expr +#line 515 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2559 "parser.cpp" + break; + + case 96: // expr_assign: expr_object "|=" expr +#line 517 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2565 "parser.cpp" + break; + + case 97: // expr_assign: expr_object "&=" expr +#line 519 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2571 "parser.cpp" + break; + + case 98: // expr_assign: expr_object "^=" expr +#line 521 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2542 "parser.cpp" +#line 2577 "parser.cpp" break; - case 94: // expr_assign: expr_object "<<=" expr -#line 512 "parser.ypp" + case 99: // expr_assign: expr_object "<<=" expr +#line 523 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()),std::move( yystack_[0].value.as < ast::expr > ())); } -#line 2548 "parser.cpp" +#line 2583 "parser.cpp" break; - case 95: // expr_assign: expr_object ">>=" expr -#line 514 "parser.ypp" + case 100: // expr_assign: expr_object ">>=" expr +#line 525 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2554 "parser.cpp" +#line 2589 "parser.cpp" break; - case 96: // expr_assign: expr_object "+=" expr -#line 516 "parser.ypp" + case 101: // expr_assign: expr_object "+=" expr +#line 527 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2560 "parser.cpp" +#line 2595 "parser.cpp" break; - case 97: // expr_assign: expr_object "-=" expr -#line 518 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2566 "parser.cpp" - break; - - case 98: // expr_assign: expr_object "*=" expr -#line 520 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2572 "parser.cpp" - break; - - case 99: // expr_assign: expr_object "/=" expr -#line 522 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2578 "parser.cpp" - break; - - case 100: // expr_assign: expr_object "%=" expr -#line 524 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2584 "parser.cpp" - break; - - case 101: // expr_increment: "++" expr_object + case 102: // expr_assign: expr_object "-=" expr #line 529 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2590 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2601 "parser.cpp" break; - case 102: // expr_increment: expr_object "++" + case 103: // expr_assign: expr_object "*=" expr #line 531 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2607 "parser.cpp" + break; + + case 104: // expr_assign: expr_object "/=" expr +#line 533 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2613 "parser.cpp" + break; + + case 105: // expr_assign: expr_object "%=" expr +#line 535 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2619 "parser.cpp" + break; + + case 106: // expr_increment: "++" expr_object +#line 540 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } +#line 2625 "parser.cpp" + break; + + case 107: // expr_increment: expr_object "++" +#line 542 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2596 "parser.cpp" +#line 2631 "parser.cpp" break; - case 103: // expr_decrement: "--" expr_object -#line 536 "parser.ypp" + case 108: // expr_decrement: "--" expr_object +#line 547 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2602 "parser.cpp" +#line 2637 "parser.cpp" break; - case 104: // expr_decrement: expr_object "--" -#line 538 "parser.ypp" + case 109: // expr_decrement: expr_object "--" +#line 549 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2608 "parser.cpp" +#line 2643 "parser.cpp" break; - case 105: // expr_ternary: expr "?" expr ":" expr -#line 543 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2614 "parser.cpp" - break; - - case 106: // expr_binary: expr "||" expr -#line 548 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2620 "parser.cpp" - break; - - case 107: // expr_binary: expr "&&" expr -#line 550 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2626 "parser.cpp" - break; - - case 108: // expr_binary: expr "==" expr -#line 552 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2632 "parser.cpp" - break; - - case 109: // expr_binary: expr "!=" expr + case 110: // expr_ternary: expr "?" expr ":" expr #line 554 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2649 "parser.cpp" + break; + + case 111: // expr_binary: expr "||" expr +#line 559 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2655 "parser.cpp" + break; + + case 112: // expr_binary: expr "&&" expr +#line 561 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2661 "parser.cpp" + break; + + case 113: // expr_binary: expr "==" expr +#line 563 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2667 "parser.cpp" + break; + + case 114: // expr_binary: expr "!=" expr +#line 565 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2638 "parser.cpp" +#line 2673 "parser.cpp" break; - case 110: // expr_binary: expr "<=" expr -#line 556 "parser.ypp" + case 115: // expr_binary: expr "<=" expr +#line 567 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2644 "parser.cpp" +#line 2679 "parser.cpp" break; - case 111: // expr_binary: expr ">=" expr -#line 558 "parser.ypp" + case 116: // expr_binary: expr ">=" expr +#line 569 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2650 "parser.cpp" +#line 2685 "parser.cpp" break; - case 112: // expr_binary: expr "<" expr -#line 560 "parser.ypp" + case 117: // expr_binary: expr "<" expr +#line 571 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2656 "parser.cpp" +#line 2691 "parser.cpp" break; - case 113: // expr_binary: expr ">" expr -#line 562 "parser.ypp" + case 118: // expr_binary: expr ">" expr +#line 573 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2662 "parser.cpp" +#line 2697 "parser.cpp" break; - case 114: // expr_binary: expr "|" expr -#line 564 "parser.ypp" + case 119: // expr_binary: expr "|" expr +#line 575 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2668 "parser.cpp" +#line 2703 "parser.cpp" break; - case 115: // expr_binary: expr "&" expr -#line 566 "parser.ypp" + case 120: // expr_binary: expr "&" expr +#line 577 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2674 "parser.cpp" +#line 2709 "parser.cpp" break; - case 116: // expr_binary: expr "^" expr -#line 568 "parser.ypp" + case 121: // expr_binary: expr "^" expr +#line 579 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2680 "parser.cpp" +#line 2715 "parser.cpp" break; - case 117: // expr_binary: expr "<<" expr -#line 570 "parser.ypp" + case 122: // expr_binary: expr "<<" expr +#line 581 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2686 "parser.cpp" +#line 2721 "parser.cpp" break; - case 118: // expr_binary: expr ">>" expr -#line 572 "parser.ypp" + case 123: // expr_binary: expr ">>" expr +#line 583 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2692 "parser.cpp" +#line 2727 "parser.cpp" break; - case 119: // expr_binary: expr "+" expr -#line 574 "parser.ypp" + case 124: // expr_binary: expr "+" expr +#line 585 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2698 "parser.cpp" +#line 2733 "parser.cpp" break; - case 120: // expr_binary: expr "-" expr -#line 576 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2704 "parser.cpp" - break; - - case 121: // expr_binary: expr "*" expr -#line 578 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2710 "parser.cpp" - break; - - case 122: // expr_binary: expr "/" expr -#line 580 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2716 "parser.cpp" - break; - - case 123: // expr_binary: expr "%" expr -#line 582 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2722 "parser.cpp" - break; - - case 124: // expr_primitive: expr_complement -#line 586 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } -#line 2728 "parser.cpp" - break; - - case 125: // expr_primitive: expr_not + case 125: // expr_binary: expr "-" expr #line 587 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } -#line 2734 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2739 "parser.cpp" break; - case 126: // expr_primitive: expr_call -#line 588 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 2740 "parser.cpp" - break; - - case 127: // expr_primitive: expr_method + case 126: // expr_binary: expr "*" expr #line 589 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 2746 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2745 "parser.cpp" break; - case 128: // expr_primitive: expr_add_array -#line 590 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } -#line 2752 "parser.cpp" - break; - - case 129: // expr_primitive: expr_reference + case 127: // expr_binary: expr "/" expr #line 591 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } -#line 2758 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2751 "parser.cpp" break; - case 130: // expr_primitive: expr_array -#line 592 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 2764 "parser.cpp" - break; - - case 131: // expr_primitive: expr_field + case 128: // expr_binary: expr "%" expr #line 593 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 2770 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2757 "parser.cpp" break; - case 132: // expr_primitive: expr_size -#line 594 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } -#line 2776 "parser.cpp" - break; - - case 133: // expr_primitive: expr_paren -#line 595 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } -#line 2782 "parser.cpp" - break; - - case 134: // expr_primitive: expr_thisthread -#line 596 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } -#line 2788 "parser.cpp" - break; - - case 135: // expr_primitive: expr_empty_array + case 129: // expr_primitive: expr_complement #line 597 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } -#line 2794 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } +#line 2763 "parser.cpp" break; - case 136: // expr_primitive: expr_undefined + case 130: // expr_primitive: expr_not #line 598 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } -#line 2800 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } +#line 2769 "parser.cpp" break; - case 137: // expr_primitive: expr_game + case 131: // expr_primitive: expr_call #line 599 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 2806 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 2775 "parser.cpp" break; - case 138: // expr_primitive: expr_self + case 132: // expr_primitive: expr_method #line 600 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 2812 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 2781 "parser.cpp" break; - case 139: // expr_primitive: expr_anim + case 133: // expr_primitive: expr_add_array #line 601 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 2818 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } +#line 2787 "parser.cpp" break; - case 140: // expr_primitive: expr_level + case 134: // expr_primitive: expr_reference #line 602 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 2824 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } +#line 2793 "parser.cpp" break; - case 141: // expr_primitive: expr_animation + case 135: // expr_primitive: expr_array #line 603 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } -#line 2830 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 2799 "parser.cpp" break; - case 142: // expr_primitive: expr_animtree + case 136: // expr_primitive: expr_field #line 604 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } -#line 2836 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 2805 "parser.cpp" break; - case 143: // expr_primitive: expr_identifier + case 137: // expr_primitive: expr_size #line 605 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 2842 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } +#line 2811 "parser.cpp" break; - case 144: // expr_primitive: expr_istring + case 138: // expr_primitive: expr_paren #line 606 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } -#line 2848 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } +#line 2817 "parser.cpp" break; - case 145: // expr_primitive: expr_string + case 139: // expr_primitive: expr_thisthread #line 607 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } -#line 2854 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } +#line 2823 "parser.cpp" break; - case 146: // expr_primitive: expr_color + case 140: // expr_primitive: expr_empty_array #line 608 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } -#line 2860 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } +#line 2829 "parser.cpp" break; - case 147: // expr_primitive: expr_vector + case 141: // expr_primitive: expr_undefined #line 609 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } -#line 2866 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } +#line 2835 "parser.cpp" break; - case 148: // expr_primitive: expr_float + case 142: // expr_primitive: expr_game #line 610 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } -#line 2872 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 2841 "parser.cpp" break; - case 149: // expr_primitive: expr_integer + case 143: // expr_primitive: expr_self #line 611 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } -#line 2878 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 2847 "parser.cpp" break; - case 150: // expr_primitive: expr_false + case 144: // expr_primitive: expr_anim #line 612 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } -#line 2884 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 2853 "parser.cpp" break; - case 151: // expr_primitive: expr_true + case 145: // expr_primitive: expr_level #line 613 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } -#line 2890 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 2859 "parser.cpp" break; - case 152: // expr_complement: "~" expr + case 146: // expr_primitive: expr_animation +#line 614 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } +#line 2865 "parser.cpp" + break; + + case 147: // expr_primitive: expr_animtree +#line 615 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } +#line 2871 "parser.cpp" + break; + + case 148: // expr_primitive: expr_identifier +#line 616 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 2877 "parser.cpp" + break; + + case 149: // expr_primitive: expr_istring +#line 617 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } +#line 2883 "parser.cpp" + break; + + case 150: // expr_primitive: expr_string #line 618 "parser.ypp" - { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2896 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } +#line 2889 "parser.cpp" break; - case 153: // expr_not: "!" expr + case 151: // expr_primitive: expr_color +#line 619 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } +#line 2895 "parser.cpp" + break; + + case 152: // expr_primitive: expr_vector +#line 620 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } +#line 2901 "parser.cpp" + break; + + case 153: // expr_primitive: expr_float +#line 621 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } +#line 2907 "parser.cpp" + break; + + case 154: // expr_primitive: expr_integer +#line 622 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } +#line 2913 "parser.cpp" + break; + + case 155: // expr_primitive: expr_false #line 623 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } +#line 2919 "parser.cpp" + break; + + case 156: // expr_primitive: expr_true +#line 624 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } +#line 2925 "parser.cpp" + break; + + case 157: // expr_complement: "~" expr +#line 629 "parser.ypp" + { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2931 "parser.cpp" + break; + + case 158: // expr_not: "!" expr +#line 634 "parser.ypp" { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2902 "parser.cpp" +#line 2937 "parser.cpp" break; - case 154: // expr_call: expr_function -#line 627 "parser.ypp" + case 159: // expr_call: expr_function +#line 638 "parser.ypp" { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2908 "parser.cpp" +#line 2943 "parser.cpp" break; - case 155: // expr_call: expr_pointer -#line 628 "parser.ypp" - { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2914 "parser.cpp" - break; - - case 156: // expr_method: expr_object expr_function -#line 631 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2920 "parser.cpp" - break; - - case 157: // expr_method: expr_object expr_pointer -#line 632 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2926 "parser.cpp" - break; - - case 158: // expr_function: expr_identifier "(" expr_arguments ")" -#line 637 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2932 "parser.cpp" - break; - - case 159: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" + case 160: // expr_call: expr_pointer #line 639 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2938 "parser.cpp" + { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } +#line 2949 "parser.cpp" break; - case 160: // expr_function: "thread" expr_identifier "(" expr_arguments ")" -#line 641 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2944 "parser.cpp" + case 161: // expr_method: expr_object expr_function +#line 642 "parser.ypp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 2955 "parser.cpp" break; - case 161: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" + case 162: // expr_method: expr_object expr_pointer #line 643 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2950 "parser.cpp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 2961 "parser.cpp" break; - case 162: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" -#line 645 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2956 "parser.cpp" + case 163: // expr_function: expr_identifier "(" expr_arguments ")" +#line 648 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 2967 "parser.cpp" break; - case 163: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 647 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2962 "parser.cpp" + case 164: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" +#line 650 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 2973 "parser.cpp" break; - case 164: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" + case 165: // expr_function: "thread" expr_identifier "(" expr_arguments ")" #line 652 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2968 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 2979 "parser.cpp" break; - case 165: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 166: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" #line 654 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2974 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 2985 "parser.cpp" break; - case 166: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 167: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" #line 656 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2980 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 2991 "parser.cpp" break; - case 167: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 168: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" #line 658 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::builtin); } -#line 2986 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 2997 "parser.cpp" break; - case 168: // expr_add_array: "[" expr_arguments_no_empty "]" + case 169: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" #line 663 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 3003 "parser.cpp" + break; + + case 170: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 665 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 3009 "parser.cpp" + break; + + case 171: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 667 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 3015 "parser.cpp" + break; + + case 172: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 669 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::builtin); } +#line 3021 "parser.cpp" + break; + + case 173: // expr_add_array: "[" expr_arguments_no_empty "]" +#line 674 "parser.ypp" { yylhs.value.as < ast::expr_add_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ())); } -#line 2992 "parser.cpp" +#line 3027 "parser.cpp" break; - case 169: // expr_parameters: expr_parameters "," expr_identifier -#line 668 "parser.ypp" - { yylhs.value.as < ast::expr_parameters::ptr > () = std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 2998 "parser.cpp" - break; - - case 170: // expr_parameters: expr_identifier -#line 670 "parser.ypp" - { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3004 "parser.cpp" - break; - - case 171: // expr_parameters: %empty -#line 672 "parser.ypp" - { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } -#line 3010 "parser.cpp" - break; - - case 172: // expr_arguments: expr_arguments_no_empty -#line 677 "parser.ypp" - { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } -#line 3016 "parser.cpp" - break; - - case 173: // expr_arguments: %empty + case 174: // expr_parameters: expr_parameters "," expr_identifier #line 679 "parser.ypp" + { yylhs.value.as < ast::expr_parameters::ptr > () = std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } +#line 3033 "parser.cpp" + break; + + case 175: // expr_parameters: expr_identifier +#line 681 "parser.ypp" + { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } +#line 3039 "parser.cpp" + break; + + case 176: // expr_parameters: %empty +#line 683 "parser.ypp" + { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } +#line 3045 "parser.cpp" + break; + + case 177: // expr_arguments: expr_arguments_no_empty +#line 688 "parser.ypp" + { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } +#line 3051 "parser.cpp" + break; + + case 178: // expr_arguments: %empty +#line 690 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); } -#line 3022 "parser.cpp" +#line 3057 "parser.cpp" break; - case 174: // expr_arguments_no_empty: expr_arguments "," expr -#line 684 "parser.ypp" + case 179: // expr_arguments_no_empty: expr_arguments "," expr +#line 695 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ()); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 3028 "parser.cpp" +#line 3063 "parser.cpp" break; - case 175: // expr_arguments_no_empty: expr -#line 686 "parser.ypp" + case 180: // expr_arguments_no_empty: expr +#line 697 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 3034 "parser.cpp" +#line 3069 "parser.cpp" break; - case 176: // expr_reference: "::" expr_identifier -#line 691 "parser.ypp" + case 181: // expr_reference: "::" expr_identifier +#line 702 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3040 "parser.cpp" +#line 3075 "parser.cpp" break; - case 177: // expr_reference: expr_path "::" expr_identifier -#line 693 "parser.ypp" + case 182: // expr_reference: expr_path "::" expr_identifier +#line 704 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_path::ptr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3046 "parser.cpp" +#line 3081 "parser.cpp" break; - case 178: // expr_array: expr_object "[" expr "]" -#line 698 "parser.ypp" + case 183: // expr_array: expr_object "[" expr "]" +#line 709 "parser.ypp" { yylhs.value.as < ast::expr_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3052 "parser.cpp" +#line 3087 "parser.cpp" break; - case 179: // expr_field: expr_object "." expr_identifier -#line 703 "parser.ypp" + case 184: // expr_field: expr_object "." expr_identifier +#line 714 "parser.ypp" { yylhs.value.as < ast::expr_field::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3058 "parser.cpp" +#line 3093 "parser.cpp" break; - case 180: // expr_size: expr_object ".size" -#line 708 "parser.ypp" - { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3064 "parser.cpp" - break; - - case 181: // expr_paren: "(" expr ")" -#line 713 "parser.ypp" - { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3070 "parser.cpp" - break; - - case 182: // expr_object: expr_call -#line 717 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 3076 "parser.cpp" - break; - - case 183: // expr_object: expr_method -#line 718 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 3082 "parser.cpp" - break; - - case 184: // expr_object: expr_array + case 185: // expr_size: expr_object ".size" #line 719 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 3088 "parser.cpp" + { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3099 "parser.cpp" break; - case 185: // expr_object: expr_field -#line 720 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 3094 "parser.cpp" - break; - - case 186: // expr_object: expr_game -#line 721 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 3100 "parser.cpp" - break; - - case 187: // expr_object: expr_self -#line 722 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 3106 "parser.cpp" - break; - - case 188: // expr_object: expr_anim -#line 723 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 3112 "parser.cpp" - break; - - case 189: // expr_object: expr_level + case 186: // expr_paren: "(" expr ")" #line 724 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 3118 "parser.cpp" + { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3105 "parser.cpp" break; - case 190: // expr_object: expr_identifier -#line 725 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 3124 "parser.cpp" + case 187: // expr_object: expr_call +#line 728 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 3111 "parser.cpp" break; - case 191: // expr_thisthread: "thisthread" + case 188: // expr_object: expr_method +#line 729 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 3117 "parser.cpp" + break; + + case 189: // expr_object: expr_array #line 730 "parser.ypp" - { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } -#line 3130 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 3123 "parser.cpp" break; - case 192: // expr_empty_array: "[" "]" + case 190: // expr_object: expr_field +#line 731 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 3129 "parser.cpp" + break; + + case 191: // expr_object: expr_game +#line 732 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 3135 "parser.cpp" + break; + + case 192: // expr_object: expr_self +#line 733 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 3141 "parser.cpp" + break; + + case 193: // expr_object: expr_anim +#line 734 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 3147 "parser.cpp" + break; + + case 194: // expr_object: expr_level #line 735 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 3153 "parser.cpp" + break; + + case 195: // expr_object: expr_identifier +#line 736 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 3159 "parser.cpp" + break; + + case 196: // expr_thisthread: "thisthread" +#line 741 "parser.ypp" + { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } +#line 3165 "parser.cpp" + break; + + case 197: // expr_empty_array: "[" "]" +#line 746 "parser.ypp" { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } -#line 3136 "parser.cpp" +#line 3171 "parser.cpp" break; - case 193: // expr_undefined: "undefined" -#line 740 "parser.ypp" + case 198: // expr_undefined: "undefined" +#line 751 "parser.ypp" { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } -#line 3142 "parser.cpp" +#line 3177 "parser.cpp" break; - case 194: // expr_game: "game" -#line 745 "parser.ypp" + case 199: // expr_game: "game" +#line 756 "parser.ypp" { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } -#line 3148 "parser.cpp" +#line 3183 "parser.cpp" break; - case 195: // expr_self: "self" -#line 750 "parser.ypp" + case 200: // expr_self: "self" +#line 761 "parser.ypp" { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } -#line 3154 "parser.cpp" +#line 3189 "parser.cpp" break; - case 196: // expr_anim: "anim" -#line 755 "parser.ypp" + case 201: // expr_anim: "anim" +#line 766 "parser.ypp" { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } -#line 3160 "parser.cpp" +#line 3195 "parser.cpp" break; - case 197: // expr_level: "level" -#line 760 "parser.ypp" + case 202: // expr_level: "level" +#line 771 "parser.ypp" { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } -#line 3166 "parser.cpp" +#line 3201 "parser.cpp" break; - case 198: // expr_animation: "%" "identifier" -#line 765 "parser.ypp" + case 203: // expr_animation: "%" "identifier" +#line 776 "parser.ypp" { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3172 "parser.cpp" +#line 3207 "parser.cpp" break; - case 199: // expr_animtree: "#animtree" -#line 770 "parser.ypp" + case 204: // expr_animtree: "#animtree" +#line 781 "parser.ypp" { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } -#line 3178 "parser.cpp" +#line 3213 "parser.cpp" break; - case 200: // expr_identifier: "identifier" -#line 775 "parser.ypp" + case 205: // expr_identifier: "identifier" +#line 786 "parser.ypp" { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3184 "parser.cpp" +#line 3219 "parser.cpp" break; - case 201: // expr_path: "path" -#line 780 "parser.ypp" + case 206: // expr_path: "path" +#line 791 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3190 "parser.cpp" +#line 3225 "parser.cpp" break; - case 202: // expr_path: expr_identifier -#line 782 "parser.ypp" + case 207: // expr_path: expr_identifier +#line 793 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < ast::expr_identifier::ptr > ()->value); } -#line 3196 "parser.cpp" +#line 3231 "parser.cpp" break; - case 203: // expr_istring: "localized string" -#line 787 "parser.ypp" + case 208: // expr_istring: "localized string" +#line 798 "parser.ypp" { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3202 "parser.cpp" +#line 3237 "parser.cpp" break; - case 204: // expr_string: "string literal" -#line 792 "parser.ypp" + case 209: // expr_string: "string literal" +#line 803 "parser.ypp" { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3208 "parser.cpp" +#line 3243 "parser.cpp" break; - case 205: // expr_color: "color" -#line 797 "parser.ypp" + case 210: // expr_color: "color" +#line 808 "parser.ypp" { yylhs.value.as < ast::expr_color::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3214 "parser.cpp" +#line 3249 "parser.cpp" break; - case 206: // expr_vector: "(" expr "," expr "," expr ")" -#line 802 "parser.ypp" + case 211: // expr_vector: "(" expr "," expr "," expr ")" +#line 813 "parser.ypp" { yylhs.value.as < ast::expr_vector::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3220 "parser.cpp" +#line 3255 "parser.cpp" break; - case 207: // expr_float: "-" "float" -#line 807 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3226 "parser.cpp" - break; - - case 208: // expr_float: "float" -#line 809 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3232 "parser.cpp" - break; - - case 209: // expr_integer: "-" "int" -#line 814 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3238 "parser.cpp" - break; - - case 210: // expr_integer: "int" -#line 816 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3244 "parser.cpp" - break; - - case 211: // expr_integer: "octal int" + case 212: // expr_float: "-" "float" #line 818 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3250 "parser.cpp" + { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 3261 "parser.cpp" break; - case 212: // expr_integer: "binary int" + case 213: // expr_float: "float" #line 820 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3256 "parser.cpp" + { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3267 "parser.cpp" break; - case 213: // expr_integer: "hexadecimal int" -#line 822 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3262 "parser.cpp" + case 214: // expr_integer: "-" "int" +#line 825 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 3273 "parser.cpp" break; - case 214: // expr_false: "false" + case 215: // expr_integer: "int" #line 827 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3279 "parser.cpp" + break; + + case 216: // expr_integer: "octal int" +#line 829 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3285 "parser.cpp" + break; + + case 217: // expr_integer: "binary int" +#line 831 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3291 "parser.cpp" + break; + + case 218: // expr_integer: "hexadecimal int" +#line 833 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3297 "parser.cpp" + break; + + case 219: // expr_false: "false" +#line 838 "parser.ypp" { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } -#line 3268 "parser.cpp" +#line 3303 "parser.cpp" break; - case 215: // expr_true: "true" -#line 832 "parser.ypp" + case 220: // expr_true: "true" +#line 843 "parser.ypp" { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } -#line 3274 "parser.cpp" +#line 3309 "parser.cpp" break; -#line 3278 "parser.cpp" +#line 3313 "parser.cpp" default: break; @@ -3458,35 +3493,36 @@ namespace xsk { namespace gsc { namespace h1 { { static const char *const yy_sname[] = { - "end of file", "error", "invalid token", "#inline", "#include", - "#using_animtree", "#animtree", "endon", "notify", "wait", "waittill", - "waittillmatch", "waittillframeend", "waitframe", "if", "else", "do", - "while", "for", "foreach", "in", "switch", "case", "default", "break", - "continue", "return", "breakpoint", "prof_begin", "prof_end", "thread", - "childthread", "thisthread", "call", "true", "false", "undefined", - ".size", "game", "self", "anim", "level", "(", ")", "{", "}", "[", "]", - ",", ".", "::", ":", ";", "?", "++", "--", "<<", ">>", "||", "&&", "==", - "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", - "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", "%", - "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", "inline", "include", - "declaration", "decl_usingtree", "decl_constant", "decl_thread", "stmt", - "stmt_block", "stmt_list", "stmt_expr", "stmt_call", "stmt_assign", - "stmt_endon", "stmt_notify", "stmt_wait", "stmt_waittill", - "stmt_waittillmatch", "stmt_waittillframeend", "stmt_waitframe", - "stmt_if", "stmt_ifelse", "stmt_while", "stmt_dowhile", "stmt_for", - "stmt_foreach", "stmt_switch", "stmt_case", "stmt_default", "stmt_break", - "stmt_continue", "stmt_return", "stmt_breakpoint", "stmt_prof_begin", - "stmt_prof_end", "expr", "expr_or_empty", "expr_assign", - "expr_increment", "expr_decrement", "expr_ternary", "expr_binary", - "expr_primitive", "expr_complement", "expr_not", "expr_call", - "expr_method", "expr_function", "expr_pointer", "expr_add_array", - "expr_parameters", "expr_arguments", "expr_arguments_no_empty", - "expr_reference", "expr_array", "expr_field", "expr_size", "expr_paren", - "expr_object", "expr_thisthread", "expr_empty_array", "expr_undefined", - "expr_game", "expr_self", "expr_anim", "expr_level", "expr_animation", + "end of file", "error", "invalid token", "/#", "#/", "#inline", + "#include", "#using_animtree", "#animtree", "endon", "notify", "wait", + "waittill", "waittillmatch", "waittillframeend", "waitframe", "if", + "else", "do", "while", "for", "foreach", "in", "switch", "case", + "default", "break", "continue", "return", "breakpoint", "prof_begin", + "prof_end", "thread", "childthread", "thisthread", "call", "true", + "false", "undefined", ".size", "game", "self", "anim", "level", "(", ")", + "{", "}", "[", "]", ",", ".", "::", ":", ";", "?", "++", "--", "<<", + ">>", "||", "&&", "==", "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", + "-=", "*=", "/=", "%=", "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", + "+", "-", "*", "/", "%", "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", + "inline", "include", "declaration", "decl_usingtree", "decl_constant", + "decl_thread", "stmt", "stmt_dev", "stmt_block", "stmt_list", + "stmt_expr", "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", + "stmt_wait", "stmt_waittill", "stmt_waittillmatch", + "stmt_waittillframeend", "stmt_waitframe", "stmt_if", "stmt_ifelse", + "stmt_while", "stmt_dowhile", "stmt_for", "stmt_foreach", "stmt_switch", + "stmt_case", "stmt_default", "stmt_break", "stmt_continue", + "stmt_return", "stmt_breakpoint", "stmt_prof_begin", "stmt_prof_end", + "expr", "expr_or_empty", "expr_assign", "expr_increment", + "expr_decrement", "expr_ternary", "expr_binary", "expr_primitive", + "expr_complement", "expr_not", "expr_call", "expr_method", + "expr_function", "expr_pointer", "expr_add_array", "expr_parameters", + "expr_arguments", "expr_arguments_no_empty", "expr_reference", + "expr_array", "expr_field", "expr_size", "expr_paren", "expr_object", + "expr_thisthread", "expr_empty_array", "expr_undefined", "expr_game", + "expr_self", "expr_anim", "expr_level", "expr_animation", "expr_animtree", "expr_identifier", "expr_path", "expr_istring", "expr_string", "expr_color", "expr_vector", "expr_float", "expr_integer", "expr_false", "expr_true", YY_NULLPTR @@ -3754,661 +3790,704 @@ namespace xsk { namespace gsc { namespace h1 { } - const short parser::yypact_ninf_ = -259; + const short parser::yypact_ninf_ = -269; - const short parser::yytable_ninf_ = -203; + const short parser::yytable_ninf_ = -208; const short parser::yypact_[] = { - 15, -53, -53, -14, -259, 44, 15, -259, -259, -259, - -259, -259, -259, -25, -259, -259, 20, 28, -43, -259, - -259, -259, -259, -33, 745, -259, -259, -259, 38, -7, - -259, -259, -17, 1, -259, 41, -259, -259, -259, -259, - -259, -259, -259, 745, 18, -33, 745, 745, -31, 5, - -259, -259, -259, -259, -259, -259, -259, 1793, -259, -259, - -259, -259, -259, 111, 400, -259, -259, -259, -259, 584, - 768, -259, -259, 773, -259, -259, -259, 1014, 1022, 1036, - 1046, -259, -259, 85, 50, -259, -259, -259, -259, -259, - -259, -259, -259, 42, 58, -33, 71, 86, 79, 84, - 90, 96, 94, 1079, 18, -259, 1876, 88, 115, -259, - -259, -259, -259, -259, -259, -259, 745, 745, 745, 745, - 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, - 745, 745, 745, 745, 745, -259, 812, -33, -259, -259, - 116, 133, 745, -33, -259, 900, -259, -259, 745, 745, - -33, 745, 745, -33, 745, -259, 745, 1523, 745, -259, - 1758, 175, 175, 807, 1907, 1989, 1989, 82, 82, 82, - 82, 1917, 1958, 1948, -59, -59, -259, -259, -259, 1563, - -259, -33, -6, -259, 134, 745, 132, -21, 145, 1002, - 148, 149, 152, 167, 3, 162, 169, 172, 678, 177, - 189, 190, -259, 187, 702, 702, -259, -259, 951, -259, - -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, - -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, - -259, -259, -259, 183, 184, 192, 193, 195, -259, -259, - 573, -259, -259, -259, -259, -28, 1603, 35, 197, 1643, - 77, 199, 1683, 1722, 153, 1876, 745, -259, 134, -259, - 745, 1828, -259, 200, -259, 745, 231, 745, 36, -33, - 745, 156, 201, 202, -259, -259, -259, -259, 1863, -259, - 745, 745, 745, -259, -259, 480, 480, -259, -259, -259, - -259, -259, -259, -259, 212, 213, 221, 223, -259, -259, - 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, - 745, 219, -259, 745, 220, -259, 745, 225, 745, 228, - 1876, 78, -259, 224, 1245, 233, 1279, 226, -259, -259, - -259, 520, -8, 1313, -259, -259, -259, 104, 113, 1523, - 745, 745, 745, 745, 1876, 1876, 1876, 1876, 1876, 1876, - 1876, 1876, 1876, 1876, 1876, 235, 126, 242, 127, 245, - 1347, 745, -259, -259, 1002, 745, 1002, 745, 745, -33, - 58, 236, 237, 1381, 1123, 1167, 1211, 745, -259, 745, - -259, 745, -259, 154, 258, 1415, -259, 1876, 238, 1449, - 274, -259, -259, -259, 241, 244, 745, 246, 745, 248, - 745, 158, 164, 180, -259, 1002, 249, 36, 1002, 745, - -259, -259, 254, -259, 256, -259, 260, -259, -259, -259, - -259, -259, 261, -259, 1483, 253, 276, 277, 1002, 1002, - -259, -259, -259, -259, -259 + 15, -269, -269, 10, 10, -32, -269, 26, 15, -269, + -269, -269, -269, -269, -269, -20, -269, -269, -24, -21, + -49, -269, -269, -269, -269, -30, 858, -269, -269, -269, + 25, -18, -269, -269, -35, -25, -269, 28, -269, -269, + -269, -269, -269, -269, -269, 858, 724, -30, 858, 858, + 55, -17, -269, -269, -269, -269, -269, -269, -269, 2001, + -269, -269, -269, -269, -269, 198, 435, -269, -269, -269, + -269, 589, 690, -269, -269, 814, -269, -269, -269, 819, + 881, 886, 1084, -269, -269, 552, 67, -269, -269, -269, + -269, -269, -269, -269, -269, 80, 34, -30, 75, 107, + 105, 112, 120, 115, 121, 1287, 724, -269, 2084, 118, + 128, -269, -269, -269, -269, -269, -269, -269, 858, 858, + 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, + 858, 858, 858, 858, 858, 858, 858, -269, 925, -30, + -269, -269, 135, 132, 858, -30, -269, 1021, -269, -269, + 858, 858, -30, 858, 858, -30, 858, -269, 858, 1731, + 858, -269, 1966, 117, 117, 920, 2115, 2166, 2166, 309, + 309, 309, 309, 2125, 632, 2156, 54, 54, -269, -269, + -269, 1771, -269, -30, 13, -269, 141, 1072, 858, 136, + 12, 145, 1225, 147, 150, 153, 155, 33, 156, 152, + 157, 791, 161, 166, 173, -269, 177, 130, 130, -269, + -269, -269, 1123, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, 172, 174, 175, + 178, 180, -269, -269, 36, -269, -269, -269, -269, 7, + 1811, 22, 183, 1851, 29, 192, 1891, 1930, 193, 2084, + 858, -269, 141, -269, 858, -269, 1174, 2036, -269, 200, + -269, 858, 228, 858, -4, -30, 858, 158, 199, 202, + -269, -269, -269, -269, 2071, -269, 858, 858, 858, -269, + -269, 69, 69, -269, -269, -269, -269, -269, -269, -269, + 207, 212, 213, 214, -269, -269, 858, 858, 858, 858, + 858, 858, 858, 858, 858, 858, 858, 210, -269, 858, + 211, -269, 858, 215, 858, 217, 2084, 38, -269, -269, + 209, 1453, 221, 1487, 222, -269, -269, -269, 1251, -7, + 1521, -269, -269, -269, 44, 45, 1731, 858, 858, 858, + 858, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, + 2084, 2084, 223, 46, 225, 53, 227, 1555, 858, -269, + -269, 1225, 858, 1225, 858, 858, -30, 34, 224, 232, + 1589, 1331, 1375, 1419, 858, -269, 858, -269, 858, -269, + 77, 256, 1623, -269, 2084, 235, 1657, 255, -269, -269, + -269, 236, 239, 858, 240, 858, 241, 858, 87, 88, + 98, -269, 1225, 246, -4, 1225, 858, -269, -269, 234, + -269, 254, -269, 257, -269, -269, -269, -269, -269, 258, + -269, 1691, 247, 250, 253, 1225, 1225, -269, -269, -269, + -269, -269 }; const unsigned char parser::yydefact_[] = { - 3, 0, 0, 0, 200, 0, 2, 7, 8, 9, - 12, 13, 14, 0, 201, 202, 0, 0, 0, 1, - 4, 5, 6, 171, 0, 10, 11, 204, 0, 0, - 170, 199, 0, 0, 191, 0, 215, 214, 193, 194, - 195, 196, 197, 0, 173, 0, 0, 0, 0, 0, - 203, 205, 208, 210, 211, 212, 213, 0, 85, 86, - 87, 124, 125, 126, 127, 154, 155, 128, 129, 130, - 131, 132, 133, 0, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 0, 144, 145, 146, 147, 148, - 149, 150, 151, 0, 0, 0, 0, 202, 0, 0, - 202, 0, 0, 0, 173, 192, 175, 0, 172, 176, - 153, 152, 207, 209, 198, 16, 0, 0, 0, 0, + 3, 12, 13, 0, 0, 0, 205, 0, 2, 7, + 8, 9, 14, 15, 16, 0, 206, 207, 0, 0, + 0, 1, 4, 5, 6, 176, 0, 10, 11, 209, + 0, 0, 175, 204, 0, 0, 196, 0, 220, 219, + 198, 199, 200, 201, 202, 0, 178, 0, 0, 0, + 0, 0, 208, 210, 213, 215, 216, 217, 218, 0, + 90, 91, 92, 129, 130, 131, 132, 159, 160, 133, + 134, 135, 136, 137, 138, 0, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 0, 149, 150, 151, + 152, 153, 154, 155, 156, 0, 0, 0, 0, 207, + 0, 0, 207, 0, 0, 0, 178, 197, 180, 0, + 177, 181, 158, 157, 212, 214, 203, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 180, 0, 0, 156, 157, - 202, 0, 173, 0, 15, 0, 17, 169, 0, 173, - 0, 0, 173, 0, 0, 181, 0, 175, 0, 168, - 0, 117, 118, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 119, 120, 121, 122, 123, 0, - 179, 0, 0, 172, 177, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 185, 0, 0, + 161, 162, 207, 0, 178, 0, 17, 0, 19, 174, + 0, 178, 0, 0, 178, 0, 0, 186, 0, 180, + 0, 173, 0, 122, 123, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 124, 125, 126, 127, + 128, 0, 184, 0, 0, 177, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 44, 0, 0, 0, 46, 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, 42, 0, 0, 0, 182, 183, 184, 185, - 0, 186, 187, 188, 189, 190, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 174, 0, 178, 0, 158, - 173, 0, 64, 0, 65, 0, 0, 0, 50, 0, - 0, 0, 0, 0, 77, 78, 79, 81, 0, 82, - 173, 173, 0, 182, 183, 101, 103, 43, 45, 53, - 54, 55, 51, 52, 0, 0, 0, 0, 102, 104, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 160, 173, 0, 162, 173, 0, 0, 0, - 105, 0, 59, 0, 0, 0, 0, 0, 47, 48, - 49, 0, 0, 0, 76, 75, 80, 0, 0, 0, - 0, 0, 0, 0, 90, 96, 97, 98, 99, 100, - 91, 92, 93, 95, 94, 0, 0, 0, 0, 0, - 0, 173, 159, 66, 0, 0, 0, 89, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 173, 161, 173, - 163, 173, 206, 0, 67, 0, 69, 88, 0, 0, - 0, 74, 83, 84, 0, 0, 173, 0, 173, 0, - 173, 0, 0, 0, 164, 0, 0, 50, 0, 0, - 56, 58, 172, 61, 172, 63, 172, 165, 166, 167, - 68, 70, 0, 72, 0, 0, 0, 0, 0, 0, - 57, 60, 62, 71, 73 + 0, 0, 0, 0, 0, 49, 0, 0, 0, 51, + 20, 21, 0, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 0, 0, 0, + 187, 188, 189, 190, 0, 191, 192, 193, 194, 195, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, + 0, 183, 0, 163, 178, 47, 0, 0, 69, 0, + 70, 0, 0, 0, 55, 0, 0, 0, 0, 0, + 82, 83, 84, 86, 0, 87, 178, 178, 0, 187, + 188, 106, 108, 48, 50, 58, 59, 60, 56, 57, + 0, 0, 0, 0, 107, 109, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 165, 178, + 0, 167, 178, 0, 0, 0, 110, 0, 46, 64, + 0, 0, 0, 0, 0, 52, 53, 54, 0, 0, + 0, 81, 80, 85, 0, 0, 0, 0, 0, 0, + 0, 95, 101, 102, 103, 104, 105, 96, 97, 98, + 100, 99, 0, 0, 0, 0, 0, 0, 178, 164, + 71, 0, 0, 0, 94, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 178, 166, 178, 168, 178, 211, + 0, 72, 0, 74, 93, 0, 0, 0, 79, 88, + 89, 0, 0, 178, 0, 178, 0, 178, 0, 0, + 0, 169, 0, 0, 55, 0, 0, 61, 63, 177, + 66, 177, 68, 177, 170, 171, 172, 73, 75, 0, + 77, 0, 0, 0, 0, 0, 0, 62, 65, 67, + 76, 78 }; const short parser::yypgoto_[] = { - -259, -259, -259, 300, 320, 324, -259, -259, -259, -178, - -89, -259, -75, -259, -259, -259, -259, -259, -259, -259, - -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, - -259, -259, -259, -259, -259, -259, -259, 191, -259, -258, - -253, -252, -259, -259, -259, -259, -259, -26, -12, -69, - -60, -259, -259, 257, -41, -259, 14, 75, -259, -259, - 157, -259, -259, -259, 247, 259, 273, 331, -259, -259, - 0, 6, -259, -9, -259, -259, -259, 139, -259, -259 + -269, -269, -269, 273, 319, 321, -269, -269, -269, 163, + -269, -94, 143, -83, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, 190, -269, + -268, -260, -258, -269, -269, -269, -269, -269, -130, -26, + -70, -68, -269, -269, 325, -45, -269, -12, 219, -269, + -269, 245, -269, -269, -269, 252, 300, 335, 369, -269, + -269, 0, 6, -269, -9, -269, -269, -269, 137, -269, + -269 }; const short parser::yydefgoto_[] = { - 0, 5, 6, 7, 8, 9, 10, 11, 12, 206, - 207, 208, 327, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 106, 388, 233, - 234, 235, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 29, 107, 183, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92 + 0, 7, 8, 9, 10, 11, 12, 13, 14, 209, + 210, 211, 212, 334, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 108, 395, + 237, 238, 239, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 31, 109, 185, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94 }; const short parser::yytable_[] = { - 13, 15, 15, 108, 138, 146, 13, 16, 17, 28, - 328, 266, 368, 139, 142, 329, 330, 23, 1, 2, - 3, 263, -202, 30, 31, 132, 133, 134, 18, 96, - 288, 264, 97, 100, 14, 4, 94, 259, 98, 101, - 369, 95, 158, 24, 19, 109, 27, 99, 32, 33, - 34, 35, 36, 37, 38, 4, 39, 40, 41, 42, - 43, 112, 113, 108, 104, 105, 32, 33, 45, 35, - 14, 4, 25, 140, 39, 40, 41, 42, 312, 141, - 26, 93, 203, 158, 46, 47, 271, 102, 14, 4, - 204, 205, 27, 114, 144, 147, 53, 54, 55, 56, - 143, 48, 145, 4, 49, 14, 4, 27, 50, 51, - 52, 53, 54, 55, 56, -190, -190, 148, -190, 236, - 315, 362, -190, 14, 4, 158, 158, 142, 149, 150, - 151, -190, 152, 237, -190, -202, 158, 180, 117, 118, - 154, -182, -182, 184, -182, 245, 153, 371, -182, 328, - 248, 141, 158, 251, 329, 330, 372, -182, 142, 238, - -182, 158, 159, 236, 130, 131, 132, 133, 134, 378, - 380, 138, -190, -190, 158, 158, 260, 237, 283, 283, - 139, 258, 236, 181, 262, 272, 384, 265, 386, 245, - 267, 268, 284, 284, 269, 141, 237, 404, -182, -182, - 319, 417, 158, 238, 245, 245, 158, 418, 245, 270, - 141, 141, 158, 274, 141, 57, 138, 138, 238, 238, - 239, 275, 238, 419, 276, 139, 139, 420, 158, 279, - 423, 280, 281, 282, 103, 289, 290, 110, 111, 313, - 140, 316, 283, 323, 291, 292, 141, 293, 325, 113, - 433, 434, 334, 335, 340, 341, 284, 130, 131, 132, - 133, 134, 138, 342, 239, 343, 355, 357, 245, 332, - 361, 139, 359, 405, 141, 365, 363, 377, 367, 239, - 239, 391, 238, 239, 379, 140, 140, 381, 392, 393, - 407, 141, 141, 410, 409, 157, 411, 425, 413, 426, - 415, 421, 240, 427, 428, 430, 20, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 21, 179, 431, 432, - 22, 140, 422, 273, 0, 0, 0, 141, 236, 246, - 236, 0, 249, 239, 0, 252, 240, 253, 0, 255, - 0, 0, 237, 0, 237, 412, 0, 414, 0, 416, - 0, 285, 286, 0, 245, 240, 245, 0, 0, 390, - 141, 0, 141, 0, 0, 0, 261, 0, 238, 236, - 238, 283, 236, 0, 0, 0, 0, 0, 0, 278, - 0, 0, 241, 237, 0, 284, 237, 0, 0, 182, - 0, 0, 236, 236, 242, 245, 247, 245, 245, 250, - 0, 141, 0, 141, 141, 0, 237, 237, 243, 238, - 0, 238, 238, 0, 0, 331, 0, 0, 245, 245, - -183, -183, 0, -183, 141, 141, 241, -183, 0, 239, - 0, 239, 238, 238, 0, 0, -183, 320, 242, -183, - 0, 241, 241, 0, 0, 241, 324, 0, 326, 0, - 0, 333, 243, 242, 242, 0, 0, 242, 0, 0, - 0, 0, 0, 339, 0, 0, 244, 243, 243, 0, - 239, 243, 239, 239, 0, 0, 0, -183, -183, 0, - 0, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 0, 239, 239, 0, 0, 0, 0, 360, - 32, 33, 0, 35, 0, 241, 0, 321, 0, 0, - 244, 240, 0, 240, 0, 0, 136, 242, 0, 137, - 0, 373, 374, 375, 376, 244, 244, 337, 338, 244, - 0, 243, 0, 0, 0, 0, 0, 0, 0, 0, - 32, 33, 0, 35, 0, 0, 385, 0, 387, 389, - 0, 0, 240, 0, 331, 240, 136, 14, 4, 137, - 356, 0, 0, 358, 298, 299, 0, 0, 0, 0, - 294, 295, 0, 296, 297, 240, 240, 0, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 244, - 424, 0, 0, 32, 33, 0, 35, 14, 4, 0, - 0, 241, 0, 241, -184, -184, 0, -184, 383, 136, - 0, -184, 137, 242, 0, 242, 0, 298, 299, 0, - -184, 0, 0, -184, 401, 0, 402, 243, 403, 243, - 0, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 241, 0, 241, 241, 0, 0, 0, 0, - 14, 4, 0, 0, 242, 0, 242, 242, 0, 0, - 0, -184, -184, 0, 0, 241, 241, 0, 243, 0, - 243, 243, 0, 0, 31, 0, 0, 242, 242, 0, - 0, 0, 0, 0, 0, 244, 0, 244, 0, 0, - 0, 243, 243, 0, 0, 0, 0, 0, 32, 33, - 34, 35, 36, 37, 38, 0, 39, 40, 41, 42, - 43, 0, 0, 0, 44, 0, 0, 0, 45, 0, - 277, 0, 32, 33, 0, 35, 244, 0, 244, 244, - 39, 40, 41, 42, 46, 47, 0, 0, 203, 0, - 0, 31, 0, 0, 0, 0, 0, 0, 0, 244, - 244, 48, 0, 0, 49, 14, 4, 27, 50, 51, - 52, 53, 54, 55, 56, 32, 33, 34, 35, 36, - 37, 38, 0, 39, 40, 41, 42, 43, 0, 14, - 4, 44, 0, 0, 0, 45, 0, 0, -185, -185, - 0, -185, 0, 32, 33, -185, 35, 0, 0, 0, - 135, 46, 47, 0, -185, 0, 0, -185, 31, 136, - 0, 0, 137, 0, 0, 0, 0, 0, 48, 0, - 0, 49, 14, 4, 27, 50, 51, 52, 53, 54, - 55, 56, 32, 33, 34, 35, 36, 37, 38, 0, - 39, 40, 41, 42, 43, -185, -185, 0, 104, 0, - 14, 4, 45, 117, 118, 0, 120, 121, 122, 123, - 124, 125, 126, 0, 0, 0, 0, 0, 46, 47, - 0, 0, 0, 0, 0, 0, 127, 128, 129, 130, - 131, 132, 133, 134, 0, 48, 0, 0, 49, 14, - 4, 27, 50, 51, 52, 53, 54, 55, 56, 185, - 0, 0, 186, 187, 188, 0, 189, 190, 191, 192, - 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 32, 33, 0, 35, 0, 0, 0, 0, 39, 40, - 41, 42, 0, 0, 145, 202, 203, 0, 0, 0, - 0, 0, 0, 0, 204, 205, 0, 0, 0, 0, - 185, 0, 0, 186, 187, 188, 0, 189, 190, 191, - 192, 0, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 32, 33, 0, 35, 0, 0, 14, 4, 39, - 40, 41, 42, 0, 0, 145, 287, 203, 0, 0, - 0, 0, 0, 0, 0, 204, 205, 0, 0, 0, - 0, 185, 0, 0, 186, 187, 188, 0, 189, 190, - 191, 192, 0, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 32, 33, 0, 35, 0, 0, 14, 4, - 39, 40, 41, 42, -186, -186, 145, -186, 203, 0, - 0, -186, -187, -187, 0, -187, 204, 205, 0, -187, - -186, 0, 0, -186, 0, 0, -188, -188, -187, -188, - 0, -187, 0, -188, 0, 0, -189, -189, 0, -189, - 0, 0, -188, -189, 0, -188, 0, 0, 0, 14, - 4, 0, -189, 0, 0, -189, 0, 0, 0, 0, - 0, -186, -186, 0, 0, 0, 0, 0, 0, -187, - -187, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 155, -188, -188, 0, 0, 156, 0, 0, - 0, 0, 116, -189, -189, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 395, 0, 0, 0, - 0, 396, 0, 0, 0, 0, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 15, 110, 148, 17, 17, 140, 335, 141, 15, 18, + 19, 30, 20, 98, 336, 375, 337, 240, 1, 2, + 3, 4, 5, 101, 25, 32, 21, 96, 34, 35, + 27, 37, 97, 28, 99, 102, 41, 42, 43, 44, + 100, 103, 29, 376, 206, 300, 301, 111, 302, 303, + 26, 144, 207, 208, 16, 6, 269, 240, 263, -207, + 6, 110, 240, 160, 16, 6, 270, 318, 34, 35, + 95, 37, 160, 116, 321, 142, 104, 289, 289, 160, + 147, 143, 240, 369, 138, 16, 6, 139, 160, 378, + 379, 385, 304, 305, 160, 160, 160, 149, 387, 16, + 6, 34, 35, 160, 37, 6, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 138, 277, 145, + 139, 241, 411, 150, 29, 16, 6, 160, 55, 56, + 57, 58, 424, 425, 146, 242, 240, 160, 160, 182, + 134, 135, 136, 426, 289, 186, 335, 249, 160, 114, + 115, 151, 252, 143, 336, 255, 337, 152, 16, 6, + 153, 241, 34, 35, 154, 37, 241, 155, 160, 156, + 41, 42, 43, 44, 140, 242, 141, 161, 206, 144, + 242, 290, 290, 262, 183, 264, 241, 249, 278, 271, + 268, 273, 249, 143, 274, 242, 242, 275, 143, 276, + 242, 132, 133, 134, 135, 136, 281, 249, 249, 280, + 286, 282, 249, 143, 143, 285, 59, 287, 143, 16, + 6, 140, 140, 141, 141, 288, 295, 319, 296, 297, + -187, -187, 298, -187, 299, 105, 322, -187, 112, 113, + 241, 240, 325, 240, 142, 330, -187, 332, 290, -187, + 143, 347, 341, 115, 242, 342, 348, 349, 350, 362, + 364, 368, 242, 370, 366, 372, 249, 384, 140, 386, + 141, 388, 143, 412, 249, 339, 374, 416, 399, 432, + 143, 22, 240, 398, 289, 240, 400, -187, -187, 414, + 417, 142, 142, 418, 420, 422, 159, 143, 143, 433, + 428, 437, 434, 435, 438, 240, 240, 439, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 23, 181, 24, + 266, 429, 0, 0, 279, 0, 0, 0, 142, 0, + 250, 0, 0, 253, 143, 241, 256, 241, 257, 0, + 259, 0, 0, 0, 0, 272, 0, 0, 419, 242, + 421, 242, 423, 0, 0, 0, 243, 119, 120, 0, + 0, 249, 0, 249, 0, 294, 397, 143, 267, 143, + 0, 0, 0, 0, 0, 0, 241, 0, 290, 241, + 0, 284, 244, 132, 133, 134, 135, 136, 0, 245, + 242, 0, 242, 242, 0, 0, 243, 0, 0, 241, + 241, 243, 249, 0, 249, 249, 0, 0, 143, 0, + 143, 143, 0, 242, 242, 0, 243, 243, 0, 294, + 0, 243, 244, 0, 0, 249, 249, 244, 0, 245, + 0, 143, 143, 0, 245, 0, 0, 246, 0, 0, + 326, 0, 291, 292, 0, 0, 0, 244, 0, 245, + 245, 331, 0, 333, 245, 0, 340, -188, -188, 184, + -188, 0, 0, 0, -188, 0, 251, 0, 346, 254, + 0, 0, 247, -188, 0, 243, -188, 246, 0, 0, + 0, 0, 246, 243, 0, 0, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 246, 246, 0, + 0, 244, 246, 0, 367, 0, 248, 0, 245, 338, + 0, 0, 247, 0, -188, -188, 245, 247, 0, 0, + 0, 0, 0, 0, 391, 0, 393, 380, 381, 382, + 383, 0, 247, 247, 0, 0, 0, 247, 0, 0, + 0, 0, 0, 0, 0, 0, 248, 0, 0, 0, + 0, 248, 392, 0, 394, 396, 246, 0, 0, 0, + 0, 0, 0, 0, 246, 427, 248, 248, 430, 0, + 0, 248, 0, 0, -195, -195, 0, -195, 0, 327, + 243, -195, 243, 0, 0, 0, 144, 0, 440, 441, + -195, 247, 0, -195, -207, 0, 431, 0, 0, 247, + 0, 344, 345, 0, 0, 0, 244, 0, 244, 0, + 0, -189, -189, 245, -189, 245, 0, 0, -189, 0, + 0, 243, 0, 243, 243, 248, 0, -189, 0, 0, + -189, -195, -195, 248, 363, 0, 0, 365, 0, 0, + 0, 0, 0, 0, 243, 243, 0, 244, 0, 338, + 244, 0, 0, 0, 245, 0, 245, 245, 0, 0, + 0, 246, 0, 246, 0, 0, 0, 0, -189, -189, + 244, 244, 0, 0, 0, 0, 0, 245, 245, 0, + 119, 120, 0, 390, 123, 124, 125, 126, 127, 128, + 0, 0, 0, 0, 0, 0, 247, 0, 247, 408, + 0, 409, 246, 410, 246, 246, 132, 133, 134, 135, + 136, 0, -190, -190, 0, -190, 0, 0, 0, -190, + 0, 0, 33, 0, 0, 246, 246, 0, -190, 0, + 248, -190, 248, 0, 0, 0, 0, 247, 0, 247, + 247, 0, 0, 0, 0, 0, 34, 35, 36, 37, + 38, 39, 40, 0, 41, 42, 43, 44, 45, 0, + 247, 247, 106, 107, 0, 0, 47, 0, 0, -190, + -190, 248, 0, 248, 248, 0, 0, 0, 0, 0, + 0, 0, 48, 49, 0, 0, 0, 0, 0, 33, + 0, 0, 0, 0, 248, 248, 0, 0, 0, 50, + 0, 0, 51, 16, 6, 29, 52, 53, 54, 55, + 56, 57, 58, 34, 35, 36, 37, 38, 39, 40, + 0, 41, 42, 43, 44, 45, 0, 0, 0, 46, + 0, 0, 0, 47, 0, 283, 34, 35, 0, 37, + 0, -191, -191, 137, -191, 0, 0, 0, -191, 48, + 49, 0, 138, 0, 0, 139, 33, -191, 0, 0, + -191, 0, 0, 0, 0, 0, 50, 0, 0, 51, + 16, 6, 29, 52, 53, 54, 55, 56, 57, 58, + 34, 35, 36, 37, 38, 39, 40, 0, 41, 42, + 43, 44, 45, 16, 6, 0, 46, 0, -191, -191, + 47, 0, 0, -192, -192, 0, -192, 0, -193, -193, + -192, -193, 0, 0, 0, -193, 48, 49, 0, -192, + 0, 0, -192, 33, -193, 0, 0, -193, 0, 0, + 0, 0, 0, 50, 0, 0, 51, 16, 6, 29, + 52, 53, 54, 55, 56, 57, 58, 34, 35, 36, + 37, 38, 39, 40, 0, 41, 42, 43, 44, 45, + -192, -192, 0, 106, 0, -193, -193, 47, 119, 120, + 0, 122, 123, 124, 125, 126, 127, 128, 0, 0, + 0, 0, 0, 48, 49, 0, 0, 0, 0, 0, + 0, 129, 130, 131, 132, 133, 134, 135, 136, 0, + 50, 0, 0, 51, 16, 6, 29, 52, 53, 54, + 55, 56, 57, 58, 187, 0, 0, 0, 0, 0, + 0, 0, 188, 0, 0, 189, 190, 191, 0, 192, + 193, 194, 195, 0, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 34, 35, 0, 37, 0, 0, 0, + 0, 41, 42, 43, 44, 0, 0, 147, 205, 206, + 0, 0, 0, 0, 0, 187, 265, 207, 208, 0, + 0, 0, 0, 188, 0, 0, 189, 190, 191, 0, + 192, 193, 194, 195, 0, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 34, 35, 0, 37, 0, 0, + 16, 6, 41, 42, 43, 44, -194, -194, 147, -194, + 206, 0, 0, -194, 0, 0, 187, 0, 207, 208, + 0, 0, -194, 0, 188, -194, 0, 189, 190, 191, + 0, 192, 193, 194, 195, 0, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 34, 35, 0, 37, 0, + 0, 16, 6, 41, 42, 43, 44, 0, 0, 147, + 293, 206, 0, -194, -194, 0, 0, 187, 328, 207, + 208, 0, 0, 0, 0, 188, 0, 0, 189, 190, + 191, 0, 192, 193, 194, 195, 0, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 34, 35, 0, 37, + 0, 0, 16, 6, 41, 42, 43, 44, 0, 0, + 147, 0, 206, 0, 0, 0, 0, 0, 187, 0, + 207, 208, 0, 0, 0, 0, 188, 0, 0, 189, + 190, 191, 0, 192, 193, 194, 195, 0, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 34, 35, 0, + 37, 0, 0, 16, 6, 41, 42, 43, 44, 0, + 0, 147, 0, 206, 0, 0, 0, 0, 0, 0, + 0, 207, 208, 34, 35, 0, 37, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, + 0, 0, 139, 0, 0, 0, 0, 304, 305, 0, + 0, 0, 0, 0, 16, 6, 0, 0, 0, 0, + 0, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 157, 0, 0, 0, 0, 158, 0, 0, + 16, 6, 118, 0, 0, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, + 131, 132, 133, 134, 135, 136, 402, 0, 0, 0, + 0, 403, 0, 0, 0, 0, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 397, 0, 0, 0, 0, 398, 0, 0, 0, 0, - 116, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 127, 128, 129, 130, - 131, 132, 133, 134, 399, 0, 0, 0, 0, 400, - 0, 0, 0, 0, 116, 0, 0, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 364, 0, - 127, 128, 129, 130, 131, 132, 133, 134, 116, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 366, 0, 127, 128, 129, 130, 131, 132, - 133, 134, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 370, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 404, 0, 0, 0, 0, 405, 0, 0, 0, 0, + 118, 0, 0, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 129, 130, 131, 132, + 133, 134, 135, 136, 406, 0, 0, 0, 0, 407, + 0, 0, 0, 0, 118, 0, 0, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 371, 0, + 129, 130, 131, 132, 133, 134, 135, 136, 118, 0, + 0, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 373, 0, 129, 130, 131, 132, 133, 134, + 135, 136, 118, 0, 0, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 377, 0, 129, 130, + 131, 132, 133, 134, 135, 136, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 382, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 116, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 394, 0, 127, 128, 129, 130, - 131, 132, 133, 134, 116, 0, 0, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 406, 0, - 127, 128, 129, 130, 131, 132, 133, 134, 116, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 408, 0, 127, 128, 129, 130, 131, 132, - 133, 134, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 429, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 389, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 118, 0, 0, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 401, 0, 129, 130, 131, 132, + 133, 134, 135, 136, 118, 0, 0, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 413, 0, + 129, 130, 131, 132, 133, 134, 135, 136, 118, 0, + 0, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 415, 0, 129, 130, 131, 132, 133, 134, + 135, 136, 118, 0, 0, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 436, 0, 129, 130, + 131, 132, 133, 134, 135, 136, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 254, 0, 0, 0, 0, 0, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 258, 0, 0, 0, 0, 0, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 257, 0, 0, 0, 0, 0, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 261, 0, 0, 0, 0, 0, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 311, 0, 0, 0, 0, 0, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 317, 0, 0, 0, 0, 0, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 314, 0, 0, 0, 0, 0, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 320, 0, 0, 0, 0, 0, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 317, 0, 0, 0, 0, 0, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 323, 0, 0, 0, 0, 0, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 318, 0, 0, 0, 0, 116, 0, 0, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 0, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 324, 0, 0, 0, 0, 118, 0, 0, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 127, 128, 129, 130, 131, 132, 133, 134, 256, - 0, 116, 0, 0, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 127, 128, 129, - 130, 131, 132, 133, 134, 115, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 129, 130, 131, 132, 133, 134, 135, 136, 260, + 0, 118, 0, 0, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 129, 130, 131, + 132, 133, 134, 135, 136, 117, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 322, 116, 0, 0, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 127, 128, 129, - 130, 131, 132, 133, 134, 336, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 116, - 0, 0, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 0, 0, 0, 0, 0, 127, 128, 129, 130, 131, - 132, 133, 134, 117, 118, 0, 0, 121, 122, 123, - 124, 125, 126, 117, 118, 0, 0, 121, 122, 123, - 124, 125, 126, 0, 0, 0, 127, 128, 129, 130, - 131, 132, 133, 134, 0, 0, 0, 128, 129, 130, - 131, 132, 133, 134, 117, 118, 0, 0, 121, 122, - 123, 124, 125, 126, 117, 118, 0, 0, 121, 122, - 123, 124, 125, 126, 0, 0, 0, 0, 128, 0, - 130, 131, 132, 133, 134, 0, 0, 0, 0, 0, - 130, 131, 132, 133, 134, 117, 118, 0, 0, 0, - 0, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 130, 131, 132, 133, 134 + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 329, 118, 0, 0, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 129, 130, 131, + 132, 133, 134, 135, 136, 343, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 118, + 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 0, 0, 0, 0, 0, 129, 130, 131, 132, 133, + 134, 135, 136, 119, 120, 0, 0, 123, 124, 125, + 126, 127, 128, 119, 120, 0, 0, 123, 124, 125, + 126, 127, 128, 0, 0, 0, 129, 130, 131, 132, + 133, 134, 135, 136, 0, 0, 0, 130, 131, 132, + 133, 134, 135, 136, 119, 120, 0, 0, 123, 124, + 125, 126, 127, 128, 119, 120, 0, 0, 0, 0, + 125, 126, 127, 128, 0, 0, 0, 0, 130, 0, + 132, 133, 134, 135, 136, 0, 0, 0, 0, 0, + 132, 133, 134, 135, 136 }; const short parser::yycheck_[] = { - 0, 1, 2, 44, 73, 94, 6, 1, 2, 18, - 268, 189, 20, 73, 42, 268, 268, 42, 3, 4, - 5, 42, 50, 23, 6, 84, 85, 86, 42, 46, - 208, 52, 32, 33, 87, 88, 43, 43, 32, 33, - 48, 48, 48, 68, 0, 45, 89, 46, 30, 31, - 32, 33, 34, 35, 36, 88, 38, 39, 40, 41, - 42, 92, 93, 104, 46, 47, 30, 31, 50, 33, - 87, 88, 52, 73, 38, 39, 40, 41, 43, 73, - 52, 43, 46, 48, 66, 67, 83, 46, 87, 88, - 54, 55, 89, 88, 52, 95, 93, 94, 95, 96, - 50, 83, 44, 88, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 30, 31, 46, 33, 145, - 43, 43, 37, 87, 88, 48, 48, 42, 42, 50, - 46, 46, 42, 145, 49, 50, 48, 137, 56, 57, - 46, 30, 31, 143, 33, 145, 50, 43, 37, 407, - 150, 145, 48, 153, 407, 407, 43, 46, 42, 145, - 49, 48, 47, 189, 82, 83, 84, 85, 86, 43, - 43, 240, 87, 88, 48, 48, 42, 189, 204, 205, - 240, 181, 208, 50, 52, 194, 364, 42, 366, 189, - 42, 42, 204, 205, 42, 189, 208, 43, 87, 88, - 47, 43, 48, 189, 204, 205, 48, 43, 208, 42, - 204, 205, 48, 51, 208, 24, 285, 286, 204, 205, - 145, 52, 208, 43, 52, 285, 286, 405, 48, 52, - 408, 42, 42, 46, 43, 52, 52, 46, 47, 42, - 240, 42, 268, 43, 52, 52, 240, 52, 17, 93, - 428, 429, 51, 51, 42, 42, 268, 82, 83, 84, - 85, 86, 331, 42, 189, 42, 47, 47, 268, 269, - 42, 331, 47, 15, 268, 42, 52, 42, 52, 204, - 205, 370, 268, 208, 42, 285, 286, 42, 52, 52, - 52, 285, 286, 52, 20, 104, 52, 43, 52, 43, - 52, 52, 145, 43, 43, 52, 6, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 6, 136, 52, 52, - 6, 331, 407, 194, -1, -1, -1, 331, 364, 148, - 366, -1, 151, 268, -1, 154, 189, 156, -1, 158, - -1, -1, 364, -1, 366, 396, -1, 398, -1, 400, - -1, 204, 205, -1, 364, 208, 366, -1, -1, 369, - 364, -1, 366, -1, -1, -1, 185, -1, 364, 405, - 366, 407, 408, -1, -1, -1, -1, -1, -1, 198, - -1, -1, 145, 405, -1, 407, 408, -1, -1, 142, - -1, -1, 428, 429, 145, 405, 149, 407, 408, 152, - -1, 405, -1, 407, 408, -1, 428, 429, 145, 405, - -1, 407, 408, -1, -1, 268, -1, -1, 428, 429, - 30, 31, -1, 33, 428, 429, 189, 37, -1, 364, - -1, 366, 428, 429, -1, -1, 46, 256, 189, 49, - -1, 204, 205, -1, -1, 208, 265, -1, 267, -1, - -1, 270, 189, 204, 205, -1, -1, 208, -1, -1, - -1, -1, -1, 282, -1, -1, 145, 204, 205, -1, - 405, 208, 407, 408, -1, -1, -1, 87, 88, -1, - -1, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, -1, 428, 429, -1, -1, -1, -1, 318, - 30, 31, -1, 33, -1, 268, -1, 260, -1, -1, - 189, 364, -1, 366, -1, -1, 46, 268, -1, 49, - -1, 340, 341, 342, 343, 204, 205, 280, 281, 208, - -1, 268, -1, -1, -1, -1, -1, -1, -1, -1, - 30, 31, -1, 33, -1, -1, 365, -1, 367, 368, - -1, -1, 405, -1, 407, 408, 46, 87, 88, 49, - 313, -1, -1, 316, 54, 55, -1, -1, -1, -1, - 7, 8, -1, 10, 11, 428, 429, -1, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 268, - 409, -1, -1, 30, 31, -1, 33, 87, 88, -1, - -1, 364, -1, 366, 30, 31, -1, 33, 361, 46, - -1, 37, 49, 364, -1, 366, -1, 54, 55, -1, - 46, -1, -1, 49, 377, -1, 379, 364, 381, 366, - -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 405, -1, 407, 408, -1, -1, -1, -1, - 87, 88, -1, -1, 405, -1, 407, 408, -1, -1, - -1, 87, 88, -1, -1, 428, 429, -1, 405, -1, - 407, 408, -1, -1, 6, -1, -1, 428, 429, -1, - -1, -1, -1, -1, -1, 364, -1, 366, -1, -1, - -1, 428, 429, -1, -1, -1, -1, -1, 30, 31, - 32, 33, 34, 35, 36, -1, 38, 39, 40, 41, - 42, -1, -1, -1, 46, -1, -1, -1, 50, -1, - 52, -1, 30, 31, -1, 33, 405, -1, 407, 408, - 38, 39, 40, 41, 66, 67, -1, -1, 46, -1, - -1, 6, -1, -1, -1, -1, -1, -1, -1, 428, - 429, 83, -1, -1, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 30, 31, 32, 33, 34, - 35, 36, -1, 38, 39, 40, 41, 42, -1, 87, - 88, 46, -1, -1, -1, 50, -1, -1, 30, 31, - -1, 33, -1, 30, 31, 37, 33, -1, -1, -1, - 37, 66, 67, -1, 46, -1, -1, 49, 6, 46, - -1, -1, 49, -1, -1, -1, -1, -1, 83, -1, - -1, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 30, 31, 32, 33, 34, 35, 36, -1, - 38, 39, 40, 41, 42, 87, 88, -1, 46, -1, - 87, 88, 50, 56, 57, -1, 59, 60, 61, 62, - 63, 64, 65, -1, -1, -1, -1, -1, 66, 67, - -1, -1, -1, -1, -1, -1, 79, 80, 81, 82, - 83, 84, 85, 86, -1, 83, -1, -1, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 9, - -1, -1, 12, 13, 14, -1, 16, 17, 18, 19, - -1, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, -1, 33, -1, -1, -1, -1, 38, 39, - 40, 41, -1, -1, 44, 45, 46, -1, -1, -1, - -1, -1, -1, -1, 54, 55, -1, -1, -1, -1, - 9, -1, -1, 12, 13, 14, -1, 16, 17, 18, - 19, -1, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, -1, 33, -1, -1, 87, 88, 38, - 39, 40, 41, -1, -1, 44, 45, 46, -1, -1, - -1, -1, -1, -1, -1, 54, 55, -1, -1, -1, - -1, 9, -1, -1, 12, 13, 14, -1, 16, 17, - 18, 19, -1, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, -1, 33, -1, -1, 87, 88, - 38, 39, 40, 41, 30, 31, 44, 33, 46, -1, - -1, 37, 30, 31, -1, 33, 54, 55, -1, 37, - 46, -1, -1, 49, -1, -1, 30, 31, 46, 33, - -1, 49, -1, 37, -1, -1, 30, 31, -1, 33, - -1, -1, 46, 37, -1, 49, -1, -1, -1, 87, - 88, -1, 46, -1, -1, 49, -1, -1, -1, -1, - -1, 87, 88, -1, -1, -1, -1, -1, -1, 87, - 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 43, 87, 88, -1, -1, 48, -1, -1, - -1, -1, 53, 87, 88, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 79, 80, - 81, 82, 83, 84, 85, 86, 43, -1, -1, -1, - -1, 48, -1, -1, -1, -1, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + 0, 46, 96, 3, 4, 75, 274, 75, 8, 3, + 4, 20, 44, 48, 274, 22, 274, 147, 3, 4, + 5, 6, 7, 48, 44, 25, 0, 45, 32, 33, + 54, 35, 50, 54, 34, 35, 40, 41, 42, 43, + 34, 35, 91, 50, 48, 9, 10, 47, 12, 13, + 70, 44, 56, 57, 89, 90, 44, 187, 45, 52, + 90, 106, 192, 50, 89, 90, 54, 45, 32, 33, + 45, 35, 50, 90, 45, 75, 48, 207, 208, 50, + 46, 75, 212, 45, 48, 89, 90, 51, 50, 45, + 45, 45, 56, 57, 50, 50, 50, 97, 45, 89, + 90, 32, 33, 50, 35, 90, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 48, 85, 52, + 51, 147, 45, 48, 91, 89, 90, 50, 95, 96, + 97, 98, 45, 45, 54, 147, 266, 50, 50, 139, + 86, 87, 88, 45, 274, 145, 414, 147, 50, 94, + 95, 44, 152, 147, 414, 155, 414, 52, 89, 90, + 48, 187, 32, 33, 44, 35, 192, 52, 50, 48, + 40, 41, 42, 43, 244, 187, 244, 49, 48, 44, + 192, 207, 208, 183, 52, 44, 212, 187, 197, 44, + 54, 44, 192, 187, 44, 207, 208, 44, 192, 44, + 212, 84, 85, 86, 87, 88, 54, 207, 208, 53, + 44, 54, 212, 207, 208, 54, 26, 44, 212, 89, + 90, 291, 292, 291, 292, 48, 54, 44, 54, 54, + 32, 33, 54, 35, 54, 45, 44, 39, 48, 49, + 266, 371, 49, 373, 244, 45, 48, 19, 274, 51, + 244, 44, 53, 95, 266, 53, 44, 44, 44, 49, + 49, 44, 274, 54, 49, 44, 266, 44, 338, 44, + 338, 44, 266, 17, 274, 275, 54, 22, 54, 45, + 274, 8, 412, 377, 414, 415, 54, 89, 90, 54, + 54, 291, 292, 54, 54, 54, 106, 291, 292, 45, + 54, 54, 45, 45, 54, 435, 436, 54, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 8, 138, 8, + 187, 414, -1, -1, 197, -1, -1, -1, 338, -1, + 150, -1, -1, 153, 338, 371, 156, 373, 158, -1, + 160, -1, -1, -1, -1, 192, -1, -1, 403, 371, + 405, 373, 407, -1, -1, -1, 147, 58, 59, -1, + -1, 371, -1, 373, -1, 212, 376, 371, 188, 373, + -1, -1, -1, -1, -1, -1, 412, -1, 414, 415, + -1, 201, 147, 84, 85, 86, 87, 88, -1, 147, + 412, -1, 414, 415, -1, -1, 187, -1, -1, 435, + 436, 192, 412, -1, 414, 415, -1, -1, 412, -1, + 414, 415, -1, 435, 436, -1, 207, 208, -1, 266, + -1, 212, 187, -1, -1, 435, 436, 192, -1, 187, + -1, 435, 436, -1, 192, -1, -1, 147, -1, -1, + 260, -1, 207, 208, -1, -1, -1, 212, -1, 207, + 208, 271, -1, 273, 212, -1, 276, 32, 33, 144, + 35, -1, -1, -1, 39, -1, 151, -1, 288, 154, + -1, -1, 147, 48, -1, 266, 51, 187, -1, -1, + -1, -1, 192, 274, -1, -1, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 207, 208, -1, + -1, 266, 212, -1, 324, -1, 147, -1, 266, 274, + -1, -1, 187, -1, 89, 90, 274, 192, -1, -1, + -1, -1, -1, -1, 371, -1, 373, 347, 348, 349, + 350, -1, 207, 208, -1, -1, -1, 212, -1, -1, + -1, -1, -1, -1, -1, -1, 187, -1, -1, -1, + -1, 192, 372, -1, 374, 375, 266, -1, -1, -1, + -1, -1, -1, -1, 274, 412, 207, 208, 415, -1, + -1, 212, -1, -1, 32, 33, -1, 35, -1, 264, + 371, 39, 373, -1, -1, -1, 44, -1, 435, 436, + 48, 266, -1, 51, 52, -1, 416, -1, -1, 274, + -1, 286, 287, -1, -1, -1, 371, -1, 373, -1, + -1, 32, 33, 371, 35, 373, -1, -1, 39, -1, + -1, 412, -1, 414, 415, 266, -1, 48, -1, -1, + 51, 89, 90, 274, 319, -1, -1, 322, -1, -1, + -1, -1, -1, -1, 435, 436, -1, 412, -1, 414, + 415, -1, -1, -1, 412, -1, 414, 415, -1, -1, + -1, 371, -1, 373, -1, -1, -1, -1, 89, 90, + 435, 436, -1, -1, -1, -1, -1, 435, 436, -1, + 58, 59, -1, 368, 62, 63, 64, 65, 66, 67, + -1, -1, -1, -1, -1, -1, 371, -1, 373, 384, + -1, 386, 412, 388, 414, 415, 84, 85, 86, 87, + 88, -1, 32, 33, -1, 35, -1, -1, -1, 39, + -1, -1, 8, -1, -1, 435, 436, -1, 48, -1, + 371, 51, 373, -1, -1, -1, -1, 412, -1, 414, + 415, -1, -1, -1, -1, -1, 32, 33, 34, 35, + 36, 37, 38, -1, 40, 41, 42, 43, 44, -1, + 435, 436, 48, 49, -1, -1, 52, -1, -1, 89, + 90, 412, -1, 414, 415, -1, -1, -1, -1, -1, + -1, -1, 68, 69, -1, -1, -1, -1, -1, 8, + -1, -1, -1, -1, 435, 436, -1, -1, -1, 85, + -1, -1, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 32, 33, 34, 35, 36, 37, 38, + -1, 40, 41, 42, 43, 44, -1, -1, -1, 48, + -1, -1, -1, 52, -1, 54, 32, 33, -1, 35, + -1, 32, 33, 39, 35, -1, -1, -1, 39, 68, + 69, -1, 48, -1, -1, 51, 8, 48, -1, -1, + 51, -1, -1, -1, -1, -1, 85, -1, -1, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 32, 33, 34, 35, 36, 37, 38, -1, 40, 41, + 42, 43, 44, 89, 90, -1, 48, -1, 89, 90, + 52, -1, -1, 32, 33, -1, 35, -1, 32, 33, + 39, 35, -1, -1, -1, 39, 68, 69, -1, 48, + -1, -1, 51, 8, 48, -1, -1, 51, -1, -1, + -1, -1, -1, 85, -1, -1, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 32, 33, 34, + 35, 36, 37, 38, -1, 40, 41, 42, 43, 44, + 89, 90, -1, 48, -1, 89, 90, 52, 58, 59, + -1, 61, 62, 63, 64, 65, 66, 67, -1, -1, + -1, -1, -1, 68, 69, -1, -1, -1, -1, -1, + -1, 81, 82, 83, 84, 85, 86, 87, 88, -1, + 85, -1, -1, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 3, -1, -1, -1, -1, -1, + -1, -1, 11, -1, -1, 14, 15, 16, -1, 18, + 19, 20, 21, -1, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, -1, 35, -1, -1, -1, + -1, 40, 41, 42, 43, -1, -1, 46, 47, 48, + -1, -1, -1, -1, -1, 3, 4, 56, 57, -1, + -1, -1, -1, 11, -1, -1, 14, 15, 16, -1, + 18, 19, 20, 21, -1, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, -1, 35, -1, -1, + 89, 90, 40, 41, 42, 43, 32, 33, 46, 35, + 48, -1, -1, 39, -1, -1, 3, -1, 56, 57, + -1, -1, 48, -1, 11, 51, -1, 14, 15, 16, + -1, 18, 19, 20, 21, -1, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, -1, 35, -1, + -1, 89, 90, 40, 41, 42, 43, -1, -1, 46, + 47, 48, -1, 89, 90, -1, -1, 3, 4, 56, + 57, -1, -1, -1, -1, 11, -1, -1, 14, 15, + 16, -1, 18, 19, 20, 21, -1, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, -1, 35, + -1, -1, 89, 90, 40, 41, 42, 43, -1, -1, + 46, -1, 48, -1, -1, -1, -1, -1, 3, -1, + 56, 57, -1, -1, -1, -1, 11, -1, -1, 14, + 15, 16, -1, 18, 19, 20, 21, -1, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, + 35, -1, -1, 89, 90, 40, 41, 42, 43, -1, + -1, 46, -1, 48, -1, -1, -1, -1, -1, -1, + -1, 56, 57, 32, 33, -1, 35, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 48, + -1, -1, 51, -1, -1, -1, -1, 56, 57, -1, + -1, -1, -1, -1, 89, 90, -1, -1, -1, -1, + -1, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 45, -1, -1, -1, -1, 50, -1, -1, + 89, 90, 55, -1, -1, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 81, 82, + 83, 84, 85, 86, 87, 88, 45, -1, -1, -1, + -1, 50, -1, -1, -1, -1, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 43, -1, -1, -1, -1, 48, -1, -1, -1, -1, - 53, -1, -1, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 79, 80, 81, 82, - 83, 84, 85, 86, 43, -1, -1, -1, -1, 48, - -1, -1, -1, -1, 53, -1, -1, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 43, -1, - 79, 80, 81, 82, 83, 84, 85, 86, 53, -1, - -1, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 43, -1, 79, 80, 81, 82, 83, 84, - 85, 86, 53, -1, -1, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 43, -1, 79, 80, - 81, 82, 83, 84, 85, 86, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 45, -1, -1, -1, -1, 50, -1, -1, -1, -1, + 55, -1, -1, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 81, 82, 83, 84, + 85, 86, 87, 88, 45, -1, -1, -1, -1, 50, + -1, -1, -1, -1, 55, -1, -1, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 45, -1, + 81, 82, 83, 84, 85, 86, 87, 88, 55, -1, + -1, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 45, -1, 81, 82, 83, 84, 85, 86, + 87, 88, 55, -1, -1, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 45, -1, 81, 82, + 83, 84, 85, 86, 87, 88, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 43, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 53, -1, -1, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 43, -1, 79, 80, 81, 82, - 83, 84, 85, 86, 53, -1, -1, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 43, -1, - 79, 80, 81, 82, 83, 84, 85, 86, 53, -1, - -1, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 43, -1, 79, 80, 81, 82, 83, 84, - 85, 86, 53, -1, -1, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 43, -1, 79, 80, - 81, 82, 83, 84, 85, 86, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + 45, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 55, -1, -1, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 45, -1, 81, 82, 83, 84, + 85, 86, 87, 88, 55, -1, -1, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 45, -1, + 81, 82, 83, 84, 85, 86, 87, 88, 55, -1, + -1, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 45, -1, 81, 82, 83, 84, 85, 86, + 87, 88, 55, -1, -1, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 45, -1, 81, 82, + 83, 84, 85, 86, 87, 88, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 47, -1, -1, -1, -1, -1, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 49, -1, -1, -1, -1, -1, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 47, -1, -1, -1, -1, -1, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 49, -1, -1, -1, -1, -1, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 47, -1, -1, -1, -1, -1, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 49, -1, -1, -1, -1, -1, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 47, -1, -1, -1, -1, -1, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 49, -1, -1, -1, -1, -1, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 47, -1, -1, -1, -1, -1, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 49, -1, -1, -1, -1, -1, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 48, -1, -1, -1, -1, 53, -1, -1, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, -1, -1, + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 50, -1, -1, -1, -1, 55, -1, -1, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 79, 80, 81, 82, 83, 84, 85, 86, 51, - -1, 53, -1, -1, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, - 82, 83, 84, 85, 86, 52, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + -1, 81, 82, 83, 84, 85, 86, 87, 88, 53, + -1, 55, -1, -1, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 81, 82, 83, + 84, 85, 86, 87, 88, 54, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 52, 53, -1, -1, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, - 82, 83, 84, 85, 86, 52, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 53, - -1, -1, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 79, 80, 81, 82, 83, 84, 85, 86, - -1, -1, -1, -1, -1, 79, 80, 81, 82, 83, - 84, 85, 86, 56, 57, -1, -1, 60, 61, 62, - 63, 64, 65, 56, 57, -1, -1, 60, 61, 62, - 63, 64, 65, -1, -1, -1, 79, 80, 81, 82, - 83, 84, 85, 86, -1, -1, -1, 80, 81, 82, - 83, 84, 85, 86, 56, 57, -1, -1, 60, 61, - 62, 63, 64, 65, 56, 57, -1, -1, 60, 61, - 62, 63, 64, 65, -1, -1, -1, -1, 80, -1, - 82, 83, 84, 85, 86, -1, -1, -1, -1, -1, - 82, 83, 84, 85, 86, 56, 57, -1, -1, -1, - -1, 62, 63, 64, 65, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 82, 83, 84, 85, 86 + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 54, 55, -1, -1, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 81, 82, 83, + 84, 85, 86, 87, 88, 54, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 55, + -1, -1, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 81, 82, 83, 84, 85, 86, 87, 88, + -1, -1, -1, -1, -1, 81, 82, 83, 84, 85, + 86, 87, 88, 58, 59, -1, -1, 62, 63, 64, + 65, 66, 67, 58, 59, -1, -1, 62, 63, 64, + 65, 66, 67, -1, -1, -1, 81, 82, 83, 84, + 85, 86, 87, 88, -1, -1, -1, 82, 83, 84, + 85, 86, 87, 88, 58, 59, -1, -1, 62, 63, + 64, 65, 66, 67, 58, 59, -1, -1, -1, -1, + 64, 65, 66, 67, -1, -1, -1, -1, 82, -1, + 84, 85, 86, 87, 88, -1, -1, -1, -1, -1, + 84, 85, 86, 87, 88 }; const unsigned char parser::yystos_[] = { - 0, 3, 4, 5, 88, 107, 108, 109, 110, 111, - 112, 113, 114, 176, 87, 176, 177, 177, 42, 0, - 109, 110, 111, 42, 68, 52, 52, 89, 179, 158, - 176, 6, 30, 31, 32, 33, 34, 35, 36, 38, - 39, 40, 41, 42, 46, 50, 66, 67, 83, 86, - 90, 91, 92, 93, 94, 95, 96, 143, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 43, 43, 48, 46, 176, 177, 46, - 176, 177, 46, 143, 46, 47, 143, 159, 160, 176, - 143, 143, 92, 93, 88, 52, 53, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 79, 80, 81, - 82, 83, 84, 85, 86, 37, 46, 49, 155, 156, - 176, 177, 42, 50, 52, 44, 116, 176, 46, 42, - 50, 46, 42, 50, 46, 43, 48, 143, 48, 47, - 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, - 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, - 176, 50, 159, 160, 176, 9, 12, 13, 14, 16, - 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 45, 46, 54, 55, 115, 116, 117, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 145, 146, 147, 153, 154, 162, 163, - 166, 170, 171, 172, 173, 176, 143, 159, 176, 143, - 159, 176, 143, 143, 47, 143, 51, 47, 176, 43, - 42, 143, 52, 42, 52, 42, 115, 42, 42, 42, - 42, 83, 179, 183, 51, 52, 52, 52, 143, 52, - 42, 42, 46, 153, 154, 166, 166, 45, 115, 52, - 52, 52, 52, 52, 7, 8, 10, 11, 54, 55, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 47, 43, 42, 47, 43, 42, 47, 48, 47, - 143, 159, 52, 43, 143, 17, 143, 118, 145, 146, - 147, 166, 176, 143, 51, 51, 52, 159, 159, 143, - 42, 42, 42, 42, 143, 143, 143, 143, 143, 143, - 143, 143, 143, 143, 143, 47, 159, 47, 159, 47, - 143, 42, 43, 52, 43, 42, 43, 52, 20, 48, - 43, 43, 43, 143, 143, 143, 143, 42, 43, 42, - 43, 42, 43, 159, 115, 143, 115, 143, 144, 143, - 176, 116, 52, 52, 43, 43, 48, 43, 48, 43, - 48, 159, 159, 159, 43, 15, 43, 52, 43, 20, - 52, 52, 160, 52, 160, 52, 160, 43, 43, 43, - 115, 52, 118, 115, 143, 43, 43, 43, 43, 43, - 52, 52, 52, 115, 115 + 0, 3, 4, 5, 6, 7, 90, 109, 110, 111, + 112, 113, 114, 115, 116, 179, 89, 179, 180, 180, + 44, 0, 111, 112, 113, 44, 70, 54, 54, 91, + 182, 161, 179, 8, 32, 33, 34, 35, 36, 37, + 38, 40, 41, 42, 43, 44, 48, 52, 68, 69, + 85, 88, 92, 93, 94, 95, 96, 97, 98, 146, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 45, 45, 50, 48, 179, + 180, 48, 179, 180, 48, 146, 48, 49, 146, 162, + 163, 179, 146, 146, 94, 95, 90, 54, 55, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 81, + 82, 83, 84, 85, 86, 87, 88, 39, 48, 51, + 158, 159, 179, 180, 44, 52, 54, 46, 119, 179, + 48, 44, 52, 48, 44, 52, 48, 45, 50, 146, + 50, 49, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 179, 52, 162, 163, 179, 3, 11, 14, + 15, 16, 18, 19, 20, 21, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 47, 48, 56, 57, 117, + 118, 119, 120, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 148, 149, 150, + 156, 157, 165, 166, 169, 173, 174, 175, 176, 179, + 146, 162, 179, 146, 162, 179, 146, 146, 49, 146, + 53, 49, 179, 45, 44, 4, 120, 146, 54, 44, + 54, 44, 117, 44, 44, 44, 44, 85, 182, 186, + 53, 54, 54, 54, 146, 54, 44, 44, 48, 156, + 157, 169, 169, 47, 117, 54, 54, 54, 54, 54, + 9, 10, 12, 13, 56, 57, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 49, 45, 44, + 49, 45, 44, 49, 50, 49, 146, 162, 4, 54, + 45, 146, 19, 146, 121, 148, 149, 150, 169, 179, + 146, 53, 53, 54, 162, 162, 146, 44, 44, 44, + 44, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 49, 162, 49, 162, 49, 146, 44, 45, + 54, 45, 44, 45, 54, 22, 50, 45, 45, 45, + 146, 146, 146, 146, 44, 45, 44, 45, 44, 45, + 162, 117, 146, 117, 146, 147, 146, 179, 119, 54, + 54, 45, 45, 50, 45, 50, 45, 50, 162, 162, + 162, 45, 17, 45, 54, 45, 22, 54, 54, 163, + 54, 163, 54, 163, 45, 45, 45, 117, 54, 121, + 117, 146, 45, 45, 45, 45, 45, 54, 54, 54, + 117, 117 }; const unsigned char parser::yyr1_[] = { - 0, 106, 107, 107, 108, 108, 108, 108, 108, 108, - 109, 110, 111, 111, 111, 112, 113, 114, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 116, 116, 117, 117, 118, 118, 118, - 118, 119, 119, 120, 120, 120, 121, 122, 122, 123, - 124, 124, 125, 125, 126, 127, 127, 128, 129, 130, - 131, 132, 133, 133, 134, 135, 135, 136, 137, 138, - 139, 139, 140, 141, 142, 143, 143, 143, 144, 144, - 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, - 145, 146, 146, 147, 147, 148, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 151, 152, 153, 153, 154, 154, 155, 155, - 155, 155, 155, 155, 156, 156, 156, 156, 157, 158, - 158, 158, 159, 159, 160, 160, 161, 161, 162, 163, - 164, 165, 166, 166, 166, 166, 166, 166, 166, 166, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 177, 178, 179, 180, 181, 182, 182, 183, - 183, 183, 183, 183, 184, 185 + 0, 108, 109, 109, 110, 110, 110, 110, 110, 110, + 111, 112, 113, 113, 113, 113, 113, 114, 115, 116, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 118, 118, 119, 119, + 120, 120, 121, 121, 121, 121, 122, 122, 123, 123, + 123, 124, 125, 125, 126, 127, 127, 128, 128, 129, + 130, 130, 131, 132, 133, 134, 135, 136, 136, 137, + 138, 138, 139, 140, 141, 142, 142, 143, 144, 145, + 146, 146, 146, 147, 147, 148, 148, 148, 148, 148, + 148, 148, 148, 148, 148, 148, 149, 149, 150, 150, + 151, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 154, 155, 156, + 156, 157, 157, 158, 158, 158, 158, 158, 158, 159, + 159, 159, 159, 160, 161, 161, 161, 162, 162, 163, + 163, 164, 164, 165, 166, 167, 168, 169, 169, 169, + 169, 169, 169, 169, 169, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 180, 181, 182, + 183, 184, 185, 185, 186, 186, 186, 186, 186, 187, + 188 }; const signed char parser::yyr2_[] = { 0, 2, 1, 0, 2, 2, 2, 1, 1, 1, - 3, 3, 1, 1, 1, 5, 4, 5, 1, 1, + 3, 3, 1, 1, 1, 1, 1, 5, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 3, 2, 2, 1, 1, 1, 1, - 0, 2, 2, 2, 2, 2, 6, 8, 6, 3, - 8, 6, 8, 6, 2, 2, 4, 5, 7, 5, - 7, 9, 7, 9, 5, 3, 3, 2, 2, 2, - 3, 2, 2, 5, 5, 1, 1, 1, 1, 0, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 2, 2, 2, 2, 5, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 3, 2, 3, 2, + 2, 1, 1, 1, 1, 0, 2, 2, 2, 2, + 2, 6, 8, 6, 3, 8, 6, 8, 6, 2, + 2, 4, 5, 7, 5, 7, 9, 7, 9, 5, + 3, 3, 2, 2, 2, 3, 2, 2, 5, 5, + 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, + 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 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, 1, 1, 2, 2, 4, 6, - 5, 7, 5, 7, 8, 9, 9, 9, 3, 3, - 1, 0, 1, 0, 3, 1, 2, 3, 4, 3, - 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, - 1, 1, 1, 1, 1, 1, 7, 2, 1, 2, - 1, 1, 1, 1, 1, 1 + 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, + 1, 2, 2, 4, 6, 5, 7, 5, 7, 8, + 9, 9, 9, 3, 3, 1, 0, 1, 0, 3, + 1, 2, 3, 4, 3, 2, 3, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, + 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, + 1, 7, 2, 1, 2, 1, 1, 1, 1, 1, + 1 }; @@ -4418,28 +4497,29 @@ namespace xsk { namespace gsc { namespace h1 { const short parser::yyrline_[] = { - 0, 251, 251, 252, 256, 258, 260, 262, 264, 266, - 271, 275, 280, 281, 282, 286, 291, 296, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 329, 330, 334, 336, 341, 343, 345, - 348, 352, 354, 359, 361, 363, 368, 373, 375, 380, - 385, 387, 392, 394, 399, 404, 406, 411, 416, 421, - 426, 431, 436, 438, 443, 448, 450, 455, 460, 465, - 470, 472, 477, 482, 487, 492, 493, 494, 498, 499, - 503, 505, 507, 509, 511, 513, 515, 517, 519, 521, - 523, 528, 530, 535, 537, 542, 547, 549, 551, 553, - 555, 557, 559, 561, 563, 565, 567, 569, 571, 573, - 575, 577, 579, 581, 586, 587, 588, 589, 590, 591, - 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, - 612, 613, 617, 622, 627, 628, 631, 632, 636, 638, - 640, 642, 644, 646, 651, 653, 655, 657, 662, 667, - 669, 672, 676, 679, 683, 685, 690, 692, 697, 702, - 707, 712, 717, 718, 719, 720, 721, 722, 723, 724, - 725, 729, 734, 739, 744, 749, 754, 759, 764, 769, - 774, 779, 781, 786, 791, 796, 801, 806, 808, 813, - 815, 817, 819, 821, 826, 831 + 0, 254, 254, 255, 259, 261, 263, 265, 267, 269, + 274, 278, 283, 284, 285, 286, 287, 291, 296, 301, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 335, 336, 340, 341, + 345, 347, 352, 354, 356, 359, 363, 365, 370, 372, + 374, 379, 384, 386, 391, 396, 398, 403, 405, 410, + 415, 417, 422, 427, 432, 437, 442, 447, 449, 454, + 459, 461, 466, 471, 476, 481, 483, 488, 493, 498, + 503, 504, 505, 509, 510, 514, 516, 518, 520, 522, + 524, 526, 528, 530, 532, 534, 539, 541, 546, 548, + 553, 558, 560, 562, 564, 566, 568, 570, 572, 574, + 576, 578, 580, 582, 584, 586, 588, 590, 592, 597, + 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, + 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, + 618, 619, 620, 621, 622, 623, 624, 628, 633, 638, + 639, 642, 643, 647, 649, 651, 653, 655, 657, 662, + 664, 666, 668, 673, 678, 680, 683, 687, 690, 694, + 696, 701, 703, 708, 713, 718, 723, 728, 729, 730, + 731, 732, 733, 734, 735, 736, 740, 745, 750, 755, + 760, 765, 770, 775, 780, 785, 790, 792, 797, 802, + 807, 812, 817, 819, 824, 826, 828, 830, 832, 837, + 842 }; void @@ -4472,9 +4552,9 @@ namespace xsk { namespace gsc { namespace h1 { #line 13 "parser.ypp" } } } // xsk::gsc::h1 -#line 4476 "parser.cpp" +#line 4556 "parser.cpp" -#line 835 "parser.ypp" +#line 846 "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 afc5948c..3a766ccb 100644 --- a/src/h1/xsk/parser.hpp +++ b/src/h1/xsk/parser.hpp @@ -580,6 +580,7 @@ namespace xsk { namespace gsc { namespace h1 { // stmt_ifelse char dummy54[sizeof (ast::stmt_ifelse::ptr)]; + // stmt_dev // stmt_block // stmt_list char dummy55[sizeof (ast::stmt_list::ptr)]; @@ -679,109 +680,111 @@ namespace xsk { namespace gsc { namespace h1 { H1EOF = 0, // "end of file" H1error = 1, // error H1UNDEF = 2, // "invalid token" - INLINE = 3, // "#inline" - INCLUDE = 4, // "#include" - USINGTREE = 5, // "#using_animtree" - ANIMTREE = 6, // "#animtree" - ENDON = 7, // "endon" - NOTIFY = 8, // "notify" - WAIT = 9, // "wait" - WAITTILL = 10, // "waittill" - WAITTILLMATCH = 11, // "waittillmatch" - WAITTILLFRAMEEND = 12, // "waittillframeend" - WAITFRAME = 13, // "waitframe" - IF = 14, // "if" - ELSE = 15, // "else" - DO = 16, // "do" - WHILE = 17, // "while" - FOR = 18, // "for" - FOREACH = 19, // "foreach" - IN = 20, // "in" - SWITCH = 21, // "switch" - CASE = 22, // "case" - DEFAULT = 23, // "default" - BREAK = 24, // "break" - CONTINUE = 25, // "continue" - RETURN = 26, // "return" - BREAKPOINT = 27, // "breakpoint" - PROFBEGIN = 28, // "prof_begin" - PROFEND = 29, // "prof_end" - THREAD = 30, // "thread" - CHILDTHREAD = 31, // "childthread" - THISTHREAD = 32, // "thisthread" - CALL = 33, // "call" - TRUE = 34, // "true" - FALSE = 35, // "false" - UNDEFINED = 36, // "undefined" - SIZE = 37, // ".size" - GAME = 38, // "game" - SELF = 39, // "self" - ANIM = 40, // "anim" - LEVEL = 41, // "level" - LPAREN = 42, // "(" - RPAREN = 43, // ")" - LBRACE = 44, // "{" - RBRACE = 45, // "}" - LBRACKET = 46, // "[" - RBRACKET = 47, // "]" - COMMA = 48, // "," - DOT = 49, // "." - DOUBLECOLON = 50, // "::" - COLON = 51, // ":" - SEMICOLON = 52, // ";" - QMARK = 53, // "?" - INCREMENT = 54, // "++" - DECREMENT = 55, // "--" - LSHIFT = 56, // "<<" - RSHIFT = 57, // ">>" - OR = 58, // "||" - AND = 59, // "&&" - EQUALITY = 60, // "==" - INEQUALITY = 61, // "!=" - LESS_EQUAL = 62, // "<=" - GREATER_EQUAL = 63, // ">=" - LESS = 64, // "<" - GREATER = 65, // ">" - NOT = 66, // "!" - COMPLEMENT = 67, // "~" - ASSIGN = 68, // "=" - ASSIGN_ADD = 69, // "+=" - ASSIGN_SUB = 70, // "-=" - ASSIGN_MUL = 71, // "*=" - ASSIGN_DIV = 72, // "/=" - ASSIGN_MOD = 73, // "%=" - ASSIGN_BW_OR = 74, // "|=" - ASSIGN_BW_AND = 75, // "&=" - ASSIGN_BW_EXOR = 76, // "^=" - ASSIGN_RSHIFT = 77, // ">>=" - ASSIGN_LSHIFT = 78, // "<<=" - BITWISE_OR = 79, // "|" - BITWISE_AND = 80, // "&" - BITWISE_EXOR = 81, // "^" - ADD = 82, // "+" - SUB = 83, // "-" - MUL = 84, // "*" - DIV = 85, // "/" - MOD = 86, // "%" - PATH = 87, // "path" - IDENTIFIER = 88, // "identifier" - STRING = 89, // "string literal" - ISTRING = 90, // "localized string" - COLOR = 91, // "color" - FLOAT = 92, // "float" - INT_DEC = 93, // "int" - INT_OCT = 94, // "octal int" - INT_BIN = 95, // "binary int" - INT_HEX = 96, // "hexadecimal int" - ADD_ARRAY = 97, // ADD_ARRAY - THEN = 98, // THEN - TERN = 99, // TERN - NEG = 100, // NEG - ANIMREF = 101, // ANIMREF - PREINC = 102, // PREINC - PREDEC = 103, // PREDEC - POSTINC = 104, // POSTINC - POSTDEC = 105 // POSTDEC + DEVBEGIN = 3, // "/#" + DEVEND = 4, // "#/" + INLINE = 5, // "#inline" + INCLUDE = 6, // "#include" + USINGTREE = 7, // "#using_animtree" + ANIMTREE = 8, // "#animtree" + ENDON = 9, // "endon" + NOTIFY = 10, // "notify" + WAIT = 11, // "wait" + WAITTILL = 12, // "waittill" + WAITTILLMATCH = 13, // "waittillmatch" + WAITTILLFRAMEEND = 14, // "waittillframeend" + WAITFRAME = 15, // "waitframe" + IF = 16, // "if" + ELSE = 17, // "else" + DO = 18, // "do" + WHILE = 19, // "while" + FOR = 20, // "for" + FOREACH = 21, // "foreach" + IN = 22, // "in" + SWITCH = 23, // "switch" + CASE = 24, // "case" + DEFAULT = 25, // "default" + BREAK = 26, // "break" + CONTINUE = 27, // "continue" + RETURN = 28, // "return" + BREAKPOINT = 29, // "breakpoint" + PROFBEGIN = 30, // "prof_begin" + PROFEND = 31, // "prof_end" + THREAD = 32, // "thread" + CHILDTHREAD = 33, // "childthread" + THISTHREAD = 34, // "thisthread" + CALL = 35, // "call" + TRUE = 36, // "true" + FALSE = 37, // "false" + UNDEFINED = 38, // "undefined" + SIZE = 39, // ".size" + GAME = 40, // "game" + SELF = 41, // "self" + ANIM = 42, // "anim" + LEVEL = 43, // "level" + LPAREN = 44, // "(" + RPAREN = 45, // ")" + LBRACE = 46, // "{" + RBRACE = 47, // "}" + LBRACKET = 48, // "[" + RBRACKET = 49, // "]" + COMMA = 50, // "," + DOT = 51, // "." + DOUBLECOLON = 52, // "::" + COLON = 53, // ":" + SEMICOLON = 54, // ";" + QMARK = 55, // "?" + INCREMENT = 56, // "++" + DECREMENT = 57, // "--" + LSHIFT = 58, // "<<" + RSHIFT = 59, // ">>" + OR = 60, // "||" + AND = 61, // "&&" + EQUALITY = 62, // "==" + INEQUALITY = 63, // "!=" + LESS_EQUAL = 64, // "<=" + GREATER_EQUAL = 65, // ">=" + LESS = 66, // "<" + GREATER = 67, // ">" + NOT = 68, // "!" + COMPLEMENT = 69, // "~" + ASSIGN = 70, // "=" + ASSIGN_ADD = 71, // "+=" + ASSIGN_SUB = 72, // "-=" + ASSIGN_MUL = 73, // "*=" + ASSIGN_DIV = 74, // "/=" + ASSIGN_MOD = 75, // "%=" + ASSIGN_BW_OR = 76, // "|=" + ASSIGN_BW_AND = 77, // "&=" + ASSIGN_BW_EXOR = 78, // "^=" + ASSIGN_RSHIFT = 79, // ">>=" + ASSIGN_LSHIFT = 80, // "<<=" + BITWISE_OR = 81, // "|" + BITWISE_AND = 82, // "&" + BITWISE_EXOR = 83, // "^" + ADD = 84, // "+" + SUB = 85, // "-" + MUL = 86, // "*" + DIV = 87, // "/" + MOD = 88, // "%" + PATH = 89, // "path" + IDENTIFIER = 90, // "identifier" + STRING = 91, // "string literal" + ISTRING = 92, // "localized string" + COLOR = 93, // "color" + FLOAT = 94, // "float" + INT_DEC = 95, // "int" + INT_OCT = 96, // "octal int" + INT_BIN = 97, // "binary int" + INT_HEX = 98, // "hexadecimal int" + ADD_ARRAY = 99, // ADD_ARRAY + THEN = 100, // THEN + TERN = 101, // TERN + NEG = 102, // NEG + ANIMREF = 103, // ANIMREF + PREINC = 104, // PREINC + PREDEC = 105, // PREDEC + POSTINC = 106, // POSTINC + POSTDEC = 107 // POSTDEC }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; @@ -798,194 +801,197 @@ namespace xsk { namespace gsc { namespace h1 { { enum symbol_kind_type { - YYNTOKENS = 106, ///< Number of tokens. + YYNTOKENS = 108, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error S_YYUNDEF = 2, // "invalid token" - S_INLINE = 3, // "#inline" - S_INCLUDE = 4, // "#include" - S_USINGTREE = 5, // "#using_animtree" - S_ANIMTREE = 6, // "#animtree" - S_ENDON = 7, // "endon" - S_NOTIFY = 8, // "notify" - S_WAIT = 9, // "wait" - S_WAITTILL = 10, // "waittill" - S_WAITTILLMATCH = 11, // "waittillmatch" - S_WAITTILLFRAMEEND = 12, // "waittillframeend" - S_WAITFRAME = 13, // "waitframe" - S_IF = 14, // "if" - S_ELSE = 15, // "else" - S_DO = 16, // "do" - S_WHILE = 17, // "while" - S_FOR = 18, // "for" - S_FOREACH = 19, // "foreach" - S_IN = 20, // "in" - S_SWITCH = 21, // "switch" - S_CASE = 22, // "case" - S_DEFAULT = 23, // "default" - S_BREAK = 24, // "break" - S_CONTINUE = 25, // "continue" - S_RETURN = 26, // "return" - S_BREAKPOINT = 27, // "breakpoint" - S_PROFBEGIN = 28, // "prof_begin" - S_PROFEND = 29, // "prof_end" - S_THREAD = 30, // "thread" - S_CHILDTHREAD = 31, // "childthread" - S_THISTHREAD = 32, // "thisthread" - S_CALL = 33, // "call" - S_TRUE = 34, // "true" - S_FALSE = 35, // "false" - S_UNDEFINED = 36, // "undefined" - S_SIZE = 37, // ".size" - S_GAME = 38, // "game" - S_SELF = 39, // "self" - S_ANIM = 40, // "anim" - S_LEVEL = 41, // "level" - S_LPAREN = 42, // "(" - S_RPAREN = 43, // ")" - S_LBRACE = 44, // "{" - S_RBRACE = 45, // "}" - S_LBRACKET = 46, // "[" - S_RBRACKET = 47, // "]" - S_COMMA = 48, // "," - S_DOT = 49, // "." - S_DOUBLECOLON = 50, // "::" - S_COLON = 51, // ":" - S_SEMICOLON = 52, // ";" - S_QMARK = 53, // "?" - S_INCREMENT = 54, // "++" - S_DECREMENT = 55, // "--" - S_LSHIFT = 56, // "<<" - S_RSHIFT = 57, // ">>" - S_OR = 58, // "||" - S_AND = 59, // "&&" - S_EQUALITY = 60, // "==" - S_INEQUALITY = 61, // "!=" - S_LESS_EQUAL = 62, // "<=" - S_GREATER_EQUAL = 63, // ">=" - S_LESS = 64, // "<" - S_GREATER = 65, // ">" - S_NOT = 66, // "!" - S_COMPLEMENT = 67, // "~" - S_ASSIGN = 68, // "=" - S_ASSIGN_ADD = 69, // "+=" - S_ASSIGN_SUB = 70, // "-=" - S_ASSIGN_MUL = 71, // "*=" - S_ASSIGN_DIV = 72, // "/=" - S_ASSIGN_MOD = 73, // "%=" - S_ASSIGN_BW_OR = 74, // "|=" - S_ASSIGN_BW_AND = 75, // "&=" - S_ASSIGN_BW_EXOR = 76, // "^=" - S_ASSIGN_RSHIFT = 77, // ">>=" - S_ASSIGN_LSHIFT = 78, // "<<=" - S_BITWISE_OR = 79, // "|" - S_BITWISE_AND = 80, // "&" - S_BITWISE_EXOR = 81, // "^" - S_ADD = 82, // "+" - S_SUB = 83, // "-" - S_MUL = 84, // "*" - S_DIV = 85, // "/" - S_MOD = 86, // "%" - S_PATH = 87, // "path" - S_IDENTIFIER = 88, // "identifier" - S_STRING = 89, // "string literal" - S_ISTRING = 90, // "localized string" - S_COLOR = 91, // "color" - S_FLOAT = 92, // "float" - S_INT_DEC = 93, // "int" - S_INT_OCT = 94, // "octal int" - S_INT_BIN = 95, // "binary int" - S_INT_HEX = 96, // "hexadecimal int" - S_ADD_ARRAY = 97, // ADD_ARRAY - S_THEN = 98, // THEN - S_TERN = 99, // TERN - S_NEG = 100, // NEG - S_ANIMREF = 101, // ANIMREF - S_PREINC = 102, // PREINC - S_PREDEC = 103, // PREDEC - S_POSTINC = 104, // POSTINC - S_POSTDEC = 105, // POSTDEC - S_YYACCEPT = 106, // $accept - S_root = 107, // root - S_program = 108, // program - S_inline = 109, // inline - S_include = 110, // include - S_declaration = 111, // declaration - S_decl_usingtree = 112, // decl_usingtree - S_decl_constant = 113, // decl_constant - S_decl_thread = 114, // decl_thread - S_stmt = 115, // stmt - S_stmt_block = 116, // stmt_block - S_stmt_list = 117, // stmt_list - S_stmt_expr = 118, // stmt_expr - S_stmt_call = 119, // stmt_call - S_stmt_assign = 120, // stmt_assign - S_stmt_endon = 121, // stmt_endon - S_stmt_notify = 122, // stmt_notify - S_stmt_wait = 123, // stmt_wait - S_stmt_waittill = 124, // stmt_waittill - S_stmt_waittillmatch = 125, // stmt_waittillmatch - S_stmt_waittillframeend = 126, // stmt_waittillframeend - S_stmt_waitframe = 127, // stmt_waitframe - S_stmt_if = 128, // stmt_if - S_stmt_ifelse = 129, // stmt_ifelse - S_stmt_while = 130, // stmt_while - S_stmt_dowhile = 131, // stmt_dowhile - S_stmt_for = 132, // stmt_for - S_stmt_foreach = 133, // stmt_foreach - S_stmt_switch = 134, // stmt_switch - S_stmt_case = 135, // stmt_case - S_stmt_default = 136, // stmt_default - S_stmt_break = 137, // stmt_break - S_stmt_continue = 138, // stmt_continue - S_stmt_return = 139, // stmt_return - S_stmt_breakpoint = 140, // stmt_breakpoint - S_stmt_prof_begin = 141, // stmt_prof_begin - S_stmt_prof_end = 142, // stmt_prof_end - S_expr = 143, // expr - S_expr_or_empty = 144, // expr_or_empty - S_expr_assign = 145, // expr_assign - S_expr_increment = 146, // expr_increment - S_expr_decrement = 147, // expr_decrement - S_expr_ternary = 148, // expr_ternary - S_expr_binary = 149, // expr_binary - S_expr_primitive = 150, // expr_primitive - S_expr_complement = 151, // expr_complement - S_expr_not = 152, // expr_not - S_expr_call = 153, // expr_call - S_expr_method = 154, // expr_method - S_expr_function = 155, // expr_function - S_expr_pointer = 156, // expr_pointer - S_expr_add_array = 157, // expr_add_array - S_expr_parameters = 158, // expr_parameters - S_expr_arguments = 159, // expr_arguments - S_expr_arguments_no_empty = 160, // expr_arguments_no_empty - S_expr_reference = 161, // expr_reference - S_expr_array = 162, // expr_array - S_expr_field = 163, // expr_field - S_expr_size = 164, // expr_size - S_expr_paren = 165, // expr_paren - S_expr_object = 166, // expr_object - S_expr_thisthread = 167, // expr_thisthread - S_expr_empty_array = 168, // expr_empty_array - S_expr_undefined = 169, // expr_undefined - S_expr_game = 170, // expr_game - S_expr_self = 171, // expr_self - S_expr_anim = 172, // expr_anim - S_expr_level = 173, // expr_level - S_expr_animation = 174, // expr_animation - S_expr_animtree = 175, // expr_animtree - S_expr_identifier = 176, // expr_identifier - S_expr_path = 177, // expr_path - S_expr_istring = 178, // expr_istring - S_expr_string = 179, // expr_string - S_expr_color = 180, // expr_color - S_expr_vector = 181, // expr_vector - S_expr_float = 182, // expr_float - S_expr_integer = 183, // expr_integer - S_expr_false = 184, // expr_false - S_expr_true = 185 // expr_true + S_DEVBEGIN = 3, // "/#" + S_DEVEND = 4, // "#/" + S_INLINE = 5, // "#inline" + S_INCLUDE = 6, // "#include" + S_USINGTREE = 7, // "#using_animtree" + S_ANIMTREE = 8, // "#animtree" + S_ENDON = 9, // "endon" + S_NOTIFY = 10, // "notify" + S_WAIT = 11, // "wait" + S_WAITTILL = 12, // "waittill" + S_WAITTILLMATCH = 13, // "waittillmatch" + S_WAITTILLFRAMEEND = 14, // "waittillframeend" + S_WAITFRAME = 15, // "waitframe" + S_IF = 16, // "if" + S_ELSE = 17, // "else" + S_DO = 18, // "do" + S_WHILE = 19, // "while" + S_FOR = 20, // "for" + S_FOREACH = 21, // "foreach" + S_IN = 22, // "in" + S_SWITCH = 23, // "switch" + S_CASE = 24, // "case" + S_DEFAULT = 25, // "default" + S_BREAK = 26, // "break" + S_CONTINUE = 27, // "continue" + S_RETURN = 28, // "return" + S_BREAKPOINT = 29, // "breakpoint" + S_PROFBEGIN = 30, // "prof_begin" + S_PROFEND = 31, // "prof_end" + S_THREAD = 32, // "thread" + S_CHILDTHREAD = 33, // "childthread" + S_THISTHREAD = 34, // "thisthread" + S_CALL = 35, // "call" + S_TRUE = 36, // "true" + S_FALSE = 37, // "false" + S_UNDEFINED = 38, // "undefined" + S_SIZE = 39, // ".size" + S_GAME = 40, // "game" + S_SELF = 41, // "self" + S_ANIM = 42, // "anim" + S_LEVEL = 43, // "level" + S_LPAREN = 44, // "(" + S_RPAREN = 45, // ")" + S_LBRACE = 46, // "{" + S_RBRACE = 47, // "}" + S_LBRACKET = 48, // "[" + S_RBRACKET = 49, // "]" + S_COMMA = 50, // "," + S_DOT = 51, // "." + S_DOUBLECOLON = 52, // "::" + S_COLON = 53, // ":" + S_SEMICOLON = 54, // ";" + S_QMARK = 55, // "?" + S_INCREMENT = 56, // "++" + S_DECREMENT = 57, // "--" + S_LSHIFT = 58, // "<<" + S_RSHIFT = 59, // ">>" + S_OR = 60, // "||" + S_AND = 61, // "&&" + S_EQUALITY = 62, // "==" + S_INEQUALITY = 63, // "!=" + S_LESS_EQUAL = 64, // "<=" + S_GREATER_EQUAL = 65, // ">=" + S_LESS = 66, // "<" + S_GREATER = 67, // ">" + S_NOT = 68, // "!" + S_COMPLEMENT = 69, // "~" + S_ASSIGN = 70, // "=" + S_ASSIGN_ADD = 71, // "+=" + S_ASSIGN_SUB = 72, // "-=" + S_ASSIGN_MUL = 73, // "*=" + S_ASSIGN_DIV = 74, // "/=" + S_ASSIGN_MOD = 75, // "%=" + S_ASSIGN_BW_OR = 76, // "|=" + S_ASSIGN_BW_AND = 77, // "&=" + S_ASSIGN_BW_EXOR = 78, // "^=" + S_ASSIGN_RSHIFT = 79, // ">>=" + S_ASSIGN_LSHIFT = 80, // "<<=" + S_BITWISE_OR = 81, // "|" + S_BITWISE_AND = 82, // "&" + S_BITWISE_EXOR = 83, // "^" + S_ADD = 84, // "+" + S_SUB = 85, // "-" + S_MUL = 86, // "*" + S_DIV = 87, // "/" + S_MOD = 88, // "%" + S_PATH = 89, // "path" + S_IDENTIFIER = 90, // "identifier" + S_STRING = 91, // "string literal" + S_ISTRING = 92, // "localized string" + S_COLOR = 93, // "color" + S_FLOAT = 94, // "float" + S_INT_DEC = 95, // "int" + S_INT_OCT = 96, // "octal int" + S_INT_BIN = 97, // "binary int" + S_INT_HEX = 98, // "hexadecimal int" + S_ADD_ARRAY = 99, // ADD_ARRAY + S_THEN = 100, // THEN + S_TERN = 101, // TERN + S_NEG = 102, // NEG + S_ANIMREF = 103, // ANIMREF + S_PREINC = 104, // PREINC + S_PREDEC = 105, // PREDEC + S_POSTINC = 106, // POSTINC + S_POSTDEC = 107, // POSTDEC + S_YYACCEPT = 108, // $accept + S_root = 109, // root + S_program = 110, // program + S_inline = 111, // inline + S_include = 112, // include + S_declaration = 113, // declaration + S_decl_usingtree = 114, // decl_usingtree + S_decl_constant = 115, // decl_constant + S_decl_thread = 116, // decl_thread + S_stmt = 117, // stmt + S_stmt_dev = 118, // stmt_dev + S_stmt_block = 119, // stmt_block + S_stmt_list = 120, // stmt_list + S_stmt_expr = 121, // stmt_expr + S_stmt_call = 122, // stmt_call + S_stmt_assign = 123, // stmt_assign + S_stmt_endon = 124, // stmt_endon + S_stmt_notify = 125, // stmt_notify + S_stmt_wait = 126, // stmt_wait + S_stmt_waittill = 127, // stmt_waittill + S_stmt_waittillmatch = 128, // stmt_waittillmatch + S_stmt_waittillframeend = 129, // stmt_waittillframeend + S_stmt_waitframe = 130, // stmt_waitframe + S_stmt_if = 131, // stmt_if + S_stmt_ifelse = 132, // stmt_ifelse + S_stmt_while = 133, // stmt_while + S_stmt_dowhile = 134, // stmt_dowhile + S_stmt_for = 135, // stmt_for + S_stmt_foreach = 136, // stmt_foreach + S_stmt_switch = 137, // stmt_switch + S_stmt_case = 138, // stmt_case + S_stmt_default = 139, // stmt_default + S_stmt_break = 140, // stmt_break + S_stmt_continue = 141, // stmt_continue + S_stmt_return = 142, // stmt_return + S_stmt_breakpoint = 143, // stmt_breakpoint + S_stmt_prof_begin = 144, // stmt_prof_begin + S_stmt_prof_end = 145, // stmt_prof_end + S_expr = 146, // expr + S_expr_or_empty = 147, // expr_or_empty + S_expr_assign = 148, // expr_assign + S_expr_increment = 149, // expr_increment + S_expr_decrement = 150, // expr_decrement + S_expr_ternary = 151, // expr_ternary + S_expr_binary = 152, // expr_binary + S_expr_primitive = 153, // expr_primitive + S_expr_complement = 154, // expr_complement + S_expr_not = 155, // expr_not + S_expr_call = 156, // expr_call + S_expr_method = 157, // expr_method + S_expr_function = 158, // expr_function + S_expr_pointer = 159, // expr_pointer + S_expr_add_array = 160, // expr_add_array + S_expr_parameters = 161, // expr_parameters + S_expr_arguments = 162, // expr_arguments + S_expr_arguments_no_empty = 163, // expr_arguments_no_empty + S_expr_reference = 164, // expr_reference + S_expr_array = 165, // expr_array + S_expr_field = 166, // expr_field + S_expr_size = 167, // expr_size + S_expr_paren = 168, // expr_paren + S_expr_object = 169, // expr_object + S_expr_thisthread = 170, // expr_thisthread + S_expr_empty_array = 171, // expr_empty_array + S_expr_undefined = 172, // expr_undefined + S_expr_game = 173, // expr_game + S_expr_self = 174, // expr_self + S_expr_anim = 175, // expr_anim + S_expr_level = 176, // expr_level + S_expr_animation = 177, // expr_animation + S_expr_animtree = 178, // expr_animtree + S_expr_identifier = 179, // expr_identifier + S_expr_path = 180, // expr_path + S_expr_istring = 181, // expr_istring + S_expr_string = 182, // expr_string + S_expr_color = 183, // expr_color + S_expr_vector = 184, // expr_vector + S_expr_float = 185, // expr_float + S_expr_integer = 186, // expr_integer + S_expr_false = 187, // expr_false + S_expr_true = 188 // expr_true }; }; @@ -1248,6 +1254,7 @@ namespace xsk { namespace gsc { namespace h1 { value.move< ast::stmt_ifelse::ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (std::move (that.value)); @@ -2519,6 +2526,7 @@ switch (yykind) value.template destroy< ast::stmt_ifelse::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.template destroy< ast::stmt_list::ptr > (); @@ -2782,6 +2790,36 @@ switch (yykind) return symbol_type (token::H1UNDEF, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_DEVBEGIN (location_type l) + { + return symbol_type (token::DEVBEGIN, std::move (l)); + } +#else + static + symbol_type + make_DEVBEGIN (const location_type& l) + { + return symbol_type (token::DEVBEGIN, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_DEVEND (location_type l) + { + return symbol_type (token::DEVEND, std::move (l)); + } +#else + static + symbol_type + make_DEVEND (const location_type& l) + { + return symbol_type (token::DEVEND, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4671,9 +4709,9 @@ switch (yykind) /// Constants. enum { - yylast_ = 2075, ///< Last index in yytable_. - yynnts_ = 80, ///< Number of nonterminal symbols. - yyfinal_ = 19 ///< Termination state number. + yylast_ = 2254, ///< Last index in yytable_. + yynnts_ = 81, ///< Number of nonterminal symbols. + yyfinal_ = 21 ///< Termination state number. }; @@ -4926,6 +4964,7 @@ switch (yykind) value.copy< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.copy< ast::stmt_list::ptr > (YY_MOVE (that.value)); @@ -5243,6 +5282,7 @@ switch (yykind) value.move< ast::stmt_ifelse::ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (YY_MOVE (s.value)); @@ -5368,7 +5408,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::h1 -#line 5372 "parser.hpp" +#line 5412 "parser.hpp" diff --git a/src/h2/xsk/compiler.cpp b/src/h2/xsk/compiler.cpp index cf6a2527..407e8209 100644 --- a/src/h2/xsk/compiler.cpp +++ b/src/h2/xsk/compiler.cpp @@ -85,6 +85,7 @@ void compiler::compile_program(const ast::program::ptr& program) constants_.clear(); local_functions_.clear(); index_ = 1; + developer_thread_ = false; for (const auto& entry : program->declarations) { @@ -150,6 +151,12 @@ void compiler::emit_declaration(const ast::decl& decl) { switch (decl.kind()) { + case ast::kind::decl_dev_begin: + developer_thread_ = true; + break; + case ast::kind::decl_dev_end: + developer_thread_ = false; + break; case ast::kind::decl_usingtree: emit_decl_usingtree(decl.as_usingtree); break; @@ -166,6 +173,9 @@ void compiler::emit_declaration(const ast::decl& decl) void compiler::emit_decl_usingtree(const ast::decl_usingtree::ptr& animtree) { + if(developer_thread_) + throw comp_error(animtree->loc(), "cannot put #using_animtree inside /# ... #/ comment"); + animtrees_.push_back({ animtree->name->value, false }); } diff --git a/src/h2/xsk/lexer.cpp b/src/h2/xsk/lexer.cpp index eecc1756..db010983 100644 --- a/src/h2/xsk/lexer.cpp +++ b/src/h2/xsk/lexer.cpp @@ -555,8 +555,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 109 -#define YY_END_OF_BUFFER 110 +#define YY_NUM_RULES 111 +#define YY_END_OF_BUFFER 112 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -564,44 +564,45 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[330] = +static const flex_int16_t yy_accept[333] = { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 110, 108, - 1, 2, 93, 108, 108, 92, 96, 108, 53, 54, - 90, 88, 59, 89, 60, 91, 107, 107, 62, 63, - 77, 87, 78, 64, 99, 57, 58, 97, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 55, 95, 56, 94, 5, 6, - 5, 108, 90, 9, 10, 9, 74, 0, 101, 0, - 13, 0, 0, 0, 0, 83, 0, 72, 0, 85, - 0, 0, 12, 81, 65, 79, 66, 80, 103, 0, - 8, 4, 3, 82, 103, 107, 104, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 112, 110, + 1, 2, 95, 110, 110, 94, 98, 110, 55, 56, + 92, 90, 61, 91, 62, 93, 109, 109, 64, 65, + 79, 89, 80, 66, 101, 59, 60, 99, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 57, 97, 58, 96, 5, 6, + 5, 12, 13, 12, 110, 92, 93, 76, 0, 103, + 0, 15, 0, 0, 0, 0, 85, 0, 74, 0, + 87, 0, 0, 8, 83, 67, 81, 68, 82, 105, + 0, 11, 4, 3, 84, 105, 109, 106, 0, 0, - 0, 61, 69, 75, 73, 76, 70, 99, 86, 99, - 99, 99, 99, 99, 99, 27, 99, 99, 99, 99, - 99, 25, 31, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 84, 71, 7, 11, 0, 101, - 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, - 0, 101, 0, 103, 0, 3, 103, 103, 104, 105, - 106, 98, 67, 68, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 29, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, 102, 0, - 0, 0, 0, 0, 100, 0, 0, 100, 0, 0, + 0, 0, 63, 71, 77, 75, 78, 72, 101, 88, + 101, 101, 101, 101, 101, 101, 29, 101, 101, 101, + 101, 101, 27, 33, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 86, 73, 7, 14, 10, + 9, 0, 103, 0, 0, 0, 0, 0, 0, 102, + 0, 0, 0, 0, 103, 0, 105, 0, 3, 105, + 105, 106, 107, 108, 100, 69, 70, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 31, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 104, 0, 0, 0, 0, 0, 102, 0, 0, - 51, 99, 44, 33, 99, 99, 99, 26, 99, 99, - 99, 49, 99, 99, 99, 99, 50, 99, 99, 99, - 45, 99, 20, 99, 0, 0, 0, 0, 0, 48, - 35, 99, 99, 99, 18, 46, 99, 52, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 28, 0, 0, - 0, 0, 0, 99, 99, 99, 99, 99, 19, 99, - 99, 37, 32, 99, 41, 99, 99, 99, 102, 0, - 0, 14, 0, 99, 99, 99, 34, 30, 99, 99, - 99, 99, 99, 99, 0, 15, 0, 99, 99, 36, - 99, 40, 99, 99, 99, 21, 17, 0, 99, 99, + 102, 0, 0, 53, 101, 46, 35, 101, 101, 101, + 28, 101, 101, 101, 51, 101, 101, 101, 101, 52, + 101, 101, 101, 47, 101, 22, 101, 0, 0, 0, + 0, 0, 50, 37, 101, 101, 101, 20, 48, 101, + 54, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 30, 0, 0, 0, 0, 0, 101, 101, 101, 101, + 101, 21, 101, 101, 39, 34, 101, 43, 101, 101, + 101, 104, 0, 0, 16, 0, 101, 101, 101, 36, + 32, 101, 101, 101, 101, 101, 101, 0, 17, 0, + 101, 101, 38, 101, 42, 101, 101, 101, 23, 19, - 99, 99, 47, 24, 99, 99, 0, 38, 99, 39, - 43, 99, 99, 0, 42, 99, 99, 0, 99, 99, - 0, 99, 22, 0, 99, 16, 99, 23, 0 + 0, 101, 101, 101, 101, 49, 26, 101, 101, 0, + 40, 101, 41, 45, 101, 101, 0, 44, 101, 101, + 0, 101, 101, 0, 101, 24, 0, 101, 18, 101, + 25, 0 } ; static const YY_CHAR yy_ec[256] = @@ -647,91 +648,93 @@ static const YY_CHAR yy_meta[64] = 1, 1, 1 } ; -static const flex_int16_t yy_base[350] = +static const flex_int16_t yy_base[353] = { 0, - 0, 0, 61, 62, 60, 63, 64, 65, 706, 707, - 707, 707, 680, 71, 60, 679, 73, 70, 707, 707, - 63, 70, 707, 69, 71, 94, 102, 109, 681, 707, - 61, 677, 76, 707, 668, 707, 707, 675, 60, 74, - 99, 104, 63, 101, 80, 106, 75, 108, 111, 119, - 120, 113, 117, 131, 707, 122, 707, 707, 707, 707, - 682, 139, 673, 707, 707, 680, 707, 154, 707, 164, - 707, 0, 647, 646, 641, 707, 157, 707, 162, 707, - 163, 170, 707, 707, 707, 707, 707, 707, 180, 648, - 707, 707, 0, 707, 186, 192, 198, 158, 205, 223, + 0, 0, 61, 62, 63, 64, 65, 66, 712, 713, + 713, 713, 686, 63, 58, 685, 76, 67, 713, 713, + 62, 67, 713, 73, 86, 85, 96, 102, 687, 713, + 65, 683, 68, 713, 674, 713, 713, 681, 75, 76, + 93, 99, 98, 105, 111, 108, 78, 103, 100, 113, + 118, 125, 123, 127, 713, 136, 713, 713, 713, 713, + 688, 713, 713, 687, 145, 678, 161, 713, 158, 713, + 163, 713, 0, 653, 652, 647, 713, 160, 713, 161, + 713, 165, 176, 713, 713, 713, 713, 713, 713, 183, + 654, 713, 713, 0, 713, 187, 194, 200, 195, 216, - 0, 707, 667, 707, 707, 707, 666, 657, 707, 54, - 137, 182, 147, 153, 194, 656, 156, 148, 187, 193, - 199, 655, 654, 197, 200, 207, 204, 222, 226, 233, - 213, 234, 237, 239, 707, 707, 707, 707, 243, 244, - 270, 0, 641, 146, 640, 274, 707, 278, 271, 283, - 279, 280, 284, 707, 625, 0, 276, 707, 303, 282, - 0, 650, 707, 707, 257, 269, 281, 258, 287, 275, - 293, 292, 277, 298, 299, 302, 304, 305, 306, 308, - 311, 313, 309, 314, 316, 319, 321, 323, 0, 634, - 634, 635, 630, 353, 354, 361, 352, 356, 365, 637, + 234, 0, 713, 673, 713, 713, 713, 672, 663, 713, + 143, 148, 184, 147, 150, 197, 662, 189, 203, 191, + 193, 208, 661, 660, 190, 207, 214, 211, 233, 215, + 225, 224, 245, 236, 249, 713, 713, 713, 713, 713, + 713, 254, 263, 281, 0, 647, 148, 646, 278, 713, + 285, 280, 288, 283, 284, 292, 713, 631, 0, 284, + 713, 311, 290, 0, 656, 713, 713, 267, 287, 265, + 266, 286, 289, 301, 295, 302, 304, 306, 307, 308, + 309, 313, 312, 317, 318, 320, 323, 325, 327, 328, + 329, 0, 640, 640, 641, 636, 358, 360, 366, 361, - 644, 336, 643, 642, 338, 339, 340, 641, 343, 347, - 344, 640, 346, 357, 364, 350, 639, 368, 358, 371, - 638, 363, 373, 370, 0, 616, 614, 619, 624, 707, - 377, 376, 380, 384, 633, 632, 381, 631, 383, 385, - 386, 388, 389, 403, 392, 401, 405, 630, 0, 610, - 621, 619, 623, 406, 407, 391, 409, 411, 625, 416, - 412, 624, 623, 414, 622, 415, 421, 426, 707, 613, - 612, 707, 615, 427, 419, 429, 618, 617, 432, 434, - 435, 436, 445, 447, 608, 707, 599, 446, 448, 614, - 451, 613, 449, 450, 458, 455, 707, 600, 452, 465, + 365, 372, 643, 650, 53, 649, 648, 344, 345, 346, + 647, 347, 354, 352, 646, 350, 367, 370, 355, 645, + 353, 369, 371, 644, 377, 378, 380, 0, 622, 620, + 625, 630, 713, 379, 381, 382, 389, 639, 638, 385, + 637, 383, 396, 384, 394, 395, 407, 409, 392, 410, + 636, 0, 616, 627, 625, 629, 412, 413, 393, 416, + 417, 631, 418, 419, 630, 629, 420, 628, 425, 423, + 430, 713, 619, 618, 713, 621, 431, 432, 434, 624, + 623, 436, 433, 445, 447, 448, 438, 614, 713, 605, + 449, 450, 620, 454, 619, 456, 457, 459, 461, 713, - 459, 467, 611, 610, 468, 472, 577, 583, 471, 541, - 530, 477, 479, 508, 501, 480, 482, 480, 483, 485, - 490, 484, 494, 485, 486, 707, 490, 489, 707, 535, - 543, 551, 556, 564, 570, 574, 582, 482, 590, 598, - 606, 614, 618, 304, 626, 634, 245, 177, 109 + 606, 462, 468, 469, 471, 617, 616, 473, 475, 600, + 597, 474, 588, 546, 480, 477, 514, 534, 482, 487, + 487, 486, 488, 496, 495, 502, 493, 489, 713, 500, + 496, 713, 540, 548, 556, 561, 569, 575, 579, 587, + 519, 595, 603, 611, 619, 623, 518, 631, 639, 305, + 246, 179 } ; -static const flex_int16_t yy_def[350] = +static const flex_int16_t yy_def[353] = { 0, - 329, 1, 330, 330, 1, 1, 331, 331, 329, 329, - 329, 329, 329, 332, 333, 329, 329, 334, 329, 329, - 329, 329, 329, 329, 329, 329, 335, 335, 329, 329, - 329, 329, 329, 329, 336, 329, 329, 329, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 329, 329, 329, 329, 329, 329, - 329, 333, 329, 329, 329, 329, 329, 332, 329, 337, - 329, 338, 338, 329, 329, 329, 339, 329, 340, 329, - 334, 341, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 342, 329, 329, 335, 335, 335, 335, 335, + 332, 1, 333, 333, 334, 334, 1, 1, 332, 332, + 332, 332, 332, 335, 336, 332, 332, 337, 332, 332, + 332, 332, 332, 332, 332, 332, 338, 338, 332, 332, + 332, 332, 332, 332, 339, 332, 332, 332, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 336, 332, 332, 332, 335, 332, + 340, 332, 341, 341, 332, 332, 332, 342, 332, 343, + 332, 337, 344, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 345, 332, 332, 338, 338, 338, 338, - 343, 329, 329, 329, 329, 329, 329, 336, 329, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 329, 329, 329, 329, 332, 332, - 337, 344, 329, 329, 329, 339, 329, 345, 340, 346, - 334, 334, 341, 329, 329, 342, 329, 329, 335, 335, - 100, 343, 329, 329, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 347, 329, - 329, 329, 329, 339, 339, 345, 340, 340, 346, 329, + 338, 346, 332, 332, 332, 332, 332, 332, 339, 332, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 332, 332, 332, 332, 332, + 332, 335, 335, 340, 347, 332, 332, 332, 342, 332, + 348, 343, 349, 337, 337, 344, 332, 332, 345, 332, + 332, 338, 338, 101, 346, 332, 332, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 350, 332, 332, 332, 332, 342, 342, 348, 343, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 348, 329, 329, 329, 329, 329, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 349, 329, - 329, 329, 329, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 329, 329, - 329, 329, 329, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 329, 329, 329, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 329, 329, 336, 336, + 343, 349, 332, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 351, 332, 332, + 332, 332, 332, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 352, 332, 332, 332, 332, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 332, 332, 332, 332, 332, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 332, 332, 332, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 332, - 336, 336, 336, 336, 336, 336, 329, 336, 336, 336, - 336, 336, 336, 329, 336, 336, 336, 329, 336, 336, - 329, 336, 336, 329, 336, 329, 336, 336, 0, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329 + 332, 339, 339, 339, 339, 339, 339, 339, 339, 332, + 339, 339, 339, 339, 339, 339, 332, 339, 339, 339, + 332, 339, 339, 332, 339, 339, 332, 339, 332, 339, + 339, 0, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332 } ; -static const flex_int16_t yy_nxt[771] = +static const flex_int16_t yy_nxt[777] = { 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 28, @@ -739,87 +742,88 @@ static const flex_int16_t yy_nxt[771] = 35, 36, 10, 37, 38, 35, 39, 40, 41, 42, 43, 44, 45, 35, 46, 35, 47, 35, 48, 35, 49, 50, 51, 52, 53, 35, 54, 35, 35, 55, - 56, 57, 58, 60, 60, 62, 65, 65, 62, 66, - 66, 63, 61, 61, 63, 69, 71, 77, 69, 83, - 78, 79, 85, 87, 103, 104, 101, 84, 89, 89, - 89, 89, 101, 88, 86, 101, 73, 80, 165, 91, + 56, 57, 58, 60, 60, 63, 63, 70, 64, 64, + 65, 65, 61, 61, 72, 70, 66, 66, 84, 86, + 78, 67, 67, 79, 80, 102, 85, 88, 104, 105, + 92, 87, 107, 108, 74, 71, 93, 89, 234, 83, - 106, 107, 82, 70, 74, 92, 101, 101, 110, 117, - 93, 118, 101, 269, 75, 124, 121, 95, 94, 96, - 97, 97, 96, 90, 95, 111, 96, 96, 96, 96, - 99, 101, 100, 101, 101, 112, 101, 119, 101, 99, - 101, 101, 113, 101, 115, 101, 135, 122, 114, 101, - 120, 101, 101, 116, 123, 138, 130, 125, 69, 127, - 128, 147, 126, 101, 131, 132, 68, 133, 140, 101, - 147, 69, 81, 329, 134, 73, 129, 166, 152, 101, - 101, 249, 136, 74, 191, 101, 70, 173, 101, 148, - 101, 169, 192, 75, 150, 82, 141, 89, 89, 89, + 81, 94, 75, 90, 90, 90, 90, 102, 102, 95, + 102, 96, 76, 97, 98, 98, 97, 96, 125, 97, + 97, 97, 97, 111, 100, 102, 101, 112, 102, 113, + 102, 102, 102, 100, 102, 102, 114, 102, 91, 116, + 102, 120, 115, 102, 118, 102, 119, 122, 117, 123, + 102, 127, 126, 128, 121, 102, 124, 102, 129, 102, + 136, 140, 70, 134, 150, 69, 141, 143, 131, 150, + 135, 133, 93, 70, 130, 102, 132, 94, 82, 102, + 102, 74, 102, 272, 155, 95, 194, 168, 169, 75, + 71, 172, 151, 153, 195, 144, 137, 83, 173, 76, - 89, 170, 153, 157, 157, 157, 157, 95, 172, 96, - 96, 96, 96, 95, 101, 159, 159, 159, 96, 101, - 329, 154, 160, 160, 101, 101, 101, 158, 167, 101, - 101, 101, 101, 174, 168, 171, 101, 101, 329, 101, - 161, 161, 161, 161, 175, 101, 176, 69, 69, 225, - 161, 161, 177, 178, 101, 101, 179, 180, 101, 161, - 161, 161, 161, 161, 161, 101, 101, 185, 181, 101, - 182, 101, 68, 186, 140, 70, 70, 183, 147, 147, - 146, 187, 195, 188, 184, 149, 81, 69, 69, 101, - 101, 198, 152, 157, 157, 157, 157, 329, 204, 160, + 90, 90, 90, 90, 160, 160, 160, 160, 156, 96, + 332, 97, 97, 97, 97, 96, 102, 162, 162, 162, + 97, 102, 102, 102, 157, 102, 102, 102, 161, 102, + 170, 332, 102, 163, 163, 102, 171, 177, 174, 102, + 102, 175, 176, 102, 178, 180, 102, 102, 102, 332, + 252, 164, 164, 164, 164, 179, 102, 102, 70, 185, + 181, 164, 164, 182, 183, 102, 102, 70, 102, 186, + 164, 164, 164, 164, 164, 164, 187, 102, 188, 184, + 190, 102, 150, 69, 189, 143, 71, 149, 150, 198, + 152, 70, 70, 191, 82, 71, 201, 102, 102, 102, - 160, 101, 141, 150, 201, 202, 148, 101, 189, 101, - 196, 82, 82, 101, 101, 199, 153, 158, 95, 101, - 159, 159, 159, 96, 101, 101, 209, 203, 206, 207, - 101, 101, 208, 205, 101, 101, 101, 101, 101, 211, - 101, 101, 212, 101, 213, 101, 101, 215, 101, 214, - 210, 101, 217, 101, 220, 101, 221, 147, 147, 222, - 147, 219, 216, 146, 147, 195, 218, 149, 101, 224, - 101, 101, 101, 198, 223, 101, 101, 232, 101, 101, - 237, 231, 101, 233, 150, 148, 148, 236, 150, 101, - 101, 235, 238, 196, 234, 101, 101, 199, 239, 240, + 155, 160, 160, 160, 160, 332, 207, 163, 163, 228, + 151, 206, 153, 144, 204, 83, 83, 199, 102, 102, + 202, 102, 102, 205, 156, 161, 96, 102, 162, 162, + 162, 97, 208, 102, 102, 211, 102, 210, 102, 102, + 102, 102, 209, 102, 102, 102, 214, 215, 216, 102, + 102, 212, 102, 217, 218, 102, 213, 102, 220, 102, + 102, 102, 150, 223, 150, 224, 219, 225, 149, 150, + 198, 221, 222, 150, 152, 227, 102, 102, 102, 102, + 201, 226, 102, 235, 102, 102, 102, 102, 240, 236, + 151, 245, 151, 153, 239, 238, 241, 153, 199, 102, - 101, 241, 101, 101, 245, 101, 242, 244, 101, 101, - 248, 243, 101, 101, 246, 101, 101, 101, 101, 258, - 101, 101, 260, 101, 101, 261, 247, 254, 256, 255, - 257, 263, 264, 101, 262, 101, 266, 101, 101, 101, - 259, 101, 265, 101, 101, 276, 101, 101, 101, 268, - 275, 101, 267, 101, 278, 274, 279, 283, 101, 101, - 280, 101, 277, 282, 101, 281, 101, 101, 101, 290, - 289, 288, 284, 292, 291, 293, 294, 101, 101, 101, - 101, 101, 101, 101, 101, 302, 142, 101, 300, 303, - 101, 101, 295, 296, 299, 301, 305, 101, 304, 101, + 237, 102, 102, 102, 202, 243, 244, 247, 242, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 248, 249, + 251, 102, 246, 261, 102, 102, 102, 102, 102, 257, + 259, 250, 265, 263, 258, 260, 264, 266, 267, 102, + 262, 102, 102, 270, 102, 102, 268, 279, 102, 102, + 102, 102, 102, 269, 271, 102, 278, 102, 282, 286, + 281, 277, 102, 102, 102, 102, 102, 283, 102, 280, + 102, 284, 295, 285, 293, 291, 287, 102, 294, 102, + 102, 102, 102, 292, 299, 296, 102, 297, 102, 102, + 303, 102, 305, 102, 102, 298, 306, 302, 304, 307, - 101, 309, 306, 101, 101, 308, 311, 310, 313, 101, - 315, 101, 101, 316, 101, 101, 101, 101, 101, 312, - 320, 101, 101, 322, 325, 326, 101, 319, 323, 328, - 324, 321, 317, 101, 327, 59, 59, 59, 59, 59, - 59, 59, 59, 64, 64, 64, 64, 64, 64, 64, - 64, 68, 68, 68, 68, 68, 68, 68, 68, 72, - 72, 318, 101, 72, 81, 81, 81, 81, 81, 81, - 81, 81, 98, 101, 98, 98, 98, 98, 108, 108, - 108, 108, 139, 139, 139, 139, 139, 139, 139, 139, - 146, 146, 146, 146, 146, 146, 146, 146, 149, 149, + 102, 102, 308, 102, 312, 102, 102, 102, 309, 102, + 314, 316, 102, 318, 102, 311, 319, 313, 102, 102, + 102, 102, 192, 145, 315, 323, 325, 102, 102, 322, + 320, 326, 102, 329, 102, 328, 327, 330, 324, 331, + 59, 59, 59, 59, 59, 59, 59, 59, 62, 62, + 62, 62, 62, 62, 62, 62, 69, 69, 69, 69, + 69, 69, 69, 69, 73, 73, 102, 321, 73, 82, + 82, 82, 82, 82, 82, 82, 82, 99, 102, 99, + 99, 99, 99, 109, 109, 109, 109, 142, 142, 142, + 142, 142, 142, 142, 142, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 151, 151, 151, 151, - 151, 151, 151, 151, 156, 101, 156, 156, 156, 156, - 156, 156, 162, 162, 314, 162, 194, 194, 194, 194, - 194, 194, 194, 194, 197, 197, 197, 197, 197, 197, - 197, 197, 101, 101, 307, 101, 101, 298, 297, 101, - 101, 287, 286, 285, 101, 101, 101, 101, 273, 272, - 271, 270, 101, 101, 101, 101, 253, 252, 251, 250, - 101, 101, 101, 101, 101, 101, 101, 230, 229, 228, - 227, 226, 101, 200, 193, 190, 101, 101, 101, 101, - 164, 163, 155, 145, 144, 143, 138, 84, 137, 109, + 149, 149, 149, 152, 152, 152, 152, 152, 152, 152, + 152, 154, 154, 154, 154, 154, 154, 154, 154, 159, + 102, 159, 159, 159, 159, 159, 159, 165, 165, 102, + 165, 197, 197, 197, 197, 197, 197, 197, 197, 200, + 200, 200, 200, 200, 200, 200, 200, 317, 102, 102, + 310, 102, 102, 301, 300, 102, 102, 290, 289, 288, + 102, 102, 102, 102, 276, 275, 274, 273, 102, 102, + 102, 102, 256, 255, 254, 253, 102, 102, 102, 102, + 102, 102, 102, 233, 232, 231, 230, 229, 102, 203, + 196, 193, 102, 102, 102, 102, 167, 166, 158, 148, - 101, 105, 102, 76, 67, 329, 9, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329 + 147, 146, 85, 139, 138, 110, 102, 106, 103, 77, + 68, 332, 9, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332 } ; -static const flex_int16_t yy_chk[771] = +static const flex_int16_t yy_chk[777] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -827,84 +831,85 @@ static const flex_int16_t yy_chk[771] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 7, 8, 6, 7, - 8, 5, 3, 4, 6, 14, 15, 17, 18, 21, - 17, 17, 22, 24, 31, 31, 110, 21, 25, 25, - 25, 25, 39, 24, 22, 43, 15, 17, 110, 26, + 1, 1, 1, 3, 4, 5, 6, 14, 5, 6, + 7, 8, 3, 4, 15, 18, 7, 8, 21, 22, + 17, 7, 8, 17, 17, 205, 21, 24, 31, 31, + 26, 22, 33, 33, 15, 14, 26, 24, 205, 18, - 33, 33, 18, 14, 15, 26, 40, 47, 39, 43, - 26, 43, 45, 349, 15, 47, 45, 27, 26, 27, - 27, 27, 27, 25, 28, 40, 28, 28, 28, 28, - 27, 41, 27, 44, 27, 41, 42, 44, 46, 27, - 48, 28, 41, 49, 42, 52, 56, 46, 41, 53, - 44, 50, 51, 42, 46, 62, 52, 48, 68, 50, - 51, 77, 49, 54, 52, 53, 70, 54, 70, 111, - 79, 81, 82, 98, 54, 62, 51, 111, 82, 113, - 118, 348, 56, 62, 144, 114, 68, 118, 117, 77, - 98, 113, 144, 62, 79, 81, 70, 89, 89, 89, + 17, 26, 15, 25, 25, 25, 25, 39, 40, 26, + 47, 27, 15, 27, 27, 27, 27, 28, 47, 28, + 28, 28, 28, 39, 27, 41, 27, 40, 27, 41, + 43, 42, 49, 27, 28, 48, 41, 44, 25, 42, + 46, 44, 41, 45, 43, 50, 43, 45, 42, 46, + 51, 49, 48, 50, 44, 53, 46, 52, 51, 54, + 56, 65, 69, 54, 78, 71, 67, 71, 52, 80, + 54, 53, 67, 82, 51, 111, 52, 67, 83, 114, + 112, 65, 115, 352, 83, 67, 147, 111, 112, 65, + 69, 114, 78, 80, 147, 71, 56, 82, 115, 65, - 89, 114, 82, 95, 95, 95, 95, 96, 117, 96, - 96, 96, 96, 97, 112, 97, 97, 97, 97, 119, - 99, 89, 99, 99, 96, 120, 115, 95, 112, 124, - 97, 121, 125, 119, 112, 115, 127, 99, 100, 126, - 100, 100, 100, 100, 120, 131, 121, 139, 140, 347, - 100, 100, 124, 125, 128, 100, 126, 127, 129, 100, - 100, 100, 100, 100, 100, 130, 132, 131, 128, 133, - 129, 134, 141, 132, 141, 139, 140, 130, 146, 149, - 148, 133, 148, 134, 130, 150, 153, 151, 152, 165, - 168, 150, 153, 157, 157, 157, 157, 160, 168, 160, + 90, 90, 90, 90, 96, 96, 96, 96, 83, 97, + 99, 97, 97, 97, 97, 98, 113, 98, 98, 98, + 98, 118, 125, 120, 90, 121, 97, 99, 96, 116, + 113, 100, 98, 100, 100, 119, 113, 120, 116, 126, + 122, 118, 119, 128, 121, 125, 127, 130, 100, 101, + 351, 101, 101, 101, 101, 122, 132, 131, 142, 130, + 126, 101, 101, 127, 128, 129, 101, 143, 134, 131, + 101, 101, 101, 101, 101, 101, 131, 133, 132, 129, + 134, 135, 149, 144, 133, 144, 142, 151, 152, 151, + 153, 154, 155, 135, 156, 143, 153, 170, 171, 168, - 160, 166, 141, 149, 165, 166, 146, 170, 344, 173, - 148, 151, 152, 167, 160, 150, 153, 157, 159, 169, - 159, 159, 159, 159, 172, 171, 173, 167, 170, 171, - 174, 175, 172, 169, 176, 159, 177, 178, 179, 175, - 180, 183, 176, 181, 177, 182, 184, 179, 185, 178, - 174, 186, 181, 187, 184, 188, 185, 194, 195, 186, - 197, 183, 180, 196, 198, 196, 182, 199, 202, 188, - 205, 206, 207, 199, 187, 209, 211, 205, 213, 210, - 211, 202, 216, 206, 197, 194, 195, 210, 198, 214, - 219, 209, 213, 196, 207, 222, 215, 199, 214, 215, + 156, 160, 160, 160, 160, 163, 171, 163, 163, 350, + 149, 170, 152, 144, 168, 154, 155, 151, 172, 169, + 153, 173, 163, 169, 156, 160, 162, 175, 162, 162, + 162, 162, 172, 174, 176, 175, 177, 174, 178, 179, + 180, 181, 173, 162, 183, 182, 178, 179, 180, 184, + 185, 176, 186, 181, 182, 187, 177, 188, 184, 189, + 190, 191, 197, 187, 198, 188, 183, 189, 199, 200, + 199, 185, 186, 201, 202, 191, 208, 209, 210, 212, + 202, 190, 216, 208, 214, 221, 213, 219, 214, 209, + 197, 221, 198, 200, 213, 212, 216, 201, 199, 217, - 218, 216, 224, 220, 222, 223, 218, 220, 232, 231, - 224, 219, 233, 237, 223, 239, 234, 240, 241, 237, - 242, 243, 240, 256, 245, 240, 223, 231, 233, 232, - 234, 242, 243, 246, 241, 244, 245, 247, 254, 255, - 239, 257, 244, 258, 261, 256, 264, 266, 260, 247, - 255, 275, 246, 267, 258, 254, 260, 267, 268, 274, - 261, 276, 257, 266, 279, 264, 280, 281, 282, 276, - 275, 274, 268, 280, 279, 281, 282, 283, 288, 284, - 289, 293, 294, 291, 299, 293, 338, 296, 289, 294, - 295, 301, 283, 284, 288, 291, 296, 300, 295, 302, + 210, 222, 218, 223, 202, 218, 219, 223, 217, 225, + 226, 234, 227, 235, 236, 242, 244, 240, 225, 226, + 227, 237, 222, 240, 249, 259, 245, 246, 243, 234, + 236, 226, 244, 243, 235, 237, 243, 245, 246, 247, + 242, 248, 250, 249, 257, 258, 247, 259, 260, 261, + 263, 264, 267, 248, 250, 270, 258, 269, 263, 270, + 261, 257, 271, 277, 278, 283, 279, 264, 282, 260, + 287, 267, 283, 269, 279, 277, 271, 284, 282, 285, + 286, 291, 292, 278, 287, 284, 294, 285, 296, 297, + 292, 298, 296, 299, 302, 286, 297, 291, 294, 298, - 305, 300, 296, 309, 306, 299, 302, 301, 306, 312, - 309, 313, 316, 312, 317, 319, 322, 320, 325, 305, - 317, 328, 327, 319, 322, 324, 323, 316, 320, 327, - 321, 318, 313, 315, 325, 330, 330, 330, 330, 330, - 330, 330, 330, 331, 331, 331, 331, 331, 331, 331, - 331, 332, 332, 332, 332, 332, 332, 332, 332, 333, - 333, 314, 311, 333, 334, 334, 334, 334, 334, 334, - 334, 334, 335, 310, 335, 335, 335, 335, 336, 336, - 336, 336, 337, 337, 337, 337, 337, 337, 337, 337, - 339, 339, 339, 339, 339, 339, 339, 339, 340, 340, + 303, 304, 299, 305, 303, 308, 312, 309, 299, 316, + 305, 309, 315, 312, 319, 302, 315, 304, 322, 320, + 323, 328, 347, 341, 308, 320, 322, 325, 331, 319, + 316, 323, 330, 327, 326, 325, 324, 328, 321, 330, + 333, 333, 333, 333, 333, 333, 333, 333, 334, 334, + 334, 334, 334, 334, 334, 334, 335, 335, 335, 335, + 335, 335, 335, 335, 336, 336, 318, 317, 336, 337, + 337, 337, 337, 337, 337, 337, 337, 338, 314, 338, + 338, 338, 338, 339, 339, 339, 339, 340, 340, 340, + 340, 340, 340, 340, 340, 342, 342, 342, 342, 342, - 340, 340, 340, 340, 340, 340, 341, 341, 341, 341, - 341, 341, 341, 341, 342, 308, 342, 342, 342, 342, - 342, 342, 343, 343, 307, 343, 345, 345, 345, 345, - 345, 345, 345, 345, 346, 346, 346, 346, 346, 346, - 346, 346, 304, 303, 298, 292, 290, 287, 285, 278, - 277, 273, 271, 270, 265, 263, 262, 259, 253, 252, - 251, 250, 248, 238, 236, 235, 229, 228, 227, 226, - 221, 217, 212, 208, 204, 203, 201, 200, 193, 192, - 191, 190, 162, 155, 145, 143, 123, 122, 116, 108, - 107, 103, 90, 75, 74, 73, 66, 63, 61, 38, + 342, 342, 342, 343, 343, 343, 343, 343, 343, 343, + 343, 344, 344, 344, 344, 344, 344, 344, 344, 345, + 313, 345, 345, 345, 345, 345, 345, 346, 346, 311, + 346, 348, 348, 348, 348, 348, 348, 348, 348, 349, + 349, 349, 349, 349, 349, 349, 349, 310, 307, 306, + 301, 295, 293, 290, 288, 281, 280, 276, 274, 273, + 268, 266, 265, 262, 256, 255, 254, 253, 251, 241, + 239, 238, 232, 231, 230, 229, 224, 220, 215, 211, + 207, 206, 204, 203, 196, 195, 194, 193, 165, 158, + 148, 146, 124, 123, 117, 109, 108, 104, 91, 76, - 35, 32, 29, 16, 13, 9, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329 + 75, 74, 66, 64, 61, 38, 35, 32, 29, 16, + 13, 9, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332 } ; /* The intent behind this definition is that it'll catch @@ -925,14 +930,14 @@ static const flex_int16_t yy_chk[771] = #line 25 "lexer.lpp" #define YY_USER_ACTION ctx->loc.columns(yyleng); -#line 928 "lexer.cpp" +#line 933 "lexer.cpp" -#line 930 "lexer.cpp" +#line 935 "lexer.cpp" #define INITIAL 0 -#define COMMENT_BLOCK_STATE 1 -#define DEVBLOCK_ON_STATE 2 -#define DEVBLOCK_OFF_STATE 3 +#define COMMENT_STATE 1 +#define DEV_OFF_STATE 2 +#define DEV_ON_STATE 3 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way @@ -1196,7 +1201,7 @@ YY_DECL ctx->loc.step(); -#line 1199 "lexer.cpp" +#line 1204 "lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1223,13 +1228,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 >= 330 ) + if ( yy_current_state >= 333 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 329 ); + while ( yy_current_state != 332 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -1257,557 +1262,576 @@ YY_RULE_SETUP case 2: /* rule 2 can match eol */ YY_RULE_SETUP -#line 52 "lexer.lpp" +#line 51 "lexer.lpp" { ctx->loc.lines(yyleng); ctx->loc.step(); } YY_BREAK case 3: YY_RULE_SETUP -#line 54 "lexer.lpp" +#line 53 "lexer.lpp" YY_BREAK case 4: YY_RULE_SETUP -#line 56 "lexer.lpp" -{ BEGIN(COMMENT_BLOCK_STATE); } +#line 55 "lexer.lpp" +{ BEGIN(COMMENT_STATE); } YY_BREAK case 5: YY_RULE_SETUP -#line 57 "lexer.lpp" +#line 56 "lexer.lpp" YY_BREAK case 6: /* rule 6 can match eol */ YY_RULE_SETUP -#line 58 "lexer.lpp" +#line 57 "lexer.lpp" { ctx->loc.lines(yyleng); ctx->loc.step(); } YY_BREAK case 7: YY_RULE_SETUP -#line 59 "lexer.lpp" +#line 58 "lexer.lpp" { BEGIN(INITIAL); } YY_BREAK +case YY_STATE_EOF(COMMENT_STATE): +#line 59 "lexer.lpp" +{ throw h2::parser::syntax_error(ctx->loc, "unmatched multiline comment start ('/*')"); } + YY_BREAK case 8: YY_RULE_SETUP -#line 61 "lexer.lpp" -{ BEGIN(ctx->mode == xsk::gsc::build::dev ? DEVBLOCK_ON_STATE : DEVBLOCK_OFF_STATE); } +#line 60 "lexer.lpp" +{ throw h2::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } YY_BREAK case 9: YY_RULE_SETUP #line 62 "lexer.lpp" - +{ throw h2::parser::syntax_error(ctx->loc, "cannot recurse devblock ('/#')"); } YY_BREAK case 10: -/* rule 10 can match eol */ YY_RULE_SETUP #line 63 "lexer.lpp" -{ ctx->loc.lines(yyleng); ctx->loc.step(); } +{ BEGIN(INITIAL); return h2::parser::make_DEVEND(ctx->loc); } + YY_BREAK +case YY_STATE_EOF(DEV_ON_STATE): +#line 64 "lexer.lpp" +{ throw h2::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } YY_BREAK case 11: YY_RULE_SETUP -#line 64 "lexer.lpp" -{ BEGIN(INITIAL); } +#line 66 "lexer.lpp" +{ BEGIN(ctx->mode == xsk::gsc::build::dev ? DEV_ON_STATE : DEV_OFF_STATE); if(ctx->mode == xsk::gsc::build::dev) return h2::parser::make_DEVBEGIN(ctx->loc); } YY_BREAK case 12: YY_RULE_SETUP -#line 66 "lexer.lpp" -{ throw h2::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } +#line 67 "lexer.lpp" + YY_BREAK case 13: +/* rule 13 can match eol */ YY_RULE_SETUP -#line 67 "lexer.lpp" -{ throw h2::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } +#line 68 "lexer.lpp" +{ ctx->loc.lines(yyleng); ctx->loc.step(); } YY_BREAK case 14: YY_RULE_SETUP #line 69 "lexer.lpp" -{ return h2::parser::make_INLINE(ctx->loc); } +{ BEGIN(INITIAL); } + YY_BREAK +case YY_STATE_EOF(DEV_OFF_STATE): +#line 70 "lexer.lpp" +{ throw h2::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } YY_BREAK case 15: YY_RULE_SETUP -#line 70 "lexer.lpp" -{ return h2::parser::make_INCLUDE(ctx->loc); } +#line 71 "lexer.lpp" +{ throw h2::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } YY_BREAK case 16: YY_RULE_SETUP -#line 71 "lexer.lpp" -{ return h2::parser::make_USINGTREE(ctx->loc); } +#line 73 "lexer.lpp" +{ return h2::parser::make_INLINE(ctx->loc); } YY_BREAK case 17: YY_RULE_SETUP -#line 72 "lexer.lpp" -{ return h2::parser::make_ANIMTREE(ctx->loc); } +#line 74 "lexer.lpp" +{ return h2::parser::make_INCLUDE(ctx->loc); } YY_BREAK case 18: YY_RULE_SETUP -#line 73 "lexer.lpp" -{ return h2::parser::make_ENDON(ctx->loc); } +#line 75 "lexer.lpp" +{ return h2::parser::make_USINGTREE(ctx->loc); } YY_BREAK case 19: YY_RULE_SETUP -#line 74 "lexer.lpp" -{ return h2::parser::make_NOTIFY(ctx->loc); } +#line 76 "lexer.lpp" +{ return h2::parser::make_ANIMTREE(ctx->loc); } YY_BREAK case 20: YY_RULE_SETUP -#line 75 "lexer.lpp" -{ return h2::parser::make_WAIT(ctx->loc); } +#line 77 "lexer.lpp" +{ return h2::parser::make_ENDON(ctx->loc); } YY_BREAK case 21: YY_RULE_SETUP -#line 76 "lexer.lpp" -{ return h2::parser::make_WAITTILL(ctx->loc); } +#line 78 "lexer.lpp" +{ return h2::parser::make_NOTIFY(ctx->loc); } YY_BREAK case 22: YY_RULE_SETUP -#line 77 "lexer.lpp" -{ return h2::parser::make_WAITTILLMATCH(ctx->loc); } +#line 79 "lexer.lpp" +{ return h2::parser::make_WAIT(ctx->loc); } YY_BREAK case 23: YY_RULE_SETUP -#line 78 "lexer.lpp" -{ return h2::parser::make_WAITTILLFRAMEEND(ctx->loc); } +#line 80 "lexer.lpp" +{ return h2::parser::make_WAITTILL(ctx->loc); } YY_BREAK case 24: YY_RULE_SETUP -#line 79 "lexer.lpp" -{ return h2::parser::make_WAITFRAME(ctx->loc); } +#line 81 "lexer.lpp" +{ return h2::parser::make_WAITTILLMATCH(ctx->loc); } YY_BREAK case 25: YY_RULE_SETUP -#line 80 "lexer.lpp" -{ return h2::parser::make_IF(ctx->loc); } +#line 82 "lexer.lpp" +{ return h2::parser::make_WAITTILLFRAMEEND(ctx->loc); } YY_BREAK case 26: YY_RULE_SETUP -#line 81 "lexer.lpp" -{ return h2::parser::make_ELSE(ctx->loc); } +#line 83 "lexer.lpp" +{ return h2::parser::make_WAITFRAME(ctx->loc); } YY_BREAK case 27: YY_RULE_SETUP -#line 82 "lexer.lpp" -{ return h2::parser::make_DO(ctx->loc); } +#line 84 "lexer.lpp" +{ return h2::parser::make_IF(ctx->loc); } YY_BREAK case 28: YY_RULE_SETUP -#line 83 "lexer.lpp" -{ return h2::parser::make_WHILE(ctx->loc); } +#line 85 "lexer.lpp" +{ return h2::parser::make_ELSE(ctx->loc); } YY_BREAK case 29: YY_RULE_SETUP -#line 84 "lexer.lpp" -{ return h2::parser::make_FOR(ctx->loc); } +#line 86 "lexer.lpp" +{ return h2::parser::make_DO(ctx->loc); } YY_BREAK case 30: YY_RULE_SETUP -#line 85 "lexer.lpp" -{ return h2::parser::make_FOREACH(ctx->loc); } +#line 87 "lexer.lpp" +{ return h2::parser::make_WHILE(ctx->loc); } YY_BREAK case 31: YY_RULE_SETUP -#line 86 "lexer.lpp" -{ return h2::parser::make_IN(ctx->loc); } +#line 88 "lexer.lpp" +{ return h2::parser::make_FOR(ctx->loc); } YY_BREAK case 32: YY_RULE_SETUP -#line 87 "lexer.lpp" -{ return h2::parser::make_SWITCH(ctx->loc); } +#line 89 "lexer.lpp" +{ return h2::parser::make_FOREACH(ctx->loc); } YY_BREAK case 33: YY_RULE_SETUP -#line 88 "lexer.lpp" -{ return h2::parser::make_CASE(ctx->loc); } +#line 90 "lexer.lpp" +{ return h2::parser::make_IN(ctx->loc); } YY_BREAK case 34: YY_RULE_SETUP -#line 89 "lexer.lpp" -{ return h2::parser::make_DEFAULT(ctx->loc); } +#line 91 "lexer.lpp" +{ return h2::parser::make_SWITCH(ctx->loc); } YY_BREAK case 35: YY_RULE_SETUP -#line 90 "lexer.lpp" -{ return h2::parser::make_BREAK(ctx->loc); } +#line 92 "lexer.lpp" +{ return h2::parser::make_CASE(ctx->loc); } YY_BREAK case 36: YY_RULE_SETUP -#line 91 "lexer.lpp" -{ return h2::parser::make_CONTINUE(ctx->loc); } +#line 93 "lexer.lpp" +{ return h2::parser::make_DEFAULT(ctx->loc); } YY_BREAK case 37: YY_RULE_SETUP -#line 92 "lexer.lpp" -{ return h2::parser::make_RETURN(ctx->loc); } +#line 94 "lexer.lpp" +{ return h2::parser::make_BREAK(ctx->loc); } YY_BREAK case 38: YY_RULE_SETUP -#line 93 "lexer.lpp" -{ return h2::parser::make_BREAKPOINT(ctx->loc); } +#line 95 "lexer.lpp" +{ return h2::parser::make_CONTINUE(ctx->loc); } YY_BREAK case 39: YY_RULE_SETUP -#line 94 "lexer.lpp" -{ return h2::parser::make_PROFBEGIN(ctx->loc); } +#line 96 "lexer.lpp" +{ return h2::parser::make_RETURN(ctx->loc); } YY_BREAK case 40: YY_RULE_SETUP -#line 95 "lexer.lpp" -{ return h2::parser::make_PROFEND(ctx->loc); } +#line 97 "lexer.lpp" +{ return h2::parser::make_BREAKPOINT(ctx->loc); } YY_BREAK case 41: YY_RULE_SETUP -#line 96 "lexer.lpp" -{ return h2::parser::make_THREAD(ctx->loc); } +#line 98 "lexer.lpp" +{ return h2::parser::make_PROFBEGIN(ctx->loc); } YY_BREAK case 42: YY_RULE_SETUP -#line 97 "lexer.lpp" -{ return h2::parser::make_CHILDTHREAD(ctx->loc); } +#line 99 "lexer.lpp" +{ return h2::parser::make_PROFEND(ctx->loc); } YY_BREAK case 43: YY_RULE_SETUP -#line 98 "lexer.lpp" -{ return h2::parser::make_THISTHREAD(ctx->loc); } +#line 100 "lexer.lpp" +{ return h2::parser::make_THREAD(ctx->loc); } YY_BREAK case 44: YY_RULE_SETUP -#line 99 "lexer.lpp" -{ return h2::parser::make_CALL(ctx->loc); } +#line 101 "lexer.lpp" +{ return h2::parser::make_CHILDTHREAD(ctx->loc); } YY_BREAK case 45: YY_RULE_SETUP -#line 100 "lexer.lpp" -{ return h2::parser::make_TRUE(ctx->loc); } +#line 102 "lexer.lpp" +{ return h2::parser::make_THISTHREAD(ctx->loc); } YY_BREAK case 46: YY_RULE_SETUP -#line 101 "lexer.lpp" -{ return h2::parser::make_FALSE(ctx->loc); } +#line 103 "lexer.lpp" +{ return h2::parser::make_CALL(ctx->loc); } YY_BREAK case 47: YY_RULE_SETUP -#line 102 "lexer.lpp" -{ return h2::parser::make_UNDEFINED(ctx->loc); } +#line 104 "lexer.lpp" +{ return h2::parser::make_TRUE(ctx->loc); } YY_BREAK case 48: YY_RULE_SETUP -#line 103 "lexer.lpp" -{ return h2::parser::make_SIZE(ctx->loc); } +#line 105 "lexer.lpp" +{ return h2::parser::make_FALSE(ctx->loc); } YY_BREAK case 49: YY_RULE_SETUP -#line 104 "lexer.lpp" -{ return h2::parser::make_GAME(ctx->loc); } +#line 106 "lexer.lpp" +{ return h2::parser::make_UNDEFINED(ctx->loc); } YY_BREAK case 50: YY_RULE_SETUP -#line 105 "lexer.lpp" -{ return h2::parser::make_SELF(ctx->loc); } +#line 107 "lexer.lpp" +{ return h2::parser::make_SIZE(ctx->loc); } YY_BREAK case 51: YY_RULE_SETUP -#line 106 "lexer.lpp" -{ return h2::parser::make_ANIM(ctx->loc); } +#line 108 "lexer.lpp" +{ return h2::parser::make_GAME(ctx->loc); } YY_BREAK case 52: YY_RULE_SETUP -#line 107 "lexer.lpp" -{ return h2::parser::make_LEVEL(ctx->loc); } +#line 109 "lexer.lpp" +{ return h2::parser::make_SELF(ctx->loc); } YY_BREAK case 53: YY_RULE_SETUP -#line 108 "lexer.lpp" -{ return h2::parser::make_LPAREN(ctx->loc); } +#line 110 "lexer.lpp" +{ return h2::parser::make_ANIM(ctx->loc); } YY_BREAK case 54: YY_RULE_SETUP -#line 109 "lexer.lpp" -{ return h2::parser::make_RPAREN(ctx->loc); } +#line 111 "lexer.lpp" +{ return h2::parser::make_LEVEL(ctx->loc); } YY_BREAK case 55: YY_RULE_SETUP -#line 110 "lexer.lpp" -{ return h2::parser::make_LBRACE(ctx->loc); } +#line 112 "lexer.lpp" +{ return h2::parser::make_LPAREN(ctx->loc); } YY_BREAK case 56: YY_RULE_SETUP -#line 111 "lexer.lpp" -{ return h2::parser::make_RBRACE(ctx->loc); } +#line 113 "lexer.lpp" +{ return h2::parser::make_RPAREN(ctx->loc); } YY_BREAK case 57: YY_RULE_SETUP -#line 112 "lexer.lpp" -{ return h2::parser::make_LBRACKET(ctx->loc); } +#line 114 "lexer.lpp" +{ return h2::parser::make_LBRACE(ctx->loc); } YY_BREAK case 58: YY_RULE_SETUP -#line 113 "lexer.lpp" -{ return h2::parser::make_RBRACKET(ctx->loc); } +#line 115 "lexer.lpp" +{ return h2::parser::make_RBRACE(ctx->loc); } YY_BREAK case 59: YY_RULE_SETUP -#line 114 "lexer.lpp" -{ return h2::parser::make_COMMA(ctx->loc); } +#line 116 "lexer.lpp" +{ return h2::parser::make_LBRACKET(ctx->loc); } YY_BREAK case 60: YY_RULE_SETUP -#line 115 "lexer.lpp" -{ return h2::parser::make_DOT(ctx->loc); } +#line 117 "lexer.lpp" +{ return h2::parser::make_RBRACKET(ctx->loc); } YY_BREAK case 61: YY_RULE_SETUP -#line 116 "lexer.lpp" -{ return h2::parser::make_DOUBLECOLON(ctx->loc); } +#line 118 "lexer.lpp" +{ return h2::parser::make_COMMA(ctx->loc); } YY_BREAK case 62: YY_RULE_SETUP -#line 117 "lexer.lpp" -{ return h2::parser::make_COLON(ctx->loc); } +#line 119 "lexer.lpp" +{ return h2::parser::make_DOT(ctx->loc); } YY_BREAK case 63: YY_RULE_SETUP -#line 118 "lexer.lpp" -{ return h2::parser::make_SEMICOLON(ctx->loc); } +#line 120 "lexer.lpp" +{ return h2::parser::make_DOUBLECOLON(ctx->loc); } YY_BREAK case 64: YY_RULE_SETUP -#line 119 "lexer.lpp" -{ return h2::parser::make_QMARK(ctx->loc); } +#line 121 "lexer.lpp" +{ return h2::parser::make_COLON(ctx->loc); } YY_BREAK case 65: YY_RULE_SETUP -#line 120 "lexer.lpp" -{ return h2::parser::make_INCREMENT(ctx->loc); } +#line 122 "lexer.lpp" +{ return h2::parser::make_SEMICOLON(ctx->loc); } YY_BREAK case 66: YY_RULE_SETUP -#line 121 "lexer.lpp" -{ return h2::parser::make_DECREMENT(ctx->loc); } +#line 123 "lexer.lpp" +{ return h2::parser::make_QMARK(ctx->loc); } YY_BREAK case 67: YY_RULE_SETUP -#line 122 "lexer.lpp" -{ return h2::parser::make_ASSIGN_LSHIFT(ctx->loc); } +#line 124 "lexer.lpp" +{ return h2::parser::make_INCREMENT(ctx->loc); } YY_BREAK case 68: YY_RULE_SETUP -#line 123 "lexer.lpp" -{ return h2::parser::make_ASSIGN_RSHIFT(ctx->loc); } +#line 125 "lexer.lpp" +{ return h2::parser::make_DECREMENT(ctx->loc); } YY_BREAK case 69: YY_RULE_SETUP -#line 124 "lexer.lpp" -{ return h2::parser::make_LSHIFT(ctx->loc); } +#line 126 "lexer.lpp" +{ return h2::parser::make_ASSIGN_LSHIFT(ctx->loc); } YY_BREAK case 70: YY_RULE_SETUP -#line 125 "lexer.lpp" -{ return h2::parser::make_RSHIFT(ctx->loc); } +#line 127 "lexer.lpp" +{ return h2::parser::make_ASSIGN_RSHIFT(ctx->loc); } YY_BREAK case 71: YY_RULE_SETUP -#line 126 "lexer.lpp" -{ return h2::parser::make_OR(ctx->loc); } +#line 128 "lexer.lpp" +{ return h2::parser::make_LSHIFT(ctx->loc); } YY_BREAK case 72: YY_RULE_SETUP -#line 127 "lexer.lpp" -{ return h2::parser::make_AND(ctx->loc); } +#line 129 "lexer.lpp" +{ return h2::parser::make_RSHIFT(ctx->loc); } YY_BREAK case 73: YY_RULE_SETUP -#line 128 "lexer.lpp" -{ return h2::parser::make_EQUALITY(ctx->loc); } +#line 130 "lexer.lpp" +{ return h2::parser::make_OR(ctx->loc); } YY_BREAK case 74: YY_RULE_SETUP -#line 129 "lexer.lpp" -{ return h2::parser::make_INEQUALITY(ctx->loc); } +#line 131 "lexer.lpp" +{ return h2::parser::make_AND(ctx->loc); } YY_BREAK case 75: YY_RULE_SETUP -#line 130 "lexer.lpp" -{ return h2::parser::make_LESS_EQUAL(ctx->loc); } +#line 132 "lexer.lpp" +{ return h2::parser::make_EQUALITY(ctx->loc); } YY_BREAK case 76: YY_RULE_SETUP -#line 131 "lexer.lpp" -{ return h2::parser::make_GREATER_EQUAL(ctx->loc); } +#line 133 "lexer.lpp" +{ return h2::parser::make_INEQUALITY(ctx->loc); } YY_BREAK case 77: YY_RULE_SETUP -#line 132 "lexer.lpp" -{ return h2::parser::make_LESS(ctx->loc); } +#line 134 "lexer.lpp" +{ return h2::parser::make_LESS_EQUAL(ctx->loc); } YY_BREAK case 78: YY_RULE_SETUP -#line 133 "lexer.lpp" -{ return h2::parser::make_GREATER(ctx->loc); } +#line 135 "lexer.lpp" +{ return h2::parser::make_GREATER_EQUAL(ctx->loc); } YY_BREAK case 79: YY_RULE_SETUP -#line 134 "lexer.lpp" -{ return h2::parser::make_ASSIGN_ADD(ctx->loc); } +#line 136 "lexer.lpp" +{ return h2::parser::make_LESS(ctx->loc); } YY_BREAK case 80: YY_RULE_SETUP -#line 135 "lexer.lpp" -{ return h2::parser::make_ASSIGN_SUB(ctx->loc); } +#line 137 "lexer.lpp" +{ return h2::parser::make_GREATER(ctx->loc); } YY_BREAK case 81: YY_RULE_SETUP -#line 136 "lexer.lpp" -{ return h2::parser::make_ASSIGN_MUL(ctx->loc); } +#line 138 "lexer.lpp" +{ return h2::parser::make_ASSIGN_ADD(ctx->loc); } YY_BREAK case 82: YY_RULE_SETUP -#line 137 "lexer.lpp" -{ return h2::parser::make_ASSIGN_DIV(ctx->loc); } +#line 139 "lexer.lpp" +{ return h2::parser::make_ASSIGN_SUB(ctx->loc); } YY_BREAK case 83: YY_RULE_SETUP -#line 138 "lexer.lpp" -{ return h2::parser::make_ASSIGN_MOD(ctx->loc); } +#line 140 "lexer.lpp" +{ return h2::parser::make_ASSIGN_MUL(ctx->loc); } YY_BREAK case 84: YY_RULE_SETUP -#line 139 "lexer.lpp" -{ return h2::parser::make_ASSIGN_BW_OR(ctx->loc); } +#line 141 "lexer.lpp" +{ return h2::parser::make_ASSIGN_DIV(ctx->loc); } YY_BREAK case 85: YY_RULE_SETUP -#line 140 "lexer.lpp" -{ return h2::parser::make_ASSIGN_BW_AND(ctx->loc); } +#line 142 "lexer.lpp" +{ return h2::parser::make_ASSIGN_MOD(ctx->loc); } YY_BREAK case 86: YY_RULE_SETUP -#line 141 "lexer.lpp" -{ return h2::parser::make_ASSIGN_BW_EXOR(ctx->loc); } +#line 143 "lexer.lpp" +{ return h2::parser::make_ASSIGN_BW_OR(ctx->loc); } YY_BREAK case 87: YY_RULE_SETUP -#line 142 "lexer.lpp" -{ return h2::parser::make_ASSIGN(ctx->loc); } +#line 144 "lexer.lpp" +{ return h2::parser::make_ASSIGN_BW_AND(ctx->loc); } YY_BREAK case 88: YY_RULE_SETUP -#line 143 "lexer.lpp" -{ return h2::parser::make_ADD(ctx->loc); } +#line 145 "lexer.lpp" +{ return h2::parser::make_ASSIGN_BW_EXOR(ctx->loc); } YY_BREAK case 89: YY_RULE_SETUP -#line 144 "lexer.lpp" -{ return h2::parser::make_SUB(ctx->loc); } +#line 146 "lexer.lpp" +{ return h2::parser::make_ASSIGN(ctx->loc); } YY_BREAK case 90: YY_RULE_SETUP -#line 145 "lexer.lpp" -{ return h2::parser::make_MUL(ctx->loc); } +#line 147 "lexer.lpp" +{ return h2::parser::make_ADD(ctx->loc); } YY_BREAK case 91: YY_RULE_SETUP -#line 146 "lexer.lpp" -{ return h2::parser::make_DIV(ctx->loc); } +#line 148 "lexer.lpp" +{ return h2::parser::make_SUB(ctx->loc); } YY_BREAK case 92: YY_RULE_SETUP -#line 147 "lexer.lpp" -{ return h2::parser::make_MOD(ctx->loc); } +#line 149 "lexer.lpp" +{ return h2::parser::make_MUL(ctx->loc); } YY_BREAK case 93: YY_RULE_SETUP -#line 148 "lexer.lpp" -{ return h2::parser::make_NOT(ctx->loc); } +#line 150 "lexer.lpp" +{ return h2::parser::make_DIV(ctx->loc); } YY_BREAK case 94: YY_RULE_SETUP -#line 149 "lexer.lpp" -{ return h2::parser::make_COMPLEMENT(ctx->loc); } +#line 151 "lexer.lpp" +{ return h2::parser::make_MOD(ctx->loc); } YY_BREAK case 95: YY_RULE_SETUP -#line 150 "lexer.lpp" -{ return h2::parser::make_BITWISE_OR(ctx->loc); } +#line 152 "lexer.lpp" +{ return h2::parser::make_NOT(ctx->loc); } YY_BREAK case 96: YY_RULE_SETUP -#line 151 "lexer.lpp" -{ return h2::parser::make_BITWISE_AND(ctx->loc); } +#line 153 "lexer.lpp" +{ return h2::parser::make_COMPLEMENT(ctx->loc); } YY_BREAK case 97: YY_RULE_SETUP -#line 152 "lexer.lpp" -{ return h2::parser::make_BITWISE_EXOR(ctx->loc); } +#line 154 "lexer.lpp" +{ return h2::parser::make_BITWISE_OR(ctx->loc); } YY_BREAK case 98: YY_RULE_SETUP -#line 153 "lexer.lpp" -{ return h2::parser::make_PATH(xsk::utils::string::fordslash(yytext), ctx->loc); } +#line 155 "lexer.lpp" +{ return h2::parser::make_BITWISE_AND(ctx->loc); } YY_BREAK case 99: YY_RULE_SETUP -#line 154 "lexer.lpp" -{ return h2::parser::make_IDENTIFIER((std::string(yytext, 3) == "_ID") ? std::string(yytext) : xsk::utils::string::to_lower(yytext), ctx->loc); } +#line 156 "lexer.lpp" +{ return h2::parser::make_BITWISE_EXOR(ctx->loc); } YY_BREAK case 100: -/* rule 100 can match eol */ -YY_RULE_SETUP -#line 155 "lexer.lpp" -{ return h2::parser::make_ISTRING(std::string(yytext).substr(1), ctx->loc); } - YY_BREAK -case 101: -/* rule 101 can match eol */ -YY_RULE_SETUP -#line 156 "lexer.lpp" -{ return h2::parser::make_STRING(std::string(yytext), ctx->loc); } - YY_BREAK -case 102: YY_RULE_SETUP #line 157 "lexer.lpp" -{ return h2::parser::make_COLOR(std::string(yytext).substr(1), ctx->loc); } +{ return h2::parser::make_PATH(xsk::utils::string::fordslash(yytext), ctx->loc); } YY_BREAK -case 103: +case 101: YY_RULE_SETUP #line 158 "lexer.lpp" -{ return h2::parser::make_FLOAT(std::string(yytext), ctx->loc); } +{ return h2::parser::make_IDENTIFIER((std::string(yytext, 3) == "_ID") ? std::string(yytext) : xsk::utils::string::to_lower(yytext), ctx->loc); } + YY_BREAK +case 102: +/* rule 102 can match eol */ +YY_RULE_SETUP +#line 159 "lexer.lpp" +{ return h2::parser::make_ISTRING(std::string(yytext).substr(1), ctx->loc); } + YY_BREAK +case 103: +/* rule 103 can match eol */ +YY_RULE_SETUP +#line 160 "lexer.lpp" +{ return h2::parser::make_STRING(std::string(yytext), ctx->loc); } YY_BREAK case 104: YY_RULE_SETUP -#line 159 "lexer.lpp" -{ return h2::parser::make_INT_OCT(xsk::utils::string::oct_to_dec(yytext), ctx->loc); } +#line 161 "lexer.lpp" +{ return h2::parser::make_COLOR(std::string(yytext).substr(1), ctx->loc); } YY_BREAK case 105: YY_RULE_SETUP -#line 160 "lexer.lpp" -{ return h2::parser::make_INT_BIN(xsk::utils::string::bin_to_dec(yytext), ctx->loc); } +#line 162 "lexer.lpp" +{ return h2::parser::make_FLOAT(std::string(yytext), ctx->loc); } YY_BREAK case 106: YY_RULE_SETUP -#line 161 "lexer.lpp" -{ return h2::parser::make_INT_HEX(xsk::utils::string::hex_to_dec(yytext), ctx->loc); } +#line 163 "lexer.lpp" +{ return h2::parser::make_INT_OCT(xsk::utils::string::oct_to_dec(yytext), ctx->loc); } YY_BREAK case 107: YY_RULE_SETUP -#line 162 "lexer.lpp" -{ return h2::parser::make_INT_DEC(std::string(yytext), ctx->loc); } - YY_BREAK -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(COMMENT_BLOCK_STATE): -case YY_STATE_EOF(DEVBLOCK_ON_STATE): -case YY_STATE_EOF(DEVBLOCK_OFF_STATE): -#line 163 "lexer.lpp" -{ if(ctx->header_top > 0) h2_pop_header(ctx); else return h2::parser::make_H2EOF(ctx->loc); } +#line 164 "lexer.lpp" +{ return h2::parser::make_INT_BIN(xsk::utils::string::bin_to_dec(yytext), ctx->loc); } YY_BREAK case 108: -/* rule 108 can match eol */ YY_RULE_SETUP -#line 164 "lexer.lpp" -{ throw h2::parser::syntax_error(ctx->loc, "bad token: \'" + std::string(yytext) + "\'"); } +#line 165 "lexer.lpp" +{ return h2::parser::make_INT_HEX(xsk::utils::string::hex_to_dec(yytext), ctx->loc); } YY_BREAK case 109: YY_RULE_SETUP #line 166 "lexer.lpp" +{ return h2::parser::make_INT_DEC(std::string(yytext), ctx->loc); } + YY_BREAK +case YY_STATE_EOF(INITIAL): +#line 167 "lexer.lpp" +{ if(ctx->header_top > 0) h2_pop_header(ctx); else return h2::parser::make_H2EOF(ctx->loc); } + YY_BREAK +case 110: +/* rule 110 can match eol */ +YY_RULE_SETUP +#line 168 "lexer.lpp" +{ throw h2::parser::syntax_error(ctx->loc, "bad token: \'" + std::string(yytext) + "\'"); } + YY_BREAK +case 111: +YY_RULE_SETUP +#line 170 "lexer.lpp" ECHO; YY_BREAK -#line 1810 "lexer.cpp" +#line 1834 "lexer.cpp" case YY_END_OF_BUFFER: { @@ -2105,7 +2129,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 >= 330 ) + if ( yy_current_state >= 333 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2134,11 +2158,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 >= 330 ) + if ( yy_current_state >= 333 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 329); + yy_is_jam = (yy_current_state == 332); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -2937,7 +2961,7 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 166 "lexer.lpp" +#line 170 "lexer.lpp" void h2_push_header(xsk::gsc::context* ctx, const std::string& file) diff --git a/src/h2/xsk/lexer.hpp b/src/h2/xsk/lexer.hpp index 67ef72ca..ee7ad0f2 100644 --- a/src/h2/xsk/lexer.hpp +++ b/src/h2/xsk/lexer.hpp @@ -439,9 +439,9 @@ void yyfree ( void * , yyscan_t yyscanner ); #ifdef YY_HEADER_EXPORT_START_CONDITIONS #define INITIAL 0 -#define COMMENT_BLOCK_STATE 1 -#define DEVBLOCK_ON_STATE 2 -#define DEVBLOCK_OFF_STATE 3 +#define COMMENT_STATE 1 +#define DEV_OFF_STATE 2 +#define DEV_ON_STATE 3 #endif @@ -703,7 +703,7 @@ extern int yylex (yyscan_t yyscanner); #undef yyTABLES_NAME #endif -#line 166 "lexer.lpp" +#line 170 "lexer.lpp" #line 709 "lexer.hpp" diff --git a/src/h2/xsk/parser.cpp b/src/h2/xsk/parser.cpp index 31138dc2..f7a9b07f 100644 --- a/src/h2/xsk/parser.cpp +++ b/src/h2/xsk/parser.cpp @@ -442,6 +442,7 @@ namespace xsk { namespace gsc { namespace h2 { value.YY_MOVE_OR_COPY< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.YY_MOVE_OR_COPY< ast::stmt_list::ptr > (YY_MOVE (that.value)); @@ -745,6 +746,7 @@ namespace xsk { namespace gsc { namespace h2 { value.move< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (YY_MOVE (that.value)); @@ -1048,6 +1050,7 @@ namespace xsk { namespace gsc { namespace h2 { value.copy< ast::stmt_ifelse::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.copy< ast::stmt_list::ptr > (that.value); @@ -1350,6 +1353,7 @@ namespace xsk { namespace gsc { namespace h2 { value.move< ast::stmt_ifelse::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (that.value); @@ -1907,6 +1911,7 @@ namespace xsk { namespace gsc { namespace h2 { yylhs.value.emplace< ast::stmt_ifelse::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list yylhs.value.emplace< ast::stmt_list::ptr > (); @@ -1990,1291 +1995,1321 @@ namespace xsk { namespace gsc { namespace h2 { switch (yyn) { case 2: // root: program -#line 251 "parser.ypp" +#line 254 "parser.ypp" { ast = std::move(yystack_[0].value.as < ast::program::ptr > ()); } -#line 1996 "parser.cpp" +#line 2001 "parser.cpp" break; case 3: // root: %empty -#line 252 "parser.ypp" +#line 255 "parser.ypp" { ast = std::make_unique(yylhs.location); } -#line 2002 "parser.cpp" +#line 2007 "parser.cpp" break; case 4: // program: program inline -#line 257 "parser.ypp" +#line 260 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); } -#line 2008 "parser.cpp" +#line 2013 "parser.cpp" break; case 5: // program: program include -#line 259 "parser.ypp" +#line 262 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 2014 "parser.cpp" +#line 2019 "parser.cpp" break; case 6: // program: program declaration -#line 261 "parser.ypp" +#line 264 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2020 "parser.cpp" +#line 2025 "parser.cpp" break; case 7: // program: inline -#line 263 "parser.ypp" +#line 266 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); } -#line 2026 "parser.cpp" +#line 2031 "parser.cpp" break; case 8: // program: include -#line 265 "parser.ypp" +#line 268 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 2032 "parser.cpp" +#line 2037 "parser.cpp" break; case 9: // program: declaration -#line 267 "parser.ypp" +#line 270 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2038 "parser.cpp" +#line 2043 "parser.cpp" break; case 10: // inline: "#inline" expr_path ";" -#line 271 "parser.ypp" +#line 274 "parser.ypp" { h2_push_header(ctx, yystack_[1].value.as < ast::expr_path::ptr > ()->value); } -#line 2044 "parser.cpp" +#line 2049 "parser.cpp" break; case 11: // include: "#include" expr_path ";" -#line 276 "parser.ypp" +#line 279 "parser.ypp" { yylhs.value.as < ast::include::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_path::ptr > ())); } -#line 2050 "parser.cpp" +#line 2055 "parser.cpp" break; - case 12: // declaration: decl_usingtree -#line 280 "parser.ypp" + case 12: // declaration: "/#" +#line 283 "parser.ypp" + { yylhs.value.as < ast::decl > ().as_dev_begin = std::make_unique(yylhs.location); } +#line 2061 "parser.cpp" + break; + + case 13: // declaration: "#/" +#line 284 "parser.ypp" + { yylhs.value.as < ast::decl > ().as_dev_end = std::make_unique(yylhs.location); } +#line 2067 "parser.cpp" + break; + + case 14: // declaration: decl_usingtree +#line 285 "parser.ypp" { yylhs.value.as < ast::decl > ().as_usingtree = std::move(yystack_[0].value.as < ast::decl_usingtree::ptr > ()); } -#line 2056 "parser.cpp" +#line 2073 "parser.cpp" break; - case 13: // declaration: decl_constant -#line 281 "parser.ypp" + case 15: // declaration: decl_constant +#line 286 "parser.ypp" { yylhs.value.as < ast::decl > ().as_constant = std::move(yystack_[0].value.as < ast::decl_constant::ptr > ()); } -#line 2062 "parser.cpp" +#line 2079 "parser.cpp" break; - case 14: // declaration: decl_thread -#line 282 "parser.ypp" - { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } -#line 2068 "parser.cpp" - break; - - case 15: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" + case 16: // declaration: decl_thread #line 287 "parser.ypp" - { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_usingtree::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_string::ptr > ())); } -#line 2074 "parser.cpp" + { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } +#line 2085 "parser.cpp" break; - case 16: // decl_constant: expr_identifier "=" expr ";" + case 17: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" #line 292 "parser.ypp" - { yylhs.value.as < ast::decl_constant::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2080 "parser.cpp" + { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_usingtree::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_string::ptr > ())); } +#line 2091 "parser.cpp" break; - case 17: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block + case 18: // decl_constant: expr_identifier "=" expr ";" #line 297 "parser.ypp" - { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_thread::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2086 "parser.cpp" + { yylhs.value.as < ast::decl_constant::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } +#line 2097 "parser.cpp" break; - case 18: // stmt: stmt_block -#line 301 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } -#line 2092 "parser.cpp" - break; - - case 19: // stmt: stmt_call + case 19: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block #line 302 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } -#line 2098 "parser.cpp" + { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_thread::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } +#line 2103 "parser.cpp" break; - case 20: // stmt: stmt_assign -#line 303 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } -#line 2104 "parser.cpp" - break; - - case 21: // stmt: stmt_endon -#line 304 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } -#line 2110 "parser.cpp" - break; - - case 22: // stmt: stmt_notify -#line 305 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } -#line 2116 "parser.cpp" - break; - - case 23: // stmt: stmt_wait + case 20: // stmt: stmt_dev #line 306 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } -#line 2122 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } +#line 2109 "parser.cpp" break; - case 24: // stmt: stmt_waittill + case 21: // stmt: stmt_block #line 307 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } -#line 2128 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } +#line 2115 "parser.cpp" break; - case 25: // stmt: stmt_waittillmatch + case 22: // stmt: stmt_call #line 308 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } -#line 2134 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } +#line 2121 "parser.cpp" break; - case 26: // stmt: stmt_waittillframeend + case 23: // stmt: stmt_assign #line 309 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } -#line 2140 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } +#line 2127 "parser.cpp" break; - case 27: // stmt: stmt_waitframe + case 24: // stmt: stmt_endon #line 310 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waitframe = std::move(yystack_[0].value.as < ast::stmt_waitframe::ptr > ()); } -#line 2146 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } +#line 2133 "parser.cpp" break; - case 28: // stmt: stmt_if + case 25: // stmt: stmt_notify #line 311 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } -#line 2152 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } +#line 2139 "parser.cpp" break; - case 29: // stmt: stmt_ifelse + case 26: // stmt: stmt_wait #line 312 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } -#line 2158 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } +#line 2145 "parser.cpp" break; - case 30: // stmt: stmt_while + case 27: // stmt: stmt_waittill #line 313 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } -#line 2164 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } +#line 2151 "parser.cpp" break; - case 31: // stmt: stmt_dowhile + case 28: // stmt: stmt_waittillmatch #line 314 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } -#line 2170 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } +#line 2157 "parser.cpp" break; - case 32: // stmt: stmt_for + case 29: // stmt: stmt_waittillframeend #line 315 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } -#line 2176 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } +#line 2163 "parser.cpp" break; - case 33: // stmt: stmt_foreach + case 30: // stmt: stmt_waitframe #line 316 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } -#line 2182 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waitframe = std::move(yystack_[0].value.as < ast::stmt_waitframe::ptr > ()); } +#line 2169 "parser.cpp" break; - case 34: // stmt: stmt_switch + case 31: // stmt: stmt_if #line 317 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } -#line 2188 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } +#line 2175 "parser.cpp" break; - case 35: // stmt: stmt_case + case 32: // stmt: stmt_ifelse #line 318 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } -#line 2194 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } +#line 2181 "parser.cpp" break; - case 36: // stmt: stmt_default + case 33: // stmt: stmt_while #line 319 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } -#line 2200 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } +#line 2187 "parser.cpp" break; - case 37: // stmt: stmt_break + case 34: // stmt: stmt_dowhile #line 320 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } -#line 2206 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } +#line 2193 "parser.cpp" break; - case 38: // stmt: stmt_continue + case 35: // stmt: stmt_for #line 321 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } -#line 2212 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } +#line 2199 "parser.cpp" break; - case 39: // stmt: stmt_return + case 36: // stmt: stmt_foreach #line 322 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } -#line 2218 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } +#line 2205 "parser.cpp" break; - case 40: // stmt: stmt_breakpoint + case 37: // stmt: stmt_switch #line 323 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } -#line 2224 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } +#line 2211 "parser.cpp" break; - case 41: // stmt: stmt_prof_begin + case 38: // stmt: stmt_case #line 324 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } -#line 2230 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } +#line 2217 "parser.cpp" break; - case 42: // stmt: stmt_prof_end + case 39: // stmt: stmt_default #line 325 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } -#line 2236 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } +#line 2223 "parser.cpp" break; - case 43: // stmt_block: "{" stmt_list "}" + case 40: // stmt: stmt_break +#line 326 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } +#line 2229 "parser.cpp" + break; + + case 41: // stmt: stmt_continue +#line 327 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } +#line 2235 "parser.cpp" + break; + + case 42: // stmt: stmt_return +#line 328 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } +#line 2241 "parser.cpp" + break; + + case 43: // stmt: stmt_breakpoint #line 329 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } -#line 2242 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } +#line 2247 "parser.cpp" break; - case 44: // stmt_block: "{" "}" + case 44: // stmt: stmt_prof_begin #line 330 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } -#line 2248 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } +#line 2253 "parser.cpp" break; - case 45: // stmt_list: stmt_list stmt + case 45: // stmt: stmt_prof_end +#line 331 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } +#line 2259 "parser.cpp" + break; + + case 46: // stmt_dev: "/#" stmt_list "#/" #line 335 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2254 "parser.cpp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } +#line 2265 "parser.cpp" break; - case 46: // stmt_list: stmt -#line 337 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2260 "parser.cpp" + case 47: // stmt_dev: "/#" "#/" +#line 336 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } +#line 2271 "parser.cpp" break; - case 47: // stmt_expr: expr_assign -#line 342 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2266 "parser.cpp" + case 48: // stmt_block: "{" stmt_list "}" +#line 340 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } +#line 2277 "parser.cpp" break; - case 48: // stmt_expr: expr_increment -#line 344 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2272 "parser.cpp" + case 49: // stmt_block: "{" "}" +#line 341 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } +#line 2283 "parser.cpp" break; - case 49: // stmt_expr: expr_decrement + case 50: // stmt_list: stmt_list stmt #line 346 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2278 "parser.cpp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2289 "parser.cpp" break; - case 50: // stmt_expr: %empty + case 51: // stmt_list: stmt #line 348 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2284 "parser.cpp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2295 "parser.cpp" break; - case 51: // stmt_call: expr_call ";" + case 52: // stmt_expr: expr_assign #line 353 "parser.ypp" - { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } -#line 2290 "parser.cpp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2301 "parser.cpp" break; - case 52: // stmt_call: expr_method ";" + case 53: // stmt_expr: expr_increment #line 355 "parser.ypp" - { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_method::ptr > ()))); } -#line 2296 "parser.cpp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2307 "parser.cpp" break; - case 53: // stmt_assign: expr_assign ";" -#line 360 "parser.ypp" - { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2302 "parser.cpp" + case 54: // stmt_expr: expr_decrement +#line 357 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2313 "parser.cpp" break; - case 54: // stmt_assign: expr_increment ";" -#line 362 "parser.ypp" - { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2308 "parser.cpp" + case 55: // stmt_expr: %empty +#line 359 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } +#line 2319 "parser.cpp" break; - case 55: // stmt_assign: expr_decrement ";" + case 56: // stmt_call: expr_call ";" #line 364 "parser.ypp" + { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } +#line 2325 "parser.cpp" + break; + + case 57: // stmt_call: expr_method ";" +#line 366 "parser.ypp" + { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_method::ptr > ()))); } +#line 2331 "parser.cpp" + break; + + case 58: // stmt_assign: expr_assign ";" +#line 371 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2314 "parser.cpp" +#line 2337 "parser.cpp" break; - case 56: // stmt_endon: expr_object "endon" "(" expr ")" ";" -#line 369 "parser.ypp" + case 59: // stmt_assign: expr_increment ";" +#line 373 "parser.ypp" + { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 2343 "parser.cpp" + break; + + case 60: // stmt_assign: expr_decrement ";" +#line 375 "parser.ypp" + { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 2349 "parser.cpp" + break; + + case 61: // stmt_endon: expr_object "endon" "(" expr ")" ";" +#line 380 "parser.ypp" { yylhs.value.as < ast::stmt_endon::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ())); } -#line 2320 "parser.cpp" +#line 2355 "parser.cpp" break; - case 57: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" -#line 374 "parser.ypp" + case 62: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" +#line 385 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2326 "parser.cpp" +#line 2361 "parser.cpp" break; - case 58: // stmt_notify: expr_object "notify" "(" expr ")" ";" -#line 376 "parser.ypp" + case 63: // stmt_notify: expr_object "notify" "(" expr ")" ";" +#line 387 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2332 "parser.cpp" +#line 2367 "parser.cpp" break; - case 59: // stmt_wait: "wait" expr ";" -#line 381 "parser.ypp" + case 64: // stmt_wait: "wait" expr ";" +#line 392 "parser.ypp" { yylhs.value.as < ast::stmt_wait::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2338 "parser.cpp" +#line 2373 "parser.cpp" break; - case 60: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" -#line 386 "parser.ypp" + case 65: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" +#line 397 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2344 "parser.cpp" +#line 2379 "parser.cpp" break; - case 61: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" -#line 388 "parser.ypp" + case 66: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" +#line 399 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2350 "parser.cpp" +#line 2385 "parser.cpp" break; - case 62: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" -#line 393 "parser.ypp" + case 67: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" +#line 404 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2356 "parser.cpp" +#line 2391 "parser.cpp" break; - case 63: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" -#line 395 "parser.ypp" + case 68: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" +#line 406 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2362 "parser.cpp" +#line 2397 "parser.cpp" break; - case 64: // stmt_waittillframeend: "waittillframeend" ";" -#line 400 "parser.ypp" + case 69: // stmt_waittillframeend: "waittillframeend" ";" +#line 411 "parser.ypp" { yylhs.value.as < ast::stmt_waittillframeend::ptr > () = std::make_unique(yylhs.location); } -#line 2368 "parser.cpp" +#line 2403 "parser.cpp" break; - case 65: // stmt_waitframe: "waitframe" ";" -#line 405 "parser.ypp" + case 70: // stmt_waitframe: "waitframe" ";" +#line 416 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } -#line 2374 "parser.cpp" +#line 2409 "parser.cpp" break; - case 66: // stmt_waitframe: "waitframe" "(" ")" ";" -#line 407 "parser.ypp" + case 71: // stmt_waitframe: "waitframe" "(" ")" ";" +#line 418 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } -#line 2380 "parser.cpp" +#line 2415 "parser.cpp" break; - case 67: // stmt_if: "if" "(" expr ")" stmt -#line 412 "parser.ypp" + case 72: // stmt_if: "if" "(" expr ")" stmt +#line 423 "parser.ypp" { yylhs.value.as < ast::stmt_if::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2386 "parser.cpp" +#line 2421 "parser.cpp" break; - case 68: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 417 "parser.ypp" + case 73: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 428 "parser.ypp" { yylhs.value.as < ast::stmt_ifelse::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::stmt > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2392 "parser.cpp" +#line 2427 "parser.cpp" break; - case 69: // stmt_while: "while" "(" expr ")" stmt -#line 422 "parser.ypp" + case 74: // stmt_while: "while" "(" expr ")" stmt +#line 433 "parser.ypp" { yylhs.value.as < ast::stmt_while::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2398 "parser.cpp" +#line 2433 "parser.cpp" break; - case 70: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" -#line 427 "parser.ypp" + case 75: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" +#line 438 "parser.ypp" { yylhs.value.as < ast::stmt_dowhile::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[5].value.as < ast::stmt > ())); } -#line 2404 "parser.cpp" +#line 2439 "parser.cpp" break; - case 71: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt -#line 432 "parser.ypp" + case 76: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt +#line 443 "parser.ypp" { yylhs.value.as < ast::stmt_for::ptr > () = std::make_unique(yylhs.location, ast::stmt(std::move(yystack_[6].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[4].value.as < ast::expr > ()), ast::stmt(std::move(yystack_[2].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2410 "parser.cpp" +#line 2445 "parser.cpp" break; - case 72: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt -#line 437 "parser.ypp" + case 77: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt +#line 448 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2416 "parser.cpp" +#line 2451 "parser.cpp" break; - case 73: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt -#line 439 "parser.ypp" + case 78: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt +#line 450 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[6].value.as < ast::expr_identifier::ptr > ())), ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2422 "parser.cpp" +#line 2457 "parser.cpp" break; - case 74: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 444 "parser.ypp" + case 79: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 455 "parser.ypp" { yylhs.value.as < ast::stmt_switch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2428 "parser.cpp" +#line 2463 "parser.cpp" break; - case 75: // stmt_case: "case" expr_integer ":" -#line 449 "parser.ypp" + case 80: // stmt_case: "case" expr_integer ":" +#line 460 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_integer::ptr > ())), std::make_unique(yylhs.location)); } -#line 2434 "parser.cpp" +#line 2469 "parser.cpp" break; - case 76: // stmt_case: "case" expr_string ":" -#line 451 "parser.ypp" + case 81: // stmt_case: "case" expr_string ":" +#line 462 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_string::ptr > ())), std::make_unique(yylhs.location)); } -#line 2440 "parser.cpp" +#line 2475 "parser.cpp" break; - case 77: // stmt_default: "default" ":" -#line 456 "parser.ypp" + case 82: // stmt_default: "default" ":" +#line 467 "parser.ypp" { yylhs.value.as < ast::stmt_default::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2446 "parser.cpp" +#line 2481 "parser.cpp" break; - case 78: // stmt_break: "break" ";" -#line 461 "parser.ypp" + case 83: // stmt_break: "break" ";" +#line 472 "parser.ypp" { yylhs.value.as < ast::stmt_break::ptr > () = std::make_unique(yylhs.location); } -#line 2452 "parser.cpp" +#line 2487 "parser.cpp" break; - case 79: // stmt_continue: "continue" ";" -#line 466 "parser.ypp" + case 84: // stmt_continue: "continue" ";" +#line 477 "parser.ypp" { yylhs.value.as < ast::stmt_continue::ptr > () = std::make_unique(yylhs.location); } -#line 2458 "parser.cpp" +#line 2493 "parser.cpp" break; - case 80: // stmt_return: "return" expr ";" -#line 471 "parser.ypp" + case 85: // stmt_return: "return" expr ";" +#line 482 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2464 "parser.cpp" +#line 2499 "parser.cpp" break; - case 81: // stmt_return: "return" ";" -#line 473 "parser.ypp" + case 86: // stmt_return: "return" ";" +#line 484 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2470 "parser.cpp" +#line 2505 "parser.cpp" break; - case 82: // stmt_breakpoint: "breakpoint" ";" -#line 478 "parser.ypp" + case 87: // stmt_breakpoint: "breakpoint" ";" +#line 489 "parser.ypp" { yylhs.value.as < ast::stmt_breakpoint::ptr > () = std::make_unique(yylhs.location); } -#line 2476 "parser.cpp" +#line 2511 "parser.cpp" break; - case 83: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 483 "parser.ypp" - { yylhs.value.as < ast::stmt_prof_begin::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2482 "parser.cpp" - break; - - case 84: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 488 "parser.ypp" - { yylhs.value.as < ast::stmt_prof_end::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2488 "parser.cpp" - break; - - case 85: // expr: expr_ternary -#line 492 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2494 "parser.cpp" - break; - - case 86: // expr: expr_binary -#line 493 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2500 "parser.cpp" - break; - - case 87: // expr: expr_primitive + case 88: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" #line 494 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2506 "parser.cpp" + { yylhs.value.as < ast::stmt_prof_begin::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } +#line 2517 "parser.cpp" break; - case 88: // expr_or_empty: expr -#line 498 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2512 "parser.cpp" - break; - - case 89: // expr_or_empty: %empty + case 89: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" #line 499 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } -#line 2518 "parser.cpp" + { yylhs.value.as < ast::stmt_prof_end::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } +#line 2523 "parser.cpp" break; - case 90: // expr_assign: expr_object "=" expr + case 90: // expr: expr_ternary +#line 503 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2529 "parser.cpp" + break; + + case 91: // expr: expr_binary #line 504 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2524 "parser.cpp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2535 "parser.cpp" break; - case 91: // expr_assign: expr_object "|=" expr -#line 506 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2530 "parser.cpp" + case 92: // expr: expr_primitive +#line 505 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2541 "parser.cpp" break; - case 92: // expr_assign: expr_object "&=" expr -#line 508 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2536 "parser.cpp" + case 93: // expr_or_empty: expr +#line 509 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2547 "parser.cpp" break; - case 93: // expr_assign: expr_object "^=" expr + case 94: // expr_or_empty: %empty #line 510 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } +#line 2553 "parser.cpp" + break; + + case 95: // expr_assign: expr_object "=" expr +#line 515 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2559 "parser.cpp" + break; + + case 96: // expr_assign: expr_object "|=" expr +#line 517 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2565 "parser.cpp" + break; + + case 97: // expr_assign: expr_object "&=" expr +#line 519 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2571 "parser.cpp" + break; + + case 98: // expr_assign: expr_object "^=" expr +#line 521 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2542 "parser.cpp" +#line 2577 "parser.cpp" break; - case 94: // expr_assign: expr_object "<<=" expr -#line 512 "parser.ypp" + case 99: // expr_assign: expr_object "<<=" expr +#line 523 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()),std::move( yystack_[0].value.as < ast::expr > ())); } -#line 2548 "parser.cpp" +#line 2583 "parser.cpp" break; - case 95: // expr_assign: expr_object ">>=" expr -#line 514 "parser.ypp" + case 100: // expr_assign: expr_object ">>=" expr +#line 525 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2554 "parser.cpp" +#line 2589 "parser.cpp" break; - case 96: // expr_assign: expr_object "+=" expr -#line 516 "parser.ypp" + case 101: // expr_assign: expr_object "+=" expr +#line 527 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2560 "parser.cpp" +#line 2595 "parser.cpp" break; - case 97: // expr_assign: expr_object "-=" expr -#line 518 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2566 "parser.cpp" - break; - - case 98: // expr_assign: expr_object "*=" expr -#line 520 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2572 "parser.cpp" - break; - - case 99: // expr_assign: expr_object "/=" expr -#line 522 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2578 "parser.cpp" - break; - - case 100: // expr_assign: expr_object "%=" expr -#line 524 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2584 "parser.cpp" - break; - - case 101: // expr_increment: "++" expr_object + case 102: // expr_assign: expr_object "-=" expr #line 529 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2590 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2601 "parser.cpp" break; - case 102: // expr_increment: expr_object "++" + case 103: // expr_assign: expr_object "*=" expr #line 531 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2607 "parser.cpp" + break; + + case 104: // expr_assign: expr_object "/=" expr +#line 533 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2613 "parser.cpp" + break; + + case 105: // expr_assign: expr_object "%=" expr +#line 535 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2619 "parser.cpp" + break; + + case 106: // expr_increment: "++" expr_object +#line 540 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } +#line 2625 "parser.cpp" + break; + + case 107: // expr_increment: expr_object "++" +#line 542 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2596 "parser.cpp" +#line 2631 "parser.cpp" break; - case 103: // expr_decrement: "--" expr_object -#line 536 "parser.ypp" + case 108: // expr_decrement: "--" expr_object +#line 547 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2602 "parser.cpp" +#line 2637 "parser.cpp" break; - case 104: // expr_decrement: expr_object "--" -#line 538 "parser.ypp" + case 109: // expr_decrement: expr_object "--" +#line 549 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2608 "parser.cpp" +#line 2643 "parser.cpp" break; - case 105: // expr_ternary: expr "?" expr ":" expr -#line 543 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2614 "parser.cpp" - break; - - case 106: // expr_binary: expr "||" expr -#line 548 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2620 "parser.cpp" - break; - - case 107: // expr_binary: expr "&&" expr -#line 550 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2626 "parser.cpp" - break; - - case 108: // expr_binary: expr "==" expr -#line 552 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2632 "parser.cpp" - break; - - case 109: // expr_binary: expr "!=" expr + case 110: // expr_ternary: expr "?" expr ":" expr #line 554 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2649 "parser.cpp" + break; + + case 111: // expr_binary: expr "||" expr +#line 559 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2655 "parser.cpp" + break; + + case 112: // expr_binary: expr "&&" expr +#line 561 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2661 "parser.cpp" + break; + + case 113: // expr_binary: expr "==" expr +#line 563 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2667 "parser.cpp" + break; + + case 114: // expr_binary: expr "!=" expr +#line 565 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2638 "parser.cpp" +#line 2673 "parser.cpp" break; - case 110: // expr_binary: expr "<=" expr -#line 556 "parser.ypp" + case 115: // expr_binary: expr "<=" expr +#line 567 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2644 "parser.cpp" +#line 2679 "parser.cpp" break; - case 111: // expr_binary: expr ">=" expr -#line 558 "parser.ypp" + case 116: // expr_binary: expr ">=" expr +#line 569 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2650 "parser.cpp" +#line 2685 "parser.cpp" break; - case 112: // expr_binary: expr "<" expr -#line 560 "parser.ypp" + case 117: // expr_binary: expr "<" expr +#line 571 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2656 "parser.cpp" +#line 2691 "parser.cpp" break; - case 113: // expr_binary: expr ">" expr -#line 562 "parser.ypp" + case 118: // expr_binary: expr ">" expr +#line 573 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2662 "parser.cpp" +#line 2697 "parser.cpp" break; - case 114: // expr_binary: expr "|" expr -#line 564 "parser.ypp" + case 119: // expr_binary: expr "|" expr +#line 575 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2668 "parser.cpp" +#line 2703 "parser.cpp" break; - case 115: // expr_binary: expr "&" expr -#line 566 "parser.ypp" + case 120: // expr_binary: expr "&" expr +#line 577 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2674 "parser.cpp" +#line 2709 "parser.cpp" break; - case 116: // expr_binary: expr "^" expr -#line 568 "parser.ypp" + case 121: // expr_binary: expr "^" expr +#line 579 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2680 "parser.cpp" +#line 2715 "parser.cpp" break; - case 117: // expr_binary: expr "<<" expr -#line 570 "parser.ypp" + case 122: // expr_binary: expr "<<" expr +#line 581 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2686 "parser.cpp" +#line 2721 "parser.cpp" break; - case 118: // expr_binary: expr ">>" expr -#line 572 "parser.ypp" + case 123: // expr_binary: expr ">>" expr +#line 583 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2692 "parser.cpp" +#line 2727 "parser.cpp" break; - case 119: // expr_binary: expr "+" expr -#line 574 "parser.ypp" + case 124: // expr_binary: expr "+" expr +#line 585 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2698 "parser.cpp" +#line 2733 "parser.cpp" break; - case 120: // expr_binary: expr "-" expr -#line 576 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2704 "parser.cpp" - break; - - case 121: // expr_binary: expr "*" expr -#line 578 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2710 "parser.cpp" - break; - - case 122: // expr_binary: expr "/" expr -#line 580 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2716 "parser.cpp" - break; - - case 123: // expr_binary: expr "%" expr -#line 582 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2722 "parser.cpp" - break; - - case 124: // expr_primitive: expr_complement -#line 586 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } -#line 2728 "parser.cpp" - break; - - case 125: // expr_primitive: expr_not + case 125: // expr_binary: expr "-" expr #line 587 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } -#line 2734 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2739 "parser.cpp" break; - case 126: // expr_primitive: expr_call -#line 588 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 2740 "parser.cpp" - break; - - case 127: // expr_primitive: expr_method + case 126: // expr_binary: expr "*" expr #line 589 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 2746 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2745 "parser.cpp" break; - case 128: // expr_primitive: expr_add_array -#line 590 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } -#line 2752 "parser.cpp" - break; - - case 129: // expr_primitive: expr_reference + case 127: // expr_binary: expr "/" expr #line 591 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } -#line 2758 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2751 "parser.cpp" break; - case 130: // expr_primitive: expr_array -#line 592 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 2764 "parser.cpp" - break; - - case 131: // expr_primitive: expr_field + case 128: // expr_binary: expr "%" expr #line 593 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 2770 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2757 "parser.cpp" break; - case 132: // expr_primitive: expr_size -#line 594 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } -#line 2776 "parser.cpp" - break; - - case 133: // expr_primitive: expr_paren -#line 595 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } -#line 2782 "parser.cpp" - break; - - case 134: // expr_primitive: expr_thisthread -#line 596 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } -#line 2788 "parser.cpp" - break; - - case 135: // expr_primitive: expr_empty_array + case 129: // expr_primitive: expr_complement #line 597 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } -#line 2794 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } +#line 2763 "parser.cpp" break; - case 136: // expr_primitive: expr_undefined + case 130: // expr_primitive: expr_not #line 598 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } -#line 2800 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } +#line 2769 "parser.cpp" break; - case 137: // expr_primitive: expr_game + case 131: // expr_primitive: expr_call #line 599 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 2806 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 2775 "parser.cpp" break; - case 138: // expr_primitive: expr_self + case 132: // expr_primitive: expr_method #line 600 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 2812 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 2781 "parser.cpp" break; - case 139: // expr_primitive: expr_anim + case 133: // expr_primitive: expr_add_array #line 601 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 2818 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } +#line 2787 "parser.cpp" break; - case 140: // expr_primitive: expr_level + case 134: // expr_primitive: expr_reference #line 602 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 2824 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } +#line 2793 "parser.cpp" break; - case 141: // expr_primitive: expr_animation + case 135: // expr_primitive: expr_array #line 603 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } -#line 2830 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 2799 "parser.cpp" break; - case 142: // expr_primitive: expr_animtree + case 136: // expr_primitive: expr_field #line 604 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } -#line 2836 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 2805 "parser.cpp" break; - case 143: // expr_primitive: expr_identifier + case 137: // expr_primitive: expr_size #line 605 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 2842 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } +#line 2811 "parser.cpp" break; - case 144: // expr_primitive: expr_istring + case 138: // expr_primitive: expr_paren #line 606 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } -#line 2848 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } +#line 2817 "parser.cpp" break; - case 145: // expr_primitive: expr_string + case 139: // expr_primitive: expr_thisthread #line 607 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } -#line 2854 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } +#line 2823 "parser.cpp" break; - case 146: // expr_primitive: expr_color + case 140: // expr_primitive: expr_empty_array #line 608 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } -#line 2860 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } +#line 2829 "parser.cpp" break; - case 147: // expr_primitive: expr_vector + case 141: // expr_primitive: expr_undefined #line 609 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } -#line 2866 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } +#line 2835 "parser.cpp" break; - case 148: // expr_primitive: expr_float + case 142: // expr_primitive: expr_game #line 610 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } -#line 2872 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 2841 "parser.cpp" break; - case 149: // expr_primitive: expr_integer + case 143: // expr_primitive: expr_self #line 611 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } -#line 2878 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 2847 "parser.cpp" break; - case 150: // expr_primitive: expr_false + case 144: // expr_primitive: expr_anim #line 612 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } -#line 2884 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 2853 "parser.cpp" break; - case 151: // expr_primitive: expr_true + case 145: // expr_primitive: expr_level #line 613 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } -#line 2890 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 2859 "parser.cpp" break; - case 152: // expr_complement: "~" expr + case 146: // expr_primitive: expr_animation +#line 614 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } +#line 2865 "parser.cpp" + break; + + case 147: // expr_primitive: expr_animtree +#line 615 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } +#line 2871 "parser.cpp" + break; + + case 148: // expr_primitive: expr_identifier +#line 616 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 2877 "parser.cpp" + break; + + case 149: // expr_primitive: expr_istring +#line 617 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } +#line 2883 "parser.cpp" + break; + + case 150: // expr_primitive: expr_string #line 618 "parser.ypp" - { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2896 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } +#line 2889 "parser.cpp" break; - case 153: // expr_not: "!" expr + case 151: // expr_primitive: expr_color +#line 619 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } +#line 2895 "parser.cpp" + break; + + case 152: // expr_primitive: expr_vector +#line 620 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } +#line 2901 "parser.cpp" + break; + + case 153: // expr_primitive: expr_float +#line 621 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } +#line 2907 "parser.cpp" + break; + + case 154: // expr_primitive: expr_integer +#line 622 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } +#line 2913 "parser.cpp" + break; + + case 155: // expr_primitive: expr_false #line 623 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } +#line 2919 "parser.cpp" + break; + + case 156: // expr_primitive: expr_true +#line 624 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } +#line 2925 "parser.cpp" + break; + + case 157: // expr_complement: "~" expr +#line 629 "parser.ypp" + { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2931 "parser.cpp" + break; + + case 158: // expr_not: "!" expr +#line 634 "parser.ypp" { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2902 "parser.cpp" +#line 2937 "parser.cpp" break; - case 154: // expr_call: expr_function -#line 627 "parser.ypp" + case 159: // expr_call: expr_function +#line 638 "parser.ypp" { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2908 "parser.cpp" +#line 2943 "parser.cpp" break; - case 155: // expr_call: expr_pointer -#line 628 "parser.ypp" - { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2914 "parser.cpp" - break; - - case 156: // expr_method: expr_object expr_function -#line 631 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2920 "parser.cpp" - break; - - case 157: // expr_method: expr_object expr_pointer -#line 632 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2926 "parser.cpp" - break; - - case 158: // expr_function: expr_identifier "(" expr_arguments ")" -#line 637 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2932 "parser.cpp" - break; - - case 159: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" + case 160: // expr_call: expr_pointer #line 639 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2938 "parser.cpp" + { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } +#line 2949 "parser.cpp" break; - case 160: // expr_function: "thread" expr_identifier "(" expr_arguments ")" -#line 641 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2944 "parser.cpp" + case 161: // expr_method: expr_object expr_function +#line 642 "parser.ypp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 2955 "parser.cpp" break; - case 161: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" + case 162: // expr_method: expr_object expr_pointer #line 643 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2950 "parser.cpp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 2961 "parser.cpp" break; - case 162: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" -#line 645 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2956 "parser.cpp" + case 163: // expr_function: expr_identifier "(" expr_arguments ")" +#line 648 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 2967 "parser.cpp" break; - case 163: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 647 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2962 "parser.cpp" + case 164: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" +#line 650 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 2973 "parser.cpp" break; - case 164: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" + case 165: // expr_function: "thread" expr_identifier "(" expr_arguments ")" #line 652 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2968 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 2979 "parser.cpp" break; - case 165: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 166: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" #line 654 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2974 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 2985 "parser.cpp" break; - case 166: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 167: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" #line 656 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2980 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 2991 "parser.cpp" break; - case 167: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 168: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" #line 658 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::builtin); } -#line 2986 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 2997 "parser.cpp" break; - case 168: // expr_add_array: "[" expr_arguments_no_empty "]" + case 169: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" #line 663 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 3003 "parser.cpp" + break; + + case 170: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 665 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 3009 "parser.cpp" + break; + + case 171: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 667 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 3015 "parser.cpp" + break; + + case 172: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 669 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::builtin); } +#line 3021 "parser.cpp" + break; + + case 173: // expr_add_array: "[" expr_arguments_no_empty "]" +#line 674 "parser.ypp" { yylhs.value.as < ast::expr_add_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ())); } -#line 2992 "parser.cpp" +#line 3027 "parser.cpp" break; - case 169: // expr_parameters: expr_parameters "," expr_identifier -#line 668 "parser.ypp" - { yylhs.value.as < ast::expr_parameters::ptr > () = std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 2998 "parser.cpp" - break; - - case 170: // expr_parameters: expr_identifier -#line 670 "parser.ypp" - { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3004 "parser.cpp" - break; - - case 171: // expr_parameters: %empty -#line 672 "parser.ypp" - { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } -#line 3010 "parser.cpp" - break; - - case 172: // expr_arguments: expr_arguments_no_empty -#line 677 "parser.ypp" - { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } -#line 3016 "parser.cpp" - break; - - case 173: // expr_arguments: %empty + case 174: // expr_parameters: expr_parameters "," expr_identifier #line 679 "parser.ypp" + { yylhs.value.as < ast::expr_parameters::ptr > () = std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } +#line 3033 "parser.cpp" + break; + + case 175: // expr_parameters: expr_identifier +#line 681 "parser.ypp" + { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } +#line 3039 "parser.cpp" + break; + + case 176: // expr_parameters: %empty +#line 683 "parser.ypp" + { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } +#line 3045 "parser.cpp" + break; + + case 177: // expr_arguments: expr_arguments_no_empty +#line 688 "parser.ypp" + { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } +#line 3051 "parser.cpp" + break; + + case 178: // expr_arguments: %empty +#line 690 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); } -#line 3022 "parser.cpp" +#line 3057 "parser.cpp" break; - case 174: // expr_arguments_no_empty: expr_arguments "," expr -#line 684 "parser.ypp" + case 179: // expr_arguments_no_empty: expr_arguments "," expr +#line 695 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ()); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 3028 "parser.cpp" +#line 3063 "parser.cpp" break; - case 175: // expr_arguments_no_empty: expr -#line 686 "parser.ypp" + case 180: // expr_arguments_no_empty: expr +#line 697 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 3034 "parser.cpp" +#line 3069 "parser.cpp" break; - case 176: // expr_reference: "::" expr_identifier -#line 691 "parser.ypp" + case 181: // expr_reference: "::" expr_identifier +#line 702 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3040 "parser.cpp" +#line 3075 "parser.cpp" break; - case 177: // expr_reference: expr_path "::" expr_identifier -#line 693 "parser.ypp" + case 182: // expr_reference: expr_path "::" expr_identifier +#line 704 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_path::ptr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3046 "parser.cpp" +#line 3081 "parser.cpp" break; - case 178: // expr_array: expr_object "[" expr "]" -#line 698 "parser.ypp" + case 183: // expr_array: expr_object "[" expr "]" +#line 709 "parser.ypp" { yylhs.value.as < ast::expr_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3052 "parser.cpp" +#line 3087 "parser.cpp" break; - case 179: // expr_field: expr_object "." expr_identifier -#line 703 "parser.ypp" + case 184: // expr_field: expr_object "." expr_identifier +#line 714 "parser.ypp" { yylhs.value.as < ast::expr_field::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3058 "parser.cpp" +#line 3093 "parser.cpp" break; - case 180: // expr_size: expr_object ".size" -#line 708 "parser.ypp" - { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3064 "parser.cpp" - break; - - case 181: // expr_paren: "(" expr ")" -#line 713 "parser.ypp" - { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3070 "parser.cpp" - break; - - case 182: // expr_object: expr_call -#line 717 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 3076 "parser.cpp" - break; - - case 183: // expr_object: expr_method -#line 718 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 3082 "parser.cpp" - break; - - case 184: // expr_object: expr_array + case 185: // expr_size: expr_object ".size" #line 719 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 3088 "parser.cpp" + { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3099 "parser.cpp" break; - case 185: // expr_object: expr_field -#line 720 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 3094 "parser.cpp" - break; - - case 186: // expr_object: expr_game -#line 721 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 3100 "parser.cpp" - break; - - case 187: // expr_object: expr_self -#line 722 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 3106 "parser.cpp" - break; - - case 188: // expr_object: expr_anim -#line 723 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 3112 "parser.cpp" - break; - - case 189: // expr_object: expr_level + case 186: // expr_paren: "(" expr ")" #line 724 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 3118 "parser.cpp" + { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3105 "parser.cpp" break; - case 190: // expr_object: expr_identifier -#line 725 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 3124 "parser.cpp" + case 187: // expr_object: expr_call +#line 728 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 3111 "parser.cpp" break; - case 191: // expr_thisthread: "thisthread" + case 188: // expr_object: expr_method +#line 729 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 3117 "parser.cpp" + break; + + case 189: // expr_object: expr_array #line 730 "parser.ypp" - { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } -#line 3130 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 3123 "parser.cpp" break; - case 192: // expr_empty_array: "[" "]" + case 190: // expr_object: expr_field +#line 731 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 3129 "parser.cpp" + break; + + case 191: // expr_object: expr_game +#line 732 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 3135 "parser.cpp" + break; + + case 192: // expr_object: expr_self +#line 733 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 3141 "parser.cpp" + break; + + case 193: // expr_object: expr_anim +#line 734 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 3147 "parser.cpp" + break; + + case 194: // expr_object: expr_level #line 735 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 3153 "parser.cpp" + break; + + case 195: // expr_object: expr_identifier +#line 736 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 3159 "parser.cpp" + break; + + case 196: // expr_thisthread: "thisthread" +#line 741 "parser.ypp" + { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } +#line 3165 "parser.cpp" + break; + + case 197: // expr_empty_array: "[" "]" +#line 746 "parser.ypp" { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } -#line 3136 "parser.cpp" +#line 3171 "parser.cpp" break; - case 193: // expr_undefined: "undefined" -#line 740 "parser.ypp" + case 198: // expr_undefined: "undefined" +#line 751 "parser.ypp" { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } -#line 3142 "parser.cpp" +#line 3177 "parser.cpp" break; - case 194: // expr_game: "game" -#line 745 "parser.ypp" + case 199: // expr_game: "game" +#line 756 "parser.ypp" { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } -#line 3148 "parser.cpp" +#line 3183 "parser.cpp" break; - case 195: // expr_self: "self" -#line 750 "parser.ypp" + case 200: // expr_self: "self" +#line 761 "parser.ypp" { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } -#line 3154 "parser.cpp" +#line 3189 "parser.cpp" break; - case 196: // expr_anim: "anim" -#line 755 "parser.ypp" + case 201: // expr_anim: "anim" +#line 766 "parser.ypp" { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } -#line 3160 "parser.cpp" +#line 3195 "parser.cpp" break; - case 197: // expr_level: "level" -#line 760 "parser.ypp" + case 202: // expr_level: "level" +#line 771 "parser.ypp" { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } -#line 3166 "parser.cpp" +#line 3201 "parser.cpp" break; - case 198: // expr_animation: "%" "identifier" -#line 765 "parser.ypp" + case 203: // expr_animation: "%" "identifier" +#line 776 "parser.ypp" { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3172 "parser.cpp" +#line 3207 "parser.cpp" break; - case 199: // expr_animtree: "#animtree" -#line 770 "parser.ypp" + case 204: // expr_animtree: "#animtree" +#line 781 "parser.ypp" { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } -#line 3178 "parser.cpp" +#line 3213 "parser.cpp" break; - case 200: // expr_identifier: "identifier" -#line 775 "parser.ypp" + case 205: // expr_identifier: "identifier" +#line 786 "parser.ypp" { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3184 "parser.cpp" +#line 3219 "parser.cpp" break; - case 201: // expr_path: "path" -#line 780 "parser.ypp" + case 206: // expr_path: "path" +#line 791 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3190 "parser.cpp" +#line 3225 "parser.cpp" break; - case 202: // expr_path: expr_identifier -#line 782 "parser.ypp" + case 207: // expr_path: expr_identifier +#line 793 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < ast::expr_identifier::ptr > ()->value); } -#line 3196 "parser.cpp" +#line 3231 "parser.cpp" break; - case 203: // expr_istring: "localized string" -#line 787 "parser.ypp" + case 208: // expr_istring: "localized string" +#line 798 "parser.ypp" { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3202 "parser.cpp" +#line 3237 "parser.cpp" break; - case 204: // expr_string: "string literal" -#line 792 "parser.ypp" + case 209: // expr_string: "string literal" +#line 803 "parser.ypp" { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3208 "parser.cpp" +#line 3243 "parser.cpp" break; - case 205: // expr_color: "color" -#line 797 "parser.ypp" + case 210: // expr_color: "color" +#line 808 "parser.ypp" { yylhs.value.as < ast::expr_color::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3214 "parser.cpp" +#line 3249 "parser.cpp" break; - case 206: // expr_vector: "(" expr "," expr "," expr ")" -#line 802 "parser.ypp" + case 211: // expr_vector: "(" expr "," expr "," expr ")" +#line 813 "parser.ypp" { yylhs.value.as < ast::expr_vector::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3220 "parser.cpp" +#line 3255 "parser.cpp" break; - case 207: // expr_float: "-" "float" -#line 807 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3226 "parser.cpp" - break; - - case 208: // expr_float: "float" -#line 809 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3232 "parser.cpp" - break; - - case 209: // expr_integer: "-" "int" -#line 814 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3238 "parser.cpp" - break; - - case 210: // expr_integer: "int" -#line 816 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3244 "parser.cpp" - break; - - case 211: // expr_integer: "octal int" + case 212: // expr_float: "-" "float" #line 818 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3250 "parser.cpp" + { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 3261 "parser.cpp" break; - case 212: // expr_integer: "binary int" + case 213: // expr_float: "float" #line 820 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3256 "parser.cpp" + { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3267 "parser.cpp" break; - case 213: // expr_integer: "hexadecimal int" -#line 822 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3262 "parser.cpp" + case 214: // expr_integer: "-" "int" +#line 825 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 3273 "parser.cpp" break; - case 214: // expr_false: "false" + case 215: // expr_integer: "int" #line 827 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3279 "parser.cpp" + break; + + case 216: // expr_integer: "octal int" +#line 829 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3285 "parser.cpp" + break; + + case 217: // expr_integer: "binary int" +#line 831 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3291 "parser.cpp" + break; + + case 218: // expr_integer: "hexadecimal int" +#line 833 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3297 "parser.cpp" + break; + + case 219: // expr_false: "false" +#line 838 "parser.ypp" { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } -#line 3268 "parser.cpp" +#line 3303 "parser.cpp" break; - case 215: // expr_true: "true" -#line 832 "parser.ypp" + case 220: // expr_true: "true" +#line 843 "parser.ypp" { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } -#line 3274 "parser.cpp" +#line 3309 "parser.cpp" break; -#line 3278 "parser.cpp" +#line 3313 "parser.cpp" default: break; @@ -3458,35 +3493,36 @@ namespace xsk { namespace gsc { namespace h2 { { static const char *const yy_sname[] = { - "end of file", "error", "invalid token", "#inline", "#include", - "#using_animtree", "#animtree", "endon", "notify", "wait", "waittill", - "waittillmatch", "waittillframeend", "waitframe", "if", "else", "do", - "while", "for", "foreach", "in", "switch", "case", "default", "break", - "continue", "return", "breakpoint", "prof_begin", "prof_end", "thread", - "childthread", "thisthread", "call", "true", "false", "undefined", - ".size", "game", "self", "anim", "level", "(", ")", "{", "}", "[", "]", - ",", ".", "::", ":", ";", "?", "++", "--", "<<", ">>", "||", "&&", "==", - "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", - "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", "%", - "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", "inline", "include", - "declaration", "decl_usingtree", "decl_constant", "decl_thread", "stmt", - "stmt_block", "stmt_list", "stmt_expr", "stmt_call", "stmt_assign", - "stmt_endon", "stmt_notify", "stmt_wait", "stmt_waittill", - "stmt_waittillmatch", "stmt_waittillframeend", "stmt_waitframe", - "stmt_if", "stmt_ifelse", "stmt_while", "stmt_dowhile", "stmt_for", - "stmt_foreach", "stmt_switch", "stmt_case", "stmt_default", "stmt_break", - "stmt_continue", "stmt_return", "stmt_breakpoint", "stmt_prof_begin", - "stmt_prof_end", "expr", "expr_or_empty", "expr_assign", - "expr_increment", "expr_decrement", "expr_ternary", "expr_binary", - "expr_primitive", "expr_complement", "expr_not", "expr_call", - "expr_method", "expr_function", "expr_pointer", "expr_add_array", - "expr_parameters", "expr_arguments", "expr_arguments_no_empty", - "expr_reference", "expr_array", "expr_field", "expr_size", "expr_paren", - "expr_object", "expr_thisthread", "expr_empty_array", "expr_undefined", - "expr_game", "expr_self", "expr_anim", "expr_level", "expr_animation", + "end of file", "error", "invalid token", "/#", "#/", "#inline", + "#include", "#using_animtree", "#animtree", "endon", "notify", "wait", + "waittill", "waittillmatch", "waittillframeend", "waitframe", "if", + "else", "do", "while", "for", "foreach", "in", "switch", "case", + "default", "break", "continue", "return", "breakpoint", "prof_begin", + "prof_end", "thread", "childthread", "thisthread", "call", "true", + "false", "undefined", ".size", "game", "self", "anim", "level", "(", ")", + "{", "}", "[", "]", ",", ".", "::", ":", ";", "?", "++", "--", "<<", + ">>", "||", "&&", "==", "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", + "-=", "*=", "/=", "%=", "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", + "+", "-", "*", "/", "%", "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", + "inline", "include", "declaration", "decl_usingtree", "decl_constant", + "decl_thread", "stmt", "stmt_dev", "stmt_block", "stmt_list", + "stmt_expr", "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", + "stmt_wait", "stmt_waittill", "stmt_waittillmatch", + "stmt_waittillframeend", "stmt_waitframe", "stmt_if", "stmt_ifelse", + "stmt_while", "stmt_dowhile", "stmt_for", "stmt_foreach", "stmt_switch", + "stmt_case", "stmt_default", "stmt_break", "stmt_continue", + "stmt_return", "stmt_breakpoint", "stmt_prof_begin", "stmt_prof_end", + "expr", "expr_or_empty", "expr_assign", "expr_increment", + "expr_decrement", "expr_ternary", "expr_binary", "expr_primitive", + "expr_complement", "expr_not", "expr_call", "expr_method", + "expr_function", "expr_pointer", "expr_add_array", "expr_parameters", + "expr_arguments", "expr_arguments_no_empty", "expr_reference", + "expr_array", "expr_field", "expr_size", "expr_paren", "expr_object", + "expr_thisthread", "expr_empty_array", "expr_undefined", "expr_game", + "expr_self", "expr_anim", "expr_level", "expr_animation", "expr_animtree", "expr_identifier", "expr_path", "expr_istring", "expr_string", "expr_color", "expr_vector", "expr_float", "expr_integer", "expr_false", "expr_true", YY_NULLPTR @@ -3754,661 +3790,704 @@ namespace xsk { namespace gsc { namespace h2 { } - const short parser::yypact_ninf_ = -259; + const short parser::yypact_ninf_ = -269; - const short parser::yytable_ninf_ = -203; + const short parser::yytable_ninf_ = -208; const short parser::yypact_[] = { - 15, -53, -53, -14, -259, 44, 15, -259, -259, -259, - -259, -259, -259, -25, -259, -259, 20, 28, -43, -259, - -259, -259, -259, -33, 745, -259, -259, -259, 38, -7, - -259, -259, -17, 1, -259, 41, -259, -259, -259, -259, - -259, -259, -259, 745, 18, -33, 745, 745, -31, 5, - -259, -259, -259, -259, -259, -259, -259, 1793, -259, -259, - -259, -259, -259, 111, 400, -259, -259, -259, -259, 584, - 768, -259, -259, 773, -259, -259, -259, 1014, 1022, 1036, - 1046, -259, -259, 85, 50, -259, -259, -259, -259, -259, - -259, -259, -259, 42, 58, -33, 71, 86, 79, 84, - 90, 96, 94, 1079, 18, -259, 1876, 88, 115, -259, - -259, -259, -259, -259, -259, -259, 745, 745, 745, 745, - 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, - 745, 745, 745, 745, 745, -259, 812, -33, -259, -259, - 116, 133, 745, -33, -259, 900, -259, -259, 745, 745, - -33, 745, 745, -33, 745, -259, 745, 1523, 745, -259, - 1758, 175, 175, 807, 1907, 1989, 1989, 82, 82, 82, - 82, 1917, 1958, 1948, -59, -59, -259, -259, -259, 1563, - -259, -33, -6, -259, 134, 745, 132, -21, 145, 1002, - 148, 149, 152, 167, 3, 162, 169, 172, 678, 177, - 189, 190, -259, 187, 702, 702, -259, -259, 951, -259, - -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, - -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, - -259, -259, -259, 183, 184, 192, 193, 195, -259, -259, - 573, -259, -259, -259, -259, -28, 1603, 35, 197, 1643, - 77, 199, 1683, 1722, 153, 1876, 745, -259, 134, -259, - 745, 1828, -259, 200, -259, 745, 231, 745, 36, -33, - 745, 156, 201, 202, -259, -259, -259, -259, 1863, -259, - 745, 745, 745, -259, -259, 480, 480, -259, -259, -259, - -259, -259, -259, -259, 212, 213, 221, 223, -259, -259, - 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, - 745, 219, -259, 745, 220, -259, 745, 225, 745, 228, - 1876, 78, -259, 224, 1245, 233, 1279, 226, -259, -259, - -259, 520, -8, 1313, -259, -259, -259, 104, 113, 1523, - 745, 745, 745, 745, 1876, 1876, 1876, 1876, 1876, 1876, - 1876, 1876, 1876, 1876, 1876, 235, 126, 242, 127, 245, - 1347, 745, -259, -259, 1002, 745, 1002, 745, 745, -33, - 58, 236, 237, 1381, 1123, 1167, 1211, 745, -259, 745, - -259, 745, -259, 154, 258, 1415, -259, 1876, 238, 1449, - 274, -259, -259, -259, 241, 244, 745, 246, 745, 248, - 745, 158, 164, 180, -259, 1002, 249, 36, 1002, 745, - -259, -259, 254, -259, 256, -259, 260, -259, -259, -259, - -259, -259, 261, -259, 1483, 253, 276, 277, 1002, 1002, - -259, -259, -259, -259, -259 + 15, -269, -269, 10, 10, -32, -269, 26, 15, -269, + -269, -269, -269, -269, -269, -20, -269, -269, -24, -21, + -49, -269, -269, -269, -269, -30, 858, -269, -269, -269, + 25, -18, -269, -269, -35, -25, -269, 28, -269, -269, + -269, -269, -269, -269, -269, 858, 724, -30, 858, 858, + 55, -17, -269, -269, -269, -269, -269, -269, -269, 2001, + -269, -269, -269, -269, -269, 198, 435, -269, -269, -269, + -269, 589, 690, -269, -269, 814, -269, -269, -269, 819, + 881, 886, 1084, -269, -269, 552, 67, -269, -269, -269, + -269, -269, -269, -269, -269, 80, 34, -30, 75, 107, + 105, 112, 120, 115, 121, 1287, 724, -269, 2084, 118, + 128, -269, -269, -269, -269, -269, -269, -269, 858, 858, + 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, + 858, 858, 858, 858, 858, 858, 858, -269, 925, -30, + -269, -269, 135, 132, 858, -30, -269, 1021, -269, -269, + 858, 858, -30, 858, 858, -30, 858, -269, 858, 1731, + 858, -269, 1966, 117, 117, 920, 2115, 2166, 2166, 309, + 309, 309, 309, 2125, 632, 2156, 54, 54, -269, -269, + -269, 1771, -269, -30, 13, -269, 141, 1072, 858, 136, + 12, 145, 1225, 147, 150, 153, 155, 33, 156, 152, + 157, 791, 161, 166, 173, -269, 177, 130, 130, -269, + -269, -269, 1123, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, 172, 174, 175, + 178, 180, -269, -269, 36, -269, -269, -269, -269, 7, + 1811, 22, 183, 1851, 29, 192, 1891, 1930, 193, 2084, + 858, -269, 141, -269, 858, -269, 1174, 2036, -269, 200, + -269, 858, 228, 858, -4, -30, 858, 158, 199, 202, + -269, -269, -269, -269, 2071, -269, 858, 858, 858, -269, + -269, 69, 69, -269, -269, -269, -269, -269, -269, -269, + 207, 212, 213, 214, -269, -269, 858, 858, 858, 858, + 858, 858, 858, 858, 858, 858, 858, 210, -269, 858, + 211, -269, 858, 215, 858, 217, 2084, 38, -269, -269, + 209, 1453, 221, 1487, 222, -269, -269, -269, 1251, -7, + 1521, -269, -269, -269, 44, 45, 1731, 858, 858, 858, + 858, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, + 2084, 2084, 223, 46, 225, 53, 227, 1555, 858, -269, + -269, 1225, 858, 1225, 858, 858, -30, 34, 224, 232, + 1589, 1331, 1375, 1419, 858, -269, 858, -269, 858, -269, + 77, 256, 1623, -269, 2084, 235, 1657, 255, -269, -269, + -269, 236, 239, 858, 240, 858, 241, 858, 87, 88, + 98, -269, 1225, 246, -4, 1225, 858, -269, -269, 234, + -269, 254, -269, 257, -269, -269, -269, -269, -269, 258, + -269, 1691, 247, 250, 253, 1225, 1225, -269, -269, -269, + -269, -269 }; const unsigned char parser::yydefact_[] = { - 3, 0, 0, 0, 200, 0, 2, 7, 8, 9, - 12, 13, 14, 0, 201, 202, 0, 0, 0, 1, - 4, 5, 6, 171, 0, 10, 11, 204, 0, 0, - 170, 199, 0, 0, 191, 0, 215, 214, 193, 194, - 195, 196, 197, 0, 173, 0, 0, 0, 0, 0, - 203, 205, 208, 210, 211, 212, 213, 0, 85, 86, - 87, 124, 125, 126, 127, 154, 155, 128, 129, 130, - 131, 132, 133, 0, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 0, 144, 145, 146, 147, 148, - 149, 150, 151, 0, 0, 0, 0, 202, 0, 0, - 202, 0, 0, 0, 173, 192, 175, 0, 172, 176, - 153, 152, 207, 209, 198, 16, 0, 0, 0, 0, + 3, 12, 13, 0, 0, 0, 205, 0, 2, 7, + 8, 9, 14, 15, 16, 0, 206, 207, 0, 0, + 0, 1, 4, 5, 6, 176, 0, 10, 11, 209, + 0, 0, 175, 204, 0, 0, 196, 0, 220, 219, + 198, 199, 200, 201, 202, 0, 178, 0, 0, 0, + 0, 0, 208, 210, 213, 215, 216, 217, 218, 0, + 90, 91, 92, 129, 130, 131, 132, 159, 160, 133, + 134, 135, 136, 137, 138, 0, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 0, 149, 150, 151, + 152, 153, 154, 155, 156, 0, 0, 0, 0, 207, + 0, 0, 207, 0, 0, 0, 178, 197, 180, 0, + 177, 181, 158, 157, 212, 214, 203, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 180, 0, 0, 156, 157, - 202, 0, 173, 0, 15, 0, 17, 169, 0, 173, - 0, 0, 173, 0, 0, 181, 0, 175, 0, 168, - 0, 117, 118, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 119, 120, 121, 122, 123, 0, - 179, 0, 0, 172, 177, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 185, 0, 0, + 161, 162, 207, 0, 178, 0, 17, 0, 19, 174, + 0, 178, 0, 0, 178, 0, 0, 186, 0, 180, + 0, 173, 0, 122, 123, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 124, 125, 126, 127, + 128, 0, 184, 0, 0, 177, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 44, 0, 0, 0, 46, 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, 42, 0, 0, 0, 182, 183, 184, 185, - 0, 186, 187, 188, 189, 190, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 174, 0, 178, 0, 158, - 173, 0, 64, 0, 65, 0, 0, 0, 50, 0, - 0, 0, 0, 0, 77, 78, 79, 81, 0, 82, - 173, 173, 0, 182, 183, 101, 103, 43, 45, 53, - 54, 55, 51, 52, 0, 0, 0, 0, 102, 104, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 160, 173, 0, 162, 173, 0, 0, 0, - 105, 0, 59, 0, 0, 0, 0, 0, 47, 48, - 49, 0, 0, 0, 76, 75, 80, 0, 0, 0, - 0, 0, 0, 0, 90, 96, 97, 98, 99, 100, - 91, 92, 93, 95, 94, 0, 0, 0, 0, 0, - 0, 173, 159, 66, 0, 0, 0, 89, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 173, 161, 173, - 163, 173, 206, 0, 67, 0, 69, 88, 0, 0, - 0, 74, 83, 84, 0, 0, 173, 0, 173, 0, - 173, 0, 0, 0, 164, 0, 0, 50, 0, 0, - 56, 58, 172, 61, 172, 63, 172, 165, 166, 167, - 68, 70, 0, 72, 0, 0, 0, 0, 0, 0, - 57, 60, 62, 71, 73 + 0, 0, 0, 0, 0, 49, 0, 0, 0, 51, + 20, 21, 0, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 0, 0, 0, + 187, 188, 189, 190, 0, 191, 192, 193, 194, 195, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, + 0, 183, 0, 163, 178, 47, 0, 0, 69, 0, + 70, 0, 0, 0, 55, 0, 0, 0, 0, 0, + 82, 83, 84, 86, 0, 87, 178, 178, 0, 187, + 188, 106, 108, 48, 50, 58, 59, 60, 56, 57, + 0, 0, 0, 0, 107, 109, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 165, 178, + 0, 167, 178, 0, 0, 0, 110, 0, 46, 64, + 0, 0, 0, 0, 0, 52, 53, 54, 0, 0, + 0, 81, 80, 85, 0, 0, 0, 0, 0, 0, + 0, 95, 101, 102, 103, 104, 105, 96, 97, 98, + 100, 99, 0, 0, 0, 0, 0, 0, 178, 164, + 71, 0, 0, 0, 94, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 178, 166, 178, 168, 178, 211, + 0, 72, 0, 74, 93, 0, 0, 0, 79, 88, + 89, 0, 0, 178, 0, 178, 0, 178, 0, 0, + 0, 169, 0, 0, 55, 0, 0, 61, 63, 177, + 66, 177, 68, 177, 170, 171, 172, 73, 75, 0, + 77, 0, 0, 0, 0, 0, 0, 62, 65, 67, + 76, 78 }; const short parser::yypgoto_[] = { - -259, -259, -259, 300, 320, 324, -259, -259, -259, -178, - -89, -259, -75, -259, -259, -259, -259, -259, -259, -259, - -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, - -259, -259, -259, -259, -259, -259, -259, 191, -259, -258, - -253, -252, -259, -259, -259, -259, -259, -26, -12, -69, - -60, -259, -259, 257, -41, -259, 14, 75, -259, -259, - 157, -259, -259, -259, 247, 259, 273, 331, -259, -259, - 0, 6, -259, -9, -259, -259, -259, 139, -259, -259 + -269, -269, -269, 273, 319, 321, -269, -269, -269, 163, + -269, -94, 143, -83, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, 190, -269, + -268, -260, -258, -269, -269, -269, -269, -269, -130, -26, + -70, -68, -269, -269, 325, -45, -269, -12, 219, -269, + -269, 245, -269, -269, -269, 252, 300, 335, 369, -269, + -269, 0, 6, -269, -9, -269, -269, -269, 137, -269, + -269 }; const short parser::yydefgoto_[] = { - 0, 5, 6, 7, 8, 9, 10, 11, 12, 206, - 207, 208, 327, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 106, 388, 233, - 234, 235, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 29, 107, 183, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92 + 0, 7, 8, 9, 10, 11, 12, 13, 14, 209, + 210, 211, 212, 334, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 108, 395, + 237, 238, 239, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 31, 109, 185, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94 }; const short parser::yytable_[] = { - 13, 15, 15, 108, 138, 146, 13, 16, 17, 28, - 328, 266, 368, 139, 142, 329, 330, 23, 1, 2, - 3, 263, -202, 30, 31, 132, 133, 134, 18, 96, - 288, 264, 97, 100, 14, 4, 94, 259, 98, 101, - 369, 95, 158, 24, 19, 109, 27, 99, 32, 33, - 34, 35, 36, 37, 38, 4, 39, 40, 41, 42, - 43, 112, 113, 108, 104, 105, 32, 33, 45, 35, - 14, 4, 25, 140, 39, 40, 41, 42, 312, 141, - 26, 93, 203, 158, 46, 47, 271, 102, 14, 4, - 204, 205, 27, 114, 144, 147, 53, 54, 55, 56, - 143, 48, 145, 4, 49, 14, 4, 27, 50, 51, - 52, 53, 54, 55, 56, -190, -190, 148, -190, 236, - 315, 362, -190, 14, 4, 158, 158, 142, 149, 150, - 151, -190, 152, 237, -190, -202, 158, 180, 117, 118, - 154, -182, -182, 184, -182, 245, 153, 371, -182, 328, - 248, 141, 158, 251, 329, 330, 372, -182, 142, 238, - -182, 158, 159, 236, 130, 131, 132, 133, 134, 378, - 380, 138, -190, -190, 158, 158, 260, 237, 283, 283, - 139, 258, 236, 181, 262, 272, 384, 265, 386, 245, - 267, 268, 284, 284, 269, 141, 237, 404, -182, -182, - 319, 417, 158, 238, 245, 245, 158, 418, 245, 270, - 141, 141, 158, 274, 141, 57, 138, 138, 238, 238, - 239, 275, 238, 419, 276, 139, 139, 420, 158, 279, - 423, 280, 281, 282, 103, 289, 290, 110, 111, 313, - 140, 316, 283, 323, 291, 292, 141, 293, 325, 113, - 433, 434, 334, 335, 340, 341, 284, 130, 131, 132, - 133, 134, 138, 342, 239, 343, 355, 357, 245, 332, - 361, 139, 359, 405, 141, 365, 363, 377, 367, 239, - 239, 391, 238, 239, 379, 140, 140, 381, 392, 393, - 407, 141, 141, 410, 409, 157, 411, 425, 413, 426, - 415, 421, 240, 427, 428, 430, 20, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 21, 179, 431, 432, - 22, 140, 422, 273, 0, 0, 0, 141, 236, 246, - 236, 0, 249, 239, 0, 252, 240, 253, 0, 255, - 0, 0, 237, 0, 237, 412, 0, 414, 0, 416, - 0, 285, 286, 0, 245, 240, 245, 0, 0, 390, - 141, 0, 141, 0, 0, 0, 261, 0, 238, 236, - 238, 283, 236, 0, 0, 0, 0, 0, 0, 278, - 0, 0, 241, 237, 0, 284, 237, 0, 0, 182, - 0, 0, 236, 236, 242, 245, 247, 245, 245, 250, - 0, 141, 0, 141, 141, 0, 237, 237, 243, 238, - 0, 238, 238, 0, 0, 331, 0, 0, 245, 245, - -183, -183, 0, -183, 141, 141, 241, -183, 0, 239, - 0, 239, 238, 238, 0, 0, -183, 320, 242, -183, - 0, 241, 241, 0, 0, 241, 324, 0, 326, 0, - 0, 333, 243, 242, 242, 0, 0, 242, 0, 0, - 0, 0, 0, 339, 0, 0, 244, 243, 243, 0, - 239, 243, 239, 239, 0, 0, 0, -183, -183, 0, - 0, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 0, 239, 239, 0, 0, 0, 0, 360, - 32, 33, 0, 35, 0, 241, 0, 321, 0, 0, - 244, 240, 0, 240, 0, 0, 136, 242, 0, 137, - 0, 373, 374, 375, 376, 244, 244, 337, 338, 244, - 0, 243, 0, 0, 0, 0, 0, 0, 0, 0, - 32, 33, 0, 35, 0, 0, 385, 0, 387, 389, - 0, 0, 240, 0, 331, 240, 136, 14, 4, 137, - 356, 0, 0, 358, 298, 299, 0, 0, 0, 0, - 294, 295, 0, 296, 297, 240, 240, 0, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 244, - 424, 0, 0, 32, 33, 0, 35, 14, 4, 0, - 0, 241, 0, 241, -184, -184, 0, -184, 383, 136, - 0, -184, 137, 242, 0, 242, 0, 298, 299, 0, - -184, 0, 0, -184, 401, 0, 402, 243, 403, 243, - 0, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 241, 0, 241, 241, 0, 0, 0, 0, - 14, 4, 0, 0, 242, 0, 242, 242, 0, 0, - 0, -184, -184, 0, 0, 241, 241, 0, 243, 0, - 243, 243, 0, 0, 31, 0, 0, 242, 242, 0, - 0, 0, 0, 0, 0, 244, 0, 244, 0, 0, - 0, 243, 243, 0, 0, 0, 0, 0, 32, 33, - 34, 35, 36, 37, 38, 0, 39, 40, 41, 42, - 43, 0, 0, 0, 44, 0, 0, 0, 45, 0, - 277, 0, 32, 33, 0, 35, 244, 0, 244, 244, - 39, 40, 41, 42, 46, 47, 0, 0, 203, 0, - 0, 31, 0, 0, 0, 0, 0, 0, 0, 244, - 244, 48, 0, 0, 49, 14, 4, 27, 50, 51, - 52, 53, 54, 55, 56, 32, 33, 34, 35, 36, - 37, 38, 0, 39, 40, 41, 42, 43, 0, 14, - 4, 44, 0, 0, 0, 45, 0, 0, -185, -185, - 0, -185, 0, 32, 33, -185, 35, 0, 0, 0, - 135, 46, 47, 0, -185, 0, 0, -185, 31, 136, - 0, 0, 137, 0, 0, 0, 0, 0, 48, 0, - 0, 49, 14, 4, 27, 50, 51, 52, 53, 54, - 55, 56, 32, 33, 34, 35, 36, 37, 38, 0, - 39, 40, 41, 42, 43, -185, -185, 0, 104, 0, - 14, 4, 45, 117, 118, 0, 120, 121, 122, 123, - 124, 125, 126, 0, 0, 0, 0, 0, 46, 47, - 0, 0, 0, 0, 0, 0, 127, 128, 129, 130, - 131, 132, 133, 134, 0, 48, 0, 0, 49, 14, - 4, 27, 50, 51, 52, 53, 54, 55, 56, 185, - 0, 0, 186, 187, 188, 0, 189, 190, 191, 192, - 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 32, 33, 0, 35, 0, 0, 0, 0, 39, 40, - 41, 42, 0, 0, 145, 202, 203, 0, 0, 0, - 0, 0, 0, 0, 204, 205, 0, 0, 0, 0, - 185, 0, 0, 186, 187, 188, 0, 189, 190, 191, - 192, 0, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 32, 33, 0, 35, 0, 0, 14, 4, 39, - 40, 41, 42, 0, 0, 145, 287, 203, 0, 0, - 0, 0, 0, 0, 0, 204, 205, 0, 0, 0, - 0, 185, 0, 0, 186, 187, 188, 0, 189, 190, - 191, 192, 0, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 32, 33, 0, 35, 0, 0, 14, 4, - 39, 40, 41, 42, -186, -186, 145, -186, 203, 0, - 0, -186, -187, -187, 0, -187, 204, 205, 0, -187, - -186, 0, 0, -186, 0, 0, -188, -188, -187, -188, - 0, -187, 0, -188, 0, 0, -189, -189, 0, -189, - 0, 0, -188, -189, 0, -188, 0, 0, 0, 14, - 4, 0, -189, 0, 0, -189, 0, 0, 0, 0, - 0, -186, -186, 0, 0, 0, 0, 0, 0, -187, - -187, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 155, -188, -188, 0, 0, 156, 0, 0, - 0, 0, 116, -189, -189, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 395, 0, 0, 0, - 0, 396, 0, 0, 0, 0, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 15, 110, 148, 17, 17, 140, 335, 141, 15, 18, + 19, 30, 20, 98, 336, 375, 337, 240, 1, 2, + 3, 4, 5, 101, 25, 32, 21, 96, 34, 35, + 27, 37, 97, 28, 99, 102, 41, 42, 43, 44, + 100, 103, 29, 376, 206, 300, 301, 111, 302, 303, + 26, 144, 207, 208, 16, 6, 269, 240, 263, -207, + 6, 110, 240, 160, 16, 6, 270, 318, 34, 35, + 95, 37, 160, 116, 321, 142, 104, 289, 289, 160, + 147, 143, 240, 369, 138, 16, 6, 139, 160, 378, + 379, 385, 304, 305, 160, 160, 160, 149, 387, 16, + 6, 34, 35, 160, 37, 6, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 138, 277, 145, + 139, 241, 411, 150, 29, 16, 6, 160, 55, 56, + 57, 58, 424, 425, 146, 242, 240, 160, 160, 182, + 134, 135, 136, 426, 289, 186, 335, 249, 160, 114, + 115, 151, 252, 143, 336, 255, 337, 152, 16, 6, + 153, 241, 34, 35, 154, 37, 241, 155, 160, 156, + 41, 42, 43, 44, 140, 242, 141, 161, 206, 144, + 242, 290, 290, 262, 183, 264, 241, 249, 278, 271, + 268, 273, 249, 143, 274, 242, 242, 275, 143, 276, + 242, 132, 133, 134, 135, 136, 281, 249, 249, 280, + 286, 282, 249, 143, 143, 285, 59, 287, 143, 16, + 6, 140, 140, 141, 141, 288, 295, 319, 296, 297, + -187, -187, 298, -187, 299, 105, 322, -187, 112, 113, + 241, 240, 325, 240, 142, 330, -187, 332, 290, -187, + 143, 347, 341, 115, 242, 342, 348, 349, 350, 362, + 364, 368, 242, 370, 366, 372, 249, 384, 140, 386, + 141, 388, 143, 412, 249, 339, 374, 416, 399, 432, + 143, 22, 240, 398, 289, 240, 400, -187, -187, 414, + 417, 142, 142, 418, 420, 422, 159, 143, 143, 433, + 428, 437, 434, 435, 438, 240, 240, 439, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 23, 181, 24, + 266, 429, 0, 0, 279, 0, 0, 0, 142, 0, + 250, 0, 0, 253, 143, 241, 256, 241, 257, 0, + 259, 0, 0, 0, 0, 272, 0, 0, 419, 242, + 421, 242, 423, 0, 0, 0, 243, 119, 120, 0, + 0, 249, 0, 249, 0, 294, 397, 143, 267, 143, + 0, 0, 0, 0, 0, 0, 241, 0, 290, 241, + 0, 284, 244, 132, 133, 134, 135, 136, 0, 245, + 242, 0, 242, 242, 0, 0, 243, 0, 0, 241, + 241, 243, 249, 0, 249, 249, 0, 0, 143, 0, + 143, 143, 0, 242, 242, 0, 243, 243, 0, 294, + 0, 243, 244, 0, 0, 249, 249, 244, 0, 245, + 0, 143, 143, 0, 245, 0, 0, 246, 0, 0, + 326, 0, 291, 292, 0, 0, 0, 244, 0, 245, + 245, 331, 0, 333, 245, 0, 340, -188, -188, 184, + -188, 0, 0, 0, -188, 0, 251, 0, 346, 254, + 0, 0, 247, -188, 0, 243, -188, 246, 0, 0, + 0, 0, 246, 243, 0, 0, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 246, 246, 0, + 0, 244, 246, 0, 367, 0, 248, 0, 245, 338, + 0, 0, 247, 0, -188, -188, 245, 247, 0, 0, + 0, 0, 0, 0, 391, 0, 393, 380, 381, 382, + 383, 0, 247, 247, 0, 0, 0, 247, 0, 0, + 0, 0, 0, 0, 0, 0, 248, 0, 0, 0, + 0, 248, 392, 0, 394, 396, 246, 0, 0, 0, + 0, 0, 0, 0, 246, 427, 248, 248, 430, 0, + 0, 248, 0, 0, -195, -195, 0, -195, 0, 327, + 243, -195, 243, 0, 0, 0, 144, 0, 440, 441, + -195, 247, 0, -195, -207, 0, 431, 0, 0, 247, + 0, 344, 345, 0, 0, 0, 244, 0, 244, 0, + 0, -189, -189, 245, -189, 245, 0, 0, -189, 0, + 0, 243, 0, 243, 243, 248, 0, -189, 0, 0, + -189, -195, -195, 248, 363, 0, 0, 365, 0, 0, + 0, 0, 0, 0, 243, 243, 0, 244, 0, 338, + 244, 0, 0, 0, 245, 0, 245, 245, 0, 0, + 0, 246, 0, 246, 0, 0, 0, 0, -189, -189, + 244, 244, 0, 0, 0, 0, 0, 245, 245, 0, + 119, 120, 0, 390, 123, 124, 125, 126, 127, 128, + 0, 0, 0, 0, 0, 0, 247, 0, 247, 408, + 0, 409, 246, 410, 246, 246, 132, 133, 134, 135, + 136, 0, -190, -190, 0, -190, 0, 0, 0, -190, + 0, 0, 33, 0, 0, 246, 246, 0, -190, 0, + 248, -190, 248, 0, 0, 0, 0, 247, 0, 247, + 247, 0, 0, 0, 0, 0, 34, 35, 36, 37, + 38, 39, 40, 0, 41, 42, 43, 44, 45, 0, + 247, 247, 106, 107, 0, 0, 47, 0, 0, -190, + -190, 248, 0, 248, 248, 0, 0, 0, 0, 0, + 0, 0, 48, 49, 0, 0, 0, 0, 0, 33, + 0, 0, 0, 0, 248, 248, 0, 0, 0, 50, + 0, 0, 51, 16, 6, 29, 52, 53, 54, 55, + 56, 57, 58, 34, 35, 36, 37, 38, 39, 40, + 0, 41, 42, 43, 44, 45, 0, 0, 0, 46, + 0, 0, 0, 47, 0, 283, 34, 35, 0, 37, + 0, -191, -191, 137, -191, 0, 0, 0, -191, 48, + 49, 0, 138, 0, 0, 139, 33, -191, 0, 0, + -191, 0, 0, 0, 0, 0, 50, 0, 0, 51, + 16, 6, 29, 52, 53, 54, 55, 56, 57, 58, + 34, 35, 36, 37, 38, 39, 40, 0, 41, 42, + 43, 44, 45, 16, 6, 0, 46, 0, -191, -191, + 47, 0, 0, -192, -192, 0, -192, 0, -193, -193, + -192, -193, 0, 0, 0, -193, 48, 49, 0, -192, + 0, 0, -192, 33, -193, 0, 0, -193, 0, 0, + 0, 0, 0, 50, 0, 0, 51, 16, 6, 29, + 52, 53, 54, 55, 56, 57, 58, 34, 35, 36, + 37, 38, 39, 40, 0, 41, 42, 43, 44, 45, + -192, -192, 0, 106, 0, -193, -193, 47, 119, 120, + 0, 122, 123, 124, 125, 126, 127, 128, 0, 0, + 0, 0, 0, 48, 49, 0, 0, 0, 0, 0, + 0, 129, 130, 131, 132, 133, 134, 135, 136, 0, + 50, 0, 0, 51, 16, 6, 29, 52, 53, 54, + 55, 56, 57, 58, 187, 0, 0, 0, 0, 0, + 0, 0, 188, 0, 0, 189, 190, 191, 0, 192, + 193, 194, 195, 0, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 34, 35, 0, 37, 0, 0, 0, + 0, 41, 42, 43, 44, 0, 0, 147, 205, 206, + 0, 0, 0, 0, 0, 187, 265, 207, 208, 0, + 0, 0, 0, 188, 0, 0, 189, 190, 191, 0, + 192, 193, 194, 195, 0, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 34, 35, 0, 37, 0, 0, + 16, 6, 41, 42, 43, 44, -194, -194, 147, -194, + 206, 0, 0, -194, 0, 0, 187, 0, 207, 208, + 0, 0, -194, 0, 188, -194, 0, 189, 190, 191, + 0, 192, 193, 194, 195, 0, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 34, 35, 0, 37, 0, + 0, 16, 6, 41, 42, 43, 44, 0, 0, 147, + 293, 206, 0, -194, -194, 0, 0, 187, 328, 207, + 208, 0, 0, 0, 0, 188, 0, 0, 189, 190, + 191, 0, 192, 193, 194, 195, 0, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 34, 35, 0, 37, + 0, 0, 16, 6, 41, 42, 43, 44, 0, 0, + 147, 0, 206, 0, 0, 0, 0, 0, 187, 0, + 207, 208, 0, 0, 0, 0, 188, 0, 0, 189, + 190, 191, 0, 192, 193, 194, 195, 0, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 34, 35, 0, + 37, 0, 0, 16, 6, 41, 42, 43, 44, 0, + 0, 147, 0, 206, 0, 0, 0, 0, 0, 0, + 0, 207, 208, 34, 35, 0, 37, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, + 0, 0, 139, 0, 0, 0, 0, 304, 305, 0, + 0, 0, 0, 0, 16, 6, 0, 0, 0, 0, + 0, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 157, 0, 0, 0, 0, 158, 0, 0, + 16, 6, 118, 0, 0, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, + 131, 132, 133, 134, 135, 136, 402, 0, 0, 0, + 0, 403, 0, 0, 0, 0, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 397, 0, 0, 0, 0, 398, 0, 0, 0, 0, - 116, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 127, 128, 129, 130, - 131, 132, 133, 134, 399, 0, 0, 0, 0, 400, - 0, 0, 0, 0, 116, 0, 0, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 364, 0, - 127, 128, 129, 130, 131, 132, 133, 134, 116, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 366, 0, 127, 128, 129, 130, 131, 132, - 133, 134, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 370, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 404, 0, 0, 0, 0, 405, 0, 0, 0, 0, + 118, 0, 0, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 129, 130, 131, 132, + 133, 134, 135, 136, 406, 0, 0, 0, 0, 407, + 0, 0, 0, 0, 118, 0, 0, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 371, 0, + 129, 130, 131, 132, 133, 134, 135, 136, 118, 0, + 0, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 373, 0, 129, 130, 131, 132, 133, 134, + 135, 136, 118, 0, 0, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 377, 0, 129, 130, + 131, 132, 133, 134, 135, 136, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 382, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 116, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 394, 0, 127, 128, 129, 130, - 131, 132, 133, 134, 116, 0, 0, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 406, 0, - 127, 128, 129, 130, 131, 132, 133, 134, 116, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 408, 0, 127, 128, 129, 130, 131, 132, - 133, 134, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 429, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 389, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 118, 0, 0, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 401, 0, 129, 130, 131, 132, + 133, 134, 135, 136, 118, 0, 0, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 413, 0, + 129, 130, 131, 132, 133, 134, 135, 136, 118, 0, + 0, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 415, 0, 129, 130, 131, 132, 133, 134, + 135, 136, 118, 0, 0, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 436, 0, 129, 130, + 131, 132, 133, 134, 135, 136, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 254, 0, 0, 0, 0, 0, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 258, 0, 0, 0, 0, 0, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 257, 0, 0, 0, 0, 0, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 261, 0, 0, 0, 0, 0, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 311, 0, 0, 0, 0, 0, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 317, 0, 0, 0, 0, 0, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 314, 0, 0, 0, 0, 0, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 320, 0, 0, 0, 0, 0, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 317, 0, 0, 0, 0, 0, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 323, 0, 0, 0, 0, 0, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 318, 0, 0, 0, 0, 116, 0, 0, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 0, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 324, 0, 0, 0, 0, 118, 0, 0, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 127, 128, 129, 130, 131, 132, 133, 134, 256, - 0, 116, 0, 0, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 127, 128, 129, - 130, 131, 132, 133, 134, 115, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 129, 130, 131, 132, 133, 134, 135, 136, 260, + 0, 118, 0, 0, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 129, 130, 131, + 132, 133, 134, 135, 136, 117, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 322, 116, 0, 0, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 127, 128, 129, - 130, 131, 132, 133, 134, 336, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 116, - 0, 0, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 0, 0, 0, 0, 0, 127, 128, 129, 130, 131, - 132, 133, 134, 117, 118, 0, 0, 121, 122, 123, - 124, 125, 126, 117, 118, 0, 0, 121, 122, 123, - 124, 125, 126, 0, 0, 0, 127, 128, 129, 130, - 131, 132, 133, 134, 0, 0, 0, 128, 129, 130, - 131, 132, 133, 134, 117, 118, 0, 0, 121, 122, - 123, 124, 125, 126, 117, 118, 0, 0, 121, 122, - 123, 124, 125, 126, 0, 0, 0, 0, 128, 0, - 130, 131, 132, 133, 134, 0, 0, 0, 0, 0, - 130, 131, 132, 133, 134, 117, 118, 0, 0, 0, - 0, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 130, 131, 132, 133, 134 + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 329, 118, 0, 0, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 129, 130, 131, + 132, 133, 134, 135, 136, 343, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 118, + 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 0, 0, 0, 0, 0, 129, 130, 131, 132, 133, + 134, 135, 136, 119, 120, 0, 0, 123, 124, 125, + 126, 127, 128, 119, 120, 0, 0, 123, 124, 125, + 126, 127, 128, 0, 0, 0, 129, 130, 131, 132, + 133, 134, 135, 136, 0, 0, 0, 130, 131, 132, + 133, 134, 135, 136, 119, 120, 0, 0, 123, 124, + 125, 126, 127, 128, 119, 120, 0, 0, 0, 0, + 125, 126, 127, 128, 0, 0, 0, 0, 130, 0, + 132, 133, 134, 135, 136, 0, 0, 0, 0, 0, + 132, 133, 134, 135, 136 }; const short parser::yycheck_[] = { - 0, 1, 2, 44, 73, 94, 6, 1, 2, 18, - 268, 189, 20, 73, 42, 268, 268, 42, 3, 4, - 5, 42, 50, 23, 6, 84, 85, 86, 42, 46, - 208, 52, 32, 33, 87, 88, 43, 43, 32, 33, - 48, 48, 48, 68, 0, 45, 89, 46, 30, 31, - 32, 33, 34, 35, 36, 88, 38, 39, 40, 41, - 42, 92, 93, 104, 46, 47, 30, 31, 50, 33, - 87, 88, 52, 73, 38, 39, 40, 41, 43, 73, - 52, 43, 46, 48, 66, 67, 83, 46, 87, 88, - 54, 55, 89, 88, 52, 95, 93, 94, 95, 96, - 50, 83, 44, 88, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 30, 31, 46, 33, 145, - 43, 43, 37, 87, 88, 48, 48, 42, 42, 50, - 46, 46, 42, 145, 49, 50, 48, 137, 56, 57, - 46, 30, 31, 143, 33, 145, 50, 43, 37, 407, - 150, 145, 48, 153, 407, 407, 43, 46, 42, 145, - 49, 48, 47, 189, 82, 83, 84, 85, 86, 43, - 43, 240, 87, 88, 48, 48, 42, 189, 204, 205, - 240, 181, 208, 50, 52, 194, 364, 42, 366, 189, - 42, 42, 204, 205, 42, 189, 208, 43, 87, 88, - 47, 43, 48, 189, 204, 205, 48, 43, 208, 42, - 204, 205, 48, 51, 208, 24, 285, 286, 204, 205, - 145, 52, 208, 43, 52, 285, 286, 405, 48, 52, - 408, 42, 42, 46, 43, 52, 52, 46, 47, 42, - 240, 42, 268, 43, 52, 52, 240, 52, 17, 93, - 428, 429, 51, 51, 42, 42, 268, 82, 83, 84, - 85, 86, 331, 42, 189, 42, 47, 47, 268, 269, - 42, 331, 47, 15, 268, 42, 52, 42, 52, 204, - 205, 370, 268, 208, 42, 285, 286, 42, 52, 52, - 52, 285, 286, 52, 20, 104, 52, 43, 52, 43, - 52, 52, 145, 43, 43, 52, 6, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 6, 136, 52, 52, - 6, 331, 407, 194, -1, -1, -1, 331, 364, 148, - 366, -1, 151, 268, -1, 154, 189, 156, -1, 158, - -1, -1, 364, -1, 366, 396, -1, 398, -1, 400, - -1, 204, 205, -1, 364, 208, 366, -1, -1, 369, - 364, -1, 366, -1, -1, -1, 185, -1, 364, 405, - 366, 407, 408, -1, -1, -1, -1, -1, -1, 198, - -1, -1, 145, 405, -1, 407, 408, -1, -1, 142, - -1, -1, 428, 429, 145, 405, 149, 407, 408, 152, - -1, 405, -1, 407, 408, -1, 428, 429, 145, 405, - -1, 407, 408, -1, -1, 268, -1, -1, 428, 429, - 30, 31, -1, 33, 428, 429, 189, 37, -1, 364, - -1, 366, 428, 429, -1, -1, 46, 256, 189, 49, - -1, 204, 205, -1, -1, 208, 265, -1, 267, -1, - -1, 270, 189, 204, 205, -1, -1, 208, -1, -1, - -1, -1, -1, 282, -1, -1, 145, 204, 205, -1, - 405, 208, 407, 408, -1, -1, -1, 87, 88, -1, - -1, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, -1, 428, 429, -1, -1, -1, -1, 318, - 30, 31, -1, 33, -1, 268, -1, 260, -1, -1, - 189, 364, -1, 366, -1, -1, 46, 268, -1, 49, - -1, 340, 341, 342, 343, 204, 205, 280, 281, 208, - -1, 268, -1, -1, -1, -1, -1, -1, -1, -1, - 30, 31, -1, 33, -1, -1, 365, -1, 367, 368, - -1, -1, 405, -1, 407, 408, 46, 87, 88, 49, - 313, -1, -1, 316, 54, 55, -1, -1, -1, -1, - 7, 8, -1, 10, 11, 428, 429, -1, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 268, - 409, -1, -1, 30, 31, -1, 33, 87, 88, -1, - -1, 364, -1, 366, 30, 31, -1, 33, 361, 46, - -1, 37, 49, 364, -1, 366, -1, 54, 55, -1, - 46, -1, -1, 49, 377, -1, 379, 364, 381, 366, - -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 405, -1, 407, 408, -1, -1, -1, -1, - 87, 88, -1, -1, 405, -1, 407, 408, -1, -1, - -1, 87, 88, -1, -1, 428, 429, -1, 405, -1, - 407, 408, -1, -1, 6, -1, -1, 428, 429, -1, - -1, -1, -1, -1, -1, 364, -1, 366, -1, -1, - -1, 428, 429, -1, -1, -1, -1, -1, 30, 31, - 32, 33, 34, 35, 36, -1, 38, 39, 40, 41, - 42, -1, -1, -1, 46, -1, -1, -1, 50, -1, - 52, -1, 30, 31, -1, 33, 405, -1, 407, 408, - 38, 39, 40, 41, 66, 67, -1, -1, 46, -1, - -1, 6, -1, -1, -1, -1, -1, -1, -1, 428, - 429, 83, -1, -1, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 30, 31, 32, 33, 34, - 35, 36, -1, 38, 39, 40, 41, 42, -1, 87, - 88, 46, -1, -1, -1, 50, -1, -1, 30, 31, - -1, 33, -1, 30, 31, 37, 33, -1, -1, -1, - 37, 66, 67, -1, 46, -1, -1, 49, 6, 46, - -1, -1, 49, -1, -1, -1, -1, -1, 83, -1, - -1, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 30, 31, 32, 33, 34, 35, 36, -1, - 38, 39, 40, 41, 42, 87, 88, -1, 46, -1, - 87, 88, 50, 56, 57, -1, 59, 60, 61, 62, - 63, 64, 65, -1, -1, -1, -1, -1, 66, 67, - -1, -1, -1, -1, -1, -1, 79, 80, 81, 82, - 83, 84, 85, 86, -1, 83, -1, -1, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 9, - -1, -1, 12, 13, 14, -1, 16, 17, 18, 19, - -1, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, -1, 33, -1, -1, -1, -1, 38, 39, - 40, 41, -1, -1, 44, 45, 46, -1, -1, -1, - -1, -1, -1, -1, 54, 55, -1, -1, -1, -1, - 9, -1, -1, 12, 13, 14, -1, 16, 17, 18, - 19, -1, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, -1, 33, -1, -1, 87, 88, 38, - 39, 40, 41, -1, -1, 44, 45, 46, -1, -1, - -1, -1, -1, -1, -1, 54, 55, -1, -1, -1, - -1, 9, -1, -1, 12, 13, 14, -1, 16, 17, - 18, 19, -1, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, -1, 33, -1, -1, 87, 88, - 38, 39, 40, 41, 30, 31, 44, 33, 46, -1, - -1, 37, 30, 31, -1, 33, 54, 55, -1, 37, - 46, -1, -1, 49, -1, -1, 30, 31, 46, 33, - -1, 49, -1, 37, -1, -1, 30, 31, -1, 33, - -1, -1, 46, 37, -1, 49, -1, -1, -1, 87, - 88, -1, 46, -1, -1, 49, -1, -1, -1, -1, - -1, 87, 88, -1, -1, -1, -1, -1, -1, 87, - 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 43, 87, 88, -1, -1, 48, -1, -1, - -1, -1, 53, 87, 88, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 79, 80, - 81, 82, 83, 84, 85, 86, 43, -1, -1, -1, - -1, 48, -1, -1, -1, -1, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + 0, 46, 96, 3, 4, 75, 274, 75, 8, 3, + 4, 20, 44, 48, 274, 22, 274, 147, 3, 4, + 5, 6, 7, 48, 44, 25, 0, 45, 32, 33, + 54, 35, 50, 54, 34, 35, 40, 41, 42, 43, + 34, 35, 91, 50, 48, 9, 10, 47, 12, 13, + 70, 44, 56, 57, 89, 90, 44, 187, 45, 52, + 90, 106, 192, 50, 89, 90, 54, 45, 32, 33, + 45, 35, 50, 90, 45, 75, 48, 207, 208, 50, + 46, 75, 212, 45, 48, 89, 90, 51, 50, 45, + 45, 45, 56, 57, 50, 50, 50, 97, 45, 89, + 90, 32, 33, 50, 35, 90, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 48, 85, 52, + 51, 147, 45, 48, 91, 89, 90, 50, 95, 96, + 97, 98, 45, 45, 54, 147, 266, 50, 50, 139, + 86, 87, 88, 45, 274, 145, 414, 147, 50, 94, + 95, 44, 152, 147, 414, 155, 414, 52, 89, 90, + 48, 187, 32, 33, 44, 35, 192, 52, 50, 48, + 40, 41, 42, 43, 244, 187, 244, 49, 48, 44, + 192, 207, 208, 183, 52, 44, 212, 187, 197, 44, + 54, 44, 192, 187, 44, 207, 208, 44, 192, 44, + 212, 84, 85, 86, 87, 88, 54, 207, 208, 53, + 44, 54, 212, 207, 208, 54, 26, 44, 212, 89, + 90, 291, 292, 291, 292, 48, 54, 44, 54, 54, + 32, 33, 54, 35, 54, 45, 44, 39, 48, 49, + 266, 371, 49, 373, 244, 45, 48, 19, 274, 51, + 244, 44, 53, 95, 266, 53, 44, 44, 44, 49, + 49, 44, 274, 54, 49, 44, 266, 44, 338, 44, + 338, 44, 266, 17, 274, 275, 54, 22, 54, 45, + 274, 8, 412, 377, 414, 415, 54, 89, 90, 54, + 54, 291, 292, 54, 54, 54, 106, 291, 292, 45, + 54, 54, 45, 45, 54, 435, 436, 54, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 8, 138, 8, + 187, 414, -1, -1, 197, -1, -1, -1, 338, -1, + 150, -1, -1, 153, 338, 371, 156, 373, 158, -1, + 160, -1, -1, -1, -1, 192, -1, -1, 403, 371, + 405, 373, 407, -1, -1, -1, 147, 58, 59, -1, + -1, 371, -1, 373, -1, 212, 376, 371, 188, 373, + -1, -1, -1, -1, -1, -1, 412, -1, 414, 415, + -1, 201, 147, 84, 85, 86, 87, 88, -1, 147, + 412, -1, 414, 415, -1, -1, 187, -1, -1, 435, + 436, 192, 412, -1, 414, 415, -1, -1, 412, -1, + 414, 415, -1, 435, 436, -1, 207, 208, -1, 266, + -1, 212, 187, -1, -1, 435, 436, 192, -1, 187, + -1, 435, 436, -1, 192, -1, -1, 147, -1, -1, + 260, -1, 207, 208, -1, -1, -1, 212, -1, 207, + 208, 271, -1, 273, 212, -1, 276, 32, 33, 144, + 35, -1, -1, -1, 39, -1, 151, -1, 288, 154, + -1, -1, 147, 48, -1, 266, 51, 187, -1, -1, + -1, -1, 192, 274, -1, -1, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 207, 208, -1, + -1, 266, 212, -1, 324, -1, 147, -1, 266, 274, + -1, -1, 187, -1, 89, 90, 274, 192, -1, -1, + -1, -1, -1, -1, 371, -1, 373, 347, 348, 349, + 350, -1, 207, 208, -1, -1, -1, 212, -1, -1, + -1, -1, -1, -1, -1, -1, 187, -1, -1, -1, + -1, 192, 372, -1, 374, 375, 266, -1, -1, -1, + -1, -1, -1, -1, 274, 412, 207, 208, 415, -1, + -1, 212, -1, -1, 32, 33, -1, 35, -1, 264, + 371, 39, 373, -1, -1, -1, 44, -1, 435, 436, + 48, 266, -1, 51, 52, -1, 416, -1, -1, 274, + -1, 286, 287, -1, -1, -1, 371, -1, 373, -1, + -1, 32, 33, 371, 35, 373, -1, -1, 39, -1, + -1, 412, -1, 414, 415, 266, -1, 48, -1, -1, + 51, 89, 90, 274, 319, -1, -1, 322, -1, -1, + -1, -1, -1, -1, 435, 436, -1, 412, -1, 414, + 415, -1, -1, -1, 412, -1, 414, 415, -1, -1, + -1, 371, -1, 373, -1, -1, -1, -1, 89, 90, + 435, 436, -1, -1, -1, -1, -1, 435, 436, -1, + 58, 59, -1, 368, 62, 63, 64, 65, 66, 67, + -1, -1, -1, -1, -1, -1, 371, -1, 373, 384, + -1, 386, 412, 388, 414, 415, 84, 85, 86, 87, + 88, -1, 32, 33, -1, 35, -1, -1, -1, 39, + -1, -1, 8, -1, -1, 435, 436, -1, 48, -1, + 371, 51, 373, -1, -1, -1, -1, 412, -1, 414, + 415, -1, -1, -1, -1, -1, 32, 33, 34, 35, + 36, 37, 38, -1, 40, 41, 42, 43, 44, -1, + 435, 436, 48, 49, -1, -1, 52, -1, -1, 89, + 90, 412, -1, 414, 415, -1, -1, -1, -1, -1, + -1, -1, 68, 69, -1, -1, -1, -1, -1, 8, + -1, -1, -1, -1, 435, 436, -1, -1, -1, 85, + -1, -1, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 32, 33, 34, 35, 36, 37, 38, + -1, 40, 41, 42, 43, 44, -1, -1, -1, 48, + -1, -1, -1, 52, -1, 54, 32, 33, -1, 35, + -1, 32, 33, 39, 35, -1, -1, -1, 39, 68, + 69, -1, 48, -1, -1, 51, 8, 48, -1, -1, + 51, -1, -1, -1, -1, -1, 85, -1, -1, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 32, 33, 34, 35, 36, 37, 38, -1, 40, 41, + 42, 43, 44, 89, 90, -1, 48, -1, 89, 90, + 52, -1, -1, 32, 33, -1, 35, -1, 32, 33, + 39, 35, -1, -1, -1, 39, 68, 69, -1, 48, + -1, -1, 51, 8, 48, -1, -1, 51, -1, -1, + -1, -1, -1, 85, -1, -1, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 32, 33, 34, + 35, 36, 37, 38, -1, 40, 41, 42, 43, 44, + 89, 90, -1, 48, -1, 89, 90, 52, 58, 59, + -1, 61, 62, 63, 64, 65, 66, 67, -1, -1, + -1, -1, -1, 68, 69, -1, -1, -1, -1, -1, + -1, 81, 82, 83, 84, 85, 86, 87, 88, -1, + 85, -1, -1, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 3, -1, -1, -1, -1, -1, + -1, -1, 11, -1, -1, 14, 15, 16, -1, 18, + 19, 20, 21, -1, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, -1, 35, -1, -1, -1, + -1, 40, 41, 42, 43, -1, -1, 46, 47, 48, + -1, -1, -1, -1, -1, 3, 4, 56, 57, -1, + -1, -1, -1, 11, -1, -1, 14, 15, 16, -1, + 18, 19, 20, 21, -1, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, -1, 35, -1, -1, + 89, 90, 40, 41, 42, 43, 32, 33, 46, 35, + 48, -1, -1, 39, -1, -1, 3, -1, 56, 57, + -1, -1, 48, -1, 11, 51, -1, 14, 15, 16, + -1, 18, 19, 20, 21, -1, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, -1, 35, -1, + -1, 89, 90, 40, 41, 42, 43, -1, -1, 46, + 47, 48, -1, 89, 90, -1, -1, 3, 4, 56, + 57, -1, -1, -1, -1, 11, -1, -1, 14, 15, + 16, -1, 18, 19, 20, 21, -1, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, -1, 35, + -1, -1, 89, 90, 40, 41, 42, 43, -1, -1, + 46, -1, 48, -1, -1, -1, -1, -1, 3, -1, + 56, 57, -1, -1, -1, -1, 11, -1, -1, 14, + 15, 16, -1, 18, 19, 20, 21, -1, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, + 35, -1, -1, 89, 90, 40, 41, 42, 43, -1, + -1, 46, -1, 48, -1, -1, -1, -1, -1, -1, + -1, 56, 57, 32, 33, -1, 35, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 48, + -1, -1, 51, -1, -1, -1, -1, 56, 57, -1, + -1, -1, -1, -1, 89, 90, -1, -1, -1, -1, + -1, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 45, -1, -1, -1, -1, 50, -1, -1, + 89, 90, 55, -1, -1, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 81, 82, + 83, 84, 85, 86, 87, 88, 45, -1, -1, -1, + -1, 50, -1, -1, -1, -1, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 43, -1, -1, -1, -1, 48, -1, -1, -1, -1, - 53, -1, -1, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 79, 80, 81, 82, - 83, 84, 85, 86, 43, -1, -1, -1, -1, 48, - -1, -1, -1, -1, 53, -1, -1, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 43, -1, - 79, 80, 81, 82, 83, 84, 85, 86, 53, -1, - -1, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 43, -1, 79, 80, 81, 82, 83, 84, - 85, 86, 53, -1, -1, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 43, -1, 79, 80, - 81, 82, 83, 84, 85, 86, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 45, -1, -1, -1, -1, 50, -1, -1, -1, -1, + 55, -1, -1, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 81, 82, 83, 84, + 85, 86, 87, 88, 45, -1, -1, -1, -1, 50, + -1, -1, -1, -1, 55, -1, -1, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 45, -1, + 81, 82, 83, 84, 85, 86, 87, 88, 55, -1, + -1, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 45, -1, 81, 82, 83, 84, 85, 86, + 87, 88, 55, -1, -1, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 45, -1, 81, 82, + 83, 84, 85, 86, 87, 88, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 43, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 53, -1, -1, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 43, -1, 79, 80, 81, 82, - 83, 84, 85, 86, 53, -1, -1, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 43, -1, - 79, 80, 81, 82, 83, 84, 85, 86, 53, -1, - -1, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 43, -1, 79, 80, 81, 82, 83, 84, - 85, 86, 53, -1, -1, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 43, -1, 79, 80, - 81, 82, 83, 84, 85, 86, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + 45, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 55, -1, -1, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 45, -1, 81, 82, 83, 84, + 85, 86, 87, 88, 55, -1, -1, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 45, -1, + 81, 82, 83, 84, 85, 86, 87, 88, 55, -1, + -1, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 45, -1, 81, 82, 83, 84, 85, 86, + 87, 88, 55, -1, -1, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 45, -1, 81, 82, + 83, 84, 85, 86, 87, 88, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 47, -1, -1, -1, -1, -1, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 49, -1, -1, -1, -1, -1, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 47, -1, -1, -1, -1, -1, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 49, -1, -1, -1, -1, -1, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 47, -1, -1, -1, -1, -1, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 49, -1, -1, -1, -1, -1, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 47, -1, -1, -1, -1, -1, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 49, -1, -1, -1, -1, -1, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 47, -1, -1, -1, -1, -1, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 49, -1, -1, -1, -1, -1, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 48, -1, -1, -1, -1, 53, -1, -1, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, -1, -1, + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 50, -1, -1, -1, -1, 55, -1, -1, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 79, 80, 81, 82, 83, 84, 85, 86, 51, - -1, 53, -1, -1, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, - 82, 83, 84, 85, 86, 52, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + -1, 81, 82, 83, 84, 85, 86, 87, 88, 53, + -1, 55, -1, -1, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 81, 82, 83, + 84, 85, 86, 87, 88, 54, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 52, 53, -1, -1, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, - 82, 83, 84, 85, 86, 52, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 53, - -1, -1, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 79, 80, 81, 82, 83, 84, 85, 86, - -1, -1, -1, -1, -1, 79, 80, 81, 82, 83, - 84, 85, 86, 56, 57, -1, -1, 60, 61, 62, - 63, 64, 65, 56, 57, -1, -1, 60, 61, 62, - 63, 64, 65, -1, -1, -1, 79, 80, 81, 82, - 83, 84, 85, 86, -1, -1, -1, 80, 81, 82, - 83, 84, 85, 86, 56, 57, -1, -1, 60, 61, - 62, 63, 64, 65, 56, 57, -1, -1, 60, 61, - 62, 63, 64, 65, -1, -1, -1, -1, 80, -1, - 82, 83, 84, 85, 86, -1, -1, -1, -1, -1, - 82, 83, 84, 85, 86, 56, 57, -1, -1, -1, - -1, 62, 63, 64, 65, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 82, 83, 84, 85, 86 + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 54, 55, -1, -1, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 81, 82, 83, + 84, 85, 86, 87, 88, 54, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 55, + -1, -1, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 81, 82, 83, 84, 85, 86, 87, 88, + -1, -1, -1, -1, -1, 81, 82, 83, 84, 85, + 86, 87, 88, 58, 59, -1, -1, 62, 63, 64, + 65, 66, 67, 58, 59, -1, -1, 62, 63, 64, + 65, 66, 67, -1, -1, -1, 81, 82, 83, 84, + 85, 86, 87, 88, -1, -1, -1, 82, 83, 84, + 85, 86, 87, 88, 58, 59, -1, -1, 62, 63, + 64, 65, 66, 67, 58, 59, -1, -1, -1, -1, + 64, 65, 66, 67, -1, -1, -1, -1, 82, -1, + 84, 85, 86, 87, 88, -1, -1, -1, -1, -1, + 84, 85, 86, 87, 88 }; const unsigned char parser::yystos_[] = { - 0, 3, 4, 5, 88, 107, 108, 109, 110, 111, - 112, 113, 114, 176, 87, 176, 177, 177, 42, 0, - 109, 110, 111, 42, 68, 52, 52, 89, 179, 158, - 176, 6, 30, 31, 32, 33, 34, 35, 36, 38, - 39, 40, 41, 42, 46, 50, 66, 67, 83, 86, - 90, 91, 92, 93, 94, 95, 96, 143, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 43, 43, 48, 46, 176, 177, 46, - 176, 177, 46, 143, 46, 47, 143, 159, 160, 176, - 143, 143, 92, 93, 88, 52, 53, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 79, 80, 81, - 82, 83, 84, 85, 86, 37, 46, 49, 155, 156, - 176, 177, 42, 50, 52, 44, 116, 176, 46, 42, - 50, 46, 42, 50, 46, 43, 48, 143, 48, 47, - 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, - 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, - 176, 50, 159, 160, 176, 9, 12, 13, 14, 16, - 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 45, 46, 54, 55, 115, 116, 117, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 145, 146, 147, 153, 154, 162, 163, - 166, 170, 171, 172, 173, 176, 143, 159, 176, 143, - 159, 176, 143, 143, 47, 143, 51, 47, 176, 43, - 42, 143, 52, 42, 52, 42, 115, 42, 42, 42, - 42, 83, 179, 183, 51, 52, 52, 52, 143, 52, - 42, 42, 46, 153, 154, 166, 166, 45, 115, 52, - 52, 52, 52, 52, 7, 8, 10, 11, 54, 55, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 47, 43, 42, 47, 43, 42, 47, 48, 47, - 143, 159, 52, 43, 143, 17, 143, 118, 145, 146, - 147, 166, 176, 143, 51, 51, 52, 159, 159, 143, - 42, 42, 42, 42, 143, 143, 143, 143, 143, 143, - 143, 143, 143, 143, 143, 47, 159, 47, 159, 47, - 143, 42, 43, 52, 43, 42, 43, 52, 20, 48, - 43, 43, 43, 143, 143, 143, 143, 42, 43, 42, - 43, 42, 43, 159, 115, 143, 115, 143, 144, 143, - 176, 116, 52, 52, 43, 43, 48, 43, 48, 43, - 48, 159, 159, 159, 43, 15, 43, 52, 43, 20, - 52, 52, 160, 52, 160, 52, 160, 43, 43, 43, - 115, 52, 118, 115, 143, 43, 43, 43, 43, 43, - 52, 52, 52, 115, 115 + 0, 3, 4, 5, 6, 7, 90, 109, 110, 111, + 112, 113, 114, 115, 116, 179, 89, 179, 180, 180, + 44, 0, 111, 112, 113, 44, 70, 54, 54, 91, + 182, 161, 179, 8, 32, 33, 34, 35, 36, 37, + 38, 40, 41, 42, 43, 44, 48, 52, 68, 69, + 85, 88, 92, 93, 94, 95, 96, 97, 98, 146, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 45, 45, 50, 48, 179, + 180, 48, 179, 180, 48, 146, 48, 49, 146, 162, + 163, 179, 146, 146, 94, 95, 90, 54, 55, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 81, + 82, 83, 84, 85, 86, 87, 88, 39, 48, 51, + 158, 159, 179, 180, 44, 52, 54, 46, 119, 179, + 48, 44, 52, 48, 44, 52, 48, 45, 50, 146, + 50, 49, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 179, 52, 162, 163, 179, 3, 11, 14, + 15, 16, 18, 19, 20, 21, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 47, 48, 56, 57, 117, + 118, 119, 120, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 148, 149, 150, + 156, 157, 165, 166, 169, 173, 174, 175, 176, 179, + 146, 162, 179, 146, 162, 179, 146, 146, 49, 146, + 53, 49, 179, 45, 44, 4, 120, 146, 54, 44, + 54, 44, 117, 44, 44, 44, 44, 85, 182, 186, + 53, 54, 54, 54, 146, 54, 44, 44, 48, 156, + 157, 169, 169, 47, 117, 54, 54, 54, 54, 54, + 9, 10, 12, 13, 56, 57, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 49, 45, 44, + 49, 45, 44, 49, 50, 49, 146, 162, 4, 54, + 45, 146, 19, 146, 121, 148, 149, 150, 169, 179, + 146, 53, 53, 54, 162, 162, 146, 44, 44, 44, + 44, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 49, 162, 49, 162, 49, 146, 44, 45, + 54, 45, 44, 45, 54, 22, 50, 45, 45, 45, + 146, 146, 146, 146, 44, 45, 44, 45, 44, 45, + 162, 117, 146, 117, 146, 147, 146, 179, 119, 54, + 54, 45, 45, 50, 45, 50, 45, 50, 162, 162, + 162, 45, 17, 45, 54, 45, 22, 54, 54, 163, + 54, 163, 54, 163, 45, 45, 45, 117, 54, 121, + 117, 146, 45, 45, 45, 45, 45, 54, 54, 54, + 117, 117 }; const unsigned char parser::yyr1_[] = { - 0, 106, 107, 107, 108, 108, 108, 108, 108, 108, - 109, 110, 111, 111, 111, 112, 113, 114, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 116, 116, 117, 117, 118, 118, 118, - 118, 119, 119, 120, 120, 120, 121, 122, 122, 123, - 124, 124, 125, 125, 126, 127, 127, 128, 129, 130, - 131, 132, 133, 133, 134, 135, 135, 136, 137, 138, - 139, 139, 140, 141, 142, 143, 143, 143, 144, 144, - 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, - 145, 146, 146, 147, 147, 148, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 151, 152, 153, 153, 154, 154, 155, 155, - 155, 155, 155, 155, 156, 156, 156, 156, 157, 158, - 158, 158, 159, 159, 160, 160, 161, 161, 162, 163, - 164, 165, 166, 166, 166, 166, 166, 166, 166, 166, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 177, 178, 179, 180, 181, 182, 182, 183, - 183, 183, 183, 183, 184, 185 + 0, 108, 109, 109, 110, 110, 110, 110, 110, 110, + 111, 112, 113, 113, 113, 113, 113, 114, 115, 116, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 118, 118, 119, 119, + 120, 120, 121, 121, 121, 121, 122, 122, 123, 123, + 123, 124, 125, 125, 126, 127, 127, 128, 128, 129, + 130, 130, 131, 132, 133, 134, 135, 136, 136, 137, + 138, 138, 139, 140, 141, 142, 142, 143, 144, 145, + 146, 146, 146, 147, 147, 148, 148, 148, 148, 148, + 148, 148, 148, 148, 148, 148, 149, 149, 150, 150, + 151, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 154, 155, 156, + 156, 157, 157, 158, 158, 158, 158, 158, 158, 159, + 159, 159, 159, 160, 161, 161, 161, 162, 162, 163, + 163, 164, 164, 165, 166, 167, 168, 169, 169, 169, + 169, 169, 169, 169, 169, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 180, 181, 182, + 183, 184, 185, 185, 186, 186, 186, 186, 186, 187, + 188 }; const signed char parser::yyr2_[] = { 0, 2, 1, 0, 2, 2, 2, 1, 1, 1, - 3, 3, 1, 1, 1, 5, 4, 5, 1, 1, + 3, 3, 1, 1, 1, 1, 1, 5, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 3, 2, 2, 1, 1, 1, 1, - 0, 2, 2, 2, 2, 2, 6, 8, 6, 3, - 8, 6, 8, 6, 2, 2, 4, 5, 7, 5, - 7, 9, 7, 9, 5, 3, 3, 2, 2, 2, - 3, 2, 2, 5, 5, 1, 1, 1, 1, 0, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 2, 2, 2, 2, 5, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 3, 2, 3, 2, + 2, 1, 1, 1, 1, 0, 2, 2, 2, 2, + 2, 6, 8, 6, 3, 8, 6, 8, 6, 2, + 2, 4, 5, 7, 5, 7, 9, 7, 9, 5, + 3, 3, 2, 2, 2, 3, 2, 2, 5, 5, + 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, + 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 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, 1, 1, 2, 2, 4, 6, - 5, 7, 5, 7, 8, 9, 9, 9, 3, 3, - 1, 0, 1, 0, 3, 1, 2, 3, 4, 3, - 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, - 1, 1, 1, 1, 1, 1, 7, 2, 1, 2, - 1, 1, 1, 1, 1, 1 + 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, + 1, 2, 2, 4, 6, 5, 7, 5, 7, 8, + 9, 9, 9, 3, 3, 1, 0, 1, 0, 3, + 1, 2, 3, 4, 3, 2, 3, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, + 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, + 1, 7, 2, 1, 2, 1, 1, 1, 1, 1, + 1 }; @@ -4418,28 +4497,29 @@ namespace xsk { namespace gsc { namespace h2 { const short parser::yyrline_[] = { - 0, 251, 251, 252, 256, 258, 260, 262, 264, 266, - 271, 275, 280, 281, 282, 286, 291, 296, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 329, 330, 334, 336, 341, 343, 345, - 348, 352, 354, 359, 361, 363, 368, 373, 375, 380, - 385, 387, 392, 394, 399, 404, 406, 411, 416, 421, - 426, 431, 436, 438, 443, 448, 450, 455, 460, 465, - 470, 472, 477, 482, 487, 492, 493, 494, 498, 499, - 503, 505, 507, 509, 511, 513, 515, 517, 519, 521, - 523, 528, 530, 535, 537, 542, 547, 549, 551, 553, - 555, 557, 559, 561, 563, 565, 567, 569, 571, 573, - 575, 577, 579, 581, 586, 587, 588, 589, 590, 591, - 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, - 612, 613, 617, 622, 627, 628, 631, 632, 636, 638, - 640, 642, 644, 646, 651, 653, 655, 657, 662, 667, - 669, 672, 676, 679, 683, 685, 690, 692, 697, 702, - 707, 712, 717, 718, 719, 720, 721, 722, 723, 724, - 725, 729, 734, 739, 744, 749, 754, 759, 764, 769, - 774, 779, 781, 786, 791, 796, 801, 806, 808, 813, - 815, 817, 819, 821, 826, 831 + 0, 254, 254, 255, 259, 261, 263, 265, 267, 269, + 274, 278, 283, 284, 285, 286, 287, 291, 296, 301, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 335, 336, 340, 341, + 345, 347, 352, 354, 356, 359, 363, 365, 370, 372, + 374, 379, 384, 386, 391, 396, 398, 403, 405, 410, + 415, 417, 422, 427, 432, 437, 442, 447, 449, 454, + 459, 461, 466, 471, 476, 481, 483, 488, 493, 498, + 503, 504, 505, 509, 510, 514, 516, 518, 520, 522, + 524, 526, 528, 530, 532, 534, 539, 541, 546, 548, + 553, 558, 560, 562, 564, 566, 568, 570, 572, 574, + 576, 578, 580, 582, 584, 586, 588, 590, 592, 597, + 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, + 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, + 618, 619, 620, 621, 622, 623, 624, 628, 633, 638, + 639, 642, 643, 647, 649, 651, 653, 655, 657, 662, + 664, 666, 668, 673, 678, 680, 683, 687, 690, 694, + 696, 701, 703, 708, 713, 718, 723, 728, 729, 730, + 731, 732, 733, 734, 735, 736, 740, 745, 750, 755, + 760, 765, 770, 775, 780, 785, 790, 792, 797, 802, + 807, 812, 817, 819, 824, 826, 828, 830, 832, 837, + 842 }; void @@ -4472,9 +4552,9 @@ namespace xsk { namespace gsc { namespace h2 { #line 13 "parser.ypp" } } } // xsk::gsc::h2 -#line 4476 "parser.cpp" +#line 4556 "parser.cpp" -#line 835 "parser.ypp" +#line 846 "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 824525aa..6a4d3472 100644 --- a/src/h2/xsk/parser.hpp +++ b/src/h2/xsk/parser.hpp @@ -580,6 +580,7 @@ namespace xsk { namespace gsc { namespace h2 { // stmt_ifelse char dummy54[sizeof (ast::stmt_ifelse::ptr)]; + // stmt_dev // stmt_block // stmt_list char dummy55[sizeof (ast::stmt_list::ptr)]; @@ -679,109 +680,111 @@ namespace xsk { namespace gsc { namespace h2 { H2EOF = 0, // "end of file" H2error = 1, // error H2UNDEF = 2, // "invalid token" - INLINE = 3, // "#inline" - INCLUDE = 4, // "#include" - USINGTREE = 5, // "#using_animtree" - ANIMTREE = 6, // "#animtree" - ENDON = 7, // "endon" - NOTIFY = 8, // "notify" - WAIT = 9, // "wait" - WAITTILL = 10, // "waittill" - WAITTILLMATCH = 11, // "waittillmatch" - WAITTILLFRAMEEND = 12, // "waittillframeend" - WAITFRAME = 13, // "waitframe" - IF = 14, // "if" - ELSE = 15, // "else" - DO = 16, // "do" - WHILE = 17, // "while" - FOR = 18, // "for" - FOREACH = 19, // "foreach" - IN = 20, // "in" - SWITCH = 21, // "switch" - CASE = 22, // "case" - DEFAULT = 23, // "default" - BREAK = 24, // "break" - CONTINUE = 25, // "continue" - RETURN = 26, // "return" - BREAKPOINT = 27, // "breakpoint" - PROFBEGIN = 28, // "prof_begin" - PROFEND = 29, // "prof_end" - THREAD = 30, // "thread" - CHILDTHREAD = 31, // "childthread" - THISTHREAD = 32, // "thisthread" - CALL = 33, // "call" - TRUE = 34, // "true" - FALSE = 35, // "false" - UNDEFINED = 36, // "undefined" - SIZE = 37, // ".size" - GAME = 38, // "game" - SELF = 39, // "self" - ANIM = 40, // "anim" - LEVEL = 41, // "level" - LPAREN = 42, // "(" - RPAREN = 43, // ")" - LBRACE = 44, // "{" - RBRACE = 45, // "}" - LBRACKET = 46, // "[" - RBRACKET = 47, // "]" - COMMA = 48, // "," - DOT = 49, // "." - DOUBLECOLON = 50, // "::" - COLON = 51, // ":" - SEMICOLON = 52, // ";" - QMARK = 53, // "?" - INCREMENT = 54, // "++" - DECREMENT = 55, // "--" - LSHIFT = 56, // "<<" - RSHIFT = 57, // ">>" - OR = 58, // "||" - AND = 59, // "&&" - EQUALITY = 60, // "==" - INEQUALITY = 61, // "!=" - LESS_EQUAL = 62, // "<=" - GREATER_EQUAL = 63, // ">=" - LESS = 64, // "<" - GREATER = 65, // ">" - NOT = 66, // "!" - COMPLEMENT = 67, // "~" - ASSIGN = 68, // "=" - ASSIGN_ADD = 69, // "+=" - ASSIGN_SUB = 70, // "-=" - ASSIGN_MUL = 71, // "*=" - ASSIGN_DIV = 72, // "/=" - ASSIGN_MOD = 73, // "%=" - ASSIGN_BW_OR = 74, // "|=" - ASSIGN_BW_AND = 75, // "&=" - ASSIGN_BW_EXOR = 76, // "^=" - ASSIGN_RSHIFT = 77, // ">>=" - ASSIGN_LSHIFT = 78, // "<<=" - BITWISE_OR = 79, // "|" - BITWISE_AND = 80, // "&" - BITWISE_EXOR = 81, // "^" - ADD = 82, // "+" - SUB = 83, // "-" - MUL = 84, // "*" - DIV = 85, // "/" - MOD = 86, // "%" - PATH = 87, // "path" - IDENTIFIER = 88, // "identifier" - STRING = 89, // "string literal" - ISTRING = 90, // "localized string" - COLOR = 91, // "color" - FLOAT = 92, // "float" - INT_DEC = 93, // "int" - INT_OCT = 94, // "octal int" - INT_BIN = 95, // "binary int" - INT_HEX = 96, // "hexadecimal int" - ADD_ARRAY = 97, // ADD_ARRAY - THEN = 98, // THEN - TERN = 99, // TERN - NEG = 100, // NEG - ANIMREF = 101, // ANIMREF - PREINC = 102, // PREINC - PREDEC = 103, // PREDEC - POSTINC = 104, // POSTINC - POSTDEC = 105 // POSTDEC + DEVBEGIN = 3, // "/#" + DEVEND = 4, // "#/" + INLINE = 5, // "#inline" + INCLUDE = 6, // "#include" + USINGTREE = 7, // "#using_animtree" + ANIMTREE = 8, // "#animtree" + ENDON = 9, // "endon" + NOTIFY = 10, // "notify" + WAIT = 11, // "wait" + WAITTILL = 12, // "waittill" + WAITTILLMATCH = 13, // "waittillmatch" + WAITTILLFRAMEEND = 14, // "waittillframeend" + WAITFRAME = 15, // "waitframe" + IF = 16, // "if" + ELSE = 17, // "else" + DO = 18, // "do" + WHILE = 19, // "while" + FOR = 20, // "for" + FOREACH = 21, // "foreach" + IN = 22, // "in" + SWITCH = 23, // "switch" + CASE = 24, // "case" + DEFAULT = 25, // "default" + BREAK = 26, // "break" + CONTINUE = 27, // "continue" + RETURN = 28, // "return" + BREAKPOINT = 29, // "breakpoint" + PROFBEGIN = 30, // "prof_begin" + PROFEND = 31, // "prof_end" + THREAD = 32, // "thread" + CHILDTHREAD = 33, // "childthread" + THISTHREAD = 34, // "thisthread" + CALL = 35, // "call" + TRUE = 36, // "true" + FALSE = 37, // "false" + UNDEFINED = 38, // "undefined" + SIZE = 39, // ".size" + GAME = 40, // "game" + SELF = 41, // "self" + ANIM = 42, // "anim" + LEVEL = 43, // "level" + LPAREN = 44, // "(" + RPAREN = 45, // ")" + LBRACE = 46, // "{" + RBRACE = 47, // "}" + LBRACKET = 48, // "[" + RBRACKET = 49, // "]" + COMMA = 50, // "," + DOT = 51, // "." + DOUBLECOLON = 52, // "::" + COLON = 53, // ":" + SEMICOLON = 54, // ";" + QMARK = 55, // "?" + INCREMENT = 56, // "++" + DECREMENT = 57, // "--" + LSHIFT = 58, // "<<" + RSHIFT = 59, // ">>" + OR = 60, // "||" + AND = 61, // "&&" + EQUALITY = 62, // "==" + INEQUALITY = 63, // "!=" + LESS_EQUAL = 64, // "<=" + GREATER_EQUAL = 65, // ">=" + LESS = 66, // "<" + GREATER = 67, // ">" + NOT = 68, // "!" + COMPLEMENT = 69, // "~" + ASSIGN = 70, // "=" + ASSIGN_ADD = 71, // "+=" + ASSIGN_SUB = 72, // "-=" + ASSIGN_MUL = 73, // "*=" + ASSIGN_DIV = 74, // "/=" + ASSIGN_MOD = 75, // "%=" + ASSIGN_BW_OR = 76, // "|=" + ASSIGN_BW_AND = 77, // "&=" + ASSIGN_BW_EXOR = 78, // "^=" + ASSIGN_RSHIFT = 79, // ">>=" + ASSIGN_LSHIFT = 80, // "<<=" + BITWISE_OR = 81, // "|" + BITWISE_AND = 82, // "&" + BITWISE_EXOR = 83, // "^" + ADD = 84, // "+" + SUB = 85, // "-" + MUL = 86, // "*" + DIV = 87, // "/" + MOD = 88, // "%" + PATH = 89, // "path" + IDENTIFIER = 90, // "identifier" + STRING = 91, // "string literal" + ISTRING = 92, // "localized string" + COLOR = 93, // "color" + FLOAT = 94, // "float" + INT_DEC = 95, // "int" + INT_OCT = 96, // "octal int" + INT_BIN = 97, // "binary int" + INT_HEX = 98, // "hexadecimal int" + ADD_ARRAY = 99, // ADD_ARRAY + THEN = 100, // THEN + TERN = 101, // TERN + NEG = 102, // NEG + ANIMREF = 103, // ANIMREF + PREINC = 104, // PREINC + PREDEC = 105, // PREDEC + POSTINC = 106, // POSTINC + POSTDEC = 107 // POSTDEC }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; @@ -798,194 +801,197 @@ namespace xsk { namespace gsc { namespace h2 { { enum symbol_kind_type { - YYNTOKENS = 106, ///< Number of tokens. + YYNTOKENS = 108, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error S_YYUNDEF = 2, // "invalid token" - S_INLINE = 3, // "#inline" - S_INCLUDE = 4, // "#include" - S_USINGTREE = 5, // "#using_animtree" - S_ANIMTREE = 6, // "#animtree" - S_ENDON = 7, // "endon" - S_NOTIFY = 8, // "notify" - S_WAIT = 9, // "wait" - S_WAITTILL = 10, // "waittill" - S_WAITTILLMATCH = 11, // "waittillmatch" - S_WAITTILLFRAMEEND = 12, // "waittillframeend" - S_WAITFRAME = 13, // "waitframe" - S_IF = 14, // "if" - S_ELSE = 15, // "else" - S_DO = 16, // "do" - S_WHILE = 17, // "while" - S_FOR = 18, // "for" - S_FOREACH = 19, // "foreach" - S_IN = 20, // "in" - S_SWITCH = 21, // "switch" - S_CASE = 22, // "case" - S_DEFAULT = 23, // "default" - S_BREAK = 24, // "break" - S_CONTINUE = 25, // "continue" - S_RETURN = 26, // "return" - S_BREAKPOINT = 27, // "breakpoint" - S_PROFBEGIN = 28, // "prof_begin" - S_PROFEND = 29, // "prof_end" - S_THREAD = 30, // "thread" - S_CHILDTHREAD = 31, // "childthread" - S_THISTHREAD = 32, // "thisthread" - S_CALL = 33, // "call" - S_TRUE = 34, // "true" - S_FALSE = 35, // "false" - S_UNDEFINED = 36, // "undefined" - S_SIZE = 37, // ".size" - S_GAME = 38, // "game" - S_SELF = 39, // "self" - S_ANIM = 40, // "anim" - S_LEVEL = 41, // "level" - S_LPAREN = 42, // "(" - S_RPAREN = 43, // ")" - S_LBRACE = 44, // "{" - S_RBRACE = 45, // "}" - S_LBRACKET = 46, // "[" - S_RBRACKET = 47, // "]" - S_COMMA = 48, // "," - S_DOT = 49, // "." - S_DOUBLECOLON = 50, // "::" - S_COLON = 51, // ":" - S_SEMICOLON = 52, // ";" - S_QMARK = 53, // "?" - S_INCREMENT = 54, // "++" - S_DECREMENT = 55, // "--" - S_LSHIFT = 56, // "<<" - S_RSHIFT = 57, // ">>" - S_OR = 58, // "||" - S_AND = 59, // "&&" - S_EQUALITY = 60, // "==" - S_INEQUALITY = 61, // "!=" - S_LESS_EQUAL = 62, // "<=" - S_GREATER_EQUAL = 63, // ">=" - S_LESS = 64, // "<" - S_GREATER = 65, // ">" - S_NOT = 66, // "!" - S_COMPLEMENT = 67, // "~" - S_ASSIGN = 68, // "=" - S_ASSIGN_ADD = 69, // "+=" - S_ASSIGN_SUB = 70, // "-=" - S_ASSIGN_MUL = 71, // "*=" - S_ASSIGN_DIV = 72, // "/=" - S_ASSIGN_MOD = 73, // "%=" - S_ASSIGN_BW_OR = 74, // "|=" - S_ASSIGN_BW_AND = 75, // "&=" - S_ASSIGN_BW_EXOR = 76, // "^=" - S_ASSIGN_RSHIFT = 77, // ">>=" - S_ASSIGN_LSHIFT = 78, // "<<=" - S_BITWISE_OR = 79, // "|" - S_BITWISE_AND = 80, // "&" - S_BITWISE_EXOR = 81, // "^" - S_ADD = 82, // "+" - S_SUB = 83, // "-" - S_MUL = 84, // "*" - S_DIV = 85, // "/" - S_MOD = 86, // "%" - S_PATH = 87, // "path" - S_IDENTIFIER = 88, // "identifier" - S_STRING = 89, // "string literal" - S_ISTRING = 90, // "localized string" - S_COLOR = 91, // "color" - S_FLOAT = 92, // "float" - S_INT_DEC = 93, // "int" - S_INT_OCT = 94, // "octal int" - S_INT_BIN = 95, // "binary int" - S_INT_HEX = 96, // "hexadecimal int" - S_ADD_ARRAY = 97, // ADD_ARRAY - S_THEN = 98, // THEN - S_TERN = 99, // TERN - S_NEG = 100, // NEG - S_ANIMREF = 101, // ANIMREF - S_PREINC = 102, // PREINC - S_PREDEC = 103, // PREDEC - S_POSTINC = 104, // POSTINC - S_POSTDEC = 105, // POSTDEC - S_YYACCEPT = 106, // $accept - S_root = 107, // root - S_program = 108, // program - S_inline = 109, // inline - S_include = 110, // include - S_declaration = 111, // declaration - S_decl_usingtree = 112, // decl_usingtree - S_decl_constant = 113, // decl_constant - S_decl_thread = 114, // decl_thread - S_stmt = 115, // stmt - S_stmt_block = 116, // stmt_block - S_stmt_list = 117, // stmt_list - S_stmt_expr = 118, // stmt_expr - S_stmt_call = 119, // stmt_call - S_stmt_assign = 120, // stmt_assign - S_stmt_endon = 121, // stmt_endon - S_stmt_notify = 122, // stmt_notify - S_stmt_wait = 123, // stmt_wait - S_stmt_waittill = 124, // stmt_waittill - S_stmt_waittillmatch = 125, // stmt_waittillmatch - S_stmt_waittillframeend = 126, // stmt_waittillframeend - S_stmt_waitframe = 127, // stmt_waitframe - S_stmt_if = 128, // stmt_if - S_stmt_ifelse = 129, // stmt_ifelse - S_stmt_while = 130, // stmt_while - S_stmt_dowhile = 131, // stmt_dowhile - S_stmt_for = 132, // stmt_for - S_stmt_foreach = 133, // stmt_foreach - S_stmt_switch = 134, // stmt_switch - S_stmt_case = 135, // stmt_case - S_stmt_default = 136, // stmt_default - S_stmt_break = 137, // stmt_break - S_stmt_continue = 138, // stmt_continue - S_stmt_return = 139, // stmt_return - S_stmt_breakpoint = 140, // stmt_breakpoint - S_stmt_prof_begin = 141, // stmt_prof_begin - S_stmt_prof_end = 142, // stmt_prof_end - S_expr = 143, // expr - S_expr_or_empty = 144, // expr_or_empty - S_expr_assign = 145, // expr_assign - S_expr_increment = 146, // expr_increment - S_expr_decrement = 147, // expr_decrement - S_expr_ternary = 148, // expr_ternary - S_expr_binary = 149, // expr_binary - S_expr_primitive = 150, // expr_primitive - S_expr_complement = 151, // expr_complement - S_expr_not = 152, // expr_not - S_expr_call = 153, // expr_call - S_expr_method = 154, // expr_method - S_expr_function = 155, // expr_function - S_expr_pointer = 156, // expr_pointer - S_expr_add_array = 157, // expr_add_array - S_expr_parameters = 158, // expr_parameters - S_expr_arguments = 159, // expr_arguments - S_expr_arguments_no_empty = 160, // expr_arguments_no_empty - S_expr_reference = 161, // expr_reference - S_expr_array = 162, // expr_array - S_expr_field = 163, // expr_field - S_expr_size = 164, // expr_size - S_expr_paren = 165, // expr_paren - S_expr_object = 166, // expr_object - S_expr_thisthread = 167, // expr_thisthread - S_expr_empty_array = 168, // expr_empty_array - S_expr_undefined = 169, // expr_undefined - S_expr_game = 170, // expr_game - S_expr_self = 171, // expr_self - S_expr_anim = 172, // expr_anim - S_expr_level = 173, // expr_level - S_expr_animation = 174, // expr_animation - S_expr_animtree = 175, // expr_animtree - S_expr_identifier = 176, // expr_identifier - S_expr_path = 177, // expr_path - S_expr_istring = 178, // expr_istring - S_expr_string = 179, // expr_string - S_expr_color = 180, // expr_color - S_expr_vector = 181, // expr_vector - S_expr_float = 182, // expr_float - S_expr_integer = 183, // expr_integer - S_expr_false = 184, // expr_false - S_expr_true = 185 // expr_true + S_DEVBEGIN = 3, // "/#" + S_DEVEND = 4, // "#/" + S_INLINE = 5, // "#inline" + S_INCLUDE = 6, // "#include" + S_USINGTREE = 7, // "#using_animtree" + S_ANIMTREE = 8, // "#animtree" + S_ENDON = 9, // "endon" + S_NOTIFY = 10, // "notify" + S_WAIT = 11, // "wait" + S_WAITTILL = 12, // "waittill" + S_WAITTILLMATCH = 13, // "waittillmatch" + S_WAITTILLFRAMEEND = 14, // "waittillframeend" + S_WAITFRAME = 15, // "waitframe" + S_IF = 16, // "if" + S_ELSE = 17, // "else" + S_DO = 18, // "do" + S_WHILE = 19, // "while" + S_FOR = 20, // "for" + S_FOREACH = 21, // "foreach" + S_IN = 22, // "in" + S_SWITCH = 23, // "switch" + S_CASE = 24, // "case" + S_DEFAULT = 25, // "default" + S_BREAK = 26, // "break" + S_CONTINUE = 27, // "continue" + S_RETURN = 28, // "return" + S_BREAKPOINT = 29, // "breakpoint" + S_PROFBEGIN = 30, // "prof_begin" + S_PROFEND = 31, // "prof_end" + S_THREAD = 32, // "thread" + S_CHILDTHREAD = 33, // "childthread" + S_THISTHREAD = 34, // "thisthread" + S_CALL = 35, // "call" + S_TRUE = 36, // "true" + S_FALSE = 37, // "false" + S_UNDEFINED = 38, // "undefined" + S_SIZE = 39, // ".size" + S_GAME = 40, // "game" + S_SELF = 41, // "self" + S_ANIM = 42, // "anim" + S_LEVEL = 43, // "level" + S_LPAREN = 44, // "(" + S_RPAREN = 45, // ")" + S_LBRACE = 46, // "{" + S_RBRACE = 47, // "}" + S_LBRACKET = 48, // "[" + S_RBRACKET = 49, // "]" + S_COMMA = 50, // "," + S_DOT = 51, // "." + S_DOUBLECOLON = 52, // "::" + S_COLON = 53, // ":" + S_SEMICOLON = 54, // ";" + S_QMARK = 55, // "?" + S_INCREMENT = 56, // "++" + S_DECREMENT = 57, // "--" + S_LSHIFT = 58, // "<<" + S_RSHIFT = 59, // ">>" + S_OR = 60, // "||" + S_AND = 61, // "&&" + S_EQUALITY = 62, // "==" + S_INEQUALITY = 63, // "!=" + S_LESS_EQUAL = 64, // "<=" + S_GREATER_EQUAL = 65, // ">=" + S_LESS = 66, // "<" + S_GREATER = 67, // ">" + S_NOT = 68, // "!" + S_COMPLEMENT = 69, // "~" + S_ASSIGN = 70, // "=" + S_ASSIGN_ADD = 71, // "+=" + S_ASSIGN_SUB = 72, // "-=" + S_ASSIGN_MUL = 73, // "*=" + S_ASSIGN_DIV = 74, // "/=" + S_ASSIGN_MOD = 75, // "%=" + S_ASSIGN_BW_OR = 76, // "|=" + S_ASSIGN_BW_AND = 77, // "&=" + S_ASSIGN_BW_EXOR = 78, // "^=" + S_ASSIGN_RSHIFT = 79, // ">>=" + S_ASSIGN_LSHIFT = 80, // "<<=" + S_BITWISE_OR = 81, // "|" + S_BITWISE_AND = 82, // "&" + S_BITWISE_EXOR = 83, // "^" + S_ADD = 84, // "+" + S_SUB = 85, // "-" + S_MUL = 86, // "*" + S_DIV = 87, // "/" + S_MOD = 88, // "%" + S_PATH = 89, // "path" + S_IDENTIFIER = 90, // "identifier" + S_STRING = 91, // "string literal" + S_ISTRING = 92, // "localized string" + S_COLOR = 93, // "color" + S_FLOAT = 94, // "float" + S_INT_DEC = 95, // "int" + S_INT_OCT = 96, // "octal int" + S_INT_BIN = 97, // "binary int" + S_INT_HEX = 98, // "hexadecimal int" + S_ADD_ARRAY = 99, // ADD_ARRAY + S_THEN = 100, // THEN + S_TERN = 101, // TERN + S_NEG = 102, // NEG + S_ANIMREF = 103, // ANIMREF + S_PREINC = 104, // PREINC + S_PREDEC = 105, // PREDEC + S_POSTINC = 106, // POSTINC + S_POSTDEC = 107, // POSTDEC + S_YYACCEPT = 108, // $accept + S_root = 109, // root + S_program = 110, // program + S_inline = 111, // inline + S_include = 112, // include + S_declaration = 113, // declaration + S_decl_usingtree = 114, // decl_usingtree + S_decl_constant = 115, // decl_constant + S_decl_thread = 116, // decl_thread + S_stmt = 117, // stmt + S_stmt_dev = 118, // stmt_dev + S_stmt_block = 119, // stmt_block + S_stmt_list = 120, // stmt_list + S_stmt_expr = 121, // stmt_expr + S_stmt_call = 122, // stmt_call + S_stmt_assign = 123, // stmt_assign + S_stmt_endon = 124, // stmt_endon + S_stmt_notify = 125, // stmt_notify + S_stmt_wait = 126, // stmt_wait + S_stmt_waittill = 127, // stmt_waittill + S_stmt_waittillmatch = 128, // stmt_waittillmatch + S_stmt_waittillframeend = 129, // stmt_waittillframeend + S_stmt_waitframe = 130, // stmt_waitframe + S_stmt_if = 131, // stmt_if + S_stmt_ifelse = 132, // stmt_ifelse + S_stmt_while = 133, // stmt_while + S_stmt_dowhile = 134, // stmt_dowhile + S_stmt_for = 135, // stmt_for + S_stmt_foreach = 136, // stmt_foreach + S_stmt_switch = 137, // stmt_switch + S_stmt_case = 138, // stmt_case + S_stmt_default = 139, // stmt_default + S_stmt_break = 140, // stmt_break + S_stmt_continue = 141, // stmt_continue + S_stmt_return = 142, // stmt_return + S_stmt_breakpoint = 143, // stmt_breakpoint + S_stmt_prof_begin = 144, // stmt_prof_begin + S_stmt_prof_end = 145, // stmt_prof_end + S_expr = 146, // expr + S_expr_or_empty = 147, // expr_or_empty + S_expr_assign = 148, // expr_assign + S_expr_increment = 149, // expr_increment + S_expr_decrement = 150, // expr_decrement + S_expr_ternary = 151, // expr_ternary + S_expr_binary = 152, // expr_binary + S_expr_primitive = 153, // expr_primitive + S_expr_complement = 154, // expr_complement + S_expr_not = 155, // expr_not + S_expr_call = 156, // expr_call + S_expr_method = 157, // expr_method + S_expr_function = 158, // expr_function + S_expr_pointer = 159, // expr_pointer + S_expr_add_array = 160, // expr_add_array + S_expr_parameters = 161, // expr_parameters + S_expr_arguments = 162, // expr_arguments + S_expr_arguments_no_empty = 163, // expr_arguments_no_empty + S_expr_reference = 164, // expr_reference + S_expr_array = 165, // expr_array + S_expr_field = 166, // expr_field + S_expr_size = 167, // expr_size + S_expr_paren = 168, // expr_paren + S_expr_object = 169, // expr_object + S_expr_thisthread = 170, // expr_thisthread + S_expr_empty_array = 171, // expr_empty_array + S_expr_undefined = 172, // expr_undefined + S_expr_game = 173, // expr_game + S_expr_self = 174, // expr_self + S_expr_anim = 175, // expr_anim + S_expr_level = 176, // expr_level + S_expr_animation = 177, // expr_animation + S_expr_animtree = 178, // expr_animtree + S_expr_identifier = 179, // expr_identifier + S_expr_path = 180, // expr_path + S_expr_istring = 181, // expr_istring + S_expr_string = 182, // expr_string + S_expr_color = 183, // expr_color + S_expr_vector = 184, // expr_vector + S_expr_float = 185, // expr_float + S_expr_integer = 186, // expr_integer + S_expr_false = 187, // expr_false + S_expr_true = 188 // expr_true }; }; @@ -1248,6 +1254,7 @@ namespace xsk { namespace gsc { namespace h2 { value.move< ast::stmt_ifelse::ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (std::move (that.value)); @@ -2519,6 +2526,7 @@ switch (yykind) value.template destroy< ast::stmt_ifelse::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.template destroy< ast::stmt_list::ptr > (); @@ -2782,6 +2790,36 @@ switch (yykind) return symbol_type (token::H2UNDEF, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_DEVBEGIN (location_type l) + { + return symbol_type (token::DEVBEGIN, std::move (l)); + } +#else + static + symbol_type + make_DEVBEGIN (const location_type& l) + { + return symbol_type (token::DEVBEGIN, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_DEVEND (location_type l) + { + return symbol_type (token::DEVEND, std::move (l)); + } +#else + static + symbol_type + make_DEVEND (const location_type& l) + { + return symbol_type (token::DEVEND, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4671,9 +4709,9 @@ switch (yykind) /// Constants. enum { - yylast_ = 2075, ///< Last index in yytable_. - yynnts_ = 80, ///< Number of nonterminal symbols. - yyfinal_ = 19 ///< Termination state number. + yylast_ = 2254, ///< Last index in yytable_. + yynnts_ = 81, ///< Number of nonterminal symbols. + yyfinal_ = 21 ///< Termination state number. }; @@ -4926,6 +4964,7 @@ switch (yykind) value.copy< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.copy< ast::stmt_list::ptr > (YY_MOVE (that.value)); @@ -5243,6 +5282,7 @@ switch (yykind) value.move< ast::stmt_ifelse::ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (YY_MOVE (s.value)); @@ -5368,7 +5408,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::h2 -#line 5372 "parser.hpp" +#line 5412 "parser.hpp" diff --git a/src/iw5/xsk/compiler.cpp b/src/iw5/xsk/compiler.cpp index 797016a0..58b1f702 100644 --- a/src/iw5/xsk/compiler.cpp +++ b/src/iw5/xsk/compiler.cpp @@ -85,6 +85,7 @@ void compiler::compile_program(const ast::program::ptr& program) constants_.clear(); local_functions_.clear(); index_ = 1; + developer_thread_ = false; for (const auto& entry : program->declarations) { @@ -150,6 +151,12 @@ void compiler::emit_declaration(const ast::decl& decl) { switch (decl.kind()) { + case ast::kind::decl_dev_begin: + developer_thread_ = true; + break; + case ast::kind::decl_dev_end: + developer_thread_ = false; + break; case ast::kind::decl_usingtree: emit_decl_usingtree(decl.as_usingtree); break; @@ -166,6 +173,9 @@ void compiler::emit_declaration(const ast::decl& decl) void compiler::emit_decl_usingtree(const ast::decl_usingtree::ptr& animtree) { + if(developer_thread_) + throw comp_error(animtree->loc(), "cannot put #using_animtree inside /# ... #/ comment"); + animtrees_.push_back({ animtree->name->value, false }); } diff --git a/src/iw5/xsk/lexer.cpp b/src/iw5/xsk/lexer.cpp index 7f6711d7..2caeb70f 100644 --- a/src/iw5/xsk/lexer.cpp +++ b/src/iw5/xsk/lexer.cpp @@ -555,8 +555,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 108 -#define YY_END_OF_BUFFER 109 +#define YY_NUM_RULES 110 +#define YY_END_OF_BUFFER 111 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -564,44 +564,44 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[325] = +static const flex_int16_t yy_accept[328] = { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 109, 107, - 1, 2, 92, 107, 107, 91, 95, 107, 52, 53, - 89, 87, 58, 88, 59, 90, 106, 106, 61, 62, - 76, 86, 77, 63, 98, 56, 57, 96, 98, 98, - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 54, 94, 55, 93, 5, 6, - 5, 107, 89, 9, 10, 9, 73, 0, 100, 0, - 13, 0, 0, 0, 0, 82, 0, 71, 0, 84, - 0, 0, 12, 80, 64, 78, 65, 79, 102, 0, - 8, 4, 3, 81, 102, 106, 103, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 111, 109, + 1, 2, 94, 109, 109, 93, 97, 109, 54, 55, + 91, 89, 60, 90, 61, 92, 108, 108, 63, 64, + 78, 88, 79, 65, 100, 58, 59, 98, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 56, 96, 57, 95, 5, 6, + 5, 12, 13, 12, 109, 91, 92, 75, 0, 102, + 0, 15, 0, 0, 0, 0, 84, 0, 73, 0, + 86, 0, 0, 8, 82, 66, 80, 67, 81, 104, + 0, 11, 4, 3, 83, 104, 108, 105, 0, 0, - 0, 60, 68, 74, 72, 75, 69, 98, 85, 98, - 98, 98, 98, 98, 98, 26, 98, 98, 98, 98, - 98, 24, 30, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 83, 70, 7, 11, 0, 100, - 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, - 0, 100, 0, 102, 0, 3, 102, 102, 103, 104, - 105, 97, 66, 67, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 28, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 98, 98, 98, 98, 101, 0, - 0, 0, 0, 0, 99, 0, 0, 99, 0, 0, + 0, 0, 62, 70, 76, 74, 77, 71, 100, 87, + 100, 100, 100, 100, 100, 100, 28, 100, 100, 100, + 100, 100, 26, 32, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 85, 72, 7, 14, 10, + 9, 0, 102, 0, 0, 0, 0, 0, 0, 101, + 0, 0, 0, 0, 102, 0, 104, 0, 3, 104, + 104, 105, 106, 107, 99, 68, 69, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 30, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 103, 0, 0, 0, 0, 0, 101, 0, 0, - 50, 98, 43, 32, 98, 98, 98, 25, 98, 98, - 98, 48, 98, 98, 98, 98, 49, 98, 98, 98, - 44, 98, 20, 98, 0, 0, 0, 0, 0, 47, - 34, 98, 98, 98, 18, 45, 98, 51, 98, 98, - 98, 98, 98, 98, 98, 98, 27, 0, 0, 0, - 0, 0, 98, 98, 98, 98, 98, 19, 98, 98, - 36, 31, 98, 40, 98, 98, 101, 0, 0, 14, - 0, 98, 98, 98, 33, 29, 98, 98, 98, 98, - 98, 0, 15, 0, 98, 98, 35, 98, 39, 98, - 98, 21, 17, 0, 98, 98, 98, 98, 46, 98, + 101, 0, 0, 52, 100, 45, 34, 100, 100, 100, + 27, 100, 100, 100, 50, 100, 100, 100, 100, 51, + 100, 100, 100, 46, 100, 22, 100, 0, 0, 0, + 0, 0, 49, 36, 100, 100, 100, 20, 47, 100, + 53, 100, 100, 100, 100, 100, 100, 100, 100, 29, + 0, 0, 0, 0, 0, 100, 100, 100, 100, 100, + 21, 100, 100, 38, 33, 100, 42, 100, 100, 103, + 0, 0, 16, 0, 100, 100, 100, 35, 31, 100, + 100, 100, 100, 100, 0, 17, 0, 100, 100, 37, + 100, 41, 100, 100, 23, 19, 0, 100, 100, 100, - 98, 0, 37, 98, 38, 42, 98, 98, 0, 41, - 98, 98, 0, 98, 98, 0, 98, 22, 0, 98, - 16, 98, 23, 0 + 100, 48, 100, 100, 0, 39, 100, 40, 44, 100, + 100, 0, 43, 100, 100, 0, 100, 100, 0, 100, + 24, 0, 100, 18, 100, 25, 0 } ; static const YY_CHAR yy_ec[256] = @@ -647,91 +647,91 @@ static const YY_CHAR yy_meta[64] = 1, 1, 1 } ; -static const flex_int16_t yy_base[345] = +static const flex_int16_t yy_base[348] = { 0, - 0, 0, 61, 62, 60, 63, 64, 65, 696, 697, - 697, 697, 670, 71, 60, 669, 73, 70, 697, 697, - 63, 70, 697, 69, 71, 94, 102, 109, 671, 697, - 61, 667, 76, 697, 658, 697, 697, 665, 60, 74, - 99, 104, 63, 101, 80, 106, 75, 108, 111, 119, - 120, 113, 117, 131, 697, 122, 697, 697, 697, 697, - 672, 139, 663, 697, 697, 670, 697, 154, 697, 164, - 697, 0, 637, 636, 631, 697, 157, 697, 162, 697, - 163, 170, 697, 697, 697, 697, 697, 697, 180, 638, - 697, 697, 0, 697, 186, 192, 198, 158, 205, 223, + 0, 0, 61, 62, 63, 64, 65, 66, 702, 703, + 703, 703, 676, 63, 58, 675, 76, 67, 703, 703, + 62, 67, 703, 73, 86, 85, 96, 102, 677, 703, + 65, 673, 68, 703, 664, 703, 703, 671, 75, 76, + 93, 99, 98, 105, 111, 108, 78, 103, 100, 113, + 118, 125, 123, 127, 703, 136, 703, 703, 703, 703, + 678, 703, 703, 677, 145, 668, 161, 703, 158, 703, + 163, 703, 0, 643, 642, 637, 703, 160, 703, 161, + 703, 165, 176, 703, 703, 703, 703, 703, 703, 183, + 644, 703, 703, 0, 703, 187, 194, 200, 195, 216, - 0, 697, 657, 697, 697, 697, 656, 647, 697, 54, - 137, 182, 147, 153, 194, 646, 156, 148, 187, 193, - 199, 645, 644, 197, 200, 207, 204, 222, 226, 233, - 213, 234, 237, 239, 697, 697, 697, 697, 243, 244, - 270, 0, 631, 146, 630, 274, 697, 278, 271, 283, - 279, 280, 284, 697, 615, 0, 276, 697, 303, 282, - 0, 640, 697, 697, 257, 269, 281, 258, 287, 275, - 293, 292, 277, 298, 299, 302, 304, 305, 306, 308, - 311, 313, 309, 314, 316, 319, 321, 323, 0, 624, - 624, 625, 620, 353, 354, 361, 352, 356, 365, 627, + 234, 0, 703, 663, 703, 703, 703, 662, 653, 703, + 143, 148, 184, 147, 150, 197, 652, 189, 203, 191, + 193, 208, 651, 650, 190, 207, 214, 211, 233, 215, + 225, 224, 245, 236, 249, 703, 703, 703, 703, 703, + 703, 254, 263, 281, 0, 637, 148, 636, 278, 703, + 285, 280, 288, 283, 284, 292, 703, 621, 0, 284, + 703, 311, 290, 0, 646, 703, 703, 267, 287, 265, + 266, 286, 289, 301, 295, 302, 304, 306, 307, 308, + 309, 313, 312, 317, 318, 320, 323, 325, 327, 328, + 329, 0, 630, 630, 631, 626, 358, 360, 366, 361, - 634, 336, 633, 632, 338, 339, 340, 631, 343, 347, - 344, 630, 346, 357, 364, 350, 629, 368, 358, 371, - 628, 363, 370, 373, 0, 606, 604, 609, 614, 697, - 376, 377, 380, 378, 623, 622, 382, 621, 383, 385, - 384, 386, 395, 402, 387, 389, 620, 0, 600, 611, - 609, 613, 403, 404, 405, 407, 410, 615, 411, 413, - 614, 613, 412, 612, 414, 418, 697, 603, 602, 697, - 605, 422, 416, 417, 608, 607, 423, 436, 437, 438, - 426, 598, 697, 589, 439, 441, 604, 442, 603, 444, - 450, 447, 697, 590, 451, 459, 452, 453, 601, 458, + 365, 372, 633, 640, 53, 639, 638, 344, 345, 346, + 637, 347, 354, 352, 636, 350, 367, 370, 355, 635, + 353, 369, 371, 634, 377, 378, 379, 0, 612, 610, + 615, 620, 703, 380, 381, 384, 382, 629, 628, 383, + 627, 385, 401, 388, 392, 394, 407, 408, 411, 626, + 0, 606, 617, 615, 619, 395, 413, 393, 397, 416, + 621, 417, 419, 620, 619, 421, 618, 422, 428, 703, + 609, 608, 703, 611, 429, 426, 431, 614, 613, 433, + 430, 436, 446, 434, 604, 703, 595, 447, 449, 610, + 450, 609, 451, 452, 456, 703, 596, 432, 460, 458, - 461, 585, 582, 464, 573, 531, 466, 467, 499, 519, - 469, 473, 472, 474, 475, 482, 481, 487, 475, 476, - 697, 478, 480, 697, 525, 533, 541, 546, 554, 560, - 564, 572, 452, 580, 588, 596, 604, 608, 304, 616, - 624, 245, 177, 109 + 461, 607, 466, 469, 591, 588, 470, 579, 537, 472, + 467, 505, 525, 475, 478, 478, 479, 480, 488, 481, + 495, 486, 482, 703, 486, 492, 703, 531, 539, 547, + 552, 560, 566, 570, 578, 511, 586, 594, 602, 610, + 614, 419, 622, 630, 305, 246, 179 } ; -static const flex_int16_t yy_def[345] = +static const flex_int16_t yy_def[348] = { 0, - 324, 1, 325, 325, 1, 1, 326, 326, 324, 324, - 324, 324, 324, 327, 328, 324, 324, 329, 324, 324, - 324, 324, 324, 324, 324, 324, 330, 330, 324, 324, - 324, 324, 324, 324, 331, 324, 324, 324, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 324, 324, 324, 324, 324, 324, - 324, 328, 324, 324, 324, 324, 324, 327, 324, 332, - 324, 333, 333, 324, 324, 324, 334, 324, 335, 324, - 329, 336, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 337, 324, 324, 330, 330, 330, 330, 330, + 327, 1, 328, 328, 329, 329, 1, 1, 327, 327, + 327, 327, 327, 330, 331, 327, 327, 332, 327, 327, + 327, 327, 327, 327, 327, 327, 333, 333, 327, 327, + 327, 327, 327, 327, 334, 327, 327, 327, 334, 334, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 331, 327, 327, 327, 330, 327, + 335, 327, 336, 336, 327, 327, 327, 337, 327, 338, + 327, 332, 339, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 340, 327, 327, 333, 333, 333, 333, - 338, 324, 324, 324, 324, 324, 324, 331, 324, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 324, 324, 324, 324, 327, 327, - 332, 339, 324, 324, 324, 334, 324, 340, 335, 341, - 329, 329, 336, 324, 324, 337, 324, 324, 330, 330, - 100, 338, 324, 324, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 342, 324, - 324, 324, 324, 334, 334, 340, 335, 335, 341, 324, + 333, 341, 327, 327, 327, 327, 327, 327, 334, 327, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 334, 327, 327, 327, 327, 327, + 327, 330, 330, 335, 342, 327, 327, 327, 337, 327, + 343, 338, 344, 332, 332, 339, 327, 327, 340, 327, + 327, 333, 333, 101, 341, 327, 327, 334, 334, 334, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 334, 345, 327, 327, 327, 327, 337, 337, 343, 338, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 343, 324, 324, 324, 324, 324, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 344, 324, 324, - 324, 324, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 324, 324, 324, 324, - 324, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 324, 324, 324, 331, 331, 331, 331, 331, 331, - 331, 331, 324, 324, 331, 331, 331, 331, 331, 331, + 338, 344, 327, 334, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 334, 334, 334, 346, 327, 327, + 327, 327, 327, 334, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 347, 327, 327, 327, 327, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 327, + 327, 327, 327, 327, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 327, 327, 327, 334, 334, 334, + 334, 334, 334, 334, 334, 327, 327, 334, 334, 334, - 331, 324, 331, 331, 331, 331, 331, 331, 324, 331, - 331, 331, 324, 331, 331, 324, 331, 331, 324, 331, - 324, 331, 331, 0, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324 + 334, 334, 334, 334, 327, 334, 334, 334, 334, 334, + 334, 327, 334, 334, 334, 327, 334, 334, 327, 334, + 334, 327, 334, 327, 334, 334, 0, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327 } ; -static const flex_int16_t yy_nxt[761] = +static const flex_int16_t yy_nxt[767] = { 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 28, @@ -739,86 +739,87 @@ static const flex_int16_t yy_nxt[761] = 35, 36, 10, 37, 38, 35, 39, 40, 41, 42, 43, 44, 45, 35, 46, 35, 47, 35, 48, 35, 49, 50, 51, 52, 53, 35, 54, 35, 35, 55, - 56, 57, 58, 60, 60, 62, 65, 65, 62, 66, - 66, 63, 61, 61, 63, 69, 71, 77, 69, 83, - 78, 79, 85, 87, 103, 104, 101, 84, 89, 89, - 89, 89, 101, 88, 86, 101, 73, 80, 165, 91, + 56, 57, 58, 60, 60, 63, 63, 70, 64, 64, + 65, 65, 61, 61, 72, 70, 66, 66, 84, 86, + 78, 67, 67, 79, 80, 102, 85, 88, 104, 105, + 92, 87, 107, 108, 74, 71, 93, 89, 234, 83, - 106, 107, 82, 70, 74, 92, 101, 101, 110, 117, - 93, 118, 101, 267, 75, 124, 121, 95, 94, 96, - 97, 97, 96, 90, 95, 111, 96, 96, 96, 96, - 99, 101, 100, 101, 101, 112, 101, 119, 101, 99, - 101, 101, 113, 101, 115, 101, 135, 122, 114, 101, - 120, 101, 101, 116, 123, 138, 130, 125, 69, 127, - 128, 147, 126, 101, 131, 132, 68, 133, 140, 101, - 147, 69, 81, 324, 134, 73, 129, 166, 152, 101, - 101, 248, 136, 74, 191, 101, 70, 173, 101, 148, - 101, 169, 192, 75, 150, 82, 141, 89, 89, 89, + 81, 94, 75, 90, 90, 90, 90, 102, 102, 95, + 102, 96, 76, 97, 98, 98, 97, 96, 125, 97, + 97, 97, 97, 111, 100, 102, 101, 112, 102, 113, + 102, 102, 102, 100, 102, 102, 114, 102, 91, 116, + 102, 120, 115, 102, 118, 102, 119, 122, 117, 123, + 102, 127, 126, 128, 121, 102, 124, 102, 129, 102, + 136, 140, 70, 134, 150, 69, 141, 143, 131, 150, + 135, 133, 93, 70, 130, 102, 132, 94, 82, 102, + 102, 74, 102, 270, 155, 95, 194, 168, 169, 75, + 71, 172, 151, 153, 195, 144, 137, 83, 173, 76, - 89, 170, 153, 157, 157, 157, 157, 95, 172, 96, - 96, 96, 96, 95, 101, 159, 159, 159, 96, 101, - 324, 154, 160, 160, 101, 101, 101, 158, 167, 101, - 101, 101, 101, 174, 168, 171, 101, 101, 324, 101, - 161, 161, 161, 161, 175, 101, 176, 69, 69, 225, - 161, 161, 177, 178, 101, 101, 179, 180, 101, 161, - 161, 161, 161, 161, 161, 101, 101, 185, 181, 101, - 182, 101, 68, 186, 140, 70, 70, 183, 147, 147, - 146, 187, 195, 188, 184, 149, 81, 69, 69, 101, - 101, 198, 152, 157, 157, 157, 157, 324, 204, 160, + 90, 90, 90, 90, 160, 160, 160, 160, 156, 96, + 327, 97, 97, 97, 97, 96, 102, 162, 162, 162, + 97, 102, 102, 102, 157, 102, 102, 102, 161, 102, + 170, 327, 102, 163, 163, 102, 171, 177, 174, 102, + 102, 175, 176, 102, 178, 180, 102, 102, 102, 327, + 251, 164, 164, 164, 164, 179, 102, 102, 70, 185, + 181, 164, 164, 182, 183, 102, 102, 70, 102, 186, + 164, 164, 164, 164, 164, 164, 187, 102, 188, 184, + 190, 102, 150, 69, 189, 143, 71, 149, 150, 198, + 152, 70, 70, 191, 82, 71, 201, 102, 102, 102, - 160, 101, 141, 150, 201, 202, 148, 101, 189, 101, - 196, 82, 82, 101, 101, 199, 153, 158, 95, 101, - 159, 159, 159, 96, 101, 101, 209, 203, 206, 207, - 101, 101, 208, 205, 101, 101, 101, 101, 101, 211, - 101, 101, 212, 101, 213, 101, 101, 215, 101, 214, - 210, 101, 217, 101, 220, 101, 221, 147, 147, 222, - 147, 219, 216, 146, 147, 195, 218, 149, 101, 224, - 101, 101, 101, 198, 223, 101, 101, 232, 101, 101, - 237, 231, 101, 233, 150, 148, 148, 236, 150, 101, - 101, 235, 238, 196, 234, 101, 101, 199, 239, 240, + 155, 160, 160, 160, 160, 327, 207, 163, 163, 228, + 151, 206, 153, 144, 204, 83, 83, 199, 102, 102, + 202, 102, 102, 205, 156, 161, 96, 102, 162, 162, + 162, 97, 208, 102, 102, 211, 102, 210, 102, 102, + 102, 102, 209, 102, 102, 102, 214, 215, 216, 102, + 102, 212, 102, 217, 218, 102, 213, 102, 220, 102, + 102, 102, 150, 223, 150, 224, 219, 225, 149, 150, + 198, 221, 222, 150, 152, 227, 102, 102, 102, 102, + 201, 226, 102, 235, 102, 102, 102, 102, 240, 236, + 151, 245, 151, 153, 239, 238, 241, 153, 199, 102, - 101, 241, 101, 101, 245, 101, 242, 244, 101, 101, - 101, 243, 101, 247, 101, 101, 101, 101, 101, 101, - 257, 101, 259, 246, 256, 260, 253, 101, 255, 262, - 254, 265, 261, 266, 101, 101, 101, 101, 263, 101, - 258, 264, 101, 101, 101, 101, 101, 273, 101, 101, - 101, 277, 272, 276, 101, 101, 142, 287, 101, 274, - 275, 278, 280, 279, 281, 288, 285, 286, 101, 101, - 101, 101, 292, 101, 101, 289, 101, 290, 291, 101, - 298, 296, 101, 101, 101, 101, 297, 295, 300, 299, - 101, 101, 306, 101, 301, 304, 101, 308, 101, 101, + 237, 102, 102, 102, 202, 243, 244, 247, 242, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 248, 250, + 102, 260, 246, 192, 102, 102, 102, 102, 259, 102, + 256, 249, 258, 102, 257, 265, 264, 266, 262, 102, + 102, 263, 261, 102, 275, 102, 267, 277, 102, 102, + 278, 102, 268, 102, 102, 269, 276, 280, 102, 279, + 102, 102, 102, 102, 102, 102, 102, 281, 102, 292, + 283, 290, 282, 288, 284, 291, 293, 289, 102, 102, + 295, 102, 102, 102, 102, 306, 294, 301, 102, 299, + 102, 302, 102, 102, 300, 298, 307, 303, 102, 102, - 305, 101, 311, 310, 303, 101, 101, 101, 101, 307, - 101, 315, 101, 101, 317, 321, 314, 323, 318, 101, - 312, 320, 319, 316, 322, 59, 59, 59, 59, 59, - 59, 59, 59, 64, 64, 64, 64, 64, 64, 64, - 64, 68, 68, 68, 68, 68, 68, 68, 68, 72, - 72, 101, 313, 72, 81, 81, 81, 81, 81, 81, - 81, 81, 98, 101, 98, 98, 98, 98, 108, 108, - 108, 108, 139, 139, 139, 139, 139, 139, 139, 139, - 146, 146, 146, 146, 146, 146, 146, 146, 149, 149, - 149, 149, 149, 149, 149, 149, 151, 151, 151, 151, + 309, 102, 102, 304, 102, 311, 308, 102, 314, 313, + 102, 102, 102, 102, 102, 145, 318, 310, 102, 320, + 315, 323, 317, 321, 102, 326, 324, 102, 322, 319, + 325, 59, 59, 59, 59, 59, 59, 59, 59, 62, + 62, 62, 62, 62, 62, 62, 62, 69, 69, 69, + 69, 69, 69, 69, 69, 73, 73, 102, 316, 73, + 82, 82, 82, 82, 82, 82, 82, 82, 99, 102, + 99, 99, 99, 99, 109, 109, 109, 109, 142, 142, + 142, 142, 142, 142, 142, 142, 149, 149, 149, 149, + 149, 149, 149, 149, 152, 152, 152, 152, 152, 152, - 151, 151, 151, 151, 156, 101, 156, 156, 156, 156, - 156, 156, 162, 162, 101, 162, 194, 194, 194, 194, - 194, 194, 194, 194, 197, 197, 197, 197, 197, 197, - 197, 197, 309, 101, 302, 101, 101, 294, 293, 101, - 101, 284, 283, 282, 101, 101, 101, 101, 271, 270, - 269, 268, 101, 101, 101, 101, 252, 251, 250, 249, - 101, 101, 101, 101, 101, 101, 101, 230, 229, 228, - 227, 226, 101, 200, 193, 190, 101, 101, 101, 101, - 164, 163, 155, 145, 144, 143, 138, 84, 137, 109, - 101, 105, 102, 76, 67, 324, 9, 324, 324, 324, + 152, 152, 154, 154, 154, 154, 154, 154, 154, 154, + 159, 102, 159, 159, 159, 159, 159, 159, 165, 165, + 102, 165, 197, 197, 197, 197, 197, 197, 197, 197, + 200, 200, 200, 200, 200, 200, 200, 200, 312, 102, + 305, 102, 102, 297, 296, 102, 102, 287, 286, 285, + 102, 102, 102, 102, 274, 273, 272, 271, 102, 102, + 102, 102, 255, 254, 253, 252, 102, 102, 102, 102, + 102, 102, 102, 233, 232, 231, 230, 229, 102, 203, + 196, 193, 102, 102, 102, 102, 167, 166, 158, 148, + 147, 146, 85, 139, 138, 110, 102, 106, 103, 77, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324 + 68, 327, 9, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327 } ; -static const flex_int16_t yy_chk[761] = +static const flex_int16_t yy_chk[767] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -826,83 +827,84 @@ static const flex_int16_t yy_chk[761] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 7, 8, 6, 7, - 8, 5, 3, 4, 6, 14, 15, 17, 18, 21, - 17, 17, 22, 24, 31, 31, 110, 21, 25, 25, - 25, 25, 39, 24, 22, 43, 15, 17, 110, 26, + 1, 1, 1, 3, 4, 5, 6, 14, 5, 6, + 7, 8, 3, 4, 15, 18, 7, 8, 21, 22, + 17, 7, 8, 17, 17, 205, 21, 24, 31, 31, + 26, 22, 33, 33, 15, 14, 26, 24, 205, 18, - 33, 33, 18, 14, 15, 26, 40, 47, 39, 43, - 26, 43, 45, 344, 15, 47, 45, 27, 26, 27, - 27, 27, 27, 25, 28, 40, 28, 28, 28, 28, - 27, 41, 27, 44, 27, 41, 42, 44, 46, 27, - 48, 28, 41, 49, 42, 52, 56, 46, 41, 53, - 44, 50, 51, 42, 46, 62, 52, 48, 68, 50, - 51, 77, 49, 54, 52, 53, 70, 54, 70, 111, - 79, 81, 82, 98, 54, 62, 51, 111, 82, 113, - 118, 343, 56, 62, 144, 114, 68, 118, 117, 77, - 98, 113, 144, 62, 79, 81, 70, 89, 89, 89, + 17, 26, 15, 25, 25, 25, 25, 39, 40, 26, + 47, 27, 15, 27, 27, 27, 27, 28, 47, 28, + 28, 28, 28, 39, 27, 41, 27, 40, 27, 41, + 43, 42, 49, 27, 28, 48, 41, 44, 25, 42, + 46, 44, 41, 45, 43, 50, 43, 45, 42, 46, + 51, 49, 48, 50, 44, 53, 46, 52, 51, 54, + 56, 65, 69, 54, 78, 71, 67, 71, 52, 80, + 54, 53, 67, 82, 51, 111, 52, 67, 83, 114, + 112, 65, 115, 347, 83, 67, 147, 111, 112, 65, + 69, 114, 78, 80, 147, 71, 56, 82, 115, 65, - 89, 114, 82, 95, 95, 95, 95, 96, 117, 96, - 96, 96, 96, 97, 112, 97, 97, 97, 97, 119, - 99, 89, 99, 99, 96, 120, 115, 95, 112, 124, - 97, 121, 125, 119, 112, 115, 127, 99, 100, 126, - 100, 100, 100, 100, 120, 131, 121, 139, 140, 342, - 100, 100, 124, 125, 128, 100, 126, 127, 129, 100, - 100, 100, 100, 100, 100, 130, 132, 131, 128, 133, - 129, 134, 141, 132, 141, 139, 140, 130, 146, 149, - 148, 133, 148, 134, 130, 150, 153, 151, 152, 165, - 168, 150, 153, 157, 157, 157, 157, 160, 168, 160, + 90, 90, 90, 90, 96, 96, 96, 96, 83, 97, + 99, 97, 97, 97, 97, 98, 113, 98, 98, 98, + 98, 118, 125, 120, 90, 121, 97, 99, 96, 116, + 113, 100, 98, 100, 100, 119, 113, 120, 116, 126, + 122, 118, 119, 128, 121, 125, 127, 130, 100, 101, + 346, 101, 101, 101, 101, 122, 132, 131, 142, 130, + 126, 101, 101, 127, 128, 129, 101, 143, 134, 131, + 101, 101, 101, 101, 101, 101, 131, 133, 132, 129, + 134, 135, 149, 144, 133, 144, 142, 151, 152, 151, + 153, 154, 155, 135, 156, 143, 153, 170, 171, 168, - 160, 166, 141, 149, 165, 166, 146, 170, 339, 173, - 148, 151, 152, 167, 160, 150, 153, 157, 159, 169, - 159, 159, 159, 159, 172, 171, 173, 167, 170, 171, - 174, 175, 172, 169, 176, 159, 177, 178, 179, 175, - 180, 183, 176, 181, 177, 182, 184, 179, 185, 178, - 174, 186, 181, 187, 184, 188, 185, 194, 195, 186, - 197, 183, 180, 196, 198, 196, 182, 199, 202, 188, - 205, 206, 207, 199, 187, 209, 211, 205, 213, 210, - 211, 202, 216, 206, 197, 194, 195, 210, 198, 214, - 219, 209, 213, 196, 207, 222, 215, 199, 214, 215, + 156, 160, 160, 160, 160, 163, 171, 163, 163, 345, + 149, 170, 152, 144, 168, 154, 155, 151, 172, 169, + 153, 173, 163, 169, 156, 160, 162, 175, 162, 162, + 162, 162, 172, 174, 176, 175, 177, 174, 178, 179, + 180, 181, 173, 162, 183, 182, 178, 179, 180, 184, + 185, 176, 186, 181, 182, 187, 177, 188, 184, 189, + 190, 191, 197, 187, 198, 188, 183, 189, 199, 200, + 199, 185, 186, 201, 202, 191, 208, 209, 210, 212, + 202, 190, 216, 208, 214, 221, 213, 219, 214, 209, + 197, 221, 198, 200, 213, 212, 216, 201, 199, 217, - 218, 216, 223, 220, 222, 224, 218, 220, 231, 232, - 234, 219, 233, 224, 237, 239, 241, 240, 242, 245, - 237, 246, 240, 223, 234, 240, 231, 243, 233, 242, - 232, 245, 241, 246, 244, 253, 254, 255, 243, 256, - 239, 244, 257, 259, 263, 260, 265, 254, 273, 274, - 266, 259, 253, 257, 272, 277, 333, 274, 281, 255, - 256, 260, 265, 263, 266, 277, 272, 273, 278, 279, - 280, 285, 281, 286, 288, 278, 290, 279, 280, 292, - 290, 286, 291, 295, 297, 298, 288, 285, 292, 291, - 300, 296, 298, 301, 292, 296, 304, 301, 307, 308, + 210, 222, 218, 223, 202, 218, 219, 223, 217, 225, + 226, 227, 234, 235, 237, 240, 236, 242, 225, 227, + 244, 240, 222, 342, 245, 258, 246, 256, 237, 259, + 234, 226, 236, 243, 235, 245, 244, 246, 243, 247, + 248, 243, 242, 249, 256, 257, 247, 258, 260, 262, + 259, 263, 248, 266, 268, 249, 257, 262, 276, 260, + 269, 275, 281, 277, 298, 280, 284, 263, 282, 281, + 268, 277, 266, 275, 269, 280, 282, 276, 283, 288, + 284, 289, 291, 293, 294, 298, 283, 293, 295, 289, + 300, 294, 299, 301, 291, 288, 299, 295, 303, 311, - 297, 311, 307, 304, 295, 312, 314, 315, 320, 300, - 322, 312, 323, 317, 314, 319, 311, 322, 315, 318, - 308, 317, 316, 313, 320, 325, 325, 325, 325, 325, - 325, 325, 325, 326, 326, 326, 326, 326, 326, 326, - 326, 327, 327, 327, 327, 327, 327, 327, 327, 328, - 328, 310, 309, 328, 329, 329, 329, 329, 329, 329, - 329, 329, 330, 306, 330, 330, 330, 330, 331, 331, - 331, 331, 332, 332, 332, 332, 332, 332, 332, 332, - 334, 334, 334, 334, 334, 334, 334, 334, 335, 335, - 335, 335, 335, 335, 335, 335, 336, 336, 336, 336, + 301, 304, 307, 295, 310, 304, 300, 314, 310, 307, + 315, 317, 318, 320, 323, 336, 315, 303, 325, 317, + 311, 320, 314, 318, 326, 325, 322, 321, 319, 316, + 323, 328, 328, 328, 328, 328, 328, 328, 328, 329, + 329, 329, 329, 329, 329, 329, 329, 330, 330, 330, + 330, 330, 330, 330, 330, 331, 331, 313, 312, 331, + 332, 332, 332, 332, 332, 332, 332, 332, 333, 309, + 333, 333, 333, 333, 334, 334, 334, 334, 335, 335, + 335, 335, 335, 335, 335, 335, 337, 337, 337, 337, + 337, 337, 337, 337, 338, 338, 338, 338, 338, 338, - 336, 336, 336, 336, 337, 305, 337, 337, 337, 337, - 337, 337, 338, 338, 303, 338, 340, 340, 340, 340, - 340, 340, 340, 340, 341, 341, 341, 341, 341, 341, - 341, 341, 302, 299, 294, 289, 287, 284, 282, 276, - 275, 271, 269, 268, 264, 262, 261, 258, 252, 251, - 250, 249, 247, 238, 236, 235, 229, 228, 227, 226, - 221, 217, 212, 208, 204, 203, 201, 200, 193, 192, - 191, 190, 162, 155, 145, 143, 123, 122, 116, 108, - 107, 103, 90, 75, 74, 73, 66, 63, 61, 38, - 35, 32, 29, 16, 13, 9, 324, 324, 324, 324, + 338, 338, 339, 339, 339, 339, 339, 339, 339, 339, + 340, 308, 340, 340, 340, 340, 340, 340, 341, 341, + 306, 341, 343, 343, 343, 343, 343, 343, 343, 343, + 344, 344, 344, 344, 344, 344, 344, 344, 305, 302, + 297, 292, 290, 287, 285, 279, 278, 274, 272, 271, + 267, 265, 264, 261, 255, 254, 253, 252, 250, 241, + 239, 238, 232, 231, 230, 229, 224, 220, 215, 211, + 207, 206, 204, 203, 196, 195, 194, 193, 165, 158, + 148, 146, 124, 123, 117, 109, 108, 104, 91, 76, + 75, 74, 66, 64, 61, 38, 35, 32, 29, 16, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324 + 13, 9, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327 } ; /* The intent behind this definition is that it'll catch @@ -923,14 +925,14 @@ static const flex_int16_t yy_chk[761] = #line 25 "lexer.lpp" #define YY_USER_ACTION ctx->loc.columns(yyleng); -#line 926 "lexer.cpp" - #line 928 "lexer.cpp" + +#line 930 "lexer.cpp" #define INITIAL 0 -#define COMMENT_BLOCK_STATE 1 -#define DEVBLOCK_ON_STATE 2 -#define DEVBLOCK_OFF_STATE 3 +#define COMMENT_STATE 1 +#define DEV_OFF_STATE 2 +#define DEV_ON_STATE 3 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way @@ -1194,7 +1196,7 @@ YY_DECL ctx->loc.step(); -#line 1197 "lexer.cpp" +#line 1199 "lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1221,13 +1223,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 >= 325 ) + if ( yy_current_state >= 328 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 324 ); + while ( yy_current_state != 327 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -1255,552 +1257,571 @@ YY_RULE_SETUP case 2: /* rule 2 can match eol */ YY_RULE_SETUP -#line 52 "lexer.lpp" +#line 51 "lexer.lpp" { ctx->loc.lines(yyleng); ctx->loc.step(); } YY_BREAK case 3: YY_RULE_SETUP -#line 54 "lexer.lpp" +#line 53 "lexer.lpp" YY_BREAK case 4: YY_RULE_SETUP -#line 56 "lexer.lpp" -{ BEGIN(COMMENT_BLOCK_STATE); } +#line 55 "lexer.lpp" +{ BEGIN(COMMENT_STATE); } YY_BREAK case 5: YY_RULE_SETUP -#line 57 "lexer.lpp" +#line 56 "lexer.lpp" YY_BREAK case 6: /* rule 6 can match eol */ YY_RULE_SETUP -#line 58 "lexer.lpp" +#line 57 "lexer.lpp" { ctx->loc.lines(yyleng); ctx->loc.step(); } YY_BREAK case 7: YY_RULE_SETUP -#line 59 "lexer.lpp" +#line 58 "lexer.lpp" { BEGIN(INITIAL); } YY_BREAK +case YY_STATE_EOF(COMMENT_STATE): +#line 59 "lexer.lpp" +{ throw iw5::parser::syntax_error(ctx->loc, "unmatched multiline comment start ('/*')"); } + YY_BREAK case 8: YY_RULE_SETUP -#line 61 "lexer.lpp" -{ BEGIN(ctx->mode == xsk::gsc::build::dev ? DEVBLOCK_ON_STATE : DEVBLOCK_OFF_STATE); } +#line 60 "lexer.lpp" +{ throw iw5::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } YY_BREAK case 9: YY_RULE_SETUP #line 62 "lexer.lpp" - +{ throw iw5::parser::syntax_error(ctx->loc, "cannot recurse devblock ('/#')"); } YY_BREAK case 10: -/* rule 10 can match eol */ YY_RULE_SETUP #line 63 "lexer.lpp" -{ ctx->loc.lines(yyleng); ctx->loc.step(); } +{ BEGIN(INITIAL); return iw5::parser::make_DEVEND(ctx->loc); } + YY_BREAK +case YY_STATE_EOF(DEV_ON_STATE): +#line 64 "lexer.lpp" +{ throw iw5::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } YY_BREAK case 11: YY_RULE_SETUP -#line 64 "lexer.lpp" -{ BEGIN(INITIAL); } +#line 66 "lexer.lpp" +{ BEGIN(ctx->mode == xsk::gsc::build::dev ? DEV_ON_STATE : DEV_OFF_STATE); if(ctx->mode == xsk::gsc::build::dev) return iw5::parser::make_DEVBEGIN(ctx->loc); } YY_BREAK case 12: YY_RULE_SETUP -#line 66 "lexer.lpp" -{ throw iw5::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } +#line 67 "lexer.lpp" + YY_BREAK case 13: +/* rule 13 can match eol */ YY_RULE_SETUP -#line 67 "lexer.lpp" -{ throw iw5::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } +#line 68 "lexer.lpp" +{ ctx->loc.lines(yyleng); ctx->loc.step(); } YY_BREAK case 14: YY_RULE_SETUP #line 69 "lexer.lpp" -{ return iw5::parser::make_INLINE(ctx->loc); } +{ BEGIN(INITIAL); } + YY_BREAK +case YY_STATE_EOF(DEV_OFF_STATE): +#line 70 "lexer.lpp" +{ throw iw5::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } YY_BREAK case 15: YY_RULE_SETUP -#line 70 "lexer.lpp" -{ return iw5::parser::make_INCLUDE(ctx->loc); } +#line 71 "lexer.lpp" +{ throw iw5::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } YY_BREAK case 16: YY_RULE_SETUP -#line 71 "lexer.lpp" -{ return iw5::parser::make_USINGTREE(ctx->loc); } +#line 73 "lexer.lpp" +{ return iw5::parser::make_INLINE(ctx->loc); } YY_BREAK case 17: YY_RULE_SETUP -#line 72 "lexer.lpp" -{ return iw5::parser::make_ANIMTREE(ctx->loc); } +#line 74 "lexer.lpp" +{ return iw5::parser::make_INCLUDE(ctx->loc); } YY_BREAK case 18: YY_RULE_SETUP -#line 73 "lexer.lpp" -{ return iw5::parser::make_ENDON(ctx->loc); } +#line 75 "lexer.lpp" +{ return iw5::parser::make_USINGTREE(ctx->loc); } YY_BREAK case 19: YY_RULE_SETUP -#line 74 "lexer.lpp" -{ return iw5::parser::make_NOTIFY(ctx->loc); } +#line 76 "lexer.lpp" +{ return iw5::parser::make_ANIMTREE(ctx->loc); } YY_BREAK case 20: YY_RULE_SETUP -#line 75 "lexer.lpp" -{ return iw5::parser::make_WAIT(ctx->loc); } +#line 77 "lexer.lpp" +{ return iw5::parser::make_ENDON(ctx->loc); } YY_BREAK case 21: YY_RULE_SETUP -#line 76 "lexer.lpp" -{ return iw5::parser::make_WAITTILL(ctx->loc); } +#line 78 "lexer.lpp" +{ return iw5::parser::make_NOTIFY(ctx->loc); } YY_BREAK case 22: YY_RULE_SETUP -#line 77 "lexer.lpp" -{ return iw5::parser::make_WAITTILLMATCH(ctx->loc); } +#line 79 "lexer.lpp" +{ return iw5::parser::make_WAIT(ctx->loc); } YY_BREAK case 23: YY_RULE_SETUP -#line 78 "lexer.lpp" -{ return iw5::parser::make_WAITTILLFRAMEEND(ctx->loc); } +#line 80 "lexer.lpp" +{ return iw5::parser::make_WAITTILL(ctx->loc); } YY_BREAK case 24: YY_RULE_SETUP -#line 79 "lexer.lpp" -{ return iw5::parser::make_IF(ctx->loc); } +#line 81 "lexer.lpp" +{ return iw5::parser::make_WAITTILLMATCH(ctx->loc); } YY_BREAK case 25: YY_RULE_SETUP -#line 80 "lexer.lpp" -{ return iw5::parser::make_ELSE(ctx->loc); } +#line 82 "lexer.lpp" +{ return iw5::parser::make_WAITTILLFRAMEEND(ctx->loc); } YY_BREAK case 26: YY_RULE_SETUP -#line 81 "lexer.lpp" -{ return iw5::parser::make_DO(ctx->loc); } +#line 83 "lexer.lpp" +{ return iw5::parser::make_IF(ctx->loc); } YY_BREAK case 27: YY_RULE_SETUP -#line 82 "lexer.lpp" -{ return iw5::parser::make_WHILE(ctx->loc); } +#line 84 "lexer.lpp" +{ return iw5::parser::make_ELSE(ctx->loc); } YY_BREAK case 28: YY_RULE_SETUP -#line 83 "lexer.lpp" -{ return iw5::parser::make_FOR(ctx->loc); } +#line 85 "lexer.lpp" +{ return iw5::parser::make_DO(ctx->loc); } YY_BREAK case 29: YY_RULE_SETUP -#line 84 "lexer.lpp" -{ return iw5::parser::make_FOREACH(ctx->loc); } +#line 86 "lexer.lpp" +{ return iw5::parser::make_WHILE(ctx->loc); } YY_BREAK case 30: YY_RULE_SETUP -#line 85 "lexer.lpp" -{ return iw5::parser::make_IN(ctx->loc); } +#line 87 "lexer.lpp" +{ return iw5::parser::make_FOR(ctx->loc); } YY_BREAK case 31: YY_RULE_SETUP -#line 86 "lexer.lpp" -{ return iw5::parser::make_SWITCH(ctx->loc); } +#line 88 "lexer.lpp" +{ return iw5::parser::make_FOREACH(ctx->loc); } YY_BREAK case 32: YY_RULE_SETUP -#line 87 "lexer.lpp" -{ return iw5::parser::make_CASE(ctx->loc); } +#line 89 "lexer.lpp" +{ return iw5::parser::make_IN(ctx->loc); } YY_BREAK case 33: YY_RULE_SETUP -#line 88 "lexer.lpp" -{ return iw5::parser::make_DEFAULT(ctx->loc); } +#line 90 "lexer.lpp" +{ return iw5::parser::make_SWITCH(ctx->loc); } YY_BREAK case 34: YY_RULE_SETUP -#line 89 "lexer.lpp" -{ return iw5::parser::make_BREAK(ctx->loc); } +#line 91 "lexer.lpp" +{ return iw5::parser::make_CASE(ctx->loc); } YY_BREAK case 35: YY_RULE_SETUP -#line 90 "lexer.lpp" -{ return iw5::parser::make_CONTINUE(ctx->loc); } +#line 92 "lexer.lpp" +{ return iw5::parser::make_DEFAULT(ctx->loc); } YY_BREAK case 36: YY_RULE_SETUP -#line 91 "lexer.lpp" -{ return iw5::parser::make_RETURN(ctx->loc); } +#line 93 "lexer.lpp" +{ return iw5::parser::make_BREAK(ctx->loc); } YY_BREAK case 37: YY_RULE_SETUP -#line 92 "lexer.lpp" -{ return iw5::parser::make_BREAKPOINT(ctx->loc); } +#line 94 "lexer.lpp" +{ return iw5::parser::make_CONTINUE(ctx->loc); } YY_BREAK case 38: YY_RULE_SETUP -#line 93 "lexer.lpp" -{ return iw5::parser::make_PROFBEGIN(ctx->loc); } +#line 95 "lexer.lpp" +{ return iw5::parser::make_RETURN(ctx->loc); } YY_BREAK case 39: YY_RULE_SETUP -#line 94 "lexer.lpp" -{ return iw5::parser::make_PROFEND(ctx->loc); } +#line 96 "lexer.lpp" +{ return iw5::parser::make_BREAKPOINT(ctx->loc); } YY_BREAK case 40: YY_RULE_SETUP -#line 95 "lexer.lpp" -{ return iw5::parser::make_THREAD(ctx->loc); } +#line 97 "lexer.lpp" +{ return iw5::parser::make_PROFBEGIN(ctx->loc); } YY_BREAK case 41: YY_RULE_SETUP -#line 96 "lexer.lpp" -{ return iw5::parser::make_CHILDTHREAD(ctx->loc); } +#line 98 "lexer.lpp" +{ return iw5::parser::make_PROFEND(ctx->loc); } YY_BREAK case 42: YY_RULE_SETUP -#line 97 "lexer.lpp" -{ return iw5::parser::make_THISTHREAD(ctx->loc); } +#line 99 "lexer.lpp" +{ return iw5::parser::make_THREAD(ctx->loc); } YY_BREAK case 43: YY_RULE_SETUP -#line 98 "lexer.lpp" -{ return iw5::parser::make_CALL(ctx->loc); } +#line 100 "lexer.lpp" +{ return iw5::parser::make_CHILDTHREAD(ctx->loc); } YY_BREAK case 44: YY_RULE_SETUP -#line 99 "lexer.lpp" -{ return iw5::parser::make_TRUE(ctx->loc); } +#line 101 "lexer.lpp" +{ return iw5::parser::make_THISTHREAD(ctx->loc); } YY_BREAK case 45: YY_RULE_SETUP -#line 100 "lexer.lpp" -{ return iw5::parser::make_FALSE(ctx->loc); } +#line 102 "lexer.lpp" +{ return iw5::parser::make_CALL(ctx->loc); } YY_BREAK case 46: YY_RULE_SETUP -#line 101 "lexer.lpp" -{ return iw5::parser::make_UNDEFINED(ctx->loc); } +#line 103 "lexer.lpp" +{ return iw5::parser::make_TRUE(ctx->loc); } YY_BREAK case 47: YY_RULE_SETUP -#line 102 "lexer.lpp" -{ return iw5::parser::make_SIZE(ctx->loc); } +#line 104 "lexer.lpp" +{ return iw5::parser::make_FALSE(ctx->loc); } YY_BREAK case 48: YY_RULE_SETUP -#line 103 "lexer.lpp" -{ return iw5::parser::make_GAME(ctx->loc); } +#line 105 "lexer.lpp" +{ return iw5::parser::make_UNDEFINED(ctx->loc); } YY_BREAK case 49: YY_RULE_SETUP -#line 104 "lexer.lpp" -{ return iw5::parser::make_SELF(ctx->loc); } +#line 106 "lexer.lpp" +{ return iw5::parser::make_SIZE(ctx->loc); } YY_BREAK case 50: YY_RULE_SETUP -#line 105 "lexer.lpp" -{ return iw5::parser::make_ANIM(ctx->loc); } +#line 107 "lexer.lpp" +{ return iw5::parser::make_GAME(ctx->loc); } YY_BREAK case 51: YY_RULE_SETUP -#line 106 "lexer.lpp" -{ return iw5::parser::make_LEVEL(ctx->loc); } +#line 108 "lexer.lpp" +{ return iw5::parser::make_SELF(ctx->loc); } YY_BREAK case 52: YY_RULE_SETUP -#line 107 "lexer.lpp" -{ return iw5::parser::make_LPAREN(ctx->loc); } +#line 109 "lexer.lpp" +{ return iw5::parser::make_ANIM(ctx->loc); } YY_BREAK case 53: YY_RULE_SETUP -#line 108 "lexer.lpp" -{ return iw5::parser::make_RPAREN(ctx->loc); } +#line 110 "lexer.lpp" +{ return iw5::parser::make_LEVEL(ctx->loc); } YY_BREAK case 54: YY_RULE_SETUP -#line 109 "lexer.lpp" -{ return iw5::parser::make_LBRACE(ctx->loc); } +#line 111 "lexer.lpp" +{ return iw5::parser::make_LPAREN(ctx->loc); } YY_BREAK case 55: YY_RULE_SETUP -#line 110 "lexer.lpp" -{ return iw5::parser::make_RBRACE(ctx->loc); } +#line 112 "lexer.lpp" +{ return iw5::parser::make_RPAREN(ctx->loc); } YY_BREAK case 56: YY_RULE_SETUP -#line 111 "lexer.lpp" -{ return iw5::parser::make_LBRACKET(ctx->loc); } +#line 113 "lexer.lpp" +{ return iw5::parser::make_LBRACE(ctx->loc); } YY_BREAK case 57: YY_RULE_SETUP -#line 112 "lexer.lpp" -{ return iw5::parser::make_RBRACKET(ctx->loc); } +#line 114 "lexer.lpp" +{ return iw5::parser::make_RBRACE(ctx->loc); } YY_BREAK case 58: YY_RULE_SETUP -#line 113 "lexer.lpp" -{ return iw5::parser::make_COMMA(ctx->loc); } +#line 115 "lexer.lpp" +{ return iw5::parser::make_LBRACKET(ctx->loc); } YY_BREAK case 59: YY_RULE_SETUP -#line 114 "lexer.lpp" -{ return iw5::parser::make_DOT(ctx->loc); } +#line 116 "lexer.lpp" +{ return iw5::parser::make_RBRACKET(ctx->loc); } YY_BREAK case 60: YY_RULE_SETUP -#line 115 "lexer.lpp" -{ return iw5::parser::make_DOUBLECOLON(ctx->loc); } +#line 117 "lexer.lpp" +{ return iw5::parser::make_COMMA(ctx->loc); } YY_BREAK case 61: YY_RULE_SETUP -#line 116 "lexer.lpp" -{ return iw5::parser::make_COLON(ctx->loc); } +#line 118 "lexer.lpp" +{ return iw5::parser::make_DOT(ctx->loc); } YY_BREAK case 62: YY_RULE_SETUP -#line 117 "lexer.lpp" -{ return iw5::parser::make_SEMICOLON(ctx->loc); } +#line 119 "lexer.lpp" +{ return iw5::parser::make_DOUBLECOLON(ctx->loc); } YY_BREAK case 63: YY_RULE_SETUP -#line 118 "lexer.lpp" -{ return iw5::parser::make_QMARK(ctx->loc); } +#line 120 "lexer.lpp" +{ return iw5::parser::make_COLON(ctx->loc); } YY_BREAK case 64: YY_RULE_SETUP -#line 119 "lexer.lpp" -{ return iw5::parser::make_INCREMENT(ctx->loc); } +#line 121 "lexer.lpp" +{ return iw5::parser::make_SEMICOLON(ctx->loc); } YY_BREAK case 65: YY_RULE_SETUP -#line 120 "lexer.lpp" -{ return iw5::parser::make_DECREMENT(ctx->loc); } +#line 122 "lexer.lpp" +{ return iw5::parser::make_QMARK(ctx->loc); } YY_BREAK case 66: YY_RULE_SETUP -#line 121 "lexer.lpp" -{ return iw5::parser::make_ASSIGN_LSHIFT(ctx->loc); } +#line 123 "lexer.lpp" +{ return iw5::parser::make_INCREMENT(ctx->loc); } YY_BREAK case 67: YY_RULE_SETUP -#line 122 "lexer.lpp" -{ return iw5::parser::make_ASSIGN_RSHIFT(ctx->loc); } +#line 124 "lexer.lpp" +{ return iw5::parser::make_DECREMENT(ctx->loc); } YY_BREAK case 68: YY_RULE_SETUP -#line 123 "lexer.lpp" -{ return iw5::parser::make_LSHIFT(ctx->loc); } +#line 125 "lexer.lpp" +{ return iw5::parser::make_ASSIGN_LSHIFT(ctx->loc); } YY_BREAK case 69: YY_RULE_SETUP -#line 124 "lexer.lpp" -{ return iw5::parser::make_RSHIFT(ctx->loc); } +#line 126 "lexer.lpp" +{ return iw5::parser::make_ASSIGN_RSHIFT(ctx->loc); } YY_BREAK case 70: YY_RULE_SETUP -#line 125 "lexer.lpp" -{ return iw5::parser::make_OR(ctx->loc); } +#line 127 "lexer.lpp" +{ return iw5::parser::make_LSHIFT(ctx->loc); } YY_BREAK case 71: YY_RULE_SETUP -#line 126 "lexer.lpp" -{ return iw5::parser::make_AND(ctx->loc); } +#line 128 "lexer.lpp" +{ return iw5::parser::make_RSHIFT(ctx->loc); } YY_BREAK case 72: YY_RULE_SETUP -#line 127 "lexer.lpp" -{ return iw5::parser::make_EQUALITY(ctx->loc); } +#line 129 "lexer.lpp" +{ return iw5::parser::make_OR(ctx->loc); } YY_BREAK case 73: YY_RULE_SETUP -#line 128 "lexer.lpp" -{ return iw5::parser::make_INEQUALITY(ctx->loc); } +#line 130 "lexer.lpp" +{ return iw5::parser::make_AND(ctx->loc); } YY_BREAK case 74: YY_RULE_SETUP -#line 129 "lexer.lpp" -{ return iw5::parser::make_LESS_EQUAL(ctx->loc); } +#line 131 "lexer.lpp" +{ return iw5::parser::make_EQUALITY(ctx->loc); } YY_BREAK case 75: YY_RULE_SETUP -#line 130 "lexer.lpp" -{ return iw5::parser::make_GREATER_EQUAL(ctx->loc); } +#line 132 "lexer.lpp" +{ return iw5::parser::make_INEQUALITY(ctx->loc); } YY_BREAK case 76: YY_RULE_SETUP -#line 131 "lexer.lpp" -{ return iw5::parser::make_LESS(ctx->loc); } +#line 133 "lexer.lpp" +{ return iw5::parser::make_LESS_EQUAL(ctx->loc); } YY_BREAK case 77: YY_RULE_SETUP -#line 132 "lexer.lpp" -{ return iw5::parser::make_GREATER(ctx->loc); } +#line 134 "lexer.lpp" +{ return iw5::parser::make_GREATER_EQUAL(ctx->loc); } YY_BREAK case 78: YY_RULE_SETUP -#line 133 "lexer.lpp" -{ return iw5::parser::make_ASSIGN_ADD(ctx->loc); } +#line 135 "lexer.lpp" +{ return iw5::parser::make_LESS(ctx->loc); } YY_BREAK case 79: YY_RULE_SETUP -#line 134 "lexer.lpp" -{ return iw5::parser::make_ASSIGN_SUB(ctx->loc); } +#line 136 "lexer.lpp" +{ return iw5::parser::make_GREATER(ctx->loc); } YY_BREAK case 80: YY_RULE_SETUP -#line 135 "lexer.lpp" -{ return iw5::parser::make_ASSIGN_MUL(ctx->loc); } +#line 137 "lexer.lpp" +{ return iw5::parser::make_ASSIGN_ADD(ctx->loc); } YY_BREAK case 81: YY_RULE_SETUP -#line 136 "lexer.lpp" -{ return iw5::parser::make_ASSIGN_DIV(ctx->loc); } +#line 138 "lexer.lpp" +{ return iw5::parser::make_ASSIGN_SUB(ctx->loc); } YY_BREAK case 82: YY_RULE_SETUP -#line 137 "lexer.lpp" -{ return iw5::parser::make_ASSIGN_MOD(ctx->loc); } +#line 139 "lexer.lpp" +{ return iw5::parser::make_ASSIGN_MUL(ctx->loc); } YY_BREAK case 83: YY_RULE_SETUP -#line 138 "lexer.lpp" -{ return iw5::parser::make_ASSIGN_BW_OR(ctx->loc); } +#line 140 "lexer.lpp" +{ return iw5::parser::make_ASSIGN_DIV(ctx->loc); } YY_BREAK case 84: YY_RULE_SETUP -#line 139 "lexer.lpp" -{ return iw5::parser::make_ASSIGN_BW_AND(ctx->loc); } +#line 141 "lexer.lpp" +{ return iw5::parser::make_ASSIGN_MOD(ctx->loc); } YY_BREAK case 85: YY_RULE_SETUP -#line 140 "lexer.lpp" -{ return iw5::parser::make_ASSIGN_BW_EXOR(ctx->loc); } +#line 142 "lexer.lpp" +{ return iw5::parser::make_ASSIGN_BW_OR(ctx->loc); } YY_BREAK case 86: YY_RULE_SETUP -#line 141 "lexer.lpp" -{ return iw5::parser::make_ASSIGN(ctx->loc); } +#line 143 "lexer.lpp" +{ return iw5::parser::make_ASSIGN_BW_AND(ctx->loc); } YY_BREAK case 87: YY_RULE_SETUP -#line 142 "lexer.lpp" -{ return iw5::parser::make_ADD(ctx->loc); } +#line 144 "lexer.lpp" +{ return iw5::parser::make_ASSIGN_BW_EXOR(ctx->loc); } YY_BREAK case 88: YY_RULE_SETUP -#line 143 "lexer.lpp" -{ return iw5::parser::make_SUB(ctx->loc); } +#line 145 "lexer.lpp" +{ return iw5::parser::make_ASSIGN(ctx->loc); } YY_BREAK case 89: YY_RULE_SETUP -#line 144 "lexer.lpp" -{ return iw5::parser::make_MUL(ctx->loc); } +#line 146 "lexer.lpp" +{ return iw5::parser::make_ADD(ctx->loc); } YY_BREAK case 90: YY_RULE_SETUP -#line 145 "lexer.lpp" -{ return iw5::parser::make_DIV(ctx->loc); } +#line 147 "lexer.lpp" +{ return iw5::parser::make_SUB(ctx->loc); } YY_BREAK case 91: YY_RULE_SETUP -#line 146 "lexer.lpp" -{ return iw5::parser::make_MOD(ctx->loc); } +#line 148 "lexer.lpp" +{ return iw5::parser::make_MUL(ctx->loc); } YY_BREAK case 92: YY_RULE_SETUP -#line 147 "lexer.lpp" -{ return iw5::parser::make_NOT(ctx->loc); } +#line 149 "lexer.lpp" +{ return iw5::parser::make_DIV(ctx->loc); } YY_BREAK case 93: YY_RULE_SETUP -#line 148 "lexer.lpp" -{ return iw5::parser::make_COMPLEMENT(ctx->loc); } +#line 150 "lexer.lpp" +{ return iw5::parser::make_MOD(ctx->loc); } YY_BREAK case 94: YY_RULE_SETUP -#line 149 "lexer.lpp" -{ return iw5::parser::make_BITWISE_OR(ctx->loc); } +#line 151 "lexer.lpp" +{ return iw5::parser::make_NOT(ctx->loc); } YY_BREAK case 95: YY_RULE_SETUP -#line 150 "lexer.lpp" -{ return iw5::parser::make_BITWISE_AND(ctx->loc); } +#line 152 "lexer.lpp" +{ return iw5::parser::make_COMPLEMENT(ctx->loc); } YY_BREAK case 96: YY_RULE_SETUP -#line 151 "lexer.lpp" -{ return iw5::parser::make_BITWISE_EXOR(ctx->loc); } +#line 153 "lexer.lpp" +{ return iw5::parser::make_BITWISE_OR(ctx->loc); } YY_BREAK case 97: YY_RULE_SETUP -#line 152 "lexer.lpp" -{ return iw5::parser::make_PATH(xsk::utils::string::fordslash(yytext), ctx->loc); } +#line 154 "lexer.lpp" +{ return iw5::parser::make_BITWISE_AND(ctx->loc); } YY_BREAK case 98: YY_RULE_SETUP -#line 153 "lexer.lpp" -{ return iw5::parser::make_IDENTIFIER((std::string(yytext, 3) == "_ID") ? std::string(yytext) : xsk::utils::string::to_lower(yytext), ctx->loc); } +#line 155 "lexer.lpp" +{ return iw5::parser::make_BITWISE_EXOR(ctx->loc); } YY_BREAK case 99: -/* rule 99 can match eol */ -YY_RULE_SETUP -#line 154 "lexer.lpp" -{ return iw5::parser::make_ISTRING(std::string(yytext).substr(1), ctx->loc); } - YY_BREAK -case 100: -/* rule 100 can match eol */ -YY_RULE_SETUP -#line 155 "lexer.lpp" -{ return iw5::parser::make_STRING(std::string(yytext), ctx->loc); } - YY_BREAK -case 101: YY_RULE_SETUP #line 156 "lexer.lpp" -{ return iw5::parser::make_COLOR(std::string(yytext).substr(1), ctx->loc); } +{ return iw5::parser::make_PATH(xsk::utils::string::fordslash(yytext), ctx->loc); } YY_BREAK -case 102: +case 100: YY_RULE_SETUP #line 157 "lexer.lpp" -{ return iw5::parser::make_FLOAT(std::string(yytext), ctx->loc); } +{ return iw5::parser::make_IDENTIFIER((std::string(yytext, 3) == "_ID") ? std::string(yytext) : xsk::utils::string::to_lower(yytext), ctx->loc); } + YY_BREAK +case 101: +/* rule 101 can match eol */ +YY_RULE_SETUP +#line 158 "lexer.lpp" +{ return iw5::parser::make_ISTRING(std::string(yytext).substr(1), ctx->loc); } + YY_BREAK +case 102: +/* rule 102 can match eol */ +YY_RULE_SETUP +#line 159 "lexer.lpp" +{ return iw5::parser::make_STRING(std::string(yytext), ctx->loc); } YY_BREAK case 103: YY_RULE_SETUP -#line 158 "lexer.lpp" -{ return iw5::parser::make_INT_OCT(xsk::utils::string::oct_to_dec(yytext), ctx->loc); } +#line 160 "lexer.lpp" +{ return iw5::parser::make_COLOR(std::string(yytext).substr(1), ctx->loc); } YY_BREAK case 104: YY_RULE_SETUP -#line 159 "lexer.lpp" -{ return iw5::parser::make_INT_BIN(xsk::utils::string::bin_to_dec(yytext), ctx->loc); } +#line 161 "lexer.lpp" +{ return iw5::parser::make_FLOAT(std::string(yytext), ctx->loc); } YY_BREAK case 105: YY_RULE_SETUP -#line 160 "lexer.lpp" -{ return iw5::parser::make_INT_HEX(xsk::utils::string::hex_to_dec(yytext), ctx->loc); } +#line 162 "lexer.lpp" +{ return iw5::parser::make_INT_OCT(xsk::utils::string::oct_to_dec(yytext), ctx->loc); } YY_BREAK case 106: YY_RULE_SETUP -#line 161 "lexer.lpp" -{ return iw5::parser::make_INT_DEC(std::string(yytext), ctx->loc); } - YY_BREAK -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(COMMENT_BLOCK_STATE): -case YY_STATE_EOF(DEVBLOCK_ON_STATE): -case YY_STATE_EOF(DEVBLOCK_OFF_STATE): -#line 162 "lexer.lpp" -{ if(ctx->header_top > 0) iw5_pop_header(ctx); else return iw5::parser::make_IW5EOF(ctx->loc); } +#line 163 "lexer.lpp" +{ return iw5::parser::make_INT_BIN(xsk::utils::string::bin_to_dec(yytext), ctx->loc); } YY_BREAK case 107: -/* rule 107 can match eol */ YY_RULE_SETUP -#line 163 "lexer.lpp" -{ throw iw5::parser::syntax_error(ctx->loc, "bad token: \'" + std::string(yytext) + "\'"); } +#line 164 "lexer.lpp" +{ return iw5::parser::make_INT_HEX(xsk::utils::string::hex_to_dec(yytext), ctx->loc); } YY_BREAK case 108: YY_RULE_SETUP #line 165 "lexer.lpp" +{ return iw5::parser::make_INT_DEC(std::string(yytext), ctx->loc); } + YY_BREAK +case YY_STATE_EOF(INITIAL): +#line 166 "lexer.lpp" +{ if(ctx->header_top > 0) iw5_pop_header(ctx); else return iw5::parser::make_IW5EOF(ctx->loc); } + YY_BREAK +case 109: +/* rule 109 can match eol */ +YY_RULE_SETUP +#line 167 "lexer.lpp" +{ throw iw5::parser::syntax_error(ctx->loc, "bad token: \'" + std::string(yytext) + "\'"); } + YY_BREAK +case 110: +YY_RULE_SETUP +#line 169 "lexer.lpp" ECHO; YY_BREAK -#line 1803 "lexer.cpp" +#line 1824 "lexer.cpp" case YY_END_OF_BUFFER: { @@ -2098,7 +2119,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 >= 325 ) + if ( yy_current_state >= 328 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2127,11 +2148,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 >= 325 ) + if ( yy_current_state >= 328 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 324); + yy_is_jam = (yy_current_state == 327); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -2930,7 +2951,7 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 165 "lexer.lpp" +#line 169 "lexer.lpp" void iw5_push_header(xsk::gsc::context* ctx, const std::string& file) diff --git a/src/iw5/xsk/lexer.hpp b/src/iw5/xsk/lexer.hpp index fa43834f..c5c583e0 100644 --- a/src/iw5/xsk/lexer.hpp +++ b/src/iw5/xsk/lexer.hpp @@ -439,9 +439,9 @@ void yyfree ( void * , yyscan_t yyscanner ); #ifdef YY_HEADER_EXPORT_START_CONDITIONS #define INITIAL 0 -#define COMMENT_BLOCK_STATE 1 -#define DEVBLOCK_ON_STATE 2 -#define DEVBLOCK_OFF_STATE 3 +#define COMMENT_STATE 1 +#define DEV_OFF_STATE 2 +#define DEV_ON_STATE 3 #endif @@ -703,7 +703,7 @@ extern int yylex (yyscan_t yyscanner); #undef yyTABLES_NAME #endif -#line 165 "lexer.lpp" +#line 169 "lexer.lpp" #line 709 "lexer.hpp" diff --git a/src/iw5/xsk/parser.cpp b/src/iw5/xsk/parser.cpp index da0f4e7b..54a2840e 100644 --- a/src/iw5/xsk/parser.cpp +++ b/src/iw5/xsk/parser.cpp @@ -442,6 +442,7 @@ namespace xsk { namespace gsc { namespace iw5 { value.YY_MOVE_OR_COPY< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.YY_MOVE_OR_COPY< ast::stmt_list::ptr > (YY_MOVE (that.value)); @@ -741,6 +742,7 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (YY_MOVE (that.value)); @@ -1040,6 +1042,7 @@ namespace xsk { namespace gsc { namespace iw5 { value.copy< ast::stmt_ifelse::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.copy< ast::stmt_list::ptr > (that.value); @@ -1338,6 +1341,7 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< ast::stmt_ifelse::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (that.value); @@ -1891,6 +1895,7 @@ namespace xsk { namespace gsc { namespace iw5 { yylhs.value.emplace< ast::stmt_ifelse::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list yylhs.value.emplace< ast::stmt_list::ptr > (); @@ -1970,1273 +1975,1303 @@ namespace xsk { namespace gsc { namespace iw5 { switch (yyn) { case 2: // root: program -#line 249 "parser.ypp" +#line 252 "parser.ypp" { ast = std::move(yystack_[0].value.as < ast::program::ptr > ()); } -#line 1976 "parser.cpp" +#line 1981 "parser.cpp" break; case 3: // root: %empty -#line 250 "parser.ypp" +#line 253 "parser.ypp" { ast = std::make_unique(yylhs.location); } -#line 1982 "parser.cpp" +#line 1987 "parser.cpp" break; case 4: // program: program inline -#line 255 "parser.ypp" +#line 258 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); } -#line 1988 "parser.cpp" +#line 1993 "parser.cpp" break; case 5: // program: program include -#line 257 "parser.ypp" +#line 260 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 1994 "parser.cpp" +#line 1999 "parser.cpp" break; case 6: // program: program declaration -#line 259 "parser.ypp" +#line 262 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2000 "parser.cpp" +#line 2005 "parser.cpp" break; case 7: // program: inline -#line 261 "parser.ypp" +#line 264 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); } -#line 2006 "parser.cpp" +#line 2011 "parser.cpp" break; case 8: // program: include -#line 263 "parser.ypp" +#line 266 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 2012 "parser.cpp" +#line 2017 "parser.cpp" break; case 9: // program: declaration -#line 265 "parser.ypp" +#line 268 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2018 "parser.cpp" +#line 2023 "parser.cpp" break; case 10: // inline: "#inline" expr_path ";" -#line 269 "parser.ypp" +#line 272 "parser.ypp" { iw5_push_header(ctx, yystack_[1].value.as < ast::expr_path::ptr > ()->value); } -#line 2024 "parser.cpp" +#line 2029 "parser.cpp" break; case 11: // include: "#include" expr_path ";" -#line 274 "parser.ypp" +#line 277 "parser.ypp" { yylhs.value.as < ast::include::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_path::ptr > ())); } -#line 2030 "parser.cpp" +#line 2035 "parser.cpp" break; - case 12: // declaration: decl_usingtree -#line 278 "parser.ypp" + case 12: // declaration: "/#" +#line 281 "parser.ypp" + { yylhs.value.as < ast::decl > ().as_dev_begin = std::make_unique(yylhs.location); } +#line 2041 "parser.cpp" + break; + + case 13: // declaration: "#/" +#line 282 "parser.ypp" + { yylhs.value.as < ast::decl > ().as_dev_end = std::make_unique(yylhs.location); } +#line 2047 "parser.cpp" + break; + + case 14: // declaration: decl_usingtree +#line 283 "parser.ypp" { yylhs.value.as < ast::decl > ().as_usingtree = std::move(yystack_[0].value.as < ast::decl_usingtree::ptr > ()); } -#line 2036 "parser.cpp" +#line 2053 "parser.cpp" break; - case 13: // declaration: decl_constant -#line 279 "parser.ypp" + case 15: // declaration: decl_constant +#line 284 "parser.ypp" { yylhs.value.as < ast::decl > ().as_constant = std::move(yystack_[0].value.as < ast::decl_constant::ptr > ()); } -#line 2042 "parser.cpp" +#line 2059 "parser.cpp" break; - case 14: // declaration: decl_thread -#line 280 "parser.ypp" - { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } -#line 2048 "parser.cpp" - break; - - case 15: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" + case 16: // declaration: decl_thread #line 285 "parser.ypp" - { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_usingtree::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_string::ptr > ())); } -#line 2054 "parser.cpp" + { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } +#line 2065 "parser.cpp" break; - case 16: // decl_constant: expr_identifier "=" expr ";" + case 17: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" #line 290 "parser.ypp" - { yylhs.value.as < ast::decl_constant::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2060 "parser.cpp" + { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_usingtree::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_string::ptr > ())); } +#line 2071 "parser.cpp" break; - case 17: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block + case 18: // decl_constant: expr_identifier "=" expr ";" #line 295 "parser.ypp" - { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_thread::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2066 "parser.cpp" + { yylhs.value.as < ast::decl_constant::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } +#line 2077 "parser.cpp" break; - case 18: // stmt: stmt_block -#line 299 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } -#line 2072 "parser.cpp" - break; - - case 19: // stmt: stmt_call + case 19: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block #line 300 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } -#line 2078 "parser.cpp" + { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_thread::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } +#line 2083 "parser.cpp" break; - case 20: // stmt: stmt_assign -#line 301 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } -#line 2084 "parser.cpp" - break; - - case 21: // stmt: stmt_endon -#line 302 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } -#line 2090 "parser.cpp" - break; - - case 22: // stmt: stmt_notify -#line 303 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } -#line 2096 "parser.cpp" - break; - - case 23: // stmt: stmt_wait + case 20: // stmt: stmt_dev #line 304 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } -#line 2102 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } +#line 2089 "parser.cpp" break; - case 24: // stmt: stmt_waittill + case 21: // stmt: stmt_block #line 305 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } -#line 2108 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } +#line 2095 "parser.cpp" break; - case 25: // stmt: stmt_waittillmatch + case 22: // stmt: stmt_call #line 306 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } -#line 2114 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } +#line 2101 "parser.cpp" break; - case 26: // stmt: stmt_waittillframeend + case 23: // stmt: stmt_assign #line 307 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } -#line 2120 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } +#line 2107 "parser.cpp" break; - case 27: // stmt: stmt_if + case 24: // stmt: stmt_endon #line 308 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } -#line 2126 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } +#line 2113 "parser.cpp" break; - case 28: // stmt: stmt_ifelse + case 25: // stmt: stmt_notify #line 309 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } -#line 2132 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } +#line 2119 "parser.cpp" break; - case 29: // stmt: stmt_while + case 26: // stmt: stmt_wait #line 310 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } -#line 2138 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } +#line 2125 "parser.cpp" break; - case 30: // stmt: stmt_dowhile + case 27: // stmt: stmt_waittill #line 311 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } -#line 2144 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } +#line 2131 "parser.cpp" break; - case 31: // stmt: stmt_for + case 28: // stmt: stmt_waittillmatch #line 312 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } -#line 2150 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } +#line 2137 "parser.cpp" break; - case 32: // stmt: stmt_foreach + case 29: // stmt: stmt_waittillframeend #line 313 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } -#line 2156 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } +#line 2143 "parser.cpp" break; - case 33: // stmt: stmt_switch + case 30: // stmt: stmt_if #line 314 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } -#line 2162 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } +#line 2149 "parser.cpp" break; - case 34: // stmt: stmt_case + case 31: // stmt: stmt_ifelse #line 315 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } -#line 2168 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } +#line 2155 "parser.cpp" break; - case 35: // stmt: stmt_default + case 32: // stmt: stmt_while #line 316 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } -#line 2174 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } +#line 2161 "parser.cpp" break; - case 36: // stmt: stmt_break + case 33: // stmt: stmt_dowhile #line 317 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } -#line 2180 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } +#line 2167 "parser.cpp" break; - case 37: // stmt: stmt_continue + case 34: // stmt: stmt_for #line 318 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } -#line 2186 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } +#line 2173 "parser.cpp" break; - case 38: // stmt: stmt_return + case 35: // stmt: stmt_foreach #line 319 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } -#line 2192 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } +#line 2179 "parser.cpp" break; - case 39: // stmt: stmt_breakpoint + case 36: // stmt: stmt_switch #line 320 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } -#line 2198 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } +#line 2185 "parser.cpp" break; - case 40: // stmt: stmt_prof_begin + case 37: // stmt: stmt_case #line 321 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } -#line 2204 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } +#line 2191 "parser.cpp" break; - case 41: // stmt: stmt_prof_end + case 38: // stmt: stmt_default #line 322 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } -#line 2210 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } +#line 2197 "parser.cpp" break; - case 42: // stmt_block: "{" stmt_list "}" + case 39: // stmt: stmt_break +#line 323 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } +#line 2203 "parser.cpp" + break; + + case 40: // stmt: stmt_continue +#line 324 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } +#line 2209 "parser.cpp" + break; + + case 41: // stmt: stmt_return +#line 325 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } +#line 2215 "parser.cpp" + break; + + case 42: // stmt: stmt_breakpoint #line 326 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } -#line 2216 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } +#line 2221 "parser.cpp" break; - case 43: // stmt_block: "{" "}" + case 43: // stmt: stmt_prof_begin #line 327 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } -#line 2222 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } +#line 2227 "parser.cpp" break; - case 44: // stmt_list: stmt_list stmt + case 44: // stmt: stmt_prof_end +#line 328 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } +#line 2233 "parser.cpp" + break; + + case 45: // stmt_dev: "/#" stmt_list "#/" #line 332 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2228 "parser.cpp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } +#line 2239 "parser.cpp" break; - case 45: // stmt_list: stmt -#line 334 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2234 "parser.cpp" + case 46: // stmt_dev: "/#" "#/" +#line 333 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } +#line 2245 "parser.cpp" break; - case 46: // stmt_expr: expr_assign -#line 339 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2240 "parser.cpp" + case 47: // stmt_block: "{" stmt_list "}" +#line 337 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } +#line 2251 "parser.cpp" break; - case 47: // stmt_expr: expr_increment -#line 341 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2246 "parser.cpp" + case 48: // stmt_block: "{" "}" +#line 338 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } +#line 2257 "parser.cpp" break; - case 48: // stmt_expr: expr_decrement + case 49: // stmt_list: stmt_list stmt #line 343 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2252 "parser.cpp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2263 "parser.cpp" break; - case 49: // stmt_expr: %empty + case 50: // stmt_list: stmt #line 345 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2258 "parser.cpp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2269 "parser.cpp" break; - case 50: // stmt_call: expr_call ";" + case 51: // stmt_expr: expr_assign #line 350 "parser.ypp" - { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } -#line 2264 "parser.cpp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2275 "parser.cpp" break; - case 51: // stmt_call: expr_method ";" + case 52: // stmt_expr: expr_increment #line 352 "parser.ypp" - { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_method::ptr > ()))); } -#line 2270 "parser.cpp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2281 "parser.cpp" break; - case 52: // stmt_assign: expr_assign ";" -#line 357 "parser.ypp" - { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2276 "parser.cpp" + case 53: // stmt_expr: expr_decrement +#line 354 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2287 "parser.cpp" break; - case 53: // stmt_assign: expr_increment ";" -#line 359 "parser.ypp" - { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2282 "parser.cpp" + case 54: // stmt_expr: %empty +#line 356 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } +#line 2293 "parser.cpp" break; - case 54: // stmt_assign: expr_decrement ";" + case 55: // stmt_call: expr_call ";" #line 361 "parser.ypp" + { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } +#line 2299 "parser.cpp" + break; + + case 56: // stmt_call: expr_method ";" +#line 363 "parser.ypp" + { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_method::ptr > ()))); } +#line 2305 "parser.cpp" + break; + + case 57: // stmt_assign: expr_assign ";" +#line 368 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2288 "parser.cpp" +#line 2311 "parser.cpp" break; - case 55: // stmt_endon: expr_object "endon" "(" expr ")" ";" -#line 366 "parser.ypp" + case 58: // stmt_assign: expr_increment ";" +#line 370 "parser.ypp" + { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 2317 "parser.cpp" + break; + + case 59: // stmt_assign: expr_decrement ";" +#line 372 "parser.ypp" + { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 2323 "parser.cpp" + break; + + case 60: // stmt_endon: expr_object "endon" "(" expr ")" ";" +#line 377 "parser.ypp" { yylhs.value.as < ast::stmt_endon::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ())); } -#line 2294 "parser.cpp" +#line 2329 "parser.cpp" break; - case 56: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" -#line 371 "parser.ypp" + case 61: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" +#line 382 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2300 "parser.cpp" +#line 2335 "parser.cpp" break; - case 57: // stmt_notify: expr_object "notify" "(" expr ")" ";" -#line 373 "parser.ypp" + case 62: // stmt_notify: expr_object "notify" "(" expr ")" ";" +#line 384 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2306 "parser.cpp" +#line 2341 "parser.cpp" break; - case 58: // stmt_wait: "wait" expr ";" -#line 378 "parser.ypp" + case 63: // stmt_wait: "wait" expr ";" +#line 389 "parser.ypp" { yylhs.value.as < ast::stmt_wait::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2312 "parser.cpp" +#line 2347 "parser.cpp" break; - case 59: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" -#line 383 "parser.ypp" + case 64: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" +#line 394 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2318 "parser.cpp" +#line 2353 "parser.cpp" break; - case 60: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" -#line 385 "parser.ypp" + case 65: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" +#line 396 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2324 "parser.cpp" +#line 2359 "parser.cpp" break; - case 61: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" -#line 390 "parser.ypp" + case 66: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" +#line 401 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2330 "parser.cpp" +#line 2365 "parser.cpp" break; - case 62: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" -#line 392 "parser.ypp" + case 67: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" +#line 403 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2336 "parser.cpp" +#line 2371 "parser.cpp" break; - case 63: // stmt_waittillframeend: "waittillframeend" ";" -#line 397 "parser.ypp" + case 68: // stmt_waittillframeend: "waittillframeend" ";" +#line 408 "parser.ypp" { yylhs.value.as < ast::stmt_waittillframeend::ptr > () = std::make_unique(yylhs.location); } -#line 2342 "parser.cpp" +#line 2377 "parser.cpp" break; - case 64: // stmt_if: "if" "(" expr ")" stmt -#line 402 "parser.ypp" + case 69: // stmt_if: "if" "(" expr ")" stmt +#line 413 "parser.ypp" { yylhs.value.as < ast::stmt_if::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2348 "parser.cpp" +#line 2383 "parser.cpp" break; - case 65: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 407 "parser.ypp" + case 70: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 418 "parser.ypp" { yylhs.value.as < ast::stmt_ifelse::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::stmt > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2354 "parser.cpp" +#line 2389 "parser.cpp" break; - case 66: // stmt_while: "while" "(" expr ")" stmt -#line 412 "parser.ypp" + case 71: // stmt_while: "while" "(" expr ")" stmt +#line 423 "parser.ypp" { yylhs.value.as < ast::stmt_while::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2360 "parser.cpp" +#line 2395 "parser.cpp" break; - case 67: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" -#line 417 "parser.ypp" + case 72: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" +#line 428 "parser.ypp" { yylhs.value.as < ast::stmt_dowhile::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[5].value.as < ast::stmt > ())); } -#line 2366 "parser.cpp" +#line 2401 "parser.cpp" break; - case 68: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt -#line 422 "parser.ypp" + case 73: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt +#line 433 "parser.ypp" { yylhs.value.as < ast::stmt_for::ptr > () = std::make_unique(yylhs.location, ast::stmt(std::move(yystack_[6].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[4].value.as < ast::expr > ()), ast::stmt(std::move(yystack_[2].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2372 "parser.cpp" +#line 2407 "parser.cpp" break; - case 69: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt -#line 427 "parser.ypp" + case 74: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt +#line 438 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2378 "parser.cpp" +#line 2413 "parser.cpp" break; - case 70: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt -#line 429 "parser.ypp" + case 75: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt +#line 440 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[6].value.as < ast::expr_identifier::ptr > ())), ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2384 "parser.cpp" +#line 2419 "parser.cpp" break; - case 71: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 434 "parser.ypp" + case 76: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 445 "parser.ypp" { yylhs.value.as < ast::stmt_switch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2390 "parser.cpp" +#line 2425 "parser.cpp" break; - case 72: // stmt_case: "case" expr_integer ":" -#line 439 "parser.ypp" + case 77: // stmt_case: "case" expr_integer ":" +#line 450 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_integer::ptr > ())), std::make_unique(yylhs.location)); } -#line 2396 "parser.cpp" +#line 2431 "parser.cpp" break; - case 73: // stmt_case: "case" expr_string ":" -#line 441 "parser.ypp" + case 78: // stmt_case: "case" expr_string ":" +#line 452 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_string::ptr > ())), std::make_unique(yylhs.location)); } -#line 2402 "parser.cpp" +#line 2437 "parser.cpp" break; - case 74: // stmt_default: "default" ":" -#line 446 "parser.ypp" + case 79: // stmt_default: "default" ":" +#line 457 "parser.ypp" { yylhs.value.as < ast::stmt_default::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2408 "parser.cpp" +#line 2443 "parser.cpp" break; - case 75: // stmt_break: "break" ";" -#line 451 "parser.ypp" + case 80: // stmt_break: "break" ";" +#line 462 "parser.ypp" { yylhs.value.as < ast::stmt_break::ptr > () = std::make_unique(yylhs.location); } -#line 2414 "parser.cpp" +#line 2449 "parser.cpp" break; - case 76: // stmt_continue: "continue" ";" -#line 456 "parser.ypp" + case 81: // stmt_continue: "continue" ";" +#line 467 "parser.ypp" { yylhs.value.as < ast::stmt_continue::ptr > () = std::make_unique(yylhs.location); } -#line 2420 "parser.cpp" +#line 2455 "parser.cpp" break; - case 77: // stmt_return: "return" expr ";" -#line 461 "parser.ypp" + case 82: // stmt_return: "return" expr ";" +#line 472 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2426 "parser.cpp" +#line 2461 "parser.cpp" break; - case 78: // stmt_return: "return" ";" -#line 463 "parser.ypp" + case 83: // stmt_return: "return" ";" +#line 474 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2432 "parser.cpp" +#line 2467 "parser.cpp" break; - case 79: // stmt_breakpoint: "breakpoint" ";" -#line 468 "parser.ypp" + case 84: // stmt_breakpoint: "breakpoint" ";" +#line 479 "parser.ypp" { yylhs.value.as < ast::stmt_breakpoint::ptr > () = std::make_unique(yylhs.location); } -#line 2438 "parser.cpp" +#line 2473 "parser.cpp" break; - case 80: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 473 "parser.ypp" - { yylhs.value.as < ast::stmt_prof_begin::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2444 "parser.cpp" - break; - - case 81: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 478 "parser.ypp" - { yylhs.value.as < ast::stmt_prof_end::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2450 "parser.cpp" - break; - - case 82: // expr: expr_ternary -#line 482 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2456 "parser.cpp" - break; - - case 83: // expr: expr_binary -#line 483 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2462 "parser.cpp" - break; - - case 84: // expr: expr_primitive + case 85: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" #line 484 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2468 "parser.cpp" + { yylhs.value.as < ast::stmt_prof_begin::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } +#line 2479 "parser.cpp" break; - case 85: // expr_or_empty: expr -#line 488 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2474 "parser.cpp" - break; - - case 86: // expr_or_empty: %empty + case 86: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" #line 489 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } -#line 2480 "parser.cpp" + { yylhs.value.as < ast::stmt_prof_end::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } +#line 2485 "parser.cpp" break; - case 87: // expr_assign: expr_object "=" expr + case 87: // expr: expr_ternary +#line 493 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2491 "parser.cpp" + break; + + case 88: // expr: expr_binary #line 494 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2486 "parser.cpp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2497 "parser.cpp" break; - case 88: // expr_assign: expr_object "|=" expr -#line 496 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2492 "parser.cpp" + case 89: // expr: expr_primitive +#line 495 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2503 "parser.cpp" break; - case 89: // expr_assign: expr_object "&=" expr -#line 498 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2498 "parser.cpp" + case 90: // expr_or_empty: expr +#line 499 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2509 "parser.cpp" break; - case 90: // expr_assign: expr_object "^=" expr + case 91: // expr_or_empty: %empty #line 500 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } +#line 2515 "parser.cpp" + break; + + case 92: // expr_assign: expr_object "=" expr +#line 505 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2521 "parser.cpp" + break; + + case 93: // expr_assign: expr_object "|=" expr +#line 507 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2527 "parser.cpp" + break; + + case 94: // expr_assign: expr_object "&=" expr +#line 509 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2533 "parser.cpp" + break; + + case 95: // expr_assign: expr_object "^=" expr +#line 511 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2504 "parser.cpp" +#line 2539 "parser.cpp" break; - case 91: // expr_assign: expr_object "<<=" expr -#line 502 "parser.ypp" + case 96: // expr_assign: expr_object "<<=" expr +#line 513 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()),std::move( yystack_[0].value.as < ast::expr > ())); } -#line 2510 "parser.cpp" +#line 2545 "parser.cpp" break; - case 92: // expr_assign: expr_object ">>=" expr -#line 504 "parser.ypp" + case 97: // expr_assign: expr_object ">>=" expr +#line 515 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2516 "parser.cpp" +#line 2551 "parser.cpp" break; - case 93: // expr_assign: expr_object "+=" expr -#line 506 "parser.ypp" + case 98: // expr_assign: expr_object "+=" expr +#line 517 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2522 "parser.cpp" +#line 2557 "parser.cpp" break; - case 94: // expr_assign: expr_object "-=" expr -#line 508 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2528 "parser.cpp" - break; - - case 95: // expr_assign: expr_object "*=" expr -#line 510 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2534 "parser.cpp" - break; - - case 96: // expr_assign: expr_object "/=" expr -#line 512 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2540 "parser.cpp" - break; - - case 97: // expr_assign: expr_object "%=" expr -#line 514 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2546 "parser.cpp" - break; - - case 98: // expr_increment: "++" expr_object + case 99: // expr_assign: expr_object "-=" expr #line 519 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2552 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2563 "parser.cpp" break; - case 99: // expr_increment: expr_object "++" + case 100: // expr_assign: expr_object "*=" expr #line 521 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2569 "parser.cpp" + break; + + case 101: // expr_assign: expr_object "/=" expr +#line 523 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2575 "parser.cpp" + break; + + case 102: // expr_assign: expr_object "%=" expr +#line 525 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2581 "parser.cpp" + break; + + case 103: // expr_increment: "++" expr_object +#line 530 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } +#line 2587 "parser.cpp" + break; + + case 104: // expr_increment: expr_object "++" +#line 532 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2558 "parser.cpp" +#line 2593 "parser.cpp" break; - case 100: // expr_decrement: "--" expr_object -#line 526 "parser.ypp" + case 105: // expr_decrement: "--" expr_object +#line 537 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2564 "parser.cpp" +#line 2599 "parser.cpp" break; - case 101: // expr_decrement: expr_object "--" -#line 528 "parser.ypp" + case 106: // expr_decrement: expr_object "--" +#line 539 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2570 "parser.cpp" +#line 2605 "parser.cpp" break; - case 102: // expr_ternary: expr "?" expr ":" expr -#line 533 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2576 "parser.cpp" - break; - - case 103: // expr_binary: expr "||" expr -#line 538 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2582 "parser.cpp" - break; - - case 104: // expr_binary: expr "&&" expr -#line 540 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2588 "parser.cpp" - break; - - case 105: // expr_binary: expr "==" expr -#line 542 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2594 "parser.cpp" - break; - - case 106: // expr_binary: expr "!=" expr + case 107: // expr_ternary: expr "?" expr ":" expr #line 544 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2611 "parser.cpp" + break; + + case 108: // expr_binary: expr "||" expr +#line 549 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2617 "parser.cpp" + break; + + case 109: // expr_binary: expr "&&" expr +#line 551 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2623 "parser.cpp" + break; + + case 110: // expr_binary: expr "==" expr +#line 553 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2629 "parser.cpp" + break; + + case 111: // expr_binary: expr "!=" expr +#line 555 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2600 "parser.cpp" +#line 2635 "parser.cpp" break; - case 107: // expr_binary: expr "<=" expr -#line 546 "parser.ypp" + case 112: // expr_binary: expr "<=" expr +#line 557 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2606 "parser.cpp" +#line 2641 "parser.cpp" break; - case 108: // expr_binary: expr ">=" expr -#line 548 "parser.ypp" + case 113: // expr_binary: expr ">=" expr +#line 559 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2612 "parser.cpp" +#line 2647 "parser.cpp" break; - case 109: // expr_binary: expr "<" expr -#line 550 "parser.ypp" + case 114: // expr_binary: expr "<" expr +#line 561 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2618 "parser.cpp" +#line 2653 "parser.cpp" break; - case 110: // expr_binary: expr ">" expr -#line 552 "parser.ypp" + case 115: // expr_binary: expr ">" expr +#line 563 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2624 "parser.cpp" +#line 2659 "parser.cpp" break; - case 111: // expr_binary: expr "|" expr -#line 554 "parser.ypp" + case 116: // expr_binary: expr "|" expr +#line 565 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2630 "parser.cpp" +#line 2665 "parser.cpp" break; - case 112: // expr_binary: expr "&" expr -#line 556 "parser.ypp" + case 117: // expr_binary: expr "&" expr +#line 567 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2636 "parser.cpp" +#line 2671 "parser.cpp" break; - case 113: // expr_binary: expr "^" expr -#line 558 "parser.ypp" + case 118: // expr_binary: expr "^" expr +#line 569 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2642 "parser.cpp" +#line 2677 "parser.cpp" break; - case 114: // expr_binary: expr "<<" expr -#line 560 "parser.ypp" + case 119: // expr_binary: expr "<<" expr +#line 571 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2648 "parser.cpp" +#line 2683 "parser.cpp" break; - case 115: // expr_binary: expr ">>" expr -#line 562 "parser.ypp" + case 120: // expr_binary: expr ">>" expr +#line 573 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2654 "parser.cpp" +#line 2689 "parser.cpp" break; - case 116: // expr_binary: expr "+" expr -#line 564 "parser.ypp" + case 121: // expr_binary: expr "+" expr +#line 575 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2660 "parser.cpp" +#line 2695 "parser.cpp" break; - case 117: // expr_binary: expr "-" expr -#line 566 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2666 "parser.cpp" - break; - - case 118: // expr_binary: expr "*" expr -#line 568 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2672 "parser.cpp" - break; - - case 119: // expr_binary: expr "/" expr -#line 570 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2678 "parser.cpp" - break; - - case 120: // expr_binary: expr "%" expr -#line 572 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2684 "parser.cpp" - break; - - case 121: // expr_primitive: expr_complement -#line 576 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } -#line 2690 "parser.cpp" - break; - - case 122: // expr_primitive: expr_not + case 122: // expr_binary: expr "-" expr #line 577 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } -#line 2696 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2701 "parser.cpp" break; - case 123: // expr_primitive: expr_call -#line 578 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 2702 "parser.cpp" - break; - - case 124: // expr_primitive: expr_method + case 123: // expr_binary: expr "*" expr #line 579 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 2708 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2707 "parser.cpp" break; - case 125: // expr_primitive: expr_add_array -#line 580 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } -#line 2714 "parser.cpp" - break; - - case 126: // expr_primitive: expr_reference + case 124: // expr_binary: expr "/" expr #line 581 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } -#line 2720 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2713 "parser.cpp" break; - case 127: // expr_primitive: expr_array -#line 582 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 2726 "parser.cpp" - break; - - case 128: // expr_primitive: expr_field + case 125: // expr_binary: expr "%" expr #line 583 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 2732 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2719 "parser.cpp" break; - case 129: // expr_primitive: expr_size -#line 584 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } -#line 2738 "parser.cpp" - break; - - case 130: // expr_primitive: expr_paren -#line 585 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } -#line 2744 "parser.cpp" - break; - - case 131: // expr_primitive: expr_thisthread -#line 586 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } -#line 2750 "parser.cpp" - break; - - case 132: // expr_primitive: expr_empty_array + case 126: // expr_primitive: expr_complement #line 587 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } -#line 2756 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } +#line 2725 "parser.cpp" break; - case 133: // expr_primitive: expr_undefined + case 127: // expr_primitive: expr_not #line 588 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } -#line 2762 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } +#line 2731 "parser.cpp" break; - case 134: // expr_primitive: expr_game + case 128: // expr_primitive: expr_call #line 589 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 2768 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 2737 "parser.cpp" break; - case 135: // expr_primitive: expr_self + case 129: // expr_primitive: expr_method #line 590 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 2774 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 2743 "parser.cpp" break; - case 136: // expr_primitive: expr_anim + case 130: // expr_primitive: expr_add_array #line 591 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 2780 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } +#line 2749 "parser.cpp" break; - case 137: // expr_primitive: expr_level + case 131: // expr_primitive: expr_reference #line 592 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 2786 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } +#line 2755 "parser.cpp" break; - case 138: // expr_primitive: expr_animation + case 132: // expr_primitive: expr_array #line 593 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } -#line 2792 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 2761 "parser.cpp" break; - case 139: // expr_primitive: expr_animtree + case 133: // expr_primitive: expr_field #line 594 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } -#line 2798 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 2767 "parser.cpp" break; - case 140: // expr_primitive: expr_identifier + case 134: // expr_primitive: expr_size #line 595 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 2804 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } +#line 2773 "parser.cpp" break; - case 141: // expr_primitive: expr_istring + case 135: // expr_primitive: expr_paren #line 596 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } -#line 2810 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } +#line 2779 "parser.cpp" break; - case 142: // expr_primitive: expr_string + case 136: // expr_primitive: expr_thisthread #line 597 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } -#line 2816 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } +#line 2785 "parser.cpp" break; - case 143: // expr_primitive: expr_color + case 137: // expr_primitive: expr_empty_array #line 598 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } -#line 2822 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } +#line 2791 "parser.cpp" break; - case 144: // expr_primitive: expr_vector + case 138: // expr_primitive: expr_undefined #line 599 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } -#line 2828 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } +#line 2797 "parser.cpp" break; - case 145: // expr_primitive: expr_float + case 139: // expr_primitive: expr_game #line 600 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } -#line 2834 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 2803 "parser.cpp" break; - case 146: // expr_primitive: expr_integer + case 140: // expr_primitive: expr_self #line 601 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } -#line 2840 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 2809 "parser.cpp" break; - case 147: // expr_primitive: expr_false + case 141: // expr_primitive: expr_anim #line 602 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } -#line 2846 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 2815 "parser.cpp" break; - case 148: // expr_primitive: expr_true + case 142: // expr_primitive: expr_level #line 603 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } -#line 2852 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 2821 "parser.cpp" break; - case 149: // expr_complement: "~" expr + case 143: // expr_primitive: expr_animation +#line 604 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } +#line 2827 "parser.cpp" + break; + + case 144: // expr_primitive: expr_animtree +#line 605 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } +#line 2833 "parser.cpp" + break; + + case 145: // expr_primitive: expr_identifier +#line 606 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 2839 "parser.cpp" + break; + + case 146: // expr_primitive: expr_istring +#line 607 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } +#line 2845 "parser.cpp" + break; + + case 147: // expr_primitive: expr_string #line 608 "parser.ypp" - { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2858 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } +#line 2851 "parser.cpp" break; - case 150: // expr_not: "!" expr + case 148: // expr_primitive: expr_color +#line 609 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } +#line 2857 "parser.cpp" + break; + + case 149: // expr_primitive: expr_vector +#line 610 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } +#line 2863 "parser.cpp" + break; + + case 150: // expr_primitive: expr_float +#line 611 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } +#line 2869 "parser.cpp" + break; + + case 151: // expr_primitive: expr_integer +#line 612 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } +#line 2875 "parser.cpp" + break; + + case 152: // expr_primitive: expr_false #line 613 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } +#line 2881 "parser.cpp" + break; + + case 153: // expr_primitive: expr_true +#line 614 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } +#line 2887 "parser.cpp" + break; + + case 154: // expr_complement: "~" expr +#line 619 "parser.ypp" + { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2893 "parser.cpp" + break; + + case 155: // expr_not: "!" expr +#line 624 "parser.ypp" { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2864 "parser.cpp" +#line 2899 "parser.cpp" break; - case 151: // expr_call: expr_function -#line 617 "parser.ypp" + case 156: // expr_call: expr_function +#line 628 "parser.ypp" { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2870 "parser.cpp" +#line 2905 "parser.cpp" break; - case 152: // expr_call: expr_pointer -#line 618 "parser.ypp" - { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2876 "parser.cpp" - break; - - case 153: // expr_method: expr_object expr_function -#line 621 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2882 "parser.cpp" - break; - - case 154: // expr_method: expr_object expr_pointer -#line 622 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2888 "parser.cpp" - break; - - case 155: // expr_function: expr_identifier "(" expr_arguments ")" -#line 627 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2894 "parser.cpp" - break; - - case 156: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" + case 157: // expr_call: expr_pointer #line 629 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2900 "parser.cpp" + { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } +#line 2911 "parser.cpp" break; - case 157: // expr_function: "thread" expr_identifier "(" expr_arguments ")" -#line 631 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2906 "parser.cpp" + case 158: // expr_method: expr_object expr_function +#line 632 "parser.ypp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 2917 "parser.cpp" break; - case 158: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" + case 159: // expr_method: expr_object expr_pointer #line 633 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2912 "parser.cpp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 2923 "parser.cpp" break; - case 159: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" -#line 635 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2918 "parser.cpp" + case 160: // expr_function: expr_identifier "(" expr_arguments ")" +#line 638 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 2929 "parser.cpp" break; - case 160: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 637 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2924 "parser.cpp" + case 161: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" +#line 640 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 2935 "parser.cpp" break; - case 161: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" + case 162: // expr_function: "thread" expr_identifier "(" expr_arguments ")" #line 642 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2930 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 2941 "parser.cpp" break; - case 162: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 163: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" #line 644 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2936 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 2947 "parser.cpp" break; - case 163: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 164: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" #line 646 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2942 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 2953 "parser.cpp" break; - case 164: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 165: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" #line 648 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::builtin); } -#line 2948 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 2959 "parser.cpp" break; - case 165: // expr_add_array: "[" expr_arguments_no_empty "]" + case 166: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" #line 653 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 2965 "parser.cpp" + break; + + case 167: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 655 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 2971 "parser.cpp" + break; + + case 168: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 657 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 2977 "parser.cpp" + break; + + case 169: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 659 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::builtin); } +#line 2983 "parser.cpp" + break; + + case 170: // expr_add_array: "[" expr_arguments_no_empty "]" +#line 664 "parser.ypp" { yylhs.value.as < ast::expr_add_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ())); } -#line 2954 "parser.cpp" +#line 2989 "parser.cpp" break; - case 166: // expr_parameters: expr_parameters "," expr_identifier -#line 658 "parser.ypp" - { yylhs.value.as < ast::expr_parameters::ptr > () = std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 2960 "parser.cpp" - break; - - case 167: // expr_parameters: expr_identifier -#line 660 "parser.ypp" - { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 2966 "parser.cpp" - break; - - case 168: // expr_parameters: %empty -#line 662 "parser.ypp" - { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } -#line 2972 "parser.cpp" - break; - - case 169: // expr_arguments: expr_arguments_no_empty -#line 667 "parser.ypp" - { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } -#line 2978 "parser.cpp" - break; - - case 170: // expr_arguments: %empty + case 171: // expr_parameters: expr_parameters "," expr_identifier #line 669 "parser.ypp" + { yylhs.value.as < ast::expr_parameters::ptr > () = std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } +#line 2995 "parser.cpp" + break; + + case 172: // expr_parameters: expr_identifier +#line 671 "parser.ypp" + { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } +#line 3001 "parser.cpp" + break; + + case 173: // expr_parameters: %empty +#line 673 "parser.ypp" + { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } +#line 3007 "parser.cpp" + break; + + case 174: // expr_arguments: expr_arguments_no_empty +#line 678 "parser.ypp" + { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } +#line 3013 "parser.cpp" + break; + + case 175: // expr_arguments: %empty +#line 680 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); } -#line 2984 "parser.cpp" +#line 3019 "parser.cpp" break; - case 171: // expr_arguments_no_empty: expr_arguments "," expr -#line 674 "parser.ypp" + case 176: // expr_arguments_no_empty: expr_arguments "," expr +#line 685 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ()); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2990 "parser.cpp" +#line 3025 "parser.cpp" break; - case 172: // expr_arguments_no_empty: expr -#line 676 "parser.ypp" + case 177: // expr_arguments_no_empty: expr +#line 687 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2996 "parser.cpp" +#line 3031 "parser.cpp" break; - case 173: // expr_reference: "::" expr_identifier -#line 681 "parser.ypp" + case 178: // expr_reference: "::" expr_identifier +#line 692 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3002 "parser.cpp" +#line 3037 "parser.cpp" break; - case 174: // expr_reference: expr_path "::" expr_identifier -#line 683 "parser.ypp" + case 179: // expr_reference: expr_path "::" expr_identifier +#line 694 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_path::ptr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3008 "parser.cpp" +#line 3043 "parser.cpp" break; - case 175: // expr_array: expr_object "[" expr "]" -#line 688 "parser.ypp" + case 180: // expr_array: expr_object "[" expr "]" +#line 699 "parser.ypp" { yylhs.value.as < ast::expr_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3014 "parser.cpp" +#line 3049 "parser.cpp" break; - case 176: // expr_field: expr_object "." expr_identifier -#line 693 "parser.ypp" + case 181: // expr_field: expr_object "." expr_identifier +#line 704 "parser.ypp" { yylhs.value.as < ast::expr_field::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3020 "parser.cpp" +#line 3055 "parser.cpp" break; - case 177: // expr_size: expr_object ".size" -#line 698 "parser.ypp" - { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3026 "parser.cpp" - break; - - case 178: // expr_paren: "(" expr ")" -#line 703 "parser.ypp" - { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3032 "parser.cpp" - break; - - case 179: // expr_object: expr_call -#line 707 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 3038 "parser.cpp" - break; - - case 180: // expr_object: expr_method -#line 708 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 3044 "parser.cpp" - break; - - case 181: // expr_object: expr_array + case 182: // expr_size: expr_object ".size" #line 709 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 3050 "parser.cpp" + { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3061 "parser.cpp" break; - case 182: // expr_object: expr_field -#line 710 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 3056 "parser.cpp" - break; - - case 183: // expr_object: expr_game -#line 711 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 3062 "parser.cpp" - break; - - case 184: // expr_object: expr_self -#line 712 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 3068 "parser.cpp" - break; - - case 185: // expr_object: expr_anim -#line 713 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 3074 "parser.cpp" - break; - - case 186: // expr_object: expr_level + case 183: // expr_paren: "(" expr ")" #line 714 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 3080 "parser.cpp" + { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3067 "parser.cpp" break; - case 187: // expr_object: expr_identifier -#line 715 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 3086 "parser.cpp" + case 184: // expr_object: expr_call +#line 718 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 3073 "parser.cpp" break; - case 188: // expr_thisthread: "thisthread" + case 185: // expr_object: expr_method +#line 719 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 3079 "parser.cpp" + break; + + case 186: // expr_object: expr_array #line 720 "parser.ypp" - { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } -#line 3092 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 3085 "parser.cpp" break; - case 189: // expr_empty_array: "[" "]" + case 187: // expr_object: expr_field +#line 721 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 3091 "parser.cpp" + break; + + case 188: // expr_object: expr_game +#line 722 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 3097 "parser.cpp" + break; + + case 189: // expr_object: expr_self +#line 723 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 3103 "parser.cpp" + break; + + case 190: // expr_object: expr_anim +#line 724 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 3109 "parser.cpp" + break; + + case 191: // expr_object: expr_level #line 725 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 3115 "parser.cpp" + break; + + case 192: // expr_object: expr_identifier +#line 726 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 3121 "parser.cpp" + break; + + case 193: // expr_thisthread: "thisthread" +#line 731 "parser.ypp" + { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } +#line 3127 "parser.cpp" + break; + + case 194: // expr_empty_array: "[" "]" +#line 736 "parser.ypp" { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } -#line 3098 "parser.cpp" +#line 3133 "parser.cpp" break; - case 190: // expr_undefined: "undefined" -#line 730 "parser.ypp" + case 195: // expr_undefined: "undefined" +#line 741 "parser.ypp" { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } -#line 3104 "parser.cpp" +#line 3139 "parser.cpp" break; - case 191: // expr_game: "game" -#line 735 "parser.ypp" + case 196: // expr_game: "game" +#line 746 "parser.ypp" { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } -#line 3110 "parser.cpp" +#line 3145 "parser.cpp" break; - case 192: // expr_self: "self" -#line 740 "parser.ypp" + case 197: // expr_self: "self" +#line 751 "parser.ypp" { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } -#line 3116 "parser.cpp" +#line 3151 "parser.cpp" break; - case 193: // expr_anim: "anim" -#line 745 "parser.ypp" + case 198: // expr_anim: "anim" +#line 756 "parser.ypp" { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } -#line 3122 "parser.cpp" +#line 3157 "parser.cpp" break; - case 194: // expr_level: "level" -#line 750 "parser.ypp" + case 199: // expr_level: "level" +#line 761 "parser.ypp" { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } -#line 3128 "parser.cpp" +#line 3163 "parser.cpp" break; - case 195: // expr_animation: "%" "identifier" -#line 755 "parser.ypp" + case 200: // expr_animation: "%" "identifier" +#line 766 "parser.ypp" { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3134 "parser.cpp" +#line 3169 "parser.cpp" break; - case 196: // expr_animtree: "#animtree" -#line 760 "parser.ypp" + case 201: // expr_animtree: "#animtree" +#line 771 "parser.ypp" { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } -#line 3140 "parser.cpp" +#line 3175 "parser.cpp" break; - case 197: // expr_identifier: "identifier" -#line 765 "parser.ypp" + case 202: // expr_identifier: "identifier" +#line 776 "parser.ypp" { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3146 "parser.cpp" +#line 3181 "parser.cpp" break; - case 198: // expr_path: "path" -#line 770 "parser.ypp" + case 203: // expr_path: "path" +#line 781 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3152 "parser.cpp" +#line 3187 "parser.cpp" break; - case 199: // expr_path: expr_identifier -#line 772 "parser.ypp" + case 204: // expr_path: expr_identifier +#line 783 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < ast::expr_identifier::ptr > ()->value); } -#line 3158 "parser.cpp" +#line 3193 "parser.cpp" break; - case 200: // expr_istring: "localized string" -#line 777 "parser.ypp" + case 205: // expr_istring: "localized string" +#line 788 "parser.ypp" { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3164 "parser.cpp" +#line 3199 "parser.cpp" break; - case 201: // expr_string: "string literal" -#line 782 "parser.ypp" + case 206: // expr_string: "string literal" +#line 793 "parser.ypp" { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3170 "parser.cpp" +#line 3205 "parser.cpp" break; - case 202: // expr_color: "color" -#line 787 "parser.ypp" + case 207: // expr_color: "color" +#line 798 "parser.ypp" { yylhs.value.as < ast::expr_color::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3176 "parser.cpp" +#line 3211 "parser.cpp" break; - case 203: // expr_vector: "(" expr "," expr "," expr ")" -#line 792 "parser.ypp" + case 208: // expr_vector: "(" expr "," expr "," expr ")" +#line 803 "parser.ypp" { yylhs.value.as < ast::expr_vector::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3182 "parser.cpp" +#line 3217 "parser.cpp" break; - case 204: // expr_float: "-" "float" -#line 797 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3188 "parser.cpp" - break; - - case 205: // expr_float: "float" -#line 799 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3194 "parser.cpp" - break; - - case 206: // expr_integer: "-" "int" -#line 804 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3200 "parser.cpp" - break; - - case 207: // expr_integer: "int" -#line 806 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3206 "parser.cpp" - break; - - case 208: // expr_integer: "octal int" + case 209: // expr_float: "-" "float" #line 808 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3212 "parser.cpp" + { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 3223 "parser.cpp" break; - case 209: // expr_integer: "binary int" + case 210: // expr_float: "float" #line 810 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3218 "parser.cpp" + { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3229 "parser.cpp" break; - case 210: // expr_integer: "hexadecimal int" -#line 812 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3224 "parser.cpp" + case 211: // expr_integer: "-" "int" +#line 815 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 3235 "parser.cpp" break; - case 211: // expr_false: "false" + case 212: // expr_integer: "int" #line 817 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3241 "parser.cpp" + break; + + case 213: // expr_integer: "octal int" +#line 819 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3247 "parser.cpp" + break; + + case 214: // expr_integer: "binary int" +#line 821 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3253 "parser.cpp" + break; + + case 215: // expr_integer: "hexadecimal int" +#line 823 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3259 "parser.cpp" + break; + + case 216: // expr_false: "false" +#line 828 "parser.ypp" { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } -#line 3230 "parser.cpp" +#line 3265 "parser.cpp" break; - case 212: // expr_true: "true" -#line 822 "parser.ypp" + case 217: // expr_true: "true" +#line 833 "parser.ypp" { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } -#line 3236 "parser.cpp" +#line 3271 "parser.cpp" break; -#line 3240 "parser.cpp" +#line 3275 "parser.cpp" default: break; @@ -3420,11 +3455,11 @@ namespace xsk { namespace gsc { namespace iw5 { { static const char *const yy_sname[] = { - "end of file", "error", "invalid token", "#inline", "#include", - "#using_animtree", "#animtree", "endon", "notify", "wait", "waittill", - "waittillmatch", "waittillframeend", "if", "else", "do", "while", "for", - "foreach", "in", "switch", "case", "default", "break", "continue", - "return", "breakpoint", "prof_begin", "prof_end", "thread", + "end of file", "error", "invalid token", "/#", "#/", "#inline", + "#include", "#using_animtree", "#animtree", "endon", "notify", "wait", + "waittill", "waittillmatch", "waittillframeend", "if", "else", "do", + "while", "for", "foreach", "in", "switch", "case", "default", "break", + "continue", "return", "breakpoint", "prof_begin", "prof_end", "thread", "childthread", "thisthread", "call", "true", "false", "undefined", ".size", "game", "self", "anim", "level", "(", ")", "{", "}", "[", "]", ",", ".", "::", ":", ";", "?", "++", "--", "<<", ">>", "||", "&&", "==", @@ -3435,8 +3470,8 @@ namespace xsk { namespace gsc { namespace iw5 { "ADD_ARRAY", "THEN", "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", "$accept", "root", "program", "inline", "include", "declaration", "decl_usingtree", "decl_constant", "decl_thread", "stmt", - "stmt_block", "stmt_list", "stmt_expr", "stmt_call", "stmt_assign", - "stmt_endon", "stmt_notify", "stmt_wait", "stmt_waittill", + "stmt_dev", "stmt_block", "stmt_list", "stmt_expr", "stmt_call", + "stmt_assign", "stmt_endon", "stmt_notify", "stmt_wait", "stmt_waittill", "stmt_waittillmatch", "stmt_waittillframeend", "stmt_if", "stmt_ifelse", "stmt_while", "stmt_dowhile", "stmt_for", "stmt_foreach", "stmt_switch", "stmt_case", "stmt_default", "stmt_break", "stmt_continue", @@ -3716,666 +3751,715 @@ namespace xsk { namespace gsc { namespace iw5 { } - const short parser::yypact_ninf_ = -254; + const short parser::yypact_ninf_ = -261; - const short parser::yytable_ninf_ = -200; + const short parser::yytable_ninf_ = -205; const short parser::yypact_[] = { - 13, 19, 19, -11, -254, 21, 13, -254, -254, -254, - -254, -254, -254, -10, -254, -254, -5, 7, -24, -254, - -254, -254, -254, -26, 800, -254, -254, -254, 26, 2, - -254, -254, -20, -17, -254, 31, -254, -254, -254, -254, - -254, -254, -254, 800, 666, -26, 800, 800, 24, -2, - -254, -254, -254, -254, -254, -254, -254, 1820, -254, -254, - -254, -254, -254, 160, 425, -254, -254, -254, -254, 468, - 562, -254, -254, 756, -254, -254, -254, 764, 823, 831, - 891, -254, -254, 11, 39, -254, -254, -254, -254, -254, - -254, -254, -254, 45, 56, -26, 58, 41, 64, 62, - 91, 85, 88, 1106, 666, -254, 1903, 97, 108, -254, - -254, -254, -254, -254, -254, -254, 800, 800, 800, 800, - 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, - 800, 800, 800, 800, 800, -254, 867, -26, -254, -254, - 105, 107, 800, -26, -254, 994, -254, -254, 800, 800, - -26, 800, 800, -26, 800, -254, 800, 1550, 800, -254, - 1785, 167, 167, 1934, 1944, 2026, 2026, 37, 37, 37, - 37, 1975, 2016, 1985, -30, -30, -254, -254, -254, 1590, - -254, -26, 33, -254, 119, 800, 111, 129, 1096, 130, - 138, 139, 142, 73, 113, 136, 148, 733, 151, 152, - 170, -254, 169, 72, 72, -254, -254, 1045, -254, -254, - -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, - -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, - -254, 161, 172, 175, 176, 179, -254, -254, 918, -254, - -254, -254, -254, -27, 1630, 44, 183, 1670, 47, 190, - 1710, 1749, 189, 1903, 800, -254, 119, -254, 800, 1855, - -254, 800, 220, 800, -3, -26, 800, 145, 191, 192, - -254, -254, -254, -254, 1890, -254, 800, 800, 800, -254, - -254, 42, 42, -254, -254, -254, -254, -254, -254, -254, - 202, 204, 212, 213, -254, -254, 800, 800, 800, 800, - 800, 800, 800, 800, 800, 800, 800, 209, -254, 800, - 210, -254, 800, 211, 800, 218, 1903, 83, -254, 1272, - 219, 1306, 216, -254, -254, -254, 494, 1, 1340, -254, - -254, -254, 84, 93, 1550, 800, 800, 800, 800, 1903, - 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, - 222, 94, 227, 100, 228, 1374, 800, -254, 1096, 800, - 1096, 800, 800, -26, 56, 221, 226, 1408, 1150, 1194, - 1238, 800, -254, 800, -254, 800, -254, 122, 247, 1442, - -254, 1903, 232, 1476, 252, -254, -254, -254, 233, 234, - 800, 238, 800, 239, 800, 144, 153, 173, -254, 1096, - 240, -3, 1096, 800, -254, -254, 250, -254, 251, -254, - 253, -254, -254, -254, -254, -254, 275, -254, 1510, 269, - 272, 273, 1096, 1096, -254, -254, -254, -254, -254 + 17, -261, -261, -61, -61, -12, -261, 42, 17, -261, + -261, -261, -261, -261, -261, -17, -261, -261, -36, 15, + -16, -261, -261, -261, -261, -8, 911, -261, -261, -261, + 38, 18, -261, -261, -40, -33, -261, 41, -261, -261, + -261, -261, -261, -261, -261, 911, 777, -8, 911, 911, + -43, 1, -261, -261, -261, -261, -261, -261, -261, 2063, + -261, -261, -261, -261, -261, 69, 347, -261, -261, -261, + -261, 507, 710, -261, -261, 734, -261, -261, -261, 742, + 801, 867, 875, -261, -261, 26, 45, -261, -261, -261, + -261, -261, -261, -261, -261, 49, 53, -8, 58, 66, + 60, 70, 77, 89, 90, 1389, 777, -261, 2146, 95, + 103, -261, -261, -261, -261, -261, -261, -261, 911, 911, + 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, + 911, 911, 911, 911, 911, 911, 911, -261, 978, -8, + -261, -261, 117, 112, 911, -8, -261, 1073, -261, -261, + 911, 911, -8, 911, 911, -8, 911, -261, 911, 974, + 911, -261, 2028, 162, 162, 2177, 2187, 1059, 1059, 8, + 8, 8, 8, 2218, 2259, 2228, -15, -15, -261, -261, + -261, 1833, -261, -8, 36, -261, 123, 1149, 911, 120, + 125, 1327, 128, 132, 134, 135, 28, 127, 131, 133, + 844, 136, 145, 150, -261, 147, 570, 570, -261, -261, + -261, 1200, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, 142, 144, 146, 148, 149, + -261, -261, 642, -261, -261, -261, -261, -10, 1873, 55, + 155, 1913, 64, 160, 1953, 1992, 156, 2146, 911, -261, + 123, -261, 911, -261, 1276, 2098, -261, 911, 190, 911, + -2, -8, 911, 111, 158, 167, -261, -261, -261, -261, + 2133, -261, 911, 911, 911, -261, -261, 438, 438, -261, + -261, -261, -261, -261, -261, -261, 166, 169, 171, 180, + -261, -261, 911, 911, 911, 911, 911, 911, 911, 911, + 911, 911, 911, 176, -261, 911, 177, -261, 911, 178, + 911, 185, 2146, 82, -261, -261, 1555, 186, 1589, 188, + -261, -261, -261, 1353, -3, 1623, -261, -261, -261, 83, + 84, 974, 911, 911, 911, 911, 2146, 2146, 2146, 2146, + 2146, 2146, 2146, 2146, 2146, 2146, 2146, 197, 85, 200, + 86, 207, 1657, 911, -261, 1327, 911, 1327, 911, 911, + -8, 53, 199, 203, 1691, 1433, 1477, 1521, 911, -261, + 911, -261, 911, -261, 94, 214, 1725, -261, 2146, 204, + 1759, 232, -261, -261, -261, 205, 206, 911, 208, 911, + 209, 911, 97, 115, 118, -261, 1327, 212, -2, 1327, + 911, -261, -261, 216, -261, 222, -261, 224, -261, -261, + -261, -261, -261, 225, -261, 1793, 219, 221, 223, 1327, + 1327, -261, -261, -261, -261, -261 }; const unsigned char parser::yydefact_[] = { - 3, 0, 0, 0, 197, 0, 2, 7, 8, 9, - 12, 13, 14, 0, 198, 199, 0, 0, 0, 1, - 4, 5, 6, 168, 0, 10, 11, 201, 0, 0, - 167, 196, 0, 0, 188, 0, 212, 211, 190, 191, - 192, 193, 194, 0, 170, 0, 0, 0, 0, 0, - 200, 202, 205, 207, 208, 209, 210, 0, 82, 83, - 84, 121, 122, 123, 124, 151, 152, 125, 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, 0, 0, 0, 0, 199, 0, 0, - 199, 0, 0, 0, 170, 189, 172, 0, 169, 173, - 150, 149, 204, 206, 195, 16, 0, 0, 0, 0, + 3, 12, 13, 0, 0, 0, 202, 0, 2, 7, + 8, 9, 14, 15, 16, 0, 203, 204, 0, 0, + 0, 1, 4, 5, 6, 173, 0, 10, 11, 206, + 0, 0, 172, 201, 0, 0, 193, 0, 217, 216, + 195, 196, 197, 198, 199, 0, 175, 0, 0, 0, + 0, 0, 205, 207, 210, 212, 213, 214, 215, 0, + 87, 88, 89, 126, 127, 128, 129, 156, 157, 130, + 131, 132, 133, 134, 135, 0, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 0, 146, 147, 148, + 149, 150, 151, 152, 153, 0, 0, 0, 0, 204, + 0, 0, 204, 0, 0, 0, 175, 194, 177, 0, + 174, 178, 155, 154, 209, 211, 200, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 177, 0, 0, 153, 154, - 199, 0, 170, 0, 15, 0, 17, 166, 0, 170, - 0, 0, 170, 0, 0, 178, 0, 172, 0, 165, - 0, 114, 115, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 116, 117, 118, 119, 120, 0, - 176, 0, 0, 169, 174, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 182, 0, 0, + 158, 159, 204, 0, 175, 0, 17, 0, 19, 171, + 0, 175, 0, 0, 175, 0, 0, 183, 0, 177, + 0, 170, 0, 119, 120, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 121, 122, 123, 124, + 125, 0, 181, 0, 0, 174, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 43, 0, 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, 0, 0, 179, 180, 181, 182, 0, 183, - 184, 185, 186, 187, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 171, 0, 175, 0, 155, 170, 0, - 63, 0, 0, 0, 49, 0, 0, 0, 0, 0, - 74, 75, 76, 78, 0, 79, 170, 170, 0, 179, - 180, 98, 100, 42, 44, 52, 53, 54, 50, 51, - 0, 0, 0, 0, 99, 101, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 157, 170, - 0, 159, 170, 0, 0, 0, 102, 0, 58, 0, - 0, 0, 0, 46, 47, 48, 0, 0, 0, 73, - 72, 77, 0, 0, 0, 0, 0, 0, 0, 87, - 93, 94, 95, 96, 97, 88, 89, 90, 92, 91, - 0, 0, 0, 0, 0, 0, 170, 156, 0, 0, - 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 170, 158, 170, 160, 170, 203, 0, 64, 0, - 66, 85, 0, 0, 0, 71, 80, 81, 0, 0, - 170, 0, 170, 0, 170, 0, 0, 0, 161, 0, - 0, 49, 0, 0, 55, 57, 169, 60, 169, 62, - 169, 162, 163, 164, 65, 67, 0, 69, 0, 0, - 0, 0, 0, 0, 56, 59, 61, 68, 70 + 0, 0, 0, 0, 48, 0, 0, 0, 50, 20, + 21, 0, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 0, 0, 0, 184, 185, + 186, 187, 0, 188, 189, 190, 191, 192, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 176, 0, 180, + 0, 160, 175, 46, 0, 0, 68, 0, 0, 0, + 54, 0, 0, 0, 0, 0, 79, 80, 81, 83, + 0, 84, 175, 175, 0, 184, 185, 103, 105, 47, + 49, 57, 58, 59, 55, 56, 0, 0, 0, 0, + 104, 106, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 162, 175, 0, 164, 175, 0, + 0, 0, 107, 0, 45, 63, 0, 0, 0, 0, + 51, 52, 53, 0, 0, 0, 78, 77, 82, 0, + 0, 0, 0, 0, 0, 0, 92, 98, 99, 100, + 101, 102, 93, 94, 95, 97, 96, 0, 0, 0, + 0, 0, 0, 175, 161, 0, 0, 0, 91, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 175, 163, + 175, 165, 175, 208, 0, 69, 0, 71, 90, 0, + 0, 0, 76, 85, 86, 0, 0, 175, 0, 175, + 0, 175, 0, 0, 0, 166, 0, 0, 54, 0, + 0, 60, 62, 174, 65, 174, 67, 174, 167, 168, + 169, 70, 72, 0, 74, 0, 0, 0, 0, 0, + 0, 61, 64, 66, 73, 75 }; const short parser::yypgoto_[] = { - -254, -254, -254, 288, 319, 322, -254, -254, -254, -183, - -90, -254, -122, -254, -254, -254, -254, -254, -254, -254, - -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, - -254, -254, -254, -254, -254, -254, 182, -254, -253, -252, - -249, -254, -254, -254, -254, -254, -126, -80, -64, -60, - -254, -254, 300, -41, -254, -31, -6, -254, -254, 230, - -254, -254, -254, 237, 243, 268, 318, -254, -254, 0, - 6, -254, -8, -254, -254, -254, 141, -254, -254 + -261, -261, -261, 267, 274, 275, -261, -261, -261, -175, + -261, -94, 98, -124, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, 187, -261, -260, + -259, -255, -261, -261, -261, -261, -261, -128, -37, -70, + -66, -261, -261, 425, -45, -261, -26, 157, -261, -261, + 241, -261, -261, -261, 255, 273, 329, 361, -261, -261, + 0, 9, -261, -14, -261, -261, -261, 93, -261, -261 }; const short parser::yydefgoto_[] = { - 0, 5, 6, 7, 8, 9, 10, 11, 12, 205, - 206, 207, 322, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 106, 382, 231, 232, - 233, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 29, 107, 183, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92 + 0, 7, 8, 9, 10, 11, 12, 13, 14, 208, + 209, 210, 211, 329, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 108, 389, 235, + 236, 237, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 31, 109, 185, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94 }; const short parser::yytable_[] = { - 13, 15, 15, 108, 146, 262, 13, 16, 17, 138, - 28, 323, 324, 139, 142, 325, 1, 2, 3, 234, - 362, 19, -199, 30, 284, 96, 32, 33, 99, 35, - 18, 23, 97, 100, 39, 40, 41, 42, 98, 101, - -187, -187, 202, -187, 94, 109, 25, -187, 363, 95, - 203, 204, 142, 132, 133, 134, -187, 24, 26, -187, - -199, 4, 234, 108, 27, 235, 14, 4, 93, 14, - 4, 32, 33, 140, 35, 257, 102, 279, 279, 141, - 158, 234, 149, 14, 4, 114, 308, 136, 143, 311, - 137, 158, 117, 118, 158, 147, 144, -187, -187, 145, - 4, 32, 33, 148, 35, 14, 4, 151, 235, 39, - 40, 41, 42, 150, 236, 112, 113, 202, 130, 131, - 132, 133, 134, 280, 280, 357, 365, 235, 14, 4, - 158, 158, 152, 154, 153, 366, 372, 180, 279, 237, - 158, 158, 374, 184, 158, 243, 142, 158, 323, 324, - 246, 141, 325, 249, 159, 267, 181, 236, 14, 4, - 258, 27, 260, 270, 398, 53, 54, 55, 56, 158, - 261, 263, 236, 236, 138, 378, 236, 380, 139, 264, - 265, 256, 237, 266, 280, 268, 411, 271, 243, -179, - -179, 158, -179, 276, 141, 412, -179, 237, 237, 272, - 158, 237, 275, 243, 243, -179, 57, 243, -179, 141, - 141, 277, 285, 141, 278, 413, 414, 138, 138, 417, - 158, 139, 139, 286, 309, 103, 287, 288, 110, 111, - 289, 312, 234, 236, 234, 315, 320, 113, 140, 427, - 428, 329, 330, 335, 141, 336, -179, -179, 130, 131, - 132, 133, 134, 337, 338, 350, 352, 354, 237, 356, - 359, 399, 138, 371, 243, 327, 139, 361, 373, 375, - 141, 403, 386, 234, 385, 279, 234, 387, 235, 416, - 235, 140, 140, 401, 404, 405, 157, 141, 141, 407, - 409, 415, 419, 420, 20, 421, 234, 234, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 422, 179, 235, - 424, 280, 235, 425, 426, 21, 140, 236, 22, 236, - 244, 0, 141, 247, 269, 0, 250, 0, 251, 0, - 253, 0, 235, 235, 0, 0, 0, 0, 0, 406, - 0, 408, 237, 410, 237, 0, 0, 0, 243, 0, - 243, 0, 0, 384, 141, 0, 141, 259, 236, 0, - 236, 236, 0, 0, 0, 238, 0, 0, 0, 274, - 0, 0, 239, 0, 0, 0, 0, 0, 240, 0, - 0, 236, 236, 237, 0, 237, 237, 0, 0, 243, - 0, 243, 243, 0, 0, 141, 0, 141, 141, 0, - 0, 0, 0, 241, 0, 0, 237, 237, 238, 0, - 0, 0, 243, 243, 0, 239, 0, 0, 141, 141, - 0, 240, 0, 281, 282, 0, 316, 238, 0, 0, - 239, 239, 182, 319, 239, 321, 240, 240, 328, 245, - 240, 0, 248, 0, -180, -180, 241, -180, 0, 0, - 334, -180, 0, 242, 0, 0, 0, 0, 0, 0, - -180, 241, 241, -180, 0, 241, 0, 0, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 0, - 0, 0, 0, 0, 326, 0, 355, -181, -181, 0, - -181, 239, 0, 0, -181, 0, 242, 240, 0, 0, - 0, -180, -180, -181, 0, 0, -181, 367, 368, 369, - 370, 242, 242, 32, 33, 242, 35, 0, 0, 0, - 0, 0, 241, 0, 0, 0, 0, 0, 0, 136, - 0, 379, 137, 381, 383, 0, 0, 294, 295, 0, - 0, 0, 0, 0, -181, -181, 0, 0, 317, 0, - 0, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 0, 0, 0, 0, 332, 333, 0, 0, - 14, 4, 242, 0, 0, 418, 0, 0, 238, 0, - 238, -182, -182, 0, -182, 239, 0, 239, -182, 0, - 0, 240, 0, 240, 0, 0, 0, -182, 0, 351, - -182, 0, 353, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 241, 0, 241, 238, - 0, 326, 238, 0, 0, 0, 239, 0, 239, 239, - 0, 0, 240, 0, 240, 240, 0, 0, -182, -182, - 0, 0, 238, 238, 0, 0, 377, 0, 0, 239, - 239, 0, 0, 0, 0, 240, 240, 241, 0, 241, - 241, 395, 31, 396, 0, 397, 242, 0, 242, 0, + 15, 110, 148, 17, 17, 140, 30, 98, 15, 141, + 330, 331, 18, 19, 101, 332, 268, 27, 369, 238, + 1, 2, 3, 4, 5, 32, 25, 16, 6, 34, + 35, 20, 37, 144, 99, 102, 290, 41, 42, 43, + 44, -204, 21, 100, 103, 205, 370, 111, 16, 6, + 114, 115, 26, 206, 207, 16, 6, -192, -192, 238, + -192, 110, 96, 238, -192, 119, 120, 97, 28, 144, + 134, 135, 136, -192, 29, 142, -192, -204, 285, 285, + 261, 6, 95, 238, 143, 160, 16, 6, 104, 290, + 116, 132, 133, 134, 135, 136, 145, 149, 147, 314, + -184, -184, 146, -184, 160, 150, 6, -184, 317, 151, + 239, 152, 273, 160, -192, -192, -184, 153, 29, -184, + 154, 240, 55, 56, 57, 58, 364, 372, 373, 379, + 381, 160, 160, 160, 160, 160, 238, 156, 405, 182, + 155, 418, 285, 160, 160, 186, 160, 247, 330, 331, + 239, 161, 250, 332, 239, 253, 143, -184, -184, 419, + 144, 240, 420, 183, 160, 240, 262, 160, 267, 286, + 286, 269, 140, 266, 239, 270, 141, 271, 272, 276, + 240, 240, 274, 260, 277, 240, 278, 247, 282, 281, + 385, 247, 387, 283, 284, 291, 143, 292, 315, 293, + 143, 294, 295, 318, 321, 115, 247, 247, 327, 342, + 336, 247, 343, 59, 344, 143, 143, 140, 140, 337, + 143, 141, 141, 345, 357, 359, 361, 239, 363, 366, + 406, 421, 105, 286, 424, 112, 113, 238, 240, 238, + 378, 368, 142, 380, 240, 132, 133, 134, 135, 136, + 382, 143, 393, 410, 434, 435, 394, 408, 411, 412, + 426, 414, 416, 140, 247, 422, 427, 141, 428, 429, + 247, 334, 431, 143, 432, 22, 433, 392, 238, 143, + 285, 238, 23, 24, 423, 264, 0, 142, 142, 275, + 0, 0, 0, 159, 0, 0, 143, 143, 0, 0, + 0, 238, 238, 0, 241, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 0, 181, 0, 0, 239, 0, + 239, 0, 0, 142, 0, 0, 0, 248, 0, 240, + 251, 240, 143, 254, 241, 255, 0, 257, 241, 0, + 0, 0, 413, 0, 415, 0, 417, 0, 0, 0, + 0, 0, 0, 241, 241, 247, 0, 247, 241, 239, + 391, 286, 239, 0, 143, 265, 143, 0, -185, -185, + 240, -185, 240, 240, 0, -185, 0, 280, 242, 0, + 0, 0, 239, 239, -185, 0, 0, -185, 0, 0, + 0, 0, 243, 240, 240, 0, 247, 0, 247, 247, + 0, 0, 0, 0, 0, 143, 0, 143, 143, 0, + 244, 241, 0, 0, 0, 0, 0, 241, 242, 247, + 247, 0, 242, 0, 0, -185, -185, 0, 143, 143, + 0, 0, 243, 0, 0, 322, 243, 287, 288, 0, + 0, 0, 242, 0, 326, 0, 328, 0, 0, 335, + 244, 243, 243, 0, 244, 0, 243, 0, 0, 34, + 35, 341, 37, 0, 0, 0, 245, 0, 0, 244, + 244, 0, 0, 0, 244, 138, 0, 0, 139, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 0, 0, 0, 0, 0, 242, 0, 362, 246, 0, + 0, 333, 0, 0, 0, 0, 245, 0, 0, 243, + 245, 0, 241, 0, 241, 243, 16, 6, 0, 374, + 375, 376, 377, 0, 0, 245, 245, 244, -186, -186, + 245, -186, 0, 244, 0, -186, 0, 0, 246, 0, + 0, 0, 246, 386, -186, 388, 390, -186, 0, 0, + 0, 0, 0, 241, 0, 241, 241, 246, 246, 184, + 0, 0, 246, 0, 0, 0, 249, 0, 0, 252, + 0, 0, 0, 0, 0, 0, 241, 241, 0, 0, + 0, 0, 0, 245, 0, -186, -186, 425, 0, 245, + 0, 34, 35, 0, 37, 0, 242, 0, 242, 41, + 42, 43, 44, 0, 0, 0, 0, 205, 0, 0, + 243, 0, 243, 0, 0, 246, 0, 0, 0, 0, + 0, 246, 0, 0, 0, 0, 0, 0, 244, 0, + 244, 0, 0, 0, 0, 0, 0, 242, 0, 333, + 242, 296, 297, 0, 298, 299, 0, 0, 16, 6, + 0, 243, 0, 243, 243, 0, 0, 0, 0, 0, + 242, 242, 0, 34, 35, 0, 37, 0, 0, 244, + 0, 244, 244, 0, 243, 243, 0, 323, 0, 138, + 0, 0, 139, 0, 245, 0, 245, 300, 301, 0, + 0, 0, 244, 244, 0, 0, 0, 339, 340, 0, + 0, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 0, 0, 0, 0, 246, 0, 246, 0, + 16, 6, 0, 0, 0, 245, 0, 245, 245, 0, + 358, -187, -187, 360, -187, 0, 0, 0, -187, 0, + 0, 0, 0, 0, 0, 0, 0, -187, 245, 245, + -187, 0, 0, 0, 0, 34, 35, 246, 37, 246, + 246, 0, 137, -188, -188, 0, -188, 0, 0, 0, + -188, 138, 0, 0, 139, 33, 0, 0, 384, -188, + 246, 246, -188, 0, 0, 0, 0, 0, -187, -187, + 0, 0, 0, 402, 0, 403, 0, 404, 34, 35, + 36, 37, 38, 39, 40, 0, 41, 42, 43, 44, + 45, 0, 16, 6, 106, 107, 0, 0, 47, 0, + -188, -188, -189, -189, 0, -189, 0, 0, 0, -189, + 0, 0, 0, 0, 48, 49, 0, 0, -189, 0, + 0, -189, 33, 0, 0, 0, 0, 0, 0, 0, + 0, 50, 0, 0, 51, 16, 6, 29, 52, 53, + 54, 55, 56, 57, 58, 34, 35, 36, 37, 38, + 39, 40, 0, 41, 42, 43, 44, 45, 0, -189, + -189, 46, 0, 0, 0, 47, 0, 279, -190, -190, + 0, -190, 0, 0, 0, -190, -191, -191, 0, -191, + 0, 48, 49, -191, -190, 0, 0, -190, 0, 33, + 0, 0, -191, 0, 0, -191, 0, 0, 50, 0, + 0, 51, 16, 6, 29, 52, 53, 54, 55, 56, + 57, 58, 34, 35, 36, 37, 38, 39, 40, 0, + 41, 42, 43, 44, 45, -190, -190, 0, 46, 0, + 0, 0, 47, -191, -191, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, + 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, + 0, 0, 0, 0, 0, 50, 0, 0, 51, 16, + 6, 29, 52, 53, 54, 55, 56, 57, 58, 34, + 35, 36, 37, 38, 39, 40, 0, 41, 42, 43, + 44, 45, 256, 0, 0, 106, 0, 0, 118, 47, + 0, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 0, 0, 0, 0, 48, 49, 0, 0, 0, + 0, 0, 0, 0, 129, 130, 131, 132, 133, 134, + 135, 136, 50, 0, 0, 51, 16, 6, 29, 52, + 53, 54, 55, 56, 57, 58, 187, 0, 0, 0, + 0, 0, 0, 0, 188, 0, 0, 189, 190, 0, + 191, 192, 193, 194, 0, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 34, 35, 0, 37, 0, 0, + 0, 0, 41, 42, 43, 44, 119, 120, 147, 204, + 205, 0, 125, 126, 127, 128, 0, 0, 206, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 241, 241, 0, 0, 0, 32, 33, 34, 35, 36, - 37, 38, 0, 39, 40, 41, 42, 43, 0, 0, - 0, 104, 105, 0, 0, 45, 0, 242, 0, 242, - 242, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 46, 47, 0, 0, 0, 0, 0, 0, 31, - 242, 242, 0, 0, 0, 0, 0, 0, 48, 0, - 0, 49, 14, 4, 27, 50, 51, 52, 53, 54, - 55, 56, 32, 33, 34, 35, 36, 37, 38, 0, - 39, 40, 41, 42, 43, 0, 0, 0, 44, 0, - 0, 0, 45, 0, 273, 32, 33, 0, 35, 0, - 0, 0, 135, -183, -183, 0, -183, 0, 46, 47, - -183, 136, 0, 0, 137, 0, 31, 0, 0, -183, - 0, 0, -183, 0, 0, 48, 0, 0, 49, 14, - 4, 27, 50, 51, 52, 53, 54, 55, 56, 32, - 33, 34, 35, 36, 37, 38, 0, 39, 40, 41, - 42, 43, 14, 4, 0, 44, 0, 0, 0, 45, - -183, -183, -184, -184, 0, -184, 0, 0, 0, -184, - -185, -185, 0, -185, 0, 46, 47, -185, -184, 0, - 0, -184, 0, 31, 0, 0, -185, 0, 0, -185, - 0, 0, 48, 0, 0, 49, 14, 4, 27, 50, - 51, 52, 53, 54, 55, 56, 32, 33, 34, 35, - 36, 37, 38, 0, 39, 40, 41, 42, 43, -184, - -184, 0, 104, 0, 0, 0, 45, -185, -185, 0, - -186, -186, 0, -186, 0, 290, 291, -186, 292, 293, - 0, 0, 46, 47, 0, 0, -186, 0, 0, -186, - 0, 0, 0, 0, 0, 0, 0, 32, 33, 48, - 35, 0, 49, 14, 4, 27, 50, 51, 52, 53, - 54, 55, 56, 136, 0, 0, 137, 0, 0, 0, - 0, 294, 295, 0, 0, 0, 0, -186, -186, 0, - 0, 0, 0, 0, 0, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 0, 0, 0, 0, - 0, 0, 0, 185, 14, 4, 186, 187, 0, 188, - 189, 190, 191, 0, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 32, 33, 0, 35, 0, 0, 0, - 0, 39, 40, 41, 42, 0, 0, 145, 201, 202, - 0, 0, 0, 0, 0, 0, 0, 203, 204, 0, - 0, 0, 0, 0, 185, 0, 0, 186, 187, 0, - 188, 189, 190, 191, 0, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 32, 33, 0, 35, 0, 0, - 14, 4, 39, 40, 41, 42, 0, 0, 145, 283, - 202, 0, 0, 0, 0, 0, 0, 0, 203, 204, - 0, 0, 0, 0, 0, 185, 0, 0, 186, 187, - 0, 188, 189, 190, 191, 0, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 32, 33, 0, 35, 0, - 0, 14, 4, 39, 40, 41, 42, 0, 0, 145, - 0, 202, 0, 0, 0, 0, 0, 0, 155, 203, - 204, 0, 0, 156, 0, 0, 0, 0, 116, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 14, 4, 127, 128, 129, 130, 131, 132, - 133, 134, 389, 0, 0, 0, 0, 390, 0, 0, - 0, 0, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 391, 0, 0, 0, - 0, 392, 0, 0, 0, 0, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 132, 133, 134, 135, 136, 0, 0, 0, + 0, 0, 187, 263, 0, 0, 0, 0, 0, 0, + 188, 16, 6, 189, 190, 0, 191, 192, 193, 194, + 0, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 34, 35, 0, 37, 0, 0, 0, 0, 41, 42, + 43, 44, 0, 0, 147, 0, 205, 0, 0, 0, + 0, 0, 0, 187, 206, 207, 0, 0, 0, 0, + 0, 188, 0, 0, 189, 190, 0, 191, 192, 193, + 194, 0, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 34, 35, 0, 37, 0, 0, 16, 6, 41, + 42, 43, 44, 0, 0, 147, 289, 205, 0, 0, + 0, 0, 0, 0, 0, 206, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 393, 0, 0, 0, 0, 394, 0, 0, 0, 0, - 116, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 358, 0, 127, 128, 129, 130, - 131, 132, 133, 134, 116, 0, 0, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 360, 0, - 127, 128, 129, 130, 131, 132, 133, 134, 116, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 364, 0, 127, 128, 129, 130, 131, 132, - 133, 134, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 376, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, + 324, 0, 0, 0, 0, 0, 0, 188, 16, 6, + 189, 190, 0, 191, 192, 193, 194, 0, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 34, 35, 0, + 37, 0, 0, 0, 0, 41, 42, 43, 44, 0, + 0, 147, 0, 205, 0, 0, 0, 0, 0, 0, + 187, 206, 207, 0, 0, 0, 0, 0, 188, 0, + 0, 189, 190, 0, 191, 192, 193, 194, 0, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 34, 35, + 0, 37, 0, 0, 16, 6, 41, 42, 43, 44, + 0, 0, 147, 0, 205, 0, 0, 0, 0, 0, + 0, 0, 206, 207, 34, 35, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 388, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 116, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 400, 0, 127, 128, 129, 130, - 131, 132, 133, 134, 116, 0, 0, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 402, 0, - 127, 128, 129, 130, 131, 132, 133, 134, 116, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 423, 0, 127, 128, 129, 130, 131, 132, - 133, 134, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 252, 0, 0, 0, - 0, 0, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 255, 0, 0, 0, - 0, 0, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 307, 0, 0, 0, - 0, 0, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 310, 0, 0, 0, - 0, 0, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 313, 0, 0, 0, - 0, 0, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 314, 0, 0, 0, - 0, 116, 0, 0, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 127, 128, 129, - 130, 131, 132, 133, 134, 254, 0, 116, 0, 0, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 127, 128, 129, 130, 131, 132, 133, - 134, 115, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 318, 116, 0, 0, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 127, 128, 129, 130, 131, 132, 133, - 134, 331, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 116, 0, 0, 117, 118, + 138, 0, 0, 139, 0, 0, 0, 0, 300, 301, + 0, 0, 0, 0, 0, 16, 6, 0, 0, 0, + 0, 0, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 157, 0, 0, 0, 0, 158, 0, + 0, 16, 6, 118, 0, 0, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, + 130, 131, 132, 133, 134, 135, 136, 396, 0, 0, + 0, 0, 397, 0, 0, 0, 0, 118, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 0, 0, 0, 0, - 0, 127, 128, 129, 130, 131, 132, 133, 134, 117, - 118, 0, 120, 121, 122, 123, 124, 125, 126, 117, - 118, 0, 0, 121, 122, 123, 124, 125, 126, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 117, 118, 0, 0, 121, 122, 123, 124, 125, 126, - 117, 118, 0, 0, 121, 122, 123, 124, 125, 126, - 0, 0, 0, 0, 128, 129, 130, 131, 132, 133, - 134, 0, 0, 0, 128, 0, 130, 131, 132, 133, - 134, 117, 118, 0, 0, 121, 122, 123, 124, 125, - 126, 117, 118, 0, 0, 0, 0, 123, 124, 125, - 126, 0, 0, 0, 0, 0, 0, 130, 131, 132, - 133, 134, 0, 0, 0, 0, 0, 130, 131, 132, - 133, 134 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 129, 130, 131, 132, 133, 134, 135, + 136, 398, 0, 0, 0, 0, 399, 0, 0, 0, + 0, 118, 0, 0, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 129, 130, 131, + 132, 133, 134, 135, 136, 400, 0, 0, 0, 0, + 401, 0, 0, 0, 0, 118, 0, 0, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 365, + 0, 129, 130, 131, 132, 133, 134, 135, 136, 118, + 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 367, 0, 129, 130, 131, 132, 133, + 134, 135, 136, 118, 0, 0, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 371, 0, 129, + 130, 131, 132, 133, 134, 135, 136, 118, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 383, 0, 129, 130, 131, 132, 133, 134, 135, + 136, 118, 0, 0, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 395, 0, 129, 130, 131, + 132, 133, 134, 135, 136, 118, 0, 0, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 407, + 0, 129, 130, 131, 132, 133, 134, 135, 136, 118, + 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 409, 0, 129, 130, 131, 132, 133, + 134, 135, 136, 118, 0, 0, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 430, 0, 129, + 130, 131, 132, 133, 134, 135, 136, 118, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 129, 130, 131, 132, 133, 134, 135, + 136, 259, 0, 0, 0, 0, 0, 118, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 129, 130, 131, 132, 133, 134, 135, + 136, 313, 0, 0, 0, 0, 0, 118, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 129, 130, 131, 132, 133, 134, 135, + 136, 316, 0, 0, 0, 0, 0, 118, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 129, 130, 131, 132, 133, 134, 135, + 136, 319, 0, 0, 0, 0, 0, 118, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 129, 130, 131, 132, 133, 134, 135, + 136, 320, 0, 0, 0, 0, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 258, 0, 118, 0, 0, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, + 131, 132, 133, 134, 135, 136, 117, 118, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 129, 130, 131, 132, 133, 134, 135, + 136, 325, 118, 0, 0, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, + 131, 132, 133, 134, 135, 136, 338, 118, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 118, 0, 0, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 0, 0, 0, 0, 0, 129, 130, 131, 132, + 133, 134, 135, 136, 119, 120, 0, 122, 123, 124, + 125, 126, 127, 128, 119, 120, 0, 0, 123, 124, + 125, 126, 127, 128, 0, 0, 0, 129, 130, 131, + 132, 133, 134, 135, 136, 0, 0, 129, 130, 131, + 132, 133, 134, 135, 136, 119, 120, 0, 0, 123, + 124, 125, 126, 127, 128, 119, 120, 0, 0, 123, + 124, 125, 126, 127, 128, 0, 0, 0, 0, 130, + 131, 132, 133, 134, 135, 136, 0, 0, 0, 130, + 0, 132, 133, 134, 135, 136, 119, 120, 0, 0, + 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 132, 133, 134, 135, 136 }; const short parser::yycheck_[] = { - 0, 1, 2, 44, 94, 188, 6, 1, 2, 73, - 18, 264, 264, 73, 41, 264, 3, 4, 5, 145, - 19, 0, 49, 23, 207, 45, 29, 30, 45, 32, - 41, 41, 32, 33, 37, 38, 39, 40, 32, 33, - 29, 30, 45, 32, 42, 45, 51, 36, 47, 47, - 53, 54, 41, 83, 84, 85, 45, 67, 51, 48, - 49, 87, 188, 104, 88, 145, 86, 87, 42, 86, - 87, 29, 30, 73, 32, 42, 45, 203, 204, 73, - 47, 207, 41, 86, 87, 87, 42, 45, 49, 42, - 48, 47, 55, 56, 47, 95, 51, 86, 87, 43, - 87, 29, 30, 45, 32, 86, 87, 45, 188, 37, - 38, 39, 40, 49, 145, 91, 92, 45, 81, 82, - 83, 84, 85, 203, 204, 42, 42, 207, 86, 87, - 47, 47, 41, 45, 49, 42, 42, 137, 264, 145, - 47, 47, 42, 143, 47, 145, 41, 47, 401, 401, - 150, 145, 401, 153, 46, 82, 49, 188, 86, 87, - 41, 88, 51, 50, 42, 92, 93, 94, 95, 47, - 41, 41, 203, 204, 238, 358, 207, 360, 238, 41, - 41, 181, 188, 41, 264, 193, 42, 51, 188, 29, - 30, 47, 32, 41, 188, 42, 36, 203, 204, 51, - 47, 207, 51, 203, 204, 45, 24, 207, 48, 203, - 204, 41, 51, 207, 45, 42, 399, 281, 282, 402, - 47, 281, 282, 51, 41, 43, 51, 51, 46, 47, - 51, 41, 358, 264, 360, 46, 16, 92, 238, 422, - 423, 50, 50, 41, 238, 41, 86, 87, 81, 82, - 83, 84, 85, 41, 41, 46, 46, 46, 264, 41, - 41, 14, 326, 41, 264, 265, 326, 51, 41, 41, - 264, 19, 51, 399, 364, 401, 402, 51, 358, 401, - 360, 281, 282, 51, 51, 51, 104, 281, 282, 51, - 51, 51, 42, 42, 6, 42, 422, 423, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 42, 136, 399, - 51, 401, 402, 51, 51, 6, 326, 358, 6, 360, - 148, -1, 326, 151, 193, -1, 154, -1, 156, -1, - 158, -1, 422, 423, -1, -1, -1, -1, -1, 390, - -1, 392, 358, 394, 360, -1, -1, -1, 358, -1, - 360, -1, -1, 363, 358, -1, 360, 185, 399, -1, - 401, 402, -1, -1, -1, 145, -1, -1, -1, 197, - -1, -1, 145, -1, -1, -1, -1, -1, 145, -1, - -1, 422, 423, 399, -1, 401, 402, -1, -1, 399, - -1, 401, 402, -1, -1, 399, -1, 401, 402, -1, - -1, -1, -1, 145, -1, -1, 422, 423, 188, -1, - -1, -1, 422, 423, -1, 188, -1, -1, 422, 423, - -1, 188, -1, 203, 204, -1, 254, 207, -1, -1, - 203, 204, 142, 261, 207, 263, 203, 204, 266, 149, - 207, -1, 152, -1, 29, 30, 188, 32, -1, -1, - 278, 36, -1, 145, -1, -1, -1, -1, -1, -1, - 45, 203, 204, 48, -1, 207, -1, -1, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, -1, - -1, -1, -1, -1, 264, -1, 314, 29, 30, -1, - 32, 264, -1, -1, 36, -1, 188, 264, -1, -1, - -1, 86, 87, 45, -1, -1, 48, 335, 336, 337, - 338, 203, 204, 29, 30, 207, 32, -1, -1, -1, - -1, -1, 264, -1, -1, -1, -1, -1, -1, 45, - -1, 359, 48, 361, 362, -1, -1, 53, 54, -1, - -1, -1, -1, -1, 86, 87, -1, -1, 258, -1, - -1, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, -1, -1, -1, -1, 276, 277, -1, -1, - 86, 87, 264, -1, -1, 403, -1, -1, 358, -1, - 360, 29, 30, -1, 32, 358, -1, 360, 36, -1, - -1, 358, -1, 360, -1, -1, -1, 45, -1, 309, - 48, -1, 312, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 358, -1, 360, 399, - -1, 401, 402, -1, -1, -1, 399, -1, 401, 402, - -1, -1, 399, -1, 401, 402, -1, -1, 86, 87, - -1, -1, 422, 423, -1, -1, 356, -1, -1, 422, - 423, -1, -1, -1, -1, 422, 423, 399, -1, 401, - 402, 371, 6, 373, -1, 375, 358, -1, 360, -1, + 0, 46, 96, 3, 4, 75, 20, 47, 8, 75, + 270, 270, 3, 4, 47, 270, 191, 53, 21, 147, + 3, 4, 5, 6, 7, 25, 43, 88, 89, 31, + 32, 43, 34, 43, 34, 35, 211, 39, 40, 41, + 42, 51, 0, 34, 35, 47, 49, 47, 88, 89, + 93, 94, 69, 55, 56, 88, 89, 31, 32, 187, + 34, 106, 44, 191, 38, 57, 58, 49, 53, 43, + 85, 86, 87, 47, 90, 75, 50, 51, 206, 207, + 44, 89, 44, 211, 75, 49, 88, 89, 47, 264, + 89, 83, 84, 85, 86, 87, 51, 97, 45, 44, + 31, 32, 53, 34, 49, 47, 89, 38, 44, 43, + 147, 51, 84, 49, 88, 89, 47, 47, 90, 50, + 43, 147, 94, 95, 96, 97, 44, 44, 44, 44, + 44, 49, 49, 49, 49, 49, 264, 47, 44, 139, + 51, 44, 270, 49, 49, 145, 49, 147, 408, 408, + 187, 48, 152, 408, 191, 155, 147, 88, 89, 44, + 43, 187, 44, 51, 49, 191, 43, 49, 43, 206, + 207, 43, 242, 53, 211, 43, 242, 43, 43, 52, + 206, 207, 196, 183, 53, 211, 53, 187, 43, 53, + 365, 191, 367, 43, 47, 53, 187, 53, 43, 53, + 191, 53, 53, 43, 48, 94, 206, 207, 18, 43, + 52, 211, 43, 26, 43, 206, 207, 287, 288, 52, + 211, 287, 288, 43, 48, 48, 48, 264, 43, 43, + 16, 406, 45, 270, 409, 48, 49, 365, 264, 367, + 43, 53, 242, 43, 270, 83, 84, 85, 86, 87, + 43, 242, 53, 21, 429, 430, 53, 53, 53, 53, + 44, 53, 53, 333, 264, 53, 44, 333, 44, 44, + 270, 271, 53, 264, 53, 8, 53, 371, 406, 270, + 408, 409, 8, 8, 408, 187, -1, 287, 288, 196, + -1, -1, -1, 106, -1, -1, 287, 288, -1, -1, + -1, 429, 430, -1, 147, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, -1, 138, -1, -1, 365, -1, + 367, -1, -1, 333, -1, -1, -1, 150, -1, 365, + 153, 367, 333, 156, 187, 158, -1, 160, 191, -1, + -1, -1, 397, -1, 399, -1, 401, -1, -1, -1, + -1, -1, -1, 206, 207, 365, -1, 367, 211, 406, + 370, 408, 409, -1, 365, 188, 367, -1, 31, 32, + 406, 34, 408, 409, -1, 38, -1, 200, 147, -1, + -1, -1, 429, 430, 47, -1, -1, 50, -1, -1, + -1, -1, 147, 429, 430, -1, 406, -1, 408, 409, + -1, -1, -1, -1, -1, 406, -1, 408, 409, -1, + 147, 264, -1, -1, -1, -1, -1, 270, 187, 429, + 430, -1, 191, -1, -1, 88, 89, -1, 429, 430, + -1, -1, 187, -1, -1, 258, 191, 206, 207, -1, + -1, -1, 211, -1, 267, -1, 269, -1, -1, 272, + 187, 206, 207, -1, 191, -1, 211, -1, -1, 31, + 32, 284, 34, -1, -1, -1, 147, -1, -1, 206, + 207, -1, -1, -1, 211, 47, -1, -1, 50, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, -1, -1, -1, -1, 264, -1, 320, 147, -1, + -1, 270, -1, -1, -1, -1, 187, -1, -1, 264, + 191, -1, 365, -1, 367, 270, 88, 89, -1, 342, + 343, 344, 345, -1, -1, 206, 207, 264, 31, 32, + 211, 34, -1, 270, -1, 38, -1, -1, 187, -1, + -1, -1, 191, 366, 47, 368, 369, 50, -1, -1, + -1, -1, -1, 406, -1, 408, 409, 206, 207, 144, + -1, -1, 211, -1, -1, -1, 151, -1, -1, 154, + -1, -1, -1, -1, -1, -1, 429, 430, -1, -1, + -1, -1, -1, 264, -1, 88, 89, 410, -1, 270, + -1, 31, 32, -1, 34, -1, 365, -1, 367, 39, + 40, 41, 42, -1, -1, -1, -1, 47, -1, -1, + 365, -1, 367, -1, -1, 264, -1, -1, -1, -1, + -1, 270, -1, -1, -1, -1, -1, -1, 365, -1, + 367, -1, -1, -1, -1, -1, -1, 406, -1, 408, + 409, 9, 10, -1, 12, 13, -1, -1, 88, 89, + -1, 406, -1, 408, 409, -1, -1, -1, -1, -1, + 429, 430, -1, 31, 32, -1, 34, -1, -1, 406, + -1, 408, 409, -1, 429, 430, -1, 262, -1, 47, + -1, -1, 50, -1, 365, -1, 367, 55, 56, -1, + -1, -1, 429, 430, -1, -1, -1, 282, 283, -1, + -1, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, -1, -1, -1, -1, 365, -1, 367, -1, + 88, 89, -1, -1, -1, 406, -1, 408, 409, -1, + 315, 31, 32, 318, 34, -1, -1, -1, 38, -1, + -1, -1, -1, -1, -1, -1, -1, 47, 429, 430, + 50, -1, -1, -1, -1, 31, 32, 406, 34, 408, + 409, -1, 38, 31, 32, -1, 34, -1, -1, -1, + 38, 47, -1, -1, 50, 8, -1, -1, 363, 47, + 429, 430, 50, -1, -1, -1, -1, -1, 88, 89, + -1, -1, -1, 378, -1, 380, -1, 382, 31, 32, + 33, 34, 35, 36, 37, -1, 39, 40, 41, 42, + 43, -1, 88, 89, 47, 48, -1, -1, 51, -1, + 88, 89, 31, 32, -1, 34, -1, -1, -1, 38, + -1, -1, -1, -1, 67, 68, -1, -1, 47, -1, + -1, 50, 8, -1, -1, -1, -1, -1, -1, -1, + -1, 84, -1, -1, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 31, 32, 33, 34, 35, + 36, 37, -1, 39, 40, 41, 42, 43, -1, 88, + 89, 47, -1, -1, -1, 51, -1, 53, 31, 32, + -1, 34, -1, -1, -1, 38, 31, 32, -1, 34, + -1, 67, 68, 38, 47, -1, -1, 50, -1, 8, + -1, -1, 47, -1, -1, 50, -1, -1, 84, -1, + -1, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 31, 32, 33, 34, 35, 36, 37, -1, + 39, 40, 41, 42, 43, 88, 89, -1, 47, -1, + -1, -1, 51, 88, 89, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 67, 68, + -1, -1, -1, -1, -1, -1, 8, -1, -1, -1, + -1, -1, -1, -1, -1, 84, -1, -1, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 31, + 32, 33, 34, 35, 36, 37, -1, 39, 40, 41, + 42, 43, 48, -1, -1, 47, -1, -1, 54, 51, + -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, -1, -1, -1, -1, 67, 68, -1, -1, -1, + -1, -1, -1, -1, 80, 81, 82, 83, 84, 85, + 86, 87, 84, -1, -1, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 3, -1, -1, -1, + -1, -1, -1, -1, 11, -1, -1, 14, 15, -1, + 17, 18, 19, 20, -1, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, -1, 34, -1, -1, + -1, -1, 39, 40, 41, 42, 57, 58, 45, 46, + 47, -1, 63, 64, 65, 66, -1, -1, 55, 56, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 422, 423, -1, -1, -1, 29, 30, 31, 32, 33, - 34, 35, -1, 37, 38, 39, 40, 41, -1, -1, - -1, 45, 46, -1, -1, 49, -1, 399, -1, 401, - 402, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 65, 66, -1, -1, -1, -1, -1, -1, 6, - 422, 423, -1, -1, -1, -1, -1, -1, 82, -1, - -1, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 29, 30, 31, 32, 33, 34, 35, -1, - 37, 38, 39, 40, 41, -1, -1, -1, 45, -1, - -1, -1, 49, -1, 51, 29, 30, -1, 32, -1, - -1, -1, 36, 29, 30, -1, 32, -1, 65, 66, - 36, 45, -1, -1, 48, -1, 6, -1, -1, 45, - -1, -1, 48, -1, -1, 82, -1, -1, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 29, - 30, 31, 32, 33, 34, 35, -1, 37, 38, 39, - 40, 41, 86, 87, -1, 45, -1, -1, -1, 49, - 86, 87, 29, 30, -1, 32, -1, -1, -1, 36, - 29, 30, -1, 32, -1, 65, 66, 36, 45, -1, - -1, 48, -1, 6, -1, -1, 45, -1, -1, 48, - -1, -1, 82, -1, -1, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 29, 30, 31, 32, - 33, 34, 35, -1, 37, 38, 39, 40, 41, 86, - 87, -1, 45, -1, -1, -1, 49, 86, 87, -1, - 29, 30, -1, 32, -1, 7, 8, 36, 10, 11, - -1, -1, 65, 66, -1, -1, 45, -1, -1, 48, - -1, -1, -1, -1, -1, -1, -1, 29, 30, 82, - 32, -1, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 45, -1, -1, 48, -1, -1, -1, - -1, 53, 54, -1, -1, -1, -1, 86, 87, -1, - -1, -1, -1, -1, -1, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, -1, -1, -1, -1, - -1, -1, -1, 9, 86, 87, 12, 13, -1, 15, - 16, 17, 18, -1, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, -1, 32, -1, -1, -1, - -1, 37, 38, 39, 40, -1, -1, 43, 44, 45, - -1, -1, -1, -1, -1, -1, -1, 53, 54, -1, - -1, -1, -1, -1, 9, -1, -1, 12, 13, -1, - 15, 16, 17, 18, -1, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, -1, 32, -1, -1, - 86, 87, 37, 38, 39, 40, -1, -1, 43, 44, - 45, -1, -1, -1, -1, -1, -1, -1, 53, 54, - -1, -1, -1, -1, -1, 9, -1, -1, 12, 13, - -1, 15, 16, 17, 18, -1, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, -1, 32, -1, - -1, 86, 87, 37, 38, 39, 40, -1, -1, 43, - -1, 45, -1, -1, -1, -1, -1, -1, 42, 53, - 54, -1, -1, 47, -1, -1, -1, -1, 52, -1, - -1, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 86, 87, 78, 79, 80, 81, 82, 83, - 84, 85, 42, -1, -1, -1, -1, 47, -1, -1, - -1, -1, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 42, -1, -1, -1, - -1, 47, -1, -1, -1, -1, 52, -1, -1, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, -1, + -1, -1, 83, 84, 85, 86, 87, -1, -1, -1, + -1, -1, 3, 4, -1, -1, -1, -1, -1, -1, + 11, 88, 89, 14, 15, -1, 17, 18, 19, 20, + -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, -1, 34, -1, -1, -1, -1, 39, 40, + 41, 42, -1, -1, 45, -1, 47, -1, -1, -1, + -1, -1, -1, 3, 55, 56, -1, -1, -1, -1, + -1, 11, -1, -1, 14, 15, -1, 17, 18, 19, + 20, -1, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, -1, 34, -1, -1, 88, 89, 39, + 40, 41, 42, -1, -1, 45, 46, 47, -1, -1, + -1, -1, -1, -1, -1, 55, 56, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 78, 79, 80, 81, 82, 83, 84, 85, - 42, -1, -1, -1, -1, 47, -1, -1, -1, -1, - 52, -1, -1, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 42, -1, 78, 79, 80, 81, - 82, 83, 84, 85, 52, -1, -1, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 42, -1, - 78, 79, 80, 81, 82, 83, 84, 85, 52, -1, - -1, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 42, -1, 78, 79, 80, 81, 82, 83, - 84, 85, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 42, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 52, -1, -1, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, + 4, -1, -1, -1, -1, -1, -1, 11, 88, 89, + 14, 15, -1, 17, 18, 19, 20, -1, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, + 34, -1, -1, -1, -1, 39, 40, 41, 42, -1, + -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, + 3, 55, 56, -1, -1, -1, -1, -1, 11, -1, + -1, 14, 15, -1, 17, 18, 19, 20, -1, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + -1, 34, -1, -1, 88, 89, 39, 40, 41, 42, + -1, -1, 45, -1, 47, -1, -1, -1, -1, -1, + -1, -1, 55, 56, 31, 32, -1, 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 42, -1, 78, 79, 80, 81, 82, 83, 84, 85, - 52, -1, -1, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 42, -1, 78, 79, 80, 81, - 82, 83, 84, 85, 52, -1, -1, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 42, -1, - 78, 79, 80, 81, 82, 83, 84, 85, 52, -1, - -1, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 42, -1, 78, 79, 80, 81, 82, 83, - 84, 85, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 46, -1, -1, -1, - -1, -1, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 46, -1, -1, -1, - -1, -1, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 46, -1, -1, -1, - -1, -1, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 46, -1, -1, -1, - -1, -1, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 46, -1, -1, -1, - -1, -1, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 47, -1, -1, -1, - -1, 52, -1, -1, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, - 81, 82, 83, 84, 85, 50, -1, 52, -1, -1, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 47, -1, -1, 50, -1, -1, -1, -1, 55, 56, + -1, -1, -1, -1, -1, 88, 89, -1, -1, -1, + -1, -1, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 44, -1, -1, -1, -1, 49, -1, + -1, 88, 89, 54, -1, -1, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, + 81, 82, 83, 84, 85, 86, 87, 44, -1, -1, + -1, -1, 49, -1, -1, -1, -1, 54, -1, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 78, 79, 80, 81, 82, 83, 84, - 85, 51, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 51, 52, -1, -1, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + -1, -1, -1, 80, 81, 82, 83, 84, 85, 86, + 87, 44, -1, -1, -1, -1, 49, -1, -1, -1, + -1, 54, -1, -1, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 80, 81, 82, + 83, 84, 85, 86, 87, 44, -1, -1, -1, -1, + 49, -1, -1, -1, -1, 54, -1, -1, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 44, + -1, 80, 81, 82, 83, 84, 85, 86, 87, 54, + -1, -1, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 44, -1, 80, 81, 82, 83, 84, + 85, 86, 87, 54, -1, -1, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 44, -1, 80, + 81, 82, 83, 84, 85, 86, 87, 54, -1, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 78, 79, 80, 81, 82, 83, 84, - 85, 51, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 52, -1, -1, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 78, 79, - 80, 81, 82, 83, 84, 85, -1, -1, -1, -1, - -1, 78, 79, 80, 81, 82, 83, 84, 85, 55, - 56, -1, 58, 59, 60, 61, 62, 63, 64, 55, - 56, -1, -1, 59, 60, 61, 62, 63, 64, -1, - -1, -1, 78, 79, 80, 81, 82, 83, 84, 85, - -1, -1, 78, 79, 80, 81, 82, 83, 84, 85, - 55, 56, -1, -1, 59, 60, 61, 62, 63, 64, - 55, 56, -1, -1, 59, 60, 61, 62, 63, 64, - -1, -1, -1, -1, 79, 80, 81, 82, 83, 84, - 85, -1, -1, -1, 79, -1, 81, 82, 83, 84, - 85, 55, 56, -1, -1, 59, 60, 61, 62, 63, - 64, 55, 56, -1, -1, -1, -1, 61, 62, 63, - 64, -1, -1, -1, -1, -1, -1, 81, 82, 83, - 84, 85, -1, -1, -1, -1, -1, 81, 82, 83, - 84, 85 + -1, 44, -1, 80, 81, 82, 83, 84, 85, 86, + 87, 54, -1, -1, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 44, -1, 80, 81, 82, + 83, 84, 85, 86, 87, 54, -1, -1, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 44, + -1, 80, 81, 82, 83, 84, 85, 86, 87, 54, + -1, -1, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 44, -1, 80, 81, 82, 83, 84, + 85, 86, 87, 54, -1, -1, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 44, -1, 80, + 81, 82, 83, 84, 85, 86, 87, 54, -1, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 80, 81, 82, 83, 84, 85, 86, + 87, 48, -1, -1, -1, -1, -1, 54, -1, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 80, 81, 82, 83, 84, 85, 86, + 87, 48, -1, -1, -1, -1, -1, 54, -1, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 80, 81, 82, 83, 84, 85, 86, + 87, 48, -1, -1, -1, -1, -1, 54, -1, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 80, 81, 82, 83, 84, 85, 86, + 87, 48, -1, -1, -1, -1, -1, 54, -1, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 80, 81, 82, 83, 84, 85, 86, + 87, 49, -1, -1, -1, -1, 54, -1, -1, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, + 52, -1, 54, -1, -1, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 80, 81, + 82, 83, 84, 85, 86, 87, 53, 54, -1, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 80, 81, 82, 83, 84, 85, 86, + 87, 53, 54, -1, -1, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 80, 81, + 82, 83, 84, 85, 86, 87, 53, 54, -1, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 54, -1, -1, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 80, 81, 82, 83, 84, 85, 86, + 87, -1, -1, -1, -1, -1, 80, 81, 82, 83, + 84, 85, 86, 87, 57, 58, -1, 60, 61, 62, + 63, 64, 65, 66, 57, 58, -1, -1, 61, 62, + 63, 64, 65, 66, -1, -1, -1, 80, 81, 82, + 83, 84, 85, 86, 87, -1, -1, 80, 81, 82, + 83, 84, 85, 86, 87, 57, 58, -1, -1, 61, + 62, 63, 64, 65, 66, 57, 58, -1, -1, 61, + 62, 63, 64, 65, 66, -1, -1, -1, -1, 81, + 82, 83, 84, 85, 86, 87, -1, -1, -1, 81, + -1, 83, 84, 85, 86, 87, 57, 58, -1, -1, + 61, 62, 63, 64, 65, 66, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 83, 84, 85, 86, 87 }; const unsigned char parser::yystos_[] = { - 0, 3, 4, 5, 87, 106, 107, 108, 109, 110, - 111, 112, 113, 174, 86, 174, 175, 175, 41, 0, - 108, 109, 110, 41, 67, 51, 51, 88, 177, 156, - 174, 6, 29, 30, 31, 32, 33, 34, 35, 37, - 38, 39, 40, 41, 45, 49, 65, 66, 82, 85, - 89, 90, 91, 92, 93, 94, 95, 141, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 42, 42, 47, 45, 174, 175, 45, - 174, 175, 45, 141, 45, 46, 141, 157, 158, 174, - 141, 141, 91, 92, 87, 51, 52, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 78, 79, 80, - 81, 82, 83, 84, 85, 36, 45, 48, 153, 154, - 174, 175, 41, 49, 51, 43, 115, 174, 45, 41, - 49, 45, 41, 49, 45, 42, 47, 141, 47, 46, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 174, 49, 157, 158, 174, 9, 12, 13, 15, 16, - 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 44, 45, 53, 54, 114, 115, 116, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 143, 144, 145, 151, 152, 160, 161, 164, 168, - 169, 170, 171, 174, 141, 157, 174, 141, 157, 174, - 141, 141, 46, 141, 50, 46, 174, 42, 41, 141, - 51, 41, 114, 41, 41, 41, 41, 82, 177, 181, - 50, 51, 51, 51, 141, 51, 41, 41, 45, 151, - 152, 164, 164, 44, 114, 51, 51, 51, 51, 51, - 7, 8, 10, 11, 53, 54, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 46, 42, 41, - 46, 42, 41, 46, 47, 46, 141, 157, 51, 141, - 16, 141, 117, 143, 144, 145, 164, 174, 141, 50, - 50, 51, 157, 157, 141, 41, 41, 41, 41, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 46, 157, 46, 157, 46, 141, 41, 42, 42, 41, - 42, 51, 19, 47, 42, 42, 42, 141, 141, 141, - 141, 41, 42, 41, 42, 41, 42, 157, 114, 141, - 114, 141, 142, 141, 174, 115, 51, 51, 42, 42, - 47, 42, 47, 42, 47, 157, 157, 157, 42, 14, - 42, 51, 42, 19, 51, 51, 158, 51, 158, 51, - 158, 42, 42, 42, 114, 51, 117, 114, 141, 42, - 42, 42, 42, 42, 51, 51, 51, 114, 114 + 0, 3, 4, 5, 6, 7, 89, 108, 109, 110, + 111, 112, 113, 114, 115, 177, 88, 177, 178, 178, + 43, 0, 110, 111, 112, 43, 69, 53, 53, 90, + 180, 159, 177, 8, 31, 32, 33, 34, 35, 36, + 37, 39, 40, 41, 42, 43, 47, 51, 67, 68, + 84, 87, 91, 92, 93, 94, 95, 96, 97, 144, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 44, 44, 49, 47, 177, + 178, 47, 177, 178, 47, 144, 47, 48, 144, 160, + 161, 177, 144, 144, 93, 94, 89, 53, 54, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 80, + 81, 82, 83, 84, 85, 86, 87, 38, 47, 50, + 156, 157, 177, 178, 43, 51, 53, 45, 118, 177, + 47, 43, 51, 47, 43, 51, 47, 44, 49, 144, + 49, 48, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 177, 51, 160, 161, 177, 3, 11, 14, + 15, 17, 18, 19, 20, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 46, 47, 55, 56, 116, 117, + 118, 119, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 146, 147, 148, 154, 155, + 163, 164, 167, 171, 172, 173, 174, 177, 144, 160, + 177, 144, 160, 177, 144, 144, 48, 144, 52, 48, + 177, 44, 43, 4, 119, 144, 53, 43, 116, 43, + 43, 43, 43, 84, 180, 184, 52, 53, 53, 53, + 144, 53, 43, 43, 47, 154, 155, 167, 167, 46, + 116, 53, 53, 53, 53, 53, 9, 10, 12, 13, + 55, 56, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 48, 44, 43, 48, 44, 43, 48, + 49, 48, 144, 160, 4, 53, 144, 18, 144, 120, + 146, 147, 148, 167, 177, 144, 52, 52, 53, 160, + 160, 144, 43, 43, 43, 43, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 48, 160, 48, + 160, 48, 144, 43, 44, 44, 43, 44, 53, 21, + 49, 44, 44, 44, 144, 144, 144, 144, 43, 44, + 43, 44, 43, 44, 160, 116, 144, 116, 144, 145, + 144, 177, 118, 53, 53, 44, 44, 49, 44, 49, + 44, 49, 160, 160, 160, 44, 16, 44, 53, 44, + 21, 53, 53, 161, 53, 161, 53, 161, 44, 44, + 44, 116, 53, 120, 116, 144, 44, 44, 44, 44, + 44, 53, 53, 53, 116, 116 }; const unsigned char parser::yyr1_[] = { - 0, 105, 106, 106, 107, 107, 107, 107, 107, 107, - 108, 109, 110, 110, 110, 111, 112, 113, 114, 114, - 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 115, 115, 116, 116, 117, 117, 117, 117, - 118, 118, 119, 119, 119, 120, 121, 121, 122, 123, - 123, 124, 124, 125, 126, 127, 128, 129, 130, 131, - 131, 132, 133, 133, 134, 135, 136, 137, 137, 138, - 139, 140, 141, 141, 141, 142, 142, 143, 143, 143, - 143, 143, 143, 143, 143, 143, 143, 143, 144, 144, - 145, 145, 146, 147, 147, 147, 147, 147, 147, 147, - 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, - 147, 148, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 148, 149, - 150, 151, 151, 152, 152, 153, 153, 153, 153, 153, - 153, 154, 154, 154, 154, 155, 156, 156, 156, 157, - 157, 158, 158, 159, 159, 160, 161, 162, 163, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 175, - 176, 177, 178, 179, 180, 180, 181, 181, 181, 181, - 181, 182, 183 + 0, 107, 108, 108, 109, 109, 109, 109, 109, 109, + 110, 111, 112, 112, 112, 112, 112, 113, 114, 115, + 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, + 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, + 116, 116, 116, 116, 116, 117, 117, 118, 118, 119, + 119, 120, 120, 120, 120, 121, 121, 122, 122, 122, + 123, 124, 124, 125, 126, 126, 127, 127, 128, 129, + 130, 131, 132, 133, 134, 134, 135, 136, 136, 137, + 138, 139, 140, 140, 141, 142, 143, 144, 144, 144, + 145, 145, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 147, 147, 148, 148, 149, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 152, 153, 154, 154, 155, 155, + 156, 156, 156, 156, 156, 156, 157, 157, 157, 157, + 158, 159, 159, 159, 160, 160, 161, 161, 162, 162, + 163, 164, 165, 166, 167, 167, 167, 167, 167, 167, + 167, 167, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 178, 179, 180, 181, 182, 183, + 183, 184, 184, 184, 184, 184, 185, 186 }; const signed char parser::yyr2_[] = { 0, 2, 1, 0, 2, 2, 2, 1, 1, 1, - 3, 3, 1, 1, 1, 5, 4, 5, 1, 1, + 3, 3, 1, 1, 1, 1, 1, 5, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 2, 2, 1, 1, 1, 1, 0, - 2, 2, 2, 2, 2, 6, 8, 6, 3, 8, - 6, 8, 6, 2, 5, 7, 5, 7, 9, 7, - 9, 5, 3, 3, 2, 2, 2, 3, 2, 2, - 5, 5, 1, 1, 1, 1, 0, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, - 2, 2, 5, 3, 3, 3, 3, 3, 3, 3, + 1, 1, 1, 1, 1, 3, 2, 3, 2, 2, + 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, + 6, 8, 6, 3, 8, 6, 8, 6, 2, 5, + 7, 5, 7, 9, 7, 9, 5, 3, 3, 2, + 2, 2, 3, 2, 2, 5, 5, 1, 1, 1, + 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 2, 2, 2, 2, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 3, 3, 3, 3, 3, 3, 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, 1, 1, 2, 2, 4, 6, 5, 7, 5, - 7, 8, 9, 9, 9, 3, 3, 1, 0, 1, - 0, 3, 1, 2, 3, 4, 3, 2, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, - 1, 1, 1, 7, 2, 1, 2, 1, 1, 1, - 1, 1, 1 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 2, 1, 1, 2, 2, + 4, 6, 5, 7, 5, 7, 8, 9, 9, 9, + 3, 3, 1, 0, 1, 0, 3, 1, 2, 3, + 4, 3, 2, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, + 2, 1, 1, 1, 1, 1, 1, 1, 7, 2, + 1, 2, 1, 1, 1, 1, 1, 1 }; @@ -4385,28 +4469,28 @@ namespace xsk { namespace gsc { namespace iw5 { const short parser::yyrline_[] = { - 0, 249, 249, 250, 254, 256, 258, 260, 262, 264, - 269, 273, 278, 279, 280, 284, 289, 294, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 326, 327, 331, 333, 338, 340, 342, 345, - 349, 351, 356, 358, 360, 365, 370, 372, 377, 382, - 384, 389, 391, 396, 401, 406, 411, 416, 421, 426, - 428, 433, 438, 440, 445, 450, 455, 460, 462, 467, - 472, 477, 482, 483, 484, 488, 489, 493, 495, 497, - 499, 501, 503, 505, 507, 509, 511, 513, 518, 520, - 525, 527, 532, 537, 539, 541, 543, 545, 547, 549, - 551, 553, 555, 557, 559, 561, 563, 565, 567, 569, - 571, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 607, - 612, 617, 618, 621, 622, 626, 628, 630, 632, 634, - 636, 641, 643, 645, 647, 652, 657, 659, 662, 666, - 669, 673, 675, 680, 682, 687, 692, 697, 702, 707, - 708, 709, 710, 711, 712, 713, 714, 715, 719, 724, - 729, 734, 739, 744, 749, 754, 759, 764, 769, 771, - 776, 781, 786, 791, 796, 798, 803, 805, 807, 809, - 811, 816, 821 + 0, 252, 252, 253, 257, 259, 261, 263, 265, 267, + 272, 276, 281, 282, 283, 284, 285, 289, 294, 299, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 332, 333, 337, 338, 342, + 344, 349, 351, 353, 356, 360, 362, 367, 369, 371, + 376, 381, 383, 388, 393, 395, 400, 402, 407, 412, + 417, 422, 427, 432, 437, 439, 444, 449, 451, 456, + 461, 466, 471, 473, 478, 483, 488, 493, 494, 495, + 499, 500, 504, 506, 508, 510, 512, 514, 516, 518, + 520, 522, 524, 529, 531, 536, 538, 543, 548, 550, + 552, 554, 556, 558, 560, 562, 564, 566, 568, 570, + 572, 574, 576, 578, 580, 582, 587, 588, 589, 590, + 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, + 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, + 611, 612, 613, 614, 618, 623, 628, 629, 632, 633, + 637, 639, 641, 643, 645, 647, 652, 654, 656, 658, + 663, 668, 670, 673, 677, 680, 684, 686, 691, 693, + 698, 703, 708, 713, 718, 719, 720, 721, 722, 723, + 724, 725, 726, 730, 735, 740, 745, 750, 755, 760, + 765, 770, 775, 780, 782, 787, 792, 797, 802, 807, + 809, 814, 816, 818, 820, 822, 827, 832 }; void @@ -4439,9 +4523,9 @@ namespace xsk { namespace gsc { namespace iw5 { #line 13 "parser.ypp" } } } // xsk::gsc::iw5 -#line 4443 "parser.cpp" +#line 4527 "parser.cpp" -#line 825 "parser.ypp" +#line 836 "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 2f92498a..499c30c4 100644 --- a/src/iw5/xsk/parser.hpp +++ b/src/iw5/xsk/parser.hpp @@ -580,6 +580,7 @@ namespace xsk { namespace gsc { namespace iw5 { // stmt_ifelse char dummy54[sizeof (ast::stmt_ifelse::ptr)]; + // stmt_dev // stmt_block // stmt_list char dummy55[sizeof (ast::stmt_list::ptr)]; @@ -676,108 +677,110 @@ namespace xsk { namespace gsc { namespace iw5 { IW5EOF = 0, // "end of file" IW5error = 1, // error IW5UNDEF = 2, // "invalid token" - INLINE = 3, // "#inline" - INCLUDE = 4, // "#include" - USINGTREE = 5, // "#using_animtree" - ANIMTREE = 6, // "#animtree" - ENDON = 7, // "endon" - NOTIFY = 8, // "notify" - WAIT = 9, // "wait" - WAITTILL = 10, // "waittill" - WAITTILLMATCH = 11, // "waittillmatch" - WAITTILLFRAMEEND = 12, // "waittillframeend" - IF = 13, // "if" - ELSE = 14, // "else" - DO = 15, // "do" - WHILE = 16, // "while" - FOR = 17, // "for" - FOREACH = 18, // "foreach" - IN = 19, // "in" - SWITCH = 20, // "switch" - CASE = 21, // "case" - DEFAULT = 22, // "default" - BREAK = 23, // "break" - CONTINUE = 24, // "continue" - RETURN = 25, // "return" - BREAKPOINT = 26, // "breakpoint" - PROFBEGIN = 27, // "prof_begin" - PROFEND = 28, // "prof_end" - THREAD = 29, // "thread" - CHILDTHREAD = 30, // "childthread" - THISTHREAD = 31, // "thisthread" - CALL = 32, // "call" - TRUE = 33, // "true" - FALSE = 34, // "false" - UNDEFINED = 35, // "undefined" - SIZE = 36, // ".size" - GAME = 37, // "game" - SELF = 38, // "self" - ANIM = 39, // "anim" - LEVEL = 40, // "level" - LPAREN = 41, // "(" - RPAREN = 42, // ")" - LBRACE = 43, // "{" - RBRACE = 44, // "}" - LBRACKET = 45, // "[" - RBRACKET = 46, // "]" - COMMA = 47, // "," - DOT = 48, // "." - DOUBLECOLON = 49, // "::" - COLON = 50, // ":" - SEMICOLON = 51, // ";" - QMARK = 52, // "?" - INCREMENT = 53, // "++" - DECREMENT = 54, // "--" - LSHIFT = 55, // "<<" - RSHIFT = 56, // ">>" - OR = 57, // "||" - AND = 58, // "&&" - EQUALITY = 59, // "==" - INEQUALITY = 60, // "!=" - LESS_EQUAL = 61, // "<=" - GREATER_EQUAL = 62, // ">=" - LESS = 63, // "<" - GREATER = 64, // ">" - NOT = 65, // "!" - COMPLEMENT = 66, // "~" - ASSIGN = 67, // "=" - ASSIGN_ADD = 68, // "+=" - ASSIGN_SUB = 69, // "-=" - ASSIGN_MUL = 70, // "*=" - ASSIGN_DIV = 71, // "/=" - ASSIGN_MOD = 72, // "%=" - ASSIGN_BW_OR = 73, // "|=" - ASSIGN_BW_AND = 74, // "&=" - ASSIGN_BW_EXOR = 75, // "^=" - ASSIGN_RSHIFT = 76, // ">>=" - ASSIGN_LSHIFT = 77, // "<<=" - BITWISE_OR = 78, // "|" - BITWISE_AND = 79, // "&" - BITWISE_EXOR = 80, // "^" - ADD = 81, // "+" - SUB = 82, // "-" - MUL = 83, // "*" - DIV = 84, // "/" - MOD = 85, // "%" - PATH = 86, // "path" - IDENTIFIER = 87, // "identifier" - STRING = 88, // "string literal" - ISTRING = 89, // "localized string" - COLOR = 90, // "color" - FLOAT = 91, // "float" - INT_DEC = 92, // "int" - INT_OCT = 93, // "octal int" - INT_BIN = 94, // "binary int" - INT_HEX = 95, // "hexadecimal int" - ADD_ARRAY = 96, // ADD_ARRAY - THEN = 97, // THEN - TERN = 98, // TERN - NEG = 99, // NEG - ANIMREF = 100, // ANIMREF - PREINC = 101, // PREINC - PREDEC = 102, // PREDEC - POSTINC = 103, // POSTINC - POSTDEC = 104 // POSTDEC + DEVBEGIN = 3, // "/#" + DEVEND = 4, // "#/" + INLINE = 5, // "#inline" + INCLUDE = 6, // "#include" + USINGTREE = 7, // "#using_animtree" + ANIMTREE = 8, // "#animtree" + ENDON = 9, // "endon" + NOTIFY = 10, // "notify" + WAIT = 11, // "wait" + WAITTILL = 12, // "waittill" + WAITTILLMATCH = 13, // "waittillmatch" + WAITTILLFRAMEEND = 14, // "waittillframeend" + IF = 15, // "if" + ELSE = 16, // "else" + DO = 17, // "do" + WHILE = 18, // "while" + FOR = 19, // "for" + FOREACH = 20, // "foreach" + IN = 21, // "in" + SWITCH = 22, // "switch" + CASE = 23, // "case" + DEFAULT = 24, // "default" + BREAK = 25, // "break" + CONTINUE = 26, // "continue" + RETURN = 27, // "return" + BREAKPOINT = 28, // "breakpoint" + PROFBEGIN = 29, // "prof_begin" + PROFEND = 30, // "prof_end" + THREAD = 31, // "thread" + CHILDTHREAD = 32, // "childthread" + THISTHREAD = 33, // "thisthread" + CALL = 34, // "call" + TRUE = 35, // "true" + FALSE = 36, // "false" + UNDEFINED = 37, // "undefined" + SIZE = 38, // ".size" + GAME = 39, // "game" + SELF = 40, // "self" + ANIM = 41, // "anim" + LEVEL = 42, // "level" + LPAREN = 43, // "(" + RPAREN = 44, // ")" + LBRACE = 45, // "{" + RBRACE = 46, // "}" + LBRACKET = 47, // "[" + RBRACKET = 48, // "]" + COMMA = 49, // "," + DOT = 50, // "." + DOUBLECOLON = 51, // "::" + COLON = 52, // ":" + SEMICOLON = 53, // ";" + QMARK = 54, // "?" + INCREMENT = 55, // "++" + DECREMENT = 56, // "--" + LSHIFT = 57, // "<<" + RSHIFT = 58, // ">>" + OR = 59, // "||" + AND = 60, // "&&" + EQUALITY = 61, // "==" + INEQUALITY = 62, // "!=" + LESS_EQUAL = 63, // "<=" + GREATER_EQUAL = 64, // ">=" + LESS = 65, // "<" + GREATER = 66, // ">" + NOT = 67, // "!" + COMPLEMENT = 68, // "~" + ASSIGN = 69, // "=" + ASSIGN_ADD = 70, // "+=" + ASSIGN_SUB = 71, // "-=" + ASSIGN_MUL = 72, // "*=" + ASSIGN_DIV = 73, // "/=" + ASSIGN_MOD = 74, // "%=" + ASSIGN_BW_OR = 75, // "|=" + ASSIGN_BW_AND = 76, // "&=" + ASSIGN_BW_EXOR = 77, // "^=" + ASSIGN_RSHIFT = 78, // ">>=" + ASSIGN_LSHIFT = 79, // "<<=" + BITWISE_OR = 80, // "|" + BITWISE_AND = 81, // "&" + BITWISE_EXOR = 82, // "^" + ADD = 83, // "+" + SUB = 84, // "-" + MUL = 85, // "*" + DIV = 86, // "/" + MOD = 87, // "%" + PATH = 88, // "path" + IDENTIFIER = 89, // "identifier" + STRING = 90, // "string literal" + ISTRING = 91, // "localized string" + COLOR = 92, // "color" + FLOAT = 93, // "float" + INT_DEC = 94, // "int" + INT_OCT = 95, // "octal int" + INT_BIN = 96, // "binary int" + INT_HEX = 97, // "hexadecimal int" + ADD_ARRAY = 98, // ADD_ARRAY + THEN = 99, // THEN + TERN = 100, // TERN + NEG = 101, // NEG + ANIMREF = 102, // ANIMREF + PREINC = 103, // PREINC + PREDEC = 104, // PREDEC + POSTINC = 105, // POSTINC + POSTDEC = 106 // POSTDEC }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; @@ -794,192 +797,195 @@ namespace xsk { namespace gsc { namespace iw5 { { enum symbol_kind_type { - YYNTOKENS = 105, ///< Number of tokens. + YYNTOKENS = 107, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error S_YYUNDEF = 2, // "invalid token" - S_INLINE = 3, // "#inline" - S_INCLUDE = 4, // "#include" - S_USINGTREE = 5, // "#using_animtree" - S_ANIMTREE = 6, // "#animtree" - S_ENDON = 7, // "endon" - S_NOTIFY = 8, // "notify" - S_WAIT = 9, // "wait" - S_WAITTILL = 10, // "waittill" - S_WAITTILLMATCH = 11, // "waittillmatch" - S_WAITTILLFRAMEEND = 12, // "waittillframeend" - S_IF = 13, // "if" - S_ELSE = 14, // "else" - S_DO = 15, // "do" - S_WHILE = 16, // "while" - S_FOR = 17, // "for" - S_FOREACH = 18, // "foreach" - S_IN = 19, // "in" - S_SWITCH = 20, // "switch" - S_CASE = 21, // "case" - S_DEFAULT = 22, // "default" - S_BREAK = 23, // "break" - S_CONTINUE = 24, // "continue" - S_RETURN = 25, // "return" - S_BREAKPOINT = 26, // "breakpoint" - S_PROFBEGIN = 27, // "prof_begin" - S_PROFEND = 28, // "prof_end" - S_THREAD = 29, // "thread" - S_CHILDTHREAD = 30, // "childthread" - S_THISTHREAD = 31, // "thisthread" - S_CALL = 32, // "call" - S_TRUE = 33, // "true" - S_FALSE = 34, // "false" - S_UNDEFINED = 35, // "undefined" - S_SIZE = 36, // ".size" - S_GAME = 37, // "game" - S_SELF = 38, // "self" - S_ANIM = 39, // "anim" - S_LEVEL = 40, // "level" - S_LPAREN = 41, // "(" - S_RPAREN = 42, // ")" - S_LBRACE = 43, // "{" - S_RBRACE = 44, // "}" - S_LBRACKET = 45, // "[" - S_RBRACKET = 46, // "]" - S_COMMA = 47, // "," - S_DOT = 48, // "." - S_DOUBLECOLON = 49, // "::" - S_COLON = 50, // ":" - S_SEMICOLON = 51, // ";" - S_QMARK = 52, // "?" - S_INCREMENT = 53, // "++" - S_DECREMENT = 54, // "--" - S_LSHIFT = 55, // "<<" - S_RSHIFT = 56, // ">>" - S_OR = 57, // "||" - S_AND = 58, // "&&" - S_EQUALITY = 59, // "==" - S_INEQUALITY = 60, // "!=" - S_LESS_EQUAL = 61, // "<=" - S_GREATER_EQUAL = 62, // ">=" - S_LESS = 63, // "<" - S_GREATER = 64, // ">" - S_NOT = 65, // "!" - S_COMPLEMENT = 66, // "~" - S_ASSIGN = 67, // "=" - S_ASSIGN_ADD = 68, // "+=" - S_ASSIGN_SUB = 69, // "-=" - S_ASSIGN_MUL = 70, // "*=" - S_ASSIGN_DIV = 71, // "/=" - S_ASSIGN_MOD = 72, // "%=" - S_ASSIGN_BW_OR = 73, // "|=" - S_ASSIGN_BW_AND = 74, // "&=" - S_ASSIGN_BW_EXOR = 75, // "^=" - S_ASSIGN_RSHIFT = 76, // ">>=" - S_ASSIGN_LSHIFT = 77, // "<<=" - S_BITWISE_OR = 78, // "|" - S_BITWISE_AND = 79, // "&" - S_BITWISE_EXOR = 80, // "^" - S_ADD = 81, // "+" - S_SUB = 82, // "-" - S_MUL = 83, // "*" - S_DIV = 84, // "/" - S_MOD = 85, // "%" - S_PATH = 86, // "path" - S_IDENTIFIER = 87, // "identifier" - S_STRING = 88, // "string literal" - S_ISTRING = 89, // "localized string" - S_COLOR = 90, // "color" - S_FLOAT = 91, // "float" - S_INT_DEC = 92, // "int" - S_INT_OCT = 93, // "octal int" - S_INT_BIN = 94, // "binary int" - S_INT_HEX = 95, // "hexadecimal int" - S_ADD_ARRAY = 96, // ADD_ARRAY - S_THEN = 97, // THEN - S_TERN = 98, // TERN - S_NEG = 99, // NEG - S_ANIMREF = 100, // ANIMREF - S_PREINC = 101, // PREINC - S_PREDEC = 102, // PREDEC - S_POSTINC = 103, // POSTINC - S_POSTDEC = 104, // POSTDEC - S_YYACCEPT = 105, // $accept - S_root = 106, // root - S_program = 107, // program - S_inline = 108, // inline - S_include = 109, // include - S_declaration = 110, // declaration - S_decl_usingtree = 111, // decl_usingtree - S_decl_constant = 112, // decl_constant - S_decl_thread = 113, // decl_thread - S_stmt = 114, // stmt - S_stmt_block = 115, // stmt_block - S_stmt_list = 116, // stmt_list - S_stmt_expr = 117, // stmt_expr - S_stmt_call = 118, // stmt_call - S_stmt_assign = 119, // stmt_assign - S_stmt_endon = 120, // stmt_endon - S_stmt_notify = 121, // stmt_notify - S_stmt_wait = 122, // stmt_wait - S_stmt_waittill = 123, // stmt_waittill - S_stmt_waittillmatch = 124, // stmt_waittillmatch - S_stmt_waittillframeend = 125, // stmt_waittillframeend - S_stmt_if = 126, // stmt_if - S_stmt_ifelse = 127, // stmt_ifelse - S_stmt_while = 128, // stmt_while - S_stmt_dowhile = 129, // stmt_dowhile - S_stmt_for = 130, // stmt_for - S_stmt_foreach = 131, // stmt_foreach - S_stmt_switch = 132, // stmt_switch - S_stmt_case = 133, // stmt_case - S_stmt_default = 134, // stmt_default - S_stmt_break = 135, // stmt_break - S_stmt_continue = 136, // stmt_continue - S_stmt_return = 137, // stmt_return - S_stmt_breakpoint = 138, // stmt_breakpoint - S_stmt_prof_begin = 139, // stmt_prof_begin - S_stmt_prof_end = 140, // stmt_prof_end - S_expr = 141, // expr - S_expr_or_empty = 142, // expr_or_empty - S_expr_assign = 143, // expr_assign - S_expr_increment = 144, // expr_increment - S_expr_decrement = 145, // expr_decrement - S_expr_ternary = 146, // expr_ternary - S_expr_binary = 147, // expr_binary - S_expr_primitive = 148, // expr_primitive - S_expr_complement = 149, // expr_complement - S_expr_not = 150, // expr_not - S_expr_call = 151, // expr_call - S_expr_method = 152, // expr_method - S_expr_function = 153, // expr_function - S_expr_pointer = 154, // expr_pointer - S_expr_add_array = 155, // expr_add_array - S_expr_parameters = 156, // expr_parameters - S_expr_arguments = 157, // expr_arguments - S_expr_arguments_no_empty = 158, // expr_arguments_no_empty - S_expr_reference = 159, // expr_reference - S_expr_array = 160, // expr_array - S_expr_field = 161, // expr_field - S_expr_size = 162, // expr_size - S_expr_paren = 163, // expr_paren - S_expr_object = 164, // expr_object - S_expr_thisthread = 165, // expr_thisthread - S_expr_empty_array = 166, // expr_empty_array - S_expr_undefined = 167, // expr_undefined - S_expr_game = 168, // expr_game - S_expr_self = 169, // expr_self - S_expr_anim = 170, // expr_anim - S_expr_level = 171, // expr_level - S_expr_animation = 172, // expr_animation - S_expr_animtree = 173, // expr_animtree - S_expr_identifier = 174, // expr_identifier - S_expr_path = 175, // expr_path - S_expr_istring = 176, // expr_istring - S_expr_string = 177, // expr_string - S_expr_color = 178, // expr_color - S_expr_vector = 179, // expr_vector - S_expr_float = 180, // expr_float - S_expr_integer = 181, // expr_integer - S_expr_false = 182, // expr_false - S_expr_true = 183 // expr_true + S_DEVBEGIN = 3, // "/#" + S_DEVEND = 4, // "#/" + S_INLINE = 5, // "#inline" + S_INCLUDE = 6, // "#include" + S_USINGTREE = 7, // "#using_animtree" + S_ANIMTREE = 8, // "#animtree" + S_ENDON = 9, // "endon" + S_NOTIFY = 10, // "notify" + S_WAIT = 11, // "wait" + S_WAITTILL = 12, // "waittill" + S_WAITTILLMATCH = 13, // "waittillmatch" + S_WAITTILLFRAMEEND = 14, // "waittillframeend" + S_IF = 15, // "if" + S_ELSE = 16, // "else" + S_DO = 17, // "do" + S_WHILE = 18, // "while" + S_FOR = 19, // "for" + S_FOREACH = 20, // "foreach" + S_IN = 21, // "in" + S_SWITCH = 22, // "switch" + S_CASE = 23, // "case" + S_DEFAULT = 24, // "default" + S_BREAK = 25, // "break" + S_CONTINUE = 26, // "continue" + S_RETURN = 27, // "return" + S_BREAKPOINT = 28, // "breakpoint" + S_PROFBEGIN = 29, // "prof_begin" + S_PROFEND = 30, // "prof_end" + S_THREAD = 31, // "thread" + S_CHILDTHREAD = 32, // "childthread" + S_THISTHREAD = 33, // "thisthread" + S_CALL = 34, // "call" + S_TRUE = 35, // "true" + S_FALSE = 36, // "false" + S_UNDEFINED = 37, // "undefined" + S_SIZE = 38, // ".size" + S_GAME = 39, // "game" + S_SELF = 40, // "self" + S_ANIM = 41, // "anim" + S_LEVEL = 42, // "level" + S_LPAREN = 43, // "(" + S_RPAREN = 44, // ")" + S_LBRACE = 45, // "{" + S_RBRACE = 46, // "}" + S_LBRACKET = 47, // "[" + S_RBRACKET = 48, // "]" + S_COMMA = 49, // "," + S_DOT = 50, // "." + S_DOUBLECOLON = 51, // "::" + S_COLON = 52, // ":" + S_SEMICOLON = 53, // ";" + S_QMARK = 54, // "?" + S_INCREMENT = 55, // "++" + S_DECREMENT = 56, // "--" + S_LSHIFT = 57, // "<<" + S_RSHIFT = 58, // ">>" + S_OR = 59, // "||" + S_AND = 60, // "&&" + S_EQUALITY = 61, // "==" + S_INEQUALITY = 62, // "!=" + S_LESS_EQUAL = 63, // "<=" + S_GREATER_EQUAL = 64, // ">=" + S_LESS = 65, // "<" + S_GREATER = 66, // ">" + S_NOT = 67, // "!" + S_COMPLEMENT = 68, // "~" + S_ASSIGN = 69, // "=" + S_ASSIGN_ADD = 70, // "+=" + S_ASSIGN_SUB = 71, // "-=" + S_ASSIGN_MUL = 72, // "*=" + S_ASSIGN_DIV = 73, // "/=" + S_ASSIGN_MOD = 74, // "%=" + S_ASSIGN_BW_OR = 75, // "|=" + S_ASSIGN_BW_AND = 76, // "&=" + S_ASSIGN_BW_EXOR = 77, // "^=" + S_ASSIGN_RSHIFT = 78, // ">>=" + S_ASSIGN_LSHIFT = 79, // "<<=" + S_BITWISE_OR = 80, // "|" + S_BITWISE_AND = 81, // "&" + S_BITWISE_EXOR = 82, // "^" + S_ADD = 83, // "+" + S_SUB = 84, // "-" + S_MUL = 85, // "*" + S_DIV = 86, // "/" + S_MOD = 87, // "%" + S_PATH = 88, // "path" + S_IDENTIFIER = 89, // "identifier" + S_STRING = 90, // "string literal" + S_ISTRING = 91, // "localized string" + S_COLOR = 92, // "color" + S_FLOAT = 93, // "float" + S_INT_DEC = 94, // "int" + S_INT_OCT = 95, // "octal int" + S_INT_BIN = 96, // "binary int" + S_INT_HEX = 97, // "hexadecimal int" + S_ADD_ARRAY = 98, // ADD_ARRAY + S_THEN = 99, // THEN + S_TERN = 100, // TERN + S_NEG = 101, // NEG + S_ANIMREF = 102, // ANIMREF + S_PREINC = 103, // PREINC + S_PREDEC = 104, // PREDEC + S_POSTINC = 105, // POSTINC + S_POSTDEC = 106, // POSTDEC + S_YYACCEPT = 107, // $accept + S_root = 108, // root + S_program = 109, // program + S_inline = 110, // inline + S_include = 111, // include + S_declaration = 112, // declaration + S_decl_usingtree = 113, // decl_usingtree + S_decl_constant = 114, // decl_constant + S_decl_thread = 115, // decl_thread + S_stmt = 116, // stmt + S_stmt_dev = 117, // stmt_dev + S_stmt_block = 118, // stmt_block + S_stmt_list = 119, // stmt_list + S_stmt_expr = 120, // stmt_expr + S_stmt_call = 121, // stmt_call + S_stmt_assign = 122, // stmt_assign + S_stmt_endon = 123, // stmt_endon + S_stmt_notify = 124, // stmt_notify + S_stmt_wait = 125, // stmt_wait + S_stmt_waittill = 126, // stmt_waittill + S_stmt_waittillmatch = 127, // stmt_waittillmatch + S_stmt_waittillframeend = 128, // stmt_waittillframeend + S_stmt_if = 129, // stmt_if + S_stmt_ifelse = 130, // stmt_ifelse + S_stmt_while = 131, // stmt_while + S_stmt_dowhile = 132, // stmt_dowhile + S_stmt_for = 133, // stmt_for + S_stmt_foreach = 134, // stmt_foreach + S_stmt_switch = 135, // stmt_switch + S_stmt_case = 136, // stmt_case + S_stmt_default = 137, // stmt_default + S_stmt_break = 138, // stmt_break + S_stmt_continue = 139, // stmt_continue + S_stmt_return = 140, // stmt_return + S_stmt_breakpoint = 141, // stmt_breakpoint + S_stmt_prof_begin = 142, // stmt_prof_begin + S_stmt_prof_end = 143, // stmt_prof_end + S_expr = 144, // expr + S_expr_or_empty = 145, // expr_or_empty + S_expr_assign = 146, // expr_assign + S_expr_increment = 147, // expr_increment + S_expr_decrement = 148, // expr_decrement + S_expr_ternary = 149, // expr_ternary + S_expr_binary = 150, // expr_binary + S_expr_primitive = 151, // expr_primitive + S_expr_complement = 152, // expr_complement + S_expr_not = 153, // expr_not + S_expr_call = 154, // expr_call + S_expr_method = 155, // expr_method + S_expr_function = 156, // expr_function + S_expr_pointer = 157, // expr_pointer + S_expr_add_array = 158, // expr_add_array + S_expr_parameters = 159, // expr_parameters + S_expr_arguments = 160, // expr_arguments + S_expr_arguments_no_empty = 161, // expr_arguments_no_empty + S_expr_reference = 162, // expr_reference + S_expr_array = 163, // expr_array + S_expr_field = 164, // expr_field + S_expr_size = 165, // expr_size + S_expr_paren = 166, // expr_paren + S_expr_object = 167, // expr_object + S_expr_thisthread = 168, // expr_thisthread + S_expr_empty_array = 169, // expr_empty_array + S_expr_undefined = 170, // expr_undefined + S_expr_game = 171, // expr_game + S_expr_self = 172, // expr_self + S_expr_anim = 173, // expr_anim + S_expr_level = 174, // expr_level + S_expr_animation = 175, // expr_animation + S_expr_animtree = 176, // expr_animtree + S_expr_identifier = 177, // expr_identifier + S_expr_path = 178, // expr_path + S_expr_istring = 179, // expr_istring + S_expr_string = 180, // expr_string + S_expr_color = 181, // expr_color + S_expr_vector = 182, // expr_vector + S_expr_float = 183, // expr_float + S_expr_integer = 184, // expr_integer + S_expr_false = 185, // expr_false + S_expr_true = 186 // expr_true }; }; @@ -1242,6 +1248,7 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< ast::stmt_ifelse::ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (std::move (that.value)); @@ -2495,6 +2502,7 @@ switch (yykind) value.template destroy< ast::stmt_ifelse::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.template destroy< ast::stmt_list::ptr > (); @@ -2754,6 +2762,36 @@ switch (yykind) return symbol_type (token::IW5UNDEF, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_DEVBEGIN (location_type l) + { + return symbol_type (token::DEVBEGIN, std::move (l)); + } +#else + static + symbol_type + make_DEVBEGIN (const location_type& l) + { + return symbol_type (token::DEVBEGIN, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_DEVEND (location_type l) + { + return symbol_type (token::DEVEND, std::move (l)); + } +#else + static + symbol_type + make_DEVEND (const location_type& l) + { + return symbol_type (token::DEVEND, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4628,9 +4666,9 @@ switch (yykind) /// Constants. enum { - yylast_ = 2111, ///< Last index in yytable_. - yynnts_ = 79, ///< Number of nonterminal symbols. - yyfinal_ = 19 ///< Termination state number. + yylast_ = 2346, ///< Last index in yytable_. + yynnts_ = 80, ///< Number of nonterminal symbols. + yyfinal_ = 21 ///< Termination state number. }; @@ -4883,6 +4921,7 @@ switch (yykind) value.copy< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.copy< ast::stmt_list::ptr > (YY_MOVE (that.value)); @@ -5196,6 +5235,7 @@ switch (yykind) value.move< ast::stmt_ifelse::ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (YY_MOVE (s.value)); @@ -5317,7 +5357,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::iw5 -#line 5321 "parser.hpp" +#line 5361 "parser.hpp" diff --git a/src/iw6/xsk/compiler.cpp b/src/iw6/xsk/compiler.cpp index f9ccbd31..0ebb65d5 100644 --- a/src/iw6/xsk/compiler.cpp +++ b/src/iw6/xsk/compiler.cpp @@ -85,6 +85,7 @@ void compiler::compile_program(const ast::program::ptr& program) constants_.clear(); local_functions_.clear(); index_ = 1; + developer_thread_ = false; for (const auto& entry : program->declarations) { @@ -150,6 +151,12 @@ void compiler::emit_declaration(const ast::decl& decl) { switch (decl.kind()) { + case ast::kind::decl_dev_begin: + developer_thread_ = true; + break; + case ast::kind::decl_dev_end: + developer_thread_ = false; + break; case ast::kind::decl_usingtree: emit_decl_usingtree(decl.as_usingtree); break; @@ -166,6 +173,9 @@ void compiler::emit_declaration(const ast::decl& decl) void compiler::emit_decl_usingtree(const ast::decl_usingtree::ptr& animtree) { + if(developer_thread_) + throw comp_error(animtree->loc(), "cannot put #using_animtree inside /# ... #/ comment"); + animtrees_.push_back({ animtree->name->value, false }); } diff --git a/src/iw6/xsk/lexer.cpp b/src/iw6/xsk/lexer.cpp index 46d9254f..54cb7a53 100644 --- a/src/iw6/xsk/lexer.cpp +++ b/src/iw6/xsk/lexer.cpp @@ -555,8 +555,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 108 -#define YY_END_OF_BUFFER 109 +#define YY_NUM_RULES 110 +#define YY_END_OF_BUFFER 111 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -564,44 +564,44 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[325] = +static const flex_int16_t yy_accept[328] = { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 109, 107, - 1, 2, 92, 107, 107, 91, 95, 107, 52, 53, - 89, 87, 58, 88, 59, 90, 106, 106, 61, 62, - 76, 86, 77, 63, 98, 56, 57, 96, 98, 98, - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 54, 94, 55, 93, 5, 6, - 5, 107, 89, 9, 10, 9, 73, 0, 100, 0, - 13, 0, 0, 0, 0, 82, 0, 71, 0, 84, - 0, 0, 12, 80, 64, 78, 65, 79, 102, 0, - 8, 4, 3, 81, 102, 106, 103, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 111, 109, + 1, 2, 94, 109, 109, 93, 97, 109, 54, 55, + 91, 89, 60, 90, 61, 92, 108, 108, 63, 64, + 78, 88, 79, 65, 100, 58, 59, 98, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 56, 96, 57, 95, 5, 6, + 5, 12, 13, 12, 109, 91, 92, 75, 0, 102, + 0, 15, 0, 0, 0, 0, 84, 0, 73, 0, + 86, 0, 0, 8, 82, 66, 80, 67, 81, 104, + 0, 11, 4, 3, 83, 104, 108, 105, 0, 0, - 0, 60, 68, 74, 72, 75, 69, 98, 85, 98, - 98, 98, 98, 98, 98, 26, 98, 98, 98, 98, - 98, 24, 30, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 83, 70, 7, 11, 0, 100, - 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, - 0, 100, 0, 102, 0, 3, 102, 102, 103, 104, - 105, 97, 66, 67, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 28, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 98, 98, 98, 98, 101, 0, - 0, 0, 0, 0, 99, 0, 0, 99, 0, 0, + 0, 0, 62, 70, 76, 74, 77, 71, 100, 87, + 100, 100, 100, 100, 100, 100, 28, 100, 100, 100, + 100, 100, 26, 32, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 85, 72, 7, 14, 10, + 9, 0, 102, 0, 0, 0, 0, 0, 0, 101, + 0, 0, 0, 0, 102, 0, 104, 0, 3, 104, + 104, 105, 106, 107, 99, 68, 69, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 30, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 103, 0, 0, 0, 0, 0, 101, 0, 0, - 50, 98, 43, 32, 98, 98, 98, 25, 98, 98, - 98, 48, 98, 98, 98, 98, 49, 98, 98, 98, - 44, 98, 20, 98, 0, 0, 0, 0, 0, 47, - 34, 98, 98, 98, 18, 45, 98, 51, 98, 98, - 98, 98, 98, 98, 98, 98, 27, 0, 0, 0, - 0, 0, 98, 98, 98, 98, 98, 19, 98, 98, - 36, 31, 98, 40, 98, 98, 101, 0, 0, 14, - 0, 98, 98, 98, 33, 29, 98, 98, 98, 98, - 98, 0, 15, 0, 98, 98, 35, 98, 39, 98, - 98, 21, 17, 0, 98, 98, 98, 98, 46, 98, + 101, 0, 0, 52, 100, 45, 34, 100, 100, 100, + 27, 100, 100, 100, 50, 100, 100, 100, 100, 51, + 100, 100, 100, 46, 100, 22, 100, 0, 0, 0, + 0, 0, 49, 36, 100, 100, 100, 20, 47, 100, + 53, 100, 100, 100, 100, 100, 100, 100, 100, 29, + 0, 0, 0, 0, 0, 100, 100, 100, 100, 100, + 21, 100, 100, 38, 33, 100, 42, 100, 100, 103, + 0, 0, 16, 0, 100, 100, 100, 35, 31, 100, + 100, 100, 100, 100, 0, 17, 0, 100, 100, 37, + 100, 41, 100, 100, 23, 19, 0, 100, 100, 100, - 98, 0, 37, 98, 38, 42, 98, 98, 0, 41, - 98, 98, 0, 98, 98, 0, 98, 22, 0, 98, - 16, 98, 23, 0 + 100, 48, 100, 100, 0, 39, 100, 40, 44, 100, + 100, 0, 43, 100, 100, 0, 100, 100, 0, 100, + 24, 0, 100, 18, 100, 25, 0 } ; static const YY_CHAR yy_ec[256] = @@ -647,91 +647,91 @@ static const YY_CHAR yy_meta[64] = 1, 1, 1 } ; -static const flex_int16_t yy_base[345] = +static const flex_int16_t yy_base[348] = { 0, - 0, 0, 61, 62, 60, 63, 64, 65, 696, 697, - 697, 697, 670, 71, 60, 669, 73, 70, 697, 697, - 63, 70, 697, 69, 71, 94, 102, 109, 671, 697, - 61, 667, 76, 697, 658, 697, 697, 665, 60, 74, - 99, 104, 63, 101, 80, 106, 75, 108, 111, 119, - 120, 113, 117, 131, 697, 122, 697, 697, 697, 697, - 672, 139, 663, 697, 697, 670, 697, 154, 697, 164, - 697, 0, 637, 636, 631, 697, 157, 697, 162, 697, - 163, 170, 697, 697, 697, 697, 697, 697, 180, 638, - 697, 697, 0, 697, 186, 192, 198, 158, 205, 223, + 0, 0, 61, 62, 63, 64, 65, 66, 702, 703, + 703, 703, 676, 63, 58, 675, 76, 67, 703, 703, + 62, 67, 703, 73, 86, 85, 96, 102, 677, 703, + 65, 673, 68, 703, 664, 703, 703, 671, 75, 76, + 93, 99, 98, 105, 111, 108, 78, 103, 100, 113, + 118, 125, 123, 127, 703, 136, 703, 703, 703, 703, + 678, 703, 703, 677, 145, 668, 161, 703, 158, 703, + 163, 703, 0, 643, 642, 637, 703, 160, 703, 161, + 703, 165, 176, 703, 703, 703, 703, 703, 703, 183, + 644, 703, 703, 0, 703, 187, 194, 200, 195, 216, - 0, 697, 657, 697, 697, 697, 656, 647, 697, 54, - 137, 182, 147, 153, 194, 646, 156, 148, 187, 193, - 199, 645, 644, 197, 200, 207, 204, 222, 226, 233, - 213, 234, 237, 239, 697, 697, 697, 697, 243, 244, - 270, 0, 631, 146, 630, 274, 697, 278, 271, 283, - 279, 280, 284, 697, 615, 0, 276, 697, 303, 282, - 0, 640, 697, 697, 257, 269, 281, 258, 287, 275, - 293, 292, 277, 298, 299, 302, 304, 305, 306, 308, - 311, 313, 309, 314, 316, 319, 321, 323, 0, 624, - 624, 625, 620, 353, 354, 361, 352, 356, 365, 627, + 234, 0, 703, 663, 703, 703, 703, 662, 653, 703, + 143, 148, 184, 147, 150, 197, 652, 189, 203, 191, + 193, 208, 651, 650, 190, 207, 214, 211, 233, 215, + 225, 224, 245, 236, 249, 703, 703, 703, 703, 703, + 703, 254, 263, 281, 0, 637, 148, 636, 278, 703, + 285, 280, 288, 283, 284, 292, 703, 621, 0, 284, + 703, 311, 290, 0, 646, 703, 703, 267, 287, 265, + 266, 286, 289, 301, 295, 302, 304, 306, 307, 308, + 309, 313, 312, 317, 318, 320, 323, 325, 327, 328, + 329, 0, 630, 630, 631, 626, 358, 360, 366, 361, - 634, 336, 633, 632, 338, 339, 340, 631, 343, 347, - 344, 630, 346, 357, 364, 350, 629, 368, 358, 371, - 628, 363, 370, 373, 0, 606, 604, 609, 614, 697, - 376, 377, 380, 378, 623, 622, 382, 621, 383, 385, - 384, 386, 395, 402, 387, 389, 620, 0, 600, 611, - 609, 613, 403, 404, 405, 407, 410, 615, 411, 413, - 614, 613, 412, 612, 414, 418, 697, 603, 602, 697, - 605, 422, 416, 417, 608, 607, 423, 436, 437, 438, - 426, 598, 697, 589, 439, 441, 604, 442, 603, 444, - 450, 447, 697, 590, 451, 459, 452, 453, 601, 458, + 365, 372, 633, 640, 53, 639, 638, 344, 345, 346, + 637, 347, 354, 352, 636, 350, 367, 370, 355, 635, + 353, 369, 371, 634, 377, 378, 379, 0, 612, 610, + 615, 620, 703, 380, 381, 384, 382, 629, 628, 383, + 627, 385, 401, 388, 392, 394, 407, 408, 411, 626, + 0, 606, 617, 615, 619, 395, 413, 393, 397, 416, + 621, 417, 419, 620, 619, 421, 618, 422, 428, 703, + 609, 608, 703, 611, 429, 426, 431, 614, 613, 433, + 430, 436, 446, 434, 604, 703, 595, 447, 449, 610, + 450, 609, 451, 452, 456, 703, 596, 432, 460, 458, - 461, 585, 582, 464, 573, 531, 466, 467, 499, 519, - 469, 473, 472, 474, 475, 482, 481, 487, 475, 476, - 697, 478, 480, 697, 525, 533, 541, 546, 554, 560, - 564, 572, 452, 580, 588, 596, 604, 608, 304, 616, - 624, 245, 177, 109 + 461, 607, 466, 469, 591, 588, 470, 579, 537, 472, + 467, 505, 525, 475, 478, 478, 479, 480, 488, 481, + 495, 486, 482, 703, 486, 492, 703, 531, 539, 547, + 552, 560, 566, 570, 578, 511, 586, 594, 602, 610, + 614, 419, 622, 630, 305, 246, 179 } ; -static const flex_int16_t yy_def[345] = +static const flex_int16_t yy_def[348] = { 0, - 324, 1, 325, 325, 1, 1, 326, 326, 324, 324, - 324, 324, 324, 327, 328, 324, 324, 329, 324, 324, - 324, 324, 324, 324, 324, 324, 330, 330, 324, 324, - 324, 324, 324, 324, 331, 324, 324, 324, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 324, 324, 324, 324, 324, 324, - 324, 328, 324, 324, 324, 324, 324, 327, 324, 332, - 324, 333, 333, 324, 324, 324, 334, 324, 335, 324, - 329, 336, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 337, 324, 324, 330, 330, 330, 330, 330, + 327, 1, 328, 328, 329, 329, 1, 1, 327, 327, + 327, 327, 327, 330, 331, 327, 327, 332, 327, 327, + 327, 327, 327, 327, 327, 327, 333, 333, 327, 327, + 327, 327, 327, 327, 334, 327, 327, 327, 334, 334, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 331, 327, 327, 327, 330, 327, + 335, 327, 336, 336, 327, 327, 327, 337, 327, 338, + 327, 332, 339, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 340, 327, 327, 333, 333, 333, 333, - 338, 324, 324, 324, 324, 324, 324, 331, 324, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 324, 324, 324, 324, 327, 327, - 332, 339, 324, 324, 324, 334, 324, 340, 335, 341, - 329, 329, 336, 324, 324, 337, 324, 324, 330, 330, - 100, 338, 324, 324, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 342, 324, - 324, 324, 324, 334, 334, 340, 335, 335, 341, 324, + 333, 341, 327, 327, 327, 327, 327, 327, 334, 327, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 334, 327, 327, 327, 327, 327, + 327, 330, 330, 335, 342, 327, 327, 327, 337, 327, + 343, 338, 344, 332, 332, 339, 327, 327, 340, 327, + 327, 333, 333, 101, 341, 327, 327, 334, 334, 334, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 334, 345, 327, 327, 327, 327, 337, 337, 343, 338, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 343, 324, 324, 324, 324, 324, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 344, 324, 324, - 324, 324, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 324, 324, 324, 324, - 324, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 324, 324, 324, 331, 331, 331, 331, 331, 331, - 331, 331, 324, 324, 331, 331, 331, 331, 331, 331, + 338, 344, 327, 334, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 334, 334, 334, 346, 327, 327, + 327, 327, 327, 334, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 347, 327, 327, 327, 327, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 327, + 327, 327, 327, 327, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 327, 327, 327, 334, 334, 334, + 334, 334, 334, 334, 334, 327, 327, 334, 334, 334, - 331, 324, 331, 331, 331, 331, 331, 331, 324, 331, - 331, 331, 324, 331, 331, 324, 331, 331, 324, 331, - 324, 331, 331, 0, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324 + 334, 334, 334, 334, 327, 334, 334, 334, 334, 334, + 334, 327, 334, 334, 334, 327, 334, 334, 327, 334, + 334, 327, 334, 327, 334, 334, 0, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327 } ; -static const flex_int16_t yy_nxt[761] = +static const flex_int16_t yy_nxt[767] = { 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 28, @@ -739,86 +739,87 @@ static const flex_int16_t yy_nxt[761] = 35, 36, 10, 37, 38, 35, 39, 40, 41, 42, 43, 44, 45, 35, 46, 35, 47, 35, 48, 35, 49, 50, 51, 52, 53, 35, 54, 35, 35, 55, - 56, 57, 58, 60, 60, 62, 65, 65, 62, 66, - 66, 63, 61, 61, 63, 69, 71, 77, 69, 83, - 78, 79, 85, 87, 103, 104, 101, 84, 89, 89, - 89, 89, 101, 88, 86, 101, 73, 80, 165, 91, + 56, 57, 58, 60, 60, 63, 63, 70, 64, 64, + 65, 65, 61, 61, 72, 70, 66, 66, 84, 86, + 78, 67, 67, 79, 80, 102, 85, 88, 104, 105, + 92, 87, 107, 108, 74, 71, 93, 89, 234, 83, - 106, 107, 82, 70, 74, 92, 101, 101, 110, 117, - 93, 118, 101, 267, 75, 124, 121, 95, 94, 96, - 97, 97, 96, 90, 95, 111, 96, 96, 96, 96, - 99, 101, 100, 101, 101, 112, 101, 119, 101, 99, - 101, 101, 113, 101, 115, 101, 135, 122, 114, 101, - 120, 101, 101, 116, 123, 138, 130, 125, 69, 127, - 128, 147, 126, 101, 131, 132, 68, 133, 140, 101, - 147, 69, 81, 324, 134, 73, 129, 166, 152, 101, - 101, 248, 136, 74, 191, 101, 70, 173, 101, 148, - 101, 169, 192, 75, 150, 82, 141, 89, 89, 89, + 81, 94, 75, 90, 90, 90, 90, 102, 102, 95, + 102, 96, 76, 97, 98, 98, 97, 96, 125, 97, + 97, 97, 97, 111, 100, 102, 101, 112, 102, 113, + 102, 102, 102, 100, 102, 102, 114, 102, 91, 116, + 102, 120, 115, 102, 118, 102, 119, 122, 117, 123, + 102, 127, 126, 128, 121, 102, 124, 102, 129, 102, + 136, 140, 70, 134, 150, 69, 141, 143, 131, 150, + 135, 133, 93, 70, 130, 102, 132, 94, 82, 102, + 102, 74, 102, 270, 155, 95, 194, 168, 169, 75, + 71, 172, 151, 153, 195, 144, 137, 83, 173, 76, - 89, 170, 153, 157, 157, 157, 157, 95, 172, 96, - 96, 96, 96, 95, 101, 159, 159, 159, 96, 101, - 324, 154, 160, 160, 101, 101, 101, 158, 167, 101, - 101, 101, 101, 174, 168, 171, 101, 101, 324, 101, - 161, 161, 161, 161, 175, 101, 176, 69, 69, 225, - 161, 161, 177, 178, 101, 101, 179, 180, 101, 161, - 161, 161, 161, 161, 161, 101, 101, 185, 181, 101, - 182, 101, 68, 186, 140, 70, 70, 183, 147, 147, - 146, 187, 195, 188, 184, 149, 81, 69, 69, 101, - 101, 198, 152, 157, 157, 157, 157, 324, 204, 160, + 90, 90, 90, 90, 160, 160, 160, 160, 156, 96, + 327, 97, 97, 97, 97, 96, 102, 162, 162, 162, + 97, 102, 102, 102, 157, 102, 102, 102, 161, 102, + 170, 327, 102, 163, 163, 102, 171, 177, 174, 102, + 102, 175, 176, 102, 178, 180, 102, 102, 102, 327, + 251, 164, 164, 164, 164, 179, 102, 102, 70, 185, + 181, 164, 164, 182, 183, 102, 102, 70, 102, 186, + 164, 164, 164, 164, 164, 164, 187, 102, 188, 184, + 190, 102, 150, 69, 189, 143, 71, 149, 150, 198, + 152, 70, 70, 191, 82, 71, 201, 102, 102, 102, - 160, 101, 141, 150, 201, 202, 148, 101, 189, 101, - 196, 82, 82, 101, 101, 199, 153, 158, 95, 101, - 159, 159, 159, 96, 101, 101, 209, 203, 206, 207, - 101, 101, 208, 205, 101, 101, 101, 101, 101, 211, - 101, 101, 212, 101, 213, 101, 101, 215, 101, 214, - 210, 101, 217, 101, 220, 101, 221, 147, 147, 222, - 147, 219, 216, 146, 147, 195, 218, 149, 101, 224, - 101, 101, 101, 198, 223, 101, 101, 232, 101, 101, - 237, 231, 101, 233, 150, 148, 148, 236, 150, 101, - 101, 235, 238, 196, 234, 101, 101, 199, 239, 240, + 155, 160, 160, 160, 160, 327, 207, 163, 163, 228, + 151, 206, 153, 144, 204, 83, 83, 199, 102, 102, + 202, 102, 102, 205, 156, 161, 96, 102, 162, 162, + 162, 97, 208, 102, 102, 211, 102, 210, 102, 102, + 102, 102, 209, 102, 102, 102, 214, 215, 216, 102, + 102, 212, 102, 217, 218, 102, 213, 102, 220, 102, + 102, 102, 150, 223, 150, 224, 219, 225, 149, 150, + 198, 221, 222, 150, 152, 227, 102, 102, 102, 102, + 201, 226, 102, 235, 102, 102, 102, 102, 240, 236, + 151, 245, 151, 153, 239, 238, 241, 153, 199, 102, - 101, 241, 101, 101, 245, 101, 242, 244, 101, 101, - 101, 243, 101, 247, 101, 101, 101, 101, 101, 101, - 257, 101, 259, 246, 256, 260, 253, 101, 255, 262, - 254, 265, 261, 266, 101, 101, 101, 101, 263, 101, - 258, 264, 101, 101, 101, 101, 101, 273, 101, 101, - 101, 277, 272, 276, 101, 101, 142, 287, 101, 274, - 275, 278, 280, 279, 281, 288, 285, 286, 101, 101, - 101, 101, 292, 101, 101, 289, 101, 290, 291, 101, - 298, 296, 101, 101, 101, 101, 297, 295, 300, 299, - 101, 101, 306, 101, 301, 304, 101, 308, 101, 101, + 237, 102, 102, 102, 202, 243, 244, 247, 242, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 248, 250, + 102, 260, 246, 192, 102, 102, 102, 102, 259, 102, + 256, 249, 258, 102, 257, 265, 264, 266, 262, 102, + 102, 263, 261, 102, 275, 102, 267, 277, 102, 102, + 278, 102, 268, 102, 102, 269, 276, 280, 102, 279, + 102, 102, 102, 102, 102, 102, 102, 281, 102, 292, + 283, 290, 282, 288, 284, 291, 293, 289, 102, 102, + 295, 102, 102, 102, 102, 306, 294, 301, 102, 299, + 102, 302, 102, 102, 300, 298, 307, 303, 102, 102, - 305, 101, 311, 310, 303, 101, 101, 101, 101, 307, - 101, 315, 101, 101, 317, 321, 314, 323, 318, 101, - 312, 320, 319, 316, 322, 59, 59, 59, 59, 59, - 59, 59, 59, 64, 64, 64, 64, 64, 64, 64, - 64, 68, 68, 68, 68, 68, 68, 68, 68, 72, - 72, 101, 313, 72, 81, 81, 81, 81, 81, 81, - 81, 81, 98, 101, 98, 98, 98, 98, 108, 108, - 108, 108, 139, 139, 139, 139, 139, 139, 139, 139, - 146, 146, 146, 146, 146, 146, 146, 146, 149, 149, - 149, 149, 149, 149, 149, 149, 151, 151, 151, 151, + 309, 102, 102, 304, 102, 311, 308, 102, 314, 313, + 102, 102, 102, 102, 102, 145, 318, 310, 102, 320, + 315, 323, 317, 321, 102, 326, 324, 102, 322, 319, + 325, 59, 59, 59, 59, 59, 59, 59, 59, 62, + 62, 62, 62, 62, 62, 62, 62, 69, 69, 69, + 69, 69, 69, 69, 69, 73, 73, 102, 316, 73, + 82, 82, 82, 82, 82, 82, 82, 82, 99, 102, + 99, 99, 99, 99, 109, 109, 109, 109, 142, 142, + 142, 142, 142, 142, 142, 142, 149, 149, 149, 149, + 149, 149, 149, 149, 152, 152, 152, 152, 152, 152, - 151, 151, 151, 151, 156, 101, 156, 156, 156, 156, - 156, 156, 162, 162, 101, 162, 194, 194, 194, 194, - 194, 194, 194, 194, 197, 197, 197, 197, 197, 197, - 197, 197, 309, 101, 302, 101, 101, 294, 293, 101, - 101, 284, 283, 282, 101, 101, 101, 101, 271, 270, - 269, 268, 101, 101, 101, 101, 252, 251, 250, 249, - 101, 101, 101, 101, 101, 101, 101, 230, 229, 228, - 227, 226, 101, 200, 193, 190, 101, 101, 101, 101, - 164, 163, 155, 145, 144, 143, 138, 84, 137, 109, - 101, 105, 102, 76, 67, 324, 9, 324, 324, 324, + 152, 152, 154, 154, 154, 154, 154, 154, 154, 154, + 159, 102, 159, 159, 159, 159, 159, 159, 165, 165, + 102, 165, 197, 197, 197, 197, 197, 197, 197, 197, + 200, 200, 200, 200, 200, 200, 200, 200, 312, 102, + 305, 102, 102, 297, 296, 102, 102, 287, 286, 285, + 102, 102, 102, 102, 274, 273, 272, 271, 102, 102, + 102, 102, 255, 254, 253, 252, 102, 102, 102, 102, + 102, 102, 102, 233, 232, 231, 230, 229, 102, 203, + 196, 193, 102, 102, 102, 102, 167, 166, 158, 148, + 147, 146, 85, 139, 138, 110, 102, 106, 103, 77, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324 + 68, 327, 9, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327 } ; -static const flex_int16_t yy_chk[761] = +static const flex_int16_t yy_chk[767] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -826,83 +827,84 @@ static const flex_int16_t yy_chk[761] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 7, 8, 6, 7, - 8, 5, 3, 4, 6, 14, 15, 17, 18, 21, - 17, 17, 22, 24, 31, 31, 110, 21, 25, 25, - 25, 25, 39, 24, 22, 43, 15, 17, 110, 26, + 1, 1, 1, 3, 4, 5, 6, 14, 5, 6, + 7, 8, 3, 4, 15, 18, 7, 8, 21, 22, + 17, 7, 8, 17, 17, 205, 21, 24, 31, 31, + 26, 22, 33, 33, 15, 14, 26, 24, 205, 18, - 33, 33, 18, 14, 15, 26, 40, 47, 39, 43, - 26, 43, 45, 344, 15, 47, 45, 27, 26, 27, - 27, 27, 27, 25, 28, 40, 28, 28, 28, 28, - 27, 41, 27, 44, 27, 41, 42, 44, 46, 27, - 48, 28, 41, 49, 42, 52, 56, 46, 41, 53, - 44, 50, 51, 42, 46, 62, 52, 48, 68, 50, - 51, 77, 49, 54, 52, 53, 70, 54, 70, 111, - 79, 81, 82, 98, 54, 62, 51, 111, 82, 113, - 118, 343, 56, 62, 144, 114, 68, 118, 117, 77, - 98, 113, 144, 62, 79, 81, 70, 89, 89, 89, + 17, 26, 15, 25, 25, 25, 25, 39, 40, 26, + 47, 27, 15, 27, 27, 27, 27, 28, 47, 28, + 28, 28, 28, 39, 27, 41, 27, 40, 27, 41, + 43, 42, 49, 27, 28, 48, 41, 44, 25, 42, + 46, 44, 41, 45, 43, 50, 43, 45, 42, 46, + 51, 49, 48, 50, 44, 53, 46, 52, 51, 54, + 56, 65, 69, 54, 78, 71, 67, 71, 52, 80, + 54, 53, 67, 82, 51, 111, 52, 67, 83, 114, + 112, 65, 115, 347, 83, 67, 147, 111, 112, 65, + 69, 114, 78, 80, 147, 71, 56, 82, 115, 65, - 89, 114, 82, 95, 95, 95, 95, 96, 117, 96, - 96, 96, 96, 97, 112, 97, 97, 97, 97, 119, - 99, 89, 99, 99, 96, 120, 115, 95, 112, 124, - 97, 121, 125, 119, 112, 115, 127, 99, 100, 126, - 100, 100, 100, 100, 120, 131, 121, 139, 140, 342, - 100, 100, 124, 125, 128, 100, 126, 127, 129, 100, - 100, 100, 100, 100, 100, 130, 132, 131, 128, 133, - 129, 134, 141, 132, 141, 139, 140, 130, 146, 149, - 148, 133, 148, 134, 130, 150, 153, 151, 152, 165, - 168, 150, 153, 157, 157, 157, 157, 160, 168, 160, + 90, 90, 90, 90, 96, 96, 96, 96, 83, 97, + 99, 97, 97, 97, 97, 98, 113, 98, 98, 98, + 98, 118, 125, 120, 90, 121, 97, 99, 96, 116, + 113, 100, 98, 100, 100, 119, 113, 120, 116, 126, + 122, 118, 119, 128, 121, 125, 127, 130, 100, 101, + 346, 101, 101, 101, 101, 122, 132, 131, 142, 130, + 126, 101, 101, 127, 128, 129, 101, 143, 134, 131, + 101, 101, 101, 101, 101, 101, 131, 133, 132, 129, + 134, 135, 149, 144, 133, 144, 142, 151, 152, 151, + 153, 154, 155, 135, 156, 143, 153, 170, 171, 168, - 160, 166, 141, 149, 165, 166, 146, 170, 339, 173, - 148, 151, 152, 167, 160, 150, 153, 157, 159, 169, - 159, 159, 159, 159, 172, 171, 173, 167, 170, 171, - 174, 175, 172, 169, 176, 159, 177, 178, 179, 175, - 180, 183, 176, 181, 177, 182, 184, 179, 185, 178, - 174, 186, 181, 187, 184, 188, 185, 194, 195, 186, - 197, 183, 180, 196, 198, 196, 182, 199, 202, 188, - 205, 206, 207, 199, 187, 209, 211, 205, 213, 210, - 211, 202, 216, 206, 197, 194, 195, 210, 198, 214, - 219, 209, 213, 196, 207, 222, 215, 199, 214, 215, + 156, 160, 160, 160, 160, 163, 171, 163, 163, 345, + 149, 170, 152, 144, 168, 154, 155, 151, 172, 169, + 153, 173, 163, 169, 156, 160, 162, 175, 162, 162, + 162, 162, 172, 174, 176, 175, 177, 174, 178, 179, + 180, 181, 173, 162, 183, 182, 178, 179, 180, 184, + 185, 176, 186, 181, 182, 187, 177, 188, 184, 189, + 190, 191, 197, 187, 198, 188, 183, 189, 199, 200, + 199, 185, 186, 201, 202, 191, 208, 209, 210, 212, + 202, 190, 216, 208, 214, 221, 213, 219, 214, 209, + 197, 221, 198, 200, 213, 212, 216, 201, 199, 217, - 218, 216, 223, 220, 222, 224, 218, 220, 231, 232, - 234, 219, 233, 224, 237, 239, 241, 240, 242, 245, - 237, 246, 240, 223, 234, 240, 231, 243, 233, 242, - 232, 245, 241, 246, 244, 253, 254, 255, 243, 256, - 239, 244, 257, 259, 263, 260, 265, 254, 273, 274, - 266, 259, 253, 257, 272, 277, 333, 274, 281, 255, - 256, 260, 265, 263, 266, 277, 272, 273, 278, 279, - 280, 285, 281, 286, 288, 278, 290, 279, 280, 292, - 290, 286, 291, 295, 297, 298, 288, 285, 292, 291, - 300, 296, 298, 301, 292, 296, 304, 301, 307, 308, + 210, 222, 218, 223, 202, 218, 219, 223, 217, 225, + 226, 227, 234, 235, 237, 240, 236, 242, 225, 227, + 244, 240, 222, 342, 245, 258, 246, 256, 237, 259, + 234, 226, 236, 243, 235, 245, 244, 246, 243, 247, + 248, 243, 242, 249, 256, 257, 247, 258, 260, 262, + 259, 263, 248, 266, 268, 249, 257, 262, 276, 260, + 269, 275, 281, 277, 298, 280, 284, 263, 282, 281, + 268, 277, 266, 275, 269, 280, 282, 276, 283, 288, + 284, 289, 291, 293, 294, 298, 283, 293, 295, 289, + 300, 294, 299, 301, 291, 288, 299, 295, 303, 311, - 297, 311, 307, 304, 295, 312, 314, 315, 320, 300, - 322, 312, 323, 317, 314, 319, 311, 322, 315, 318, - 308, 317, 316, 313, 320, 325, 325, 325, 325, 325, - 325, 325, 325, 326, 326, 326, 326, 326, 326, 326, - 326, 327, 327, 327, 327, 327, 327, 327, 327, 328, - 328, 310, 309, 328, 329, 329, 329, 329, 329, 329, - 329, 329, 330, 306, 330, 330, 330, 330, 331, 331, - 331, 331, 332, 332, 332, 332, 332, 332, 332, 332, - 334, 334, 334, 334, 334, 334, 334, 334, 335, 335, - 335, 335, 335, 335, 335, 335, 336, 336, 336, 336, + 301, 304, 307, 295, 310, 304, 300, 314, 310, 307, + 315, 317, 318, 320, 323, 336, 315, 303, 325, 317, + 311, 320, 314, 318, 326, 325, 322, 321, 319, 316, + 323, 328, 328, 328, 328, 328, 328, 328, 328, 329, + 329, 329, 329, 329, 329, 329, 329, 330, 330, 330, + 330, 330, 330, 330, 330, 331, 331, 313, 312, 331, + 332, 332, 332, 332, 332, 332, 332, 332, 333, 309, + 333, 333, 333, 333, 334, 334, 334, 334, 335, 335, + 335, 335, 335, 335, 335, 335, 337, 337, 337, 337, + 337, 337, 337, 337, 338, 338, 338, 338, 338, 338, - 336, 336, 336, 336, 337, 305, 337, 337, 337, 337, - 337, 337, 338, 338, 303, 338, 340, 340, 340, 340, - 340, 340, 340, 340, 341, 341, 341, 341, 341, 341, - 341, 341, 302, 299, 294, 289, 287, 284, 282, 276, - 275, 271, 269, 268, 264, 262, 261, 258, 252, 251, - 250, 249, 247, 238, 236, 235, 229, 228, 227, 226, - 221, 217, 212, 208, 204, 203, 201, 200, 193, 192, - 191, 190, 162, 155, 145, 143, 123, 122, 116, 108, - 107, 103, 90, 75, 74, 73, 66, 63, 61, 38, - 35, 32, 29, 16, 13, 9, 324, 324, 324, 324, + 338, 338, 339, 339, 339, 339, 339, 339, 339, 339, + 340, 308, 340, 340, 340, 340, 340, 340, 341, 341, + 306, 341, 343, 343, 343, 343, 343, 343, 343, 343, + 344, 344, 344, 344, 344, 344, 344, 344, 305, 302, + 297, 292, 290, 287, 285, 279, 278, 274, 272, 271, + 267, 265, 264, 261, 255, 254, 253, 252, 250, 241, + 239, 238, 232, 231, 230, 229, 224, 220, 215, 211, + 207, 206, 204, 203, 196, 195, 194, 193, 165, 158, + 148, 146, 124, 123, 117, 109, 108, 104, 91, 76, + 75, 74, 66, 64, 61, 38, 35, 32, 29, 16, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324 + 13, 9, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327 } ; /* The intent behind this definition is that it'll catch @@ -923,14 +925,14 @@ static const flex_int16_t yy_chk[761] = #line 25 "lexer.lpp" #define YY_USER_ACTION ctx->loc.columns(yyleng); -#line 926 "lexer.cpp" - #line 928 "lexer.cpp" + +#line 930 "lexer.cpp" #define INITIAL 0 -#define COMMENT_BLOCK_STATE 1 -#define DEVBLOCK_ON_STATE 2 -#define DEVBLOCK_OFF_STATE 3 +#define COMMENT_STATE 1 +#define DEV_OFF_STATE 2 +#define DEV_ON_STATE 3 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way @@ -1194,7 +1196,7 @@ YY_DECL ctx->loc.step(); -#line 1197 "lexer.cpp" +#line 1199 "lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1221,13 +1223,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 >= 325 ) + if ( yy_current_state >= 328 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 324 ); + while ( yy_current_state != 327 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -1255,552 +1257,571 @@ YY_RULE_SETUP case 2: /* rule 2 can match eol */ YY_RULE_SETUP -#line 52 "lexer.lpp" +#line 51 "lexer.lpp" { ctx->loc.lines(yyleng); ctx->loc.step(); } YY_BREAK case 3: YY_RULE_SETUP -#line 54 "lexer.lpp" +#line 53 "lexer.lpp" YY_BREAK case 4: YY_RULE_SETUP -#line 56 "lexer.lpp" -{ BEGIN(COMMENT_BLOCK_STATE); } +#line 55 "lexer.lpp" +{ BEGIN(COMMENT_STATE); } YY_BREAK case 5: YY_RULE_SETUP -#line 57 "lexer.lpp" +#line 56 "lexer.lpp" YY_BREAK case 6: /* rule 6 can match eol */ YY_RULE_SETUP -#line 58 "lexer.lpp" +#line 57 "lexer.lpp" { ctx->loc.lines(yyleng); ctx->loc.step(); } YY_BREAK case 7: YY_RULE_SETUP -#line 59 "lexer.lpp" +#line 58 "lexer.lpp" { BEGIN(INITIAL); } YY_BREAK +case YY_STATE_EOF(COMMENT_STATE): +#line 59 "lexer.lpp" +{ throw iw6::parser::syntax_error(ctx->loc, "unmatched multiline comment start ('/*')"); } + YY_BREAK case 8: YY_RULE_SETUP -#line 61 "lexer.lpp" -{ BEGIN(ctx->mode == xsk::gsc::build::dev ? DEVBLOCK_ON_STATE : DEVBLOCK_OFF_STATE); } +#line 60 "lexer.lpp" +{ throw iw6::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } YY_BREAK case 9: YY_RULE_SETUP #line 62 "lexer.lpp" - +{ throw iw6::parser::syntax_error(ctx->loc, "cannot recurse devblock ('/#')"); } YY_BREAK case 10: -/* rule 10 can match eol */ YY_RULE_SETUP #line 63 "lexer.lpp" -{ ctx->loc.lines(yyleng); ctx->loc.step(); } +{ BEGIN(INITIAL); return iw6::parser::make_DEVEND(ctx->loc); } + YY_BREAK +case YY_STATE_EOF(DEV_ON_STATE): +#line 64 "lexer.lpp" +{ throw iw6::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } YY_BREAK case 11: YY_RULE_SETUP -#line 64 "lexer.lpp" -{ BEGIN(INITIAL); } +#line 66 "lexer.lpp" +{ BEGIN(ctx->mode == xsk::gsc::build::dev ? DEV_ON_STATE : DEV_OFF_STATE); if(ctx->mode == xsk::gsc::build::dev) return iw6::parser::make_DEVBEGIN(ctx->loc); } YY_BREAK case 12: YY_RULE_SETUP -#line 66 "lexer.lpp" -{ throw iw6::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } +#line 67 "lexer.lpp" + YY_BREAK case 13: +/* rule 13 can match eol */ YY_RULE_SETUP -#line 67 "lexer.lpp" -{ throw iw6::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } +#line 68 "lexer.lpp" +{ ctx->loc.lines(yyleng); ctx->loc.step(); } YY_BREAK case 14: YY_RULE_SETUP #line 69 "lexer.lpp" -{ return iw6::parser::make_INLINE(ctx->loc); } +{ BEGIN(INITIAL); } + YY_BREAK +case YY_STATE_EOF(DEV_OFF_STATE): +#line 70 "lexer.lpp" +{ throw iw6::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } YY_BREAK case 15: YY_RULE_SETUP -#line 70 "lexer.lpp" -{ return iw6::parser::make_INCLUDE(ctx->loc); } +#line 71 "lexer.lpp" +{ throw iw6::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } YY_BREAK case 16: YY_RULE_SETUP -#line 71 "lexer.lpp" -{ return iw6::parser::make_USINGTREE(ctx->loc); } +#line 73 "lexer.lpp" +{ return iw6::parser::make_INLINE(ctx->loc); } YY_BREAK case 17: YY_RULE_SETUP -#line 72 "lexer.lpp" -{ return iw6::parser::make_ANIMTREE(ctx->loc); } +#line 74 "lexer.lpp" +{ return iw6::parser::make_INCLUDE(ctx->loc); } YY_BREAK case 18: YY_RULE_SETUP -#line 73 "lexer.lpp" -{ return iw6::parser::make_ENDON(ctx->loc); } +#line 75 "lexer.lpp" +{ return iw6::parser::make_USINGTREE(ctx->loc); } YY_BREAK case 19: YY_RULE_SETUP -#line 74 "lexer.lpp" -{ return iw6::parser::make_NOTIFY(ctx->loc); } +#line 76 "lexer.lpp" +{ return iw6::parser::make_ANIMTREE(ctx->loc); } YY_BREAK case 20: YY_RULE_SETUP -#line 75 "lexer.lpp" -{ return iw6::parser::make_WAIT(ctx->loc); } +#line 77 "lexer.lpp" +{ return iw6::parser::make_ENDON(ctx->loc); } YY_BREAK case 21: YY_RULE_SETUP -#line 76 "lexer.lpp" -{ return iw6::parser::make_WAITTILL(ctx->loc); } +#line 78 "lexer.lpp" +{ return iw6::parser::make_NOTIFY(ctx->loc); } YY_BREAK case 22: YY_RULE_SETUP -#line 77 "lexer.lpp" -{ return iw6::parser::make_WAITTILLMATCH(ctx->loc); } +#line 79 "lexer.lpp" +{ return iw6::parser::make_WAIT(ctx->loc); } YY_BREAK case 23: YY_RULE_SETUP -#line 78 "lexer.lpp" -{ return iw6::parser::make_WAITTILLFRAMEEND(ctx->loc); } +#line 80 "lexer.lpp" +{ return iw6::parser::make_WAITTILL(ctx->loc); } YY_BREAK case 24: YY_RULE_SETUP -#line 79 "lexer.lpp" -{ return iw6::parser::make_IF(ctx->loc); } +#line 81 "lexer.lpp" +{ return iw6::parser::make_WAITTILLMATCH(ctx->loc); } YY_BREAK case 25: YY_RULE_SETUP -#line 80 "lexer.lpp" -{ return iw6::parser::make_ELSE(ctx->loc); } +#line 82 "lexer.lpp" +{ return iw6::parser::make_WAITTILLFRAMEEND(ctx->loc); } YY_BREAK case 26: YY_RULE_SETUP -#line 81 "lexer.lpp" -{ return iw6::parser::make_DO(ctx->loc); } +#line 83 "lexer.lpp" +{ return iw6::parser::make_IF(ctx->loc); } YY_BREAK case 27: YY_RULE_SETUP -#line 82 "lexer.lpp" -{ return iw6::parser::make_WHILE(ctx->loc); } +#line 84 "lexer.lpp" +{ return iw6::parser::make_ELSE(ctx->loc); } YY_BREAK case 28: YY_RULE_SETUP -#line 83 "lexer.lpp" -{ return iw6::parser::make_FOR(ctx->loc); } +#line 85 "lexer.lpp" +{ return iw6::parser::make_DO(ctx->loc); } YY_BREAK case 29: YY_RULE_SETUP -#line 84 "lexer.lpp" -{ return iw6::parser::make_FOREACH(ctx->loc); } +#line 86 "lexer.lpp" +{ return iw6::parser::make_WHILE(ctx->loc); } YY_BREAK case 30: YY_RULE_SETUP -#line 85 "lexer.lpp" -{ return iw6::parser::make_IN(ctx->loc); } +#line 87 "lexer.lpp" +{ return iw6::parser::make_FOR(ctx->loc); } YY_BREAK case 31: YY_RULE_SETUP -#line 86 "lexer.lpp" -{ return iw6::parser::make_SWITCH(ctx->loc); } +#line 88 "lexer.lpp" +{ return iw6::parser::make_FOREACH(ctx->loc); } YY_BREAK case 32: YY_RULE_SETUP -#line 87 "lexer.lpp" -{ return iw6::parser::make_CASE(ctx->loc); } +#line 89 "lexer.lpp" +{ return iw6::parser::make_IN(ctx->loc); } YY_BREAK case 33: YY_RULE_SETUP -#line 88 "lexer.lpp" -{ return iw6::parser::make_DEFAULT(ctx->loc); } +#line 90 "lexer.lpp" +{ return iw6::parser::make_SWITCH(ctx->loc); } YY_BREAK case 34: YY_RULE_SETUP -#line 89 "lexer.lpp" -{ return iw6::parser::make_BREAK(ctx->loc); } +#line 91 "lexer.lpp" +{ return iw6::parser::make_CASE(ctx->loc); } YY_BREAK case 35: YY_RULE_SETUP -#line 90 "lexer.lpp" -{ return iw6::parser::make_CONTINUE(ctx->loc); } +#line 92 "lexer.lpp" +{ return iw6::parser::make_DEFAULT(ctx->loc); } YY_BREAK case 36: YY_RULE_SETUP -#line 91 "lexer.lpp" -{ return iw6::parser::make_RETURN(ctx->loc); } +#line 93 "lexer.lpp" +{ return iw6::parser::make_BREAK(ctx->loc); } YY_BREAK case 37: YY_RULE_SETUP -#line 92 "lexer.lpp" -{ return iw6::parser::make_BREAKPOINT(ctx->loc); } +#line 94 "lexer.lpp" +{ return iw6::parser::make_CONTINUE(ctx->loc); } YY_BREAK case 38: YY_RULE_SETUP -#line 93 "lexer.lpp" -{ return iw6::parser::make_PROFBEGIN(ctx->loc); } +#line 95 "lexer.lpp" +{ return iw6::parser::make_RETURN(ctx->loc); } YY_BREAK case 39: YY_RULE_SETUP -#line 94 "lexer.lpp" -{ return iw6::parser::make_PROFEND(ctx->loc); } +#line 96 "lexer.lpp" +{ return iw6::parser::make_BREAKPOINT(ctx->loc); } YY_BREAK case 40: YY_RULE_SETUP -#line 95 "lexer.lpp" -{ return iw6::parser::make_THREAD(ctx->loc); } +#line 97 "lexer.lpp" +{ return iw6::parser::make_PROFBEGIN(ctx->loc); } YY_BREAK case 41: YY_RULE_SETUP -#line 96 "lexer.lpp" -{ return iw6::parser::make_CHILDTHREAD(ctx->loc); } +#line 98 "lexer.lpp" +{ return iw6::parser::make_PROFEND(ctx->loc); } YY_BREAK case 42: YY_RULE_SETUP -#line 97 "lexer.lpp" -{ return iw6::parser::make_THISTHREAD(ctx->loc); } +#line 99 "lexer.lpp" +{ return iw6::parser::make_THREAD(ctx->loc); } YY_BREAK case 43: YY_RULE_SETUP -#line 98 "lexer.lpp" -{ return iw6::parser::make_CALL(ctx->loc); } +#line 100 "lexer.lpp" +{ return iw6::parser::make_CHILDTHREAD(ctx->loc); } YY_BREAK case 44: YY_RULE_SETUP -#line 99 "lexer.lpp" -{ return iw6::parser::make_TRUE(ctx->loc); } +#line 101 "lexer.lpp" +{ return iw6::parser::make_THISTHREAD(ctx->loc); } YY_BREAK case 45: YY_RULE_SETUP -#line 100 "lexer.lpp" -{ return iw6::parser::make_FALSE(ctx->loc); } +#line 102 "lexer.lpp" +{ return iw6::parser::make_CALL(ctx->loc); } YY_BREAK case 46: YY_RULE_SETUP -#line 101 "lexer.lpp" -{ return iw6::parser::make_UNDEFINED(ctx->loc); } +#line 103 "lexer.lpp" +{ return iw6::parser::make_TRUE(ctx->loc); } YY_BREAK case 47: YY_RULE_SETUP -#line 102 "lexer.lpp" -{ return iw6::parser::make_SIZE(ctx->loc); } +#line 104 "lexer.lpp" +{ return iw6::parser::make_FALSE(ctx->loc); } YY_BREAK case 48: YY_RULE_SETUP -#line 103 "lexer.lpp" -{ return iw6::parser::make_GAME(ctx->loc); } +#line 105 "lexer.lpp" +{ return iw6::parser::make_UNDEFINED(ctx->loc); } YY_BREAK case 49: YY_RULE_SETUP -#line 104 "lexer.lpp" -{ return iw6::parser::make_SELF(ctx->loc); } +#line 106 "lexer.lpp" +{ return iw6::parser::make_SIZE(ctx->loc); } YY_BREAK case 50: YY_RULE_SETUP -#line 105 "lexer.lpp" -{ return iw6::parser::make_ANIM(ctx->loc); } +#line 107 "lexer.lpp" +{ return iw6::parser::make_GAME(ctx->loc); } YY_BREAK case 51: YY_RULE_SETUP -#line 106 "lexer.lpp" -{ return iw6::parser::make_LEVEL(ctx->loc); } +#line 108 "lexer.lpp" +{ return iw6::parser::make_SELF(ctx->loc); } YY_BREAK case 52: YY_RULE_SETUP -#line 107 "lexer.lpp" -{ return iw6::parser::make_LPAREN(ctx->loc); } +#line 109 "lexer.lpp" +{ return iw6::parser::make_ANIM(ctx->loc); } YY_BREAK case 53: YY_RULE_SETUP -#line 108 "lexer.lpp" -{ return iw6::parser::make_RPAREN(ctx->loc); } +#line 110 "lexer.lpp" +{ return iw6::parser::make_LEVEL(ctx->loc); } YY_BREAK case 54: YY_RULE_SETUP -#line 109 "lexer.lpp" -{ return iw6::parser::make_LBRACE(ctx->loc); } +#line 111 "lexer.lpp" +{ return iw6::parser::make_LPAREN(ctx->loc); } YY_BREAK case 55: YY_RULE_SETUP -#line 110 "lexer.lpp" -{ return iw6::parser::make_RBRACE(ctx->loc); } +#line 112 "lexer.lpp" +{ return iw6::parser::make_RPAREN(ctx->loc); } YY_BREAK case 56: YY_RULE_SETUP -#line 111 "lexer.lpp" -{ return iw6::parser::make_LBRACKET(ctx->loc); } +#line 113 "lexer.lpp" +{ return iw6::parser::make_LBRACE(ctx->loc); } YY_BREAK case 57: YY_RULE_SETUP -#line 112 "lexer.lpp" -{ return iw6::parser::make_RBRACKET(ctx->loc); } +#line 114 "lexer.lpp" +{ return iw6::parser::make_RBRACE(ctx->loc); } YY_BREAK case 58: YY_RULE_SETUP -#line 113 "lexer.lpp" -{ return iw6::parser::make_COMMA(ctx->loc); } +#line 115 "lexer.lpp" +{ return iw6::parser::make_LBRACKET(ctx->loc); } YY_BREAK case 59: YY_RULE_SETUP -#line 114 "lexer.lpp" -{ return iw6::parser::make_DOT(ctx->loc); } +#line 116 "lexer.lpp" +{ return iw6::parser::make_RBRACKET(ctx->loc); } YY_BREAK case 60: YY_RULE_SETUP -#line 115 "lexer.lpp" -{ return iw6::parser::make_DOUBLECOLON(ctx->loc); } +#line 117 "lexer.lpp" +{ return iw6::parser::make_COMMA(ctx->loc); } YY_BREAK case 61: YY_RULE_SETUP -#line 116 "lexer.lpp" -{ return iw6::parser::make_COLON(ctx->loc); } +#line 118 "lexer.lpp" +{ return iw6::parser::make_DOT(ctx->loc); } YY_BREAK case 62: YY_RULE_SETUP -#line 117 "lexer.lpp" -{ return iw6::parser::make_SEMICOLON(ctx->loc); } +#line 119 "lexer.lpp" +{ return iw6::parser::make_DOUBLECOLON(ctx->loc); } YY_BREAK case 63: YY_RULE_SETUP -#line 118 "lexer.lpp" -{ return iw6::parser::make_QMARK(ctx->loc); } +#line 120 "lexer.lpp" +{ return iw6::parser::make_COLON(ctx->loc); } YY_BREAK case 64: YY_RULE_SETUP -#line 119 "lexer.lpp" -{ return iw6::parser::make_INCREMENT(ctx->loc); } +#line 121 "lexer.lpp" +{ return iw6::parser::make_SEMICOLON(ctx->loc); } YY_BREAK case 65: YY_RULE_SETUP -#line 120 "lexer.lpp" -{ return iw6::parser::make_DECREMENT(ctx->loc); } +#line 122 "lexer.lpp" +{ return iw6::parser::make_QMARK(ctx->loc); } YY_BREAK case 66: YY_RULE_SETUP -#line 121 "lexer.lpp" -{ return iw6::parser::make_ASSIGN_LSHIFT(ctx->loc); } +#line 123 "lexer.lpp" +{ return iw6::parser::make_INCREMENT(ctx->loc); } YY_BREAK case 67: YY_RULE_SETUP -#line 122 "lexer.lpp" -{ return iw6::parser::make_ASSIGN_RSHIFT(ctx->loc); } +#line 124 "lexer.lpp" +{ return iw6::parser::make_DECREMENT(ctx->loc); } YY_BREAK case 68: YY_RULE_SETUP -#line 123 "lexer.lpp" -{ return iw6::parser::make_LSHIFT(ctx->loc); } +#line 125 "lexer.lpp" +{ return iw6::parser::make_ASSIGN_LSHIFT(ctx->loc); } YY_BREAK case 69: YY_RULE_SETUP -#line 124 "lexer.lpp" -{ return iw6::parser::make_RSHIFT(ctx->loc); } +#line 126 "lexer.lpp" +{ return iw6::parser::make_ASSIGN_RSHIFT(ctx->loc); } YY_BREAK case 70: YY_RULE_SETUP -#line 125 "lexer.lpp" -{ return iw6::parser::make_OR(ctx->loc); } +#line 127 "lexer.lpp" +{ return iw6::parser::make_LSHIFT(ctx->loc); } YY_BREAK case 71: YY_RULE_SETUP -#line 126 "lexer.lpp" -{ return iw6::parser::make_AND(ctx->loc); } +#line 128 "lexer.lpp" +{ return iw6::parser::make_RSHIFT(ctx->loc); } YY_BREAK case 72: YY_RULE_SETUP -#line 127 "lexer.lpp" -{ return iw6::parser::make_EQUALITY(ctx->loc); } +#line 129 "lexer.lpp" +{ return iw6::parser::make_OR(ctx->loc); } YY_BREAK case 73: YY_RULE_SETUP -#line 128 "lexer.lpp" -{ return iw6::parser::make_INEQUALITY(ctx->loc); } +#line 130 "lexer.lpp" +{ return iw6::parser::make_AND(ctx->loc); } YY_BREAK case 74: YY_RULE_SETUP -#line 129 "lexer.lpp" -{ return iw6::parser::make_LESS_EQUAL(ctx->loc); } +#line 131 "lexer.lpp" +{ return iw6::parser::make_EQUALITY(ctx->loc); } YY_BREAK case 75: YY_RULE_SETUP -#line 130 "lexer.lpp" -{ return iw6::parser::make_GREATER_EQUAL(ctx->loc); } +#line 132 "lexer.lpp" +{ return iw6::parser::make_INEQUALITY(ctx->loc); } YY_BREAK case 76: YY_RULE_SETUP -#line 131 "lexer.lpp" -{ return iw6::parser::make_LESS(ctx->loc); } +#line 133 "lexer.lpp" +{ return iw6::parser::make_LESS_EQUAL(ctx->loc); } YY_BREAK case 77: YY_RULE_SETUP -#line 132 "lexer.lpp" -{ return iw6::parser::make_GREATER(ctx->loc); } +#line 134 "lexer.lpp" +{ return iw6::parser::make_GREATER_EQUAL(ctx->loc); } YY_BREAK case 78: YY_RULE_SETUP -#line 133 "lexer.lpp" -{ return iw6::parser::make_ASSIGN_ADD(ctx->loc); } +#line 135 "lexer.lpp" +{ return iw6::parser::make_LESS(ctx->loc); } YY_BREAK case 79: YY_RULE_SETUP -#line 134 "lexer.lpp" -{ return iw6::parser::make_ASSIGN_SUB(ctx->loc); } +#line 136 "lexer.lpp" +{ return iw6::parser::make_GREATER(ctx->loc); } YY_BREAK case 80: YY_RULE_SETUP -#line 135 "lexer.lpp" -{ return iw6::parser::make_ASSIGN_MUL(ctx->loc); } +#line 137 "lexer.lpp" +{ return iw6::parser::make_ASSIGN_ADD(ctx->loc); } YY_BREAK case 81: YY_RULE_SETUP -#line 136 "lexer.lpp" -{ return iw6::parser::make_ASSIGN_DIV(ctx->loc); } +#line 138 "lexer.lpp" +{ return iw6::parser::make_ASSIGN_SUB(ctx->loc); } YY_BREAK case 82: YY_RULE_SETUP -#line 137 "lexer.lpp" -{ return iw6::parser::make_ASSIGN_MOD(ctx->loc); } +#line 139 "lexer.lpp" +{ return iw6::parser::make_ASSIGN_MUL(ctx->loc); } YY_BREAK case 83: YY_RULE_SETUP -#line 138 "lexer.lpp" -{ return iw6::parser::make_ASSIGN_BW_OR(ctx->loc); } +#line 140 "lexer.lpp" +{ return iw6::parser::make_ASSIGN_DIV(ctx->loc); } YY_BREAK case 84: YY_RULE_SETUP -#line 139 "lexer.lpp" -{ return iw6::parser::make_ASSIGN_BW_AND(ctx->loc); } +#line 141 "lexer.lpp" +{ return iw6::parser::make_ASSIGN_MOD(ctx->loc); } YY_BREAK case 85: YY_RULE_SETUP -#line 140 "lexer.lpp" -{ return iw6::parser::make_ASSIGN_BW_EXOR(ctx->loc); } +#line 142 "lexer.lpp" +{ return iw6::parser::make_ASSIGN_BW_OR(ctx->loc); } YY_BREAK case 86: YY_RULE_SETUP -#line 141 "lexer.lpp" -{ return iw6::parser::make_ASSIGN(ctx->loc); } +#line 143 "lexer.lpp" +{ return iw6::parser::make_ASSIGN_BW_AND(ctx->loc); } YY_BREAK case 87: YY_RULE_SETUP -#line 142 "lexer.lpp" -{ return iw6::parser::make_ADD(ctx->loc); } +#line 144 "lexer.lpp" +{ return iw6::parser::make_ASSIGN_BW_EXOR(ctx->loc); } YY_BREAK case 88: YY_RULE_SETUP -#line 143 "lexer.lpp" -{ return iw6::parser::make_SUB(ctx->loc); } +#line 145 "lexer.lpp" +{ return iw6::parser::make_ASSIGN(ctx->loc); } YY_BREAK case 89: YY_RULE_SETUP -#line 144 "lexer.lpp" -{ return iw6::parser::make_MUL(ctx->loc); } +#line 146 "lexer.lpp" +{ return iw6::parser::make_ADD(ctx->loc); } YY_BREAK case 90: YY_RULE_SETUP -#line 145 "lexer.lpp" -{ return iw6::parser::make_DIV(ctx->loc); } +#line 147 "lexer.lpp" +{ return iw6::parser::make_SUB(ctx->loc); } YY_BREAK case 91: YY_RULE_SETUP -#line 146 "lexer.lpp" -{ return iw6::parser::make_MOD(ctx->loc); } +#line 148 "lexer.lpp" +{ return iw6::parser::make_MUL(ctx->loc); } YY_BREAK case 92: YY_RULE_SETUP -#line 147 "lexer.lpp" -{ return iw6::parser::make_NOT(ctx->loc); } +#line 149 "lexer.lpp" +{ return iw6::parser::make_DIV(ctx->loc); } YY_BREAK case 93: YY_RULE_SETUP -#line 148 "lexer.lpp" -{ return iw6::parser::make_COMPLEMENT(ctx->loc); } +#line 150 "lexer.lpp" +{ return iw6::parser::make_MOD(ctx->loc); } YY_BREAK case 94: YY_RULE_SETUP -#line 149 "lexer.lpp" -{ return iw6::parser::make_BITWISE_OR(ctx->loc); } +#line 151 "lexer.lpp" +{ return iw6::parser::make_NOT(ctx->loc); } YY_BREAK case 95: YY_RULE_SETUP -#line 150 "lexer.lpp" -{ return iw6::parser::make_BITWISE_AND(ctx->loc); } +#line 152 "lexer.lpp" +{ return iw6::parser::make_COMPLEMENT(ctx->loc); } YY_BREAK case 96: YY_RULE_SETUP -#line 151 "lexer.lpp" -{ return iw6::parser::make_BITWISE_EXOR(ctx->loc); } +#line 153 "lexer.lpp" +{ return iw6::parser::make_BITWISE_OR(ctx->loc); } YY_BREAK case 97: YY_RULE_SETUP -#line 152 "lexer.lpp" -{ return iw6::parser::make_PATH(xsk::utils::string::fordslash(yytext), ctx->loc); } +#line 154 "lexer.lpp" +{ return iw6::parser::make_BITWISE_AND(ctx->loc); } YY_BREAK case 98: YY_RULE_SETUP -#line 153 "lexer.lpp" -{ return iw6::parser::make_IDENTIFIER((std::string(yytext, 3) == "_ID") ? std::string(yytext) : xsk::utils::string::to_lower(yytext), ctx->loc); } +#line 155 "lexer.lpp" +{ return iw6::parser::make_BITWISE_EXOR(ctx->loc); } YY_BREAK case 99: -/* rule 99 can match eol */ -YY_RULE_SETUP -#line 154 "lexer.lpp" -{ return iw6::parser::make_ISTRING(std::string(yytext).substr(1), ctx->loc); } - YY_BREAK -case 100: -/* rule 100 can match eol */ -YY_RULE_SETUP -#line 155 "lexer.lpp" -{ return iw6::parser::make_STRING(std::string(yytext), ctx->loc); } - YY_BREAK -case 101: YY_RULE_SETUP #line 156 "lexer.lpp" -{ return iw6::parser::make_COLOR(std::string(yytext).substr(1), ctx->loc); } +{ return iw6::parser::make_PATH(xsk::utils::string::fordslash(yytext), ctx->loc); } YY_BREAK -case 102: +case 100: YY_RULE_SETUP #line 157 "lexer.lpp" -{ return iw6::parser::make_FLOAT(std::string(yytext), ctx->loc); } +{ return iw6::parser::make_IDENTIFIER((std::string(yytext, 3) == "_ID") ? std::string(yytext) : xsk::utils::string::to_lower(yytext), ctx->loc); } + YY_BREAK +case 101: +/* rule 101 can match eol */ +YY_RULE_SETUP +#line 158 "lexer.lpp" +{ return iw6::parser::make_ISTRING(std::string(yytext).substr(1), ctx->loc); } + YY_BREAK +case 102: +/* rule 102 can match eol */ +YY_RULE_SETUP +#line 159 "lexer.lpp" +{ return iw6::parser::make_STRING(std::string(yytext), ctx->loc); } YY_BREAK case 103: YY_RULE_SETUP -#line 158 "lexer.lpp" -{ return iw6::parser::make_INT_OCT(xsk::utils::string::oct_to_dec(yytext), ctx->loc); } +#line 160 "lexer.lpp" +{ return iw6::parser::make_COLOR(std::string(yytext).substr(1), ctx->loc); } YY_BREAK case 104: YY_RULE_SETUP -#line 159 "lexer.lpp" -{ return iw6::parser::make_INT_BIN(xsk::utils::string::bin_to_dec(yytext), ctx->loc); } +#line 161 "lexer.lpp" +{ return iw6::parser::make_FLOAT(std::string(yytext), ctx->loc); } YY_BREAK case 105: YY_RULE_SETUP -#line 160 "lexer.lpp" -{ return iw6::parser::make_INT_HEX(xsk::utils::string::hex_to_dec(yytext), ctx->loc); } +#line 162 "lexer.lpp" +{ return iw6::parser::make_INT_OCT(xsk::utils::string::oct_to_dec(yytext), ctx->loc); } YY_BREAK case 106: YY_RULE_SETUP -#line 161 "lexer.lpp" -{ return iw6::parser::make_INT_DEC(std::string(yytext), ctx->loc); } - YY_BREAK -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(COMMENT_BLOCK_STATE): -case YY_STATE_EOF(DEVBLOCK_ON_STATE): -case YY_STATE_EOF(DEVBLOCK_OFF_STATE): -#line 162 "lexer.lpp" -{ if(ctx->header_top > 0) iw6_pop_header(ctx); else return iw6::parser::make_IW6EOF(ctx->loc); } +#line 163 "lexer.lpp" +{ return iw6::parser::make_INT_BIN(xsk::utils::string::bin_to_dec(yytext), ctx->loc); } YY_BREAK case 107: -/* rule 107 can match eol */ YY_RULE_SETUP -#line 163 "lexer.lpp" -{ throw iw6::parser::syntax_error(ctx->loc, "bad token: \'" + std::string(yytext) + "\'"); } +#line 164 "lexer.lpp" +{ return iw6::parser::make_INT_HEX(xsk::utils::string::hex_to_dec(yytext), ctx->loc); } YY_BREAK case 108: YY_RULE_SETUP #line 165 "lexer.lpp" +{ return iw6::parser::make_INT_DEC(std::string(yytext), ctx->loc); } + YY_BREAK +case YY_STATE_EOF(INITIAL): +#line 166 "lexer.lpp" +{ if(ctx->header_top > 0) iw6_pop_header(ctx); else return iw6::parser::make_IW6EOF(ctx->loc); } + YY_BREAK +case 109: +/* rule 109 can match eol */ +YY_RULE_SETUP +#line 167 "lexer.lpp" +{ throw iw6::parser::syntax_error(ctx->loc, "bad token: \'" + std::string(yytext) + "\'"); } + YY_BREAK +case 110: +YY_RULE_SETUP +#line 169 "lexer.lpp" ECHO; YY_BREAK -#line 1803 "lexer.cpp" +#line 1824 "lexer.cpp" case YY_END_OF_BUFFER: { @@ -2098,7 +2119,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 >= 325 ) + if ( yy_current_state >= 328 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2127,11 +2148,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 >= 325 ) + if ( yy_current_state >= 328 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 324); + yy_is_jam = (yy_current_state == 327); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -2930,7 +2951,7 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 165 "lexer.lpp" +#line 169 "lexer.lpp" void iw6_push_header(xsk::gsc::context* ctx, const std::string& file) diff --git a/src/iw6/xsk/lexer.hpp b/src/iw6/xsk/lexer.hpp index 6d65468f..73105091 100644 --- a/src/iw6/xsk/lexer.hpp +++ b/src/iw6/xsk/lexer.hpp @@ -439,9 +439,9 @@ void yyfree ( void * , yyscan_t yyscanner ); #ifdef YY_HEADER_EXPORT_START_CONDITIONS #define INITIAL 0 -#define COMMENT_BLOCK_STATE 1 -#define DEVBLOCK_ON_STATE 2 -#define DEVBLOCK_OFF_STATE 3 +#define COMMENT_STATE 1 +#define DEV_OFF_STATE 2 +#define DEV_ON_STATE 3 #endif @@ -703,7 +703,7 @@ extern int yylex (yyscan_t yyscanner); #undef yyTABLES_NAME #endif -#line 165 "lexer.lpp" +#line 169 "lexer.lpp" #line 709 "lexer.hpp" diff --git a/src/iw6/xsk/parser.cpp b/src/iw6/xsk/parser.cpp index 64c48c83..883bdb11 100644 --- a/src/iw6/xsk/parser.cpp +++ b/src/iw6/xsk/parser.cpp @@ -442,6 +442,7 @@ namespace xsk { namespace gsc { namespace iw6 { value.YY_MOVE_OR_COPY< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.YY_MOVE_OR_COPY< ast::stmt_list::ptr > (YY_MOVE (that.value)); @@ -741,6 +742,7 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (YY_MOVE (that.value)); @@ -1040,6 +1042,7 @@ namespace xsk { namespace gsc { namespace iw6 { value.copy< ast::stmt_ifelse::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.copy< ast::stmt_list::ptr > (that.value); @@ -1338,6 +1341,7 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< ast::stmt_ifelse::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (that.value); @@ -1891,6 +1895,7 @@ namespace xsk { namespace gsc { namespace iw6 { yylhs.value.emplace< ast::stmt_ifelse::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list yylhs.value.emplace< ast::stmt_list::ptr > (); @@ -1970,1273 +1975,1303 @@ namespace xsk { namespace gsc { namespace iw6 { switch (yyn) { case 2: // root: program -#line 249 "parser.ypp" +#line 252 "parser.ypp" { ast = std::move(yystack_[0].value.as < ast::program::ptr > ()); } -#line 1976 "parser.cpp" +#line 1981 "parser.cpp" break; case 3: // root: %empty -#line 250 "parser.ypp" +#line 253 "parser.ypp" { ast = std::make_unique(yylhs.location); } -#line 1982 "parser.cpp" +#line 1987 "parser.cpp" break; case 4: // program: program inline -#line 255 "parser.ypp" +#line 258 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); } -#line 1988 "parser.cpp" +#line 1993 "parser.cpp" break; case 5: // program: program include -#line 257 "parser.ypp" +#line 260 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 1994 "parser.cpp" +#line 1999 "parser.cpp" break; case 6: // program: program declaration -#line 259 "parser.ypp" +#line 262 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2000 "parser.cpp" +#line 2005 "parser.cpp" break; case 7: // program: inline -#line 261 "parser.ypp" +#line 264 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); } -#line 2006 "parser.cpp" +#line 2011 "parser.cpp" break; case 8: // program: include -#line 263 "parser.ypp" +#line 266 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 2012 "parser.cpp" +#line 2017 "parser.cpp" break; case 9: // program: declaration -#line 265 "parser.ypp" +#line 268 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2018 "parser.cpp" +#line 2023 "parser.cpp" break; case 10: // inline: "#inline" expr_path ";" -#line 269 "parser.ypp" +#line 272 "parser.ypp" { iw6_push_header(ctx, yystack_[1].value.as < ast::expr_path::ptr > ()->value); } -#line 2024 "parser.cpp" +#line 2029 "parser.cpp" break; case 11: // include: "#include" expr_path ";" -#line 274 "parser.ypp" +#line 277 "parser.ypp" { yylhs.value.as < ast::include::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_path::ptr > ())); } -#line 2030 "parser.cpp" +#line 2035 "parser.cpp" break; - case 12: // declaration: decl_usingtree -#line 278 "parser.ypp" + case 12: // declaration: "/#" +#line 281 "parser.ypp" + { yylhs.value.as < ast::decl > ().as_dev_begin = std::make_unique(yylhs.location); } +#line 2041 "parser.cpp" + break; + + case 13: // declaration: "#/" +#line 282 "parser.ypp" + { yylhs.value.as < ast::decl > ().as_dev_end = std::make_unique(yylhs.location); } +#line 2047 "parser.cpp" + break; + + case 14: // declaration: decl_usingtree +#line 283 "parser.ypp" { yylhs.value.as < ast::decl > ().as_usingtree = std::move(yystack_[0].value.as < ast::decl_usingtree::ptr > ()); } -#line 2036 "parser.cpp" +#line 2053 "parser.cpp" break; - case 13: // declaration: decl_constant -#line 279 "parser.ypp" + case 15: // declaration: decl_constant +#line 284 "parser.ypp" { yylhs.value.as < ast::decl > ().as_constant = std::move(yystack_[0].value.as < ast::decl_constant::ptr > ()); } -#line 2042 "parser.cpp" +#line 2059 "parser.cpp" break; - case 14: // declaration: decl_thread -#line 280 "parser.ypp" - { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } -#line 2048 "parser.cpp" - break; - - case 15: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" + case 16: // declaration: decl_thread #line 285 "parser.ypp" - { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_usingtree::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_string::ptr > ())); } -#line 2054 "parser.cpp" + { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } +#line 2065 "parser.cpp" break; - case 16: // decl_constant: expr_identifier "=" expr ";" + case 17: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" #line 290 "parser.ypp" - { yylhs.value.as < ast::decl_constant::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2060 "parser.cpp" + { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_usingtree::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_string::ptr > ())); } +#line 2071 "parser.cpp" break; - case 17: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block + case 18: // decl_constant: expr_identifier "=" expr ";" #line 295 "parser.ypp" - { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_thread::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2066 "parser.cpp" + { yylhs.value.as < ast::decl_constant::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } +#line 2077 "parser.cpp" break; - case 18: // stmt: stmt_block -#line 299 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } -#line 2072 "parser.cpp" - break; - - case 19: // stmt: stmt_call + case 19: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block #line 300 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } -#line 2078 "parser.cpp" + { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_thread::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } +#line 2083 "parser.cpp" break; - case 20: // stmt: stmt_assign -#line 301 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } -#line 2084 "parser.cpp" - break; - - case 21: // stmt: stmt_endon -#line 302 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } -#line 2090 "parser.cpp" - break; - - case 22: // stmt: stmt_notify -#line 303 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } -#line 2096 "parser.cpp" - break; - - case 23: // stmt: stmt_wait + case 20: // stmt: stmt_dev #line 304 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } -#line 2102 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } +#line 2089 "parser.cpp" break; - case 24: // stmt: stmt_waittill + case 21: // stmt: stmt_block #line 305 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } -#line 2108 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } +#line 2095 "parser.cpp" break; - case 25: // stmt: stmt_waittillmatch + case 22: // stmt: stmt_call #line 306 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } -#line 2114 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } +#line 2101 "parser.cpp" break; - case 26: // stmt: stmt_waittillframeend + case 23: // stmt: stmt_assign #line 307 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } -#line 2120 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } +#line 2107 "parser.cpp" break; - case 27: // stmt: stmt_if + case 24: // stmt: stmt_endon #line 308 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } -#line 2126 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } +#line 2113 "parser.cpp" break; - case 28: // stmt: stmt_ifelse + case 25: // stmt: stmt_notify #line 309 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } -#line 2132 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } +#line 2119 "parser.cpp" break; - case 29: // stmt: stmt_while + case 26: // stmt: stmt_wait #line 310 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } -#line 2138 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } +#line 2125 "parser.cpp" break; - case 30: // stmt: stmt_dowhile + case 27: // stmt: stmt_waittill #line 311 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } -#line 2144 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } +#line 2131 "parser.cpp" break; - case 31: // stmt: stmt_for + case 28: // stmt: stmt_waittillmatch #line 312 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } -#line 2150 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } +#line 2137 "parser.cpp" break; - case 32: // stmt: stmt_foreach + case 29: // stmt: stmt_waittillframeend #line 313 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } -#line 2156 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } +#line 2143 "parser.cpp" break; - case 33: // stmt: stmt_switch + case 30: // stmt: stmt_if #line 314 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } -#line 2162 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } +#line 2149 "parser.cpp" break; - case 34: // stmt: stmt_case + case 31: // stmt: stmt_ifelse #line 315 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } -#line 2168 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } +#line 2155 "parser.cpp" break; - case 35: // stmt: stmt_default + case 32: // stmt: stmt_while #line 316 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } -#line 2174 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } +#line 2161 "parser.cpp" break; - case 36: // stmt: stmt_break + case 33: // stmt: stmt_dowhile #line 317 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } -#line 2180 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } +#line 2167 "parser.cpp" break; - case 37: // stmt: stmt_continue + case 34: // stmt: stmt_for #line 318 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } -#line 2186 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } +#line 2173 "parser.cpp" break; - case 38: // stmt: stmt_return + case 35: // stmt: stmt_foreach #line 319 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } -#line 2192 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } +#line 2179 "parser.cpp" break; - case 39: // stmt: stmt_breakpoint + case 36: // stmt: stmt_switch #line 320 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } -#line 2198 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } +#line 2185 "parser.cpp" break; - case 40: // stmt: stmt_prof_begin + case 37: // stmt: stmt_case #line 321 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } -#line 2204 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } +#line 2191 "parser.cpp" break; - case 41: // stmt: stmt_prof_end + case 38: // stmt: stmt_default #line 322 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } -#line 2210 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } +#line 2197 "parser.cpp" break; - case 42: // stmt_block: "{" stmt_list "}" + case 39: // stmt: stmt_break +#line 323 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } +#line 2203 "parser.cpp" + break; + + case 40: // stmt: stmt_continue +#line 324 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } +#line 2209 "parser.cpp" + break; + + case 41: // stmt: stmt_return +#line 325 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } +#line 2215 "parser.cpp" + break; + + case 42: // stmt: stmt_breakpoint #line 326 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } -#line 2216 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } +#line 2221 "parser.cpp" break; - case 43: // stmt_block: "{" "}" + case 43: // stmt: stmt_prof_begin #line 327 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } -#line 2222 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } +#line 2227 "parser.cpp" break; - case 44: // stmt_list: stmt_list stmt + case 44: // stmt: stmt_prof_end +#line 328 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } +#line 2233 "parser.cpp" + break; + + case 45: // stmt_dev: "/#" stmt_list "#/" #line 332 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2228 "parser.cpp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } +#line 2239 "parser.cpp" break; - case 45: // stmt_list: stmt -#line 334 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2234 "parser.cpp" + case 46: // stmt_dev: "/#" "#/" +#line 333 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } +#line 2245 "parser.cpp" break; - case 46: // stmt_expr: expr_assign -#line 339 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2240 "parser.cpp" + case 47: // stmt_block: "{" stmt_list "}" +#line 337 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } +#line 2251 "parser.cpp" break; - case 47: // stmt_expr: expr_increment -#line 341 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2246 "parser.cpp" + case 48: // stmt_block: "{" "}" +#line 338 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } +#line 2257 "parser.cpp" break; - case 48: // stmt_expr: expr_decrement + case 49: // stmt_list: stmt_list stmt #line 343 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2252 "parser.cpp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2263 "parser.cpp" break; - case 49: // stmt_expr: %empty + case 50: // stmt_list: stmt #line 345 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2258 "parser.cpp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2269 "parser.cpp" break; - case 50: // stmt_call: expr_call ";" + case 51: // stmt_expr: expr_assign #line 350 "parser.ypp" - { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } -#line 2264 "parser.cpp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2275 "parser.cpp" break; - case 51: // stmt_call: expr_method ";" + case 52: // stmt_expr: expr_increment #line 352 "parser.ypp" - { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_method::ptr > ()))); } -#line 2270 "parser.cpp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2281 "parser.cpp" break; - case 52: // stmt_assign: expr_assign ";" -#line 357 "parser.ypp" - { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2276 "parser.cpp" + case 53: // stmt_expr: expr_decrement +#line 354 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2287 "parser.cpp" break; - case 53: // stmt_assign: expr_increment ";" -#line 359 "parser.ypp" - { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2282 "parser.cpp" + case 54: // stmt_expr: %empty +#line 356 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } +#line 2293 "parser.cpp" break; - case 54: // stmt_assign: expr_decrement ";" + case 55: // stmt_call: expr_call ";" #line 361 "parser.ypp" + { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } +#line 2299 "parser.cpp" + break; + + case 56: // stmt_call: expr_method ";" +#line 363 "parser.ypp" + { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_method::ptr > ()))); } +#line 2305 "parser.cpp" + break; + + case 57: // stmt_assign: expr_assign ";" +#line 368 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2288 "parser.cpp" +#line 2311 "parser.cpp" break; - case 55: // stmt_endon: expr_object "endon" "(" expr ")" ";" -#line 366 "parser.ypp" + case 58: // stmt_assign: expr_increment ";" +#line 370 "parser.ypp" + { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 2317 "parser.cpp" + break; + + case 59: // stmt_assign: expr_decrement ";" +#line 372 "parser.ypp" + { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 2323 "parser.cpp" + break; + + case 60: // stmt_endon: expr_object "endon" "(" expr ")" ";" +#line 377 "parser.ypp" { yylhs.value.as < ast::stmt_endon::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ())); } -#line 2294 "parser.cpp" +#line 2329 "parser.cpp" break; - case 56: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" -#line 371 "parser.ypp" + case 61: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" +#line 382 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2300 "parser.cpp" +#line 2335 "parser.cpp" break; - case 57: // stmt_notify: expr_object "notify" "(" expr ")" ";" -#line 373 "parser.ypp" + case 62: // stmt_notify: expr_object "notify" "(" expr ")" ";" +#line 384 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2306 "parser.cpp" +#line 2341 "parser.cpp" break; - case 58: // stmt_wait: "wait" expr ";" -#line 378 "parser.ypp" + case 63: // stmt_wait: "wait" expr ";" +#line 389 "parser.ypp" { yylhs.value.as < ast::stmt_wait::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2312 "parser.cpp" +#line 2347 "parser.cpp" break; - case 59: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" -#line 383 "parser.ypp" + case 64: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" +#line 394 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2318 "parser.cpp" +#line 2353 "parser.cpp" break; - case 60: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" -#line 385 "parser.ypp" + case 65: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" +#line 396 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2324 "parser.cpp" +#line 2359 "parser.cpp" break; - case 61: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" -#line 390 "parser.ypp" + case 66: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" +#line 401 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2330 "parser.cpp" +#line 2365 "parser.cpp" break; - case 62: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" -#line 392 "parser.ypp" + case 67: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" +#line 403 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2336 "parser.cpp" +#line 2371 "parser.cpp" break; - case 63: // stmt_waittillframeend: "waittillframeend" ";" -#line 397 "parser.ypp" + case 68: // stmt_waittillframeend: "waittillframeend" ";" +#line 408 "parser.ypp" { yylhs.value.as < ast::stmt_waittillframeend::ptr > () = std::make_unique(yylhs.location); } -#line 2342 "parser.cpp" +#line 2377 "parser.cpp" break; - case 64: // stmt_if: "if" "(" expr ")" stmt -#line 402 "parser.ypp" + case 69: // stmt_if: "if" "(" expr ")" stmt +#line 413 "parser.ypp" { yylhs.value.as < ast::stmt_if::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2348 "parser.cpp" +#line 2383 "parser.cpp" break; - case 65: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 407 "parser.ypp" + case 70: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 418 "parser.ypp" { yylhs.value.as < ast::stmt_ifelse::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::stmt > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2354 "parser.cpp" +#line 2389 "parser.cpp" break; - case 66: // stmt_while: "while" "(" expr ")" stmt -#line 412 "parser.ypp" + case 71: // stmt_while: "while" "(" expr ")" stmt +#line 423 "parser.ypp" { yylhs.value.as < ast::stmt_while::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2360 "parser.cpp" +#line 2395 "parser.cpp" break; - case 67: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" -#line 417 "parser.ypp" + case 72: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" +#line 428 "parser.ypp" { yylhs.value.as < ast::stmt_dowhile::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[5].value.as < ast::stmt > ())); } -#line 2366 "parser.cpp" +#line 2401 "parser.cpp" break; - case 68: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt -#line 422 "parser.ypp" + case 73: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt +#line 433 "parser.ypp" { yylhs.value.as < ast::stmt_for::ptr > () = std::make_unique(yylhs.location, ast::stmt(std::move(yystack_[6].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[4].value.as < ast::expr > ()), ast::stmt(std::move(yystack_[2].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2372 "parser.cpp" +#line 2407 "parser.cpp" break; - case 69: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt -#line 427 "parser.ypp" + case 74: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt +#line 438 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2378 "parser.cpp" +#line 2413 "parser.cpp" break; - case 70: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt -#line 429 "parser.ypp" + case 75: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt +#line 440 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[6].value.as < ast::expr_identifier::ptr > ())), ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2384 "parser.cpp" +#line 2419 "parser.cpp" break; - case 71: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 434 "parser.ypp" + case 76: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 445 "parser.ypp" { yylhs.value.as < ast::stmt_switch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2390 "parser.cpp" +#line 2425 "parser.cpp" break; - case 72: // stmt_case: "case" expr_integer ":" -#line 439 "parser.ypp" + case 77: // stmt_case: "case" expr_integer ":" +#line 450 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_integer::ptr > ())), std::make_unique(yylhs.location)); } -#line 2396 "parser.cpp" +#line 2431 "parser.cpp" break; - case 73: // stmt_case: "case" expr_string ":" -#line 441 "parser.ypp" + case 78: // stmt_case: "case" expr_string ":" +#line 452 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_string::ptr > ())), std::make_unique(yylhs.location)); } -#line 2402 "parser.cpp" +#line 2437 "parser.cpp" break; - case 74: // stmt_default: "default" ":" -#line 446 "parser.ypp" + case 79: // stmt_default: "default" ":" +#line 457 "parser.ypp" { yylhs.value.as < ast::stmt_default::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2408 "parser.cpp" +#line 2443 "parser.cpp" break; - case 75: // stmt_break: "break" ";" -#line 451 "parser.ypp" + case 80: // stmt_break: "break" ";" +#line 462 "parser.ypp" { yylhs.value.as < ast::stmt_break::ptr > () = std::make_unique(yylhs.location); } -#line 2414 "parser.cpp" +#line 2449 "parser.cpp" break; - case 76: // stmt_continue: "continue" ";" -#line 456 "parser.ypp" + case 81: // stmt_continue: "continue" ";" +#line 467 "parser.ypp" { yylhs.value.as < ast::stmt_continue::ptr > () = std::make_unique(yylhs.location); } -#line 2420 "parser.cpp" +#line 2455 "parser.cpp" break; - case 77: // stmt_return: "return" expr ";" -#line 461 "parser.ypp" + case 82: // stmt_return: "return" expr ";" +#line 472 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2426 "parser.cpp" +#line 2461 "parser.cpp" break; - case 78: // stmt_return: "return" ";" -#line 463 "parser.ypp" + case 83: // stmt_return: "return" ";" +#line 474 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2432 "parser.cpp" +#line 2467 "parser.cpp" break; - case 79: // stmt_breakpoint: "breakpoint" ";" -#line 468 "parser.ypp" + case 84: // stmt_breakpoint: "breakpoint" ";" +#line 479 "parser.ypp" { yylhs.value.as < ast::stmt_breakpoint::ptr > () = std::make_unique(yylhs.location); } -#line 2438 "parser.cpp" +#line 2473 "parser.cpp" break; - case 80: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 473 "parser.ypp" - { yylhs.value.as < ast::stmt_prof_begin::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2444 "parser.cpp" - break; - - case 81: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 478 "parser.ypp" - { yylhs.value.as < ast::stmt_prof_end::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2450 "parser.cpp" - break; - - case 82: // expr: expr_ternary -#line 482 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2456 "parser.cpp" - break; - - case 83: // expr: expr_binary -#line 483 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2462 "parser.cpp" - break; - - case 84: // expr: expr_primitive + case 85: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" #line 484 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2468 "parser.cpp" + { yylhs.value.as < ast::stmt_prof_begin::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } +#line 2479 "parser.cpp" break; - case 85: // expr_or_empty: expr -#line 488 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2474 "parser.cpp" - break; - - case 86: // expr_or_empty: %empty + case 86: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" #line 489 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } -#line 2480 "parser.cpp" + { yylhs.value.as < ast::stmt_prof_end::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } +#line 2485 "parser.cpp" break; - case 87: // expr_assign: expr_object "=" expr + case 87: // expr: expr_ternary +#line 493 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2491 "parser.cpp" + break; + + case 88: // expr: expr_binary #line 494 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2486 "parser.cpp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2497 "parser.cpp" break; - case 88: // expr_assign: expr_object "|=" expr -#line 496 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2492 "parser.cpp" + case 89: // expr: expr_primitive +#line 495 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2503 "parser.cpp" break; - case 89: // expr_assign: expr_object "&=" expr -#line 498 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2498 "parser.cpp" + case 90: // expr_or_empty: expr +#line 499 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2509 "parser.cpp" break; - case 90: // expr_assign: expr_object "^=" expr + case 91: // expr_or_empty: %empty #line 500 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } +#line 2515 "parser.cpp" + break; + + case 92: // expr_assign: expr_object "=" expr +#line 505 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2521 "parser.cpp" + break; + + case 93: // expr_assign: expr_object "|=" expr +#line 507 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2527 "parser.cpp" + break; + + case 94: // expr_assign: expr_object "&=" expr +#line 509 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2533 "parser.cpp" + break; + + case 95: // expr_assign: expr_object "^=" expr +#line 511 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2504 "parser.cpp" +#line 2539 "parser.cpp" break; - case 91: // expr_assign: expr_object "<<=" expr -#line 502 "parser.ypp" + case 96: // expr_assign: expr_object "<<=" expr +#line 513 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()),std::move( yystack_[0].value.as < ast::expr > ())); } -#line 2510 "parser.cpp" +#line 2545 "parser.cpp" break; - case 92: // expr_assign: expr_object ">>=" expr -#line 504 "parser.ypp" + case 97: // expr_assign: expr_object ">>=" expr +#line 515 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2516 "parser.cpp" +#line 2551 "parser.cpp" break; - case 93: // expr_assign: expr_object "+=" expr -#line 506 "parser.ypp" + case 98: // expr_assign: expr_object "+=" expr +#line 517 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2522 "parser.cpp" +#line 2557 "parser.cpp" break; - case 94: // expr_assign: expr_object "-=" expr -#line 508 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2528 "parser.cpp" - break; - - case 95: // expr_assign: expr_object "*=" expr -#line 510 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2534 "parser.cpp" - break; - - case 96: // expr_assign: expr_object "/=" expr -#line 512 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2540 "parser.cpp" - break; - - case 97: // expr_assign: expr_object "%=" expr -#line 514 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2546 "parser.cpp" - break; - - case 98: // expr_increment: "++" expr_object + case 99: // expr_assign: expr_object "-=" expr #line 519 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2552 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2563 "parser.cpp" break; - case 99: // expr_increment: expr_object "++" + case 100: // expr_assign: expr_object "*=" expr #line 521 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2569 "parser.cpp" + break; + + case 101: // expr_assign: expr_object "/=" expr +#line 523 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2575 "parser.cpp" + break; + + case 102: // expr_assign: expr_object "%=" expr +#line 525 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2581 "parser.cpp" + break; + + case 103: // expr_increment: "++" expr_object +#line 530 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } +#line 2587 "parser.cpp" + break; + + case 104: // expr_increment: expr_object "++" +#line 532 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2558 "parser.cpp" +#line 2593 "parser.cpp" break; - case 100: // expr_decrement: "--" expr_object -#line 526 "parser.ypp" + case 105: // expr_decrement: "--" expr_object +#line 537 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2564 "parser.cpp" +#line 2599 "parser.cpp" break; - case 101: // expr_decrement: expr_object "--" -#line 528 "parser.ypp" + case 106: // expr_decrement: expr_object "--" +#line 539 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2570 "parser.cpp" +#line 2605 "parser.cpp" break; - case 102: // expr_ternary: expr "?" expr ":" expr -#line 533 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2576 "parser.cpp" - break; - - case 103: // expr_binary: expr "||" expr -#line 538 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2582 "parser.cpp" - break; - - case 104: // expr_binary: expr "&&" expr -#line 540 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2588 "parser.cpp" - break; - - case 105: // expr_binary: expr "==" expr -#line 542 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2594 "parser.cpp" - break; - - case 106: // expr_binary: expr "!=" expr + case 107: // expr_ternary: expr "?" expr ":" expr #line 544 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2611 "parser.cpp" + break; + + case 108: // expr_binary: expr "||" expr +#line 549 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2617 "parser.cpp" + break; + + case 109: // expr_binary: expr "&&" expr +#line 551 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2623 "parser.cpp" + break; + + case 110: // expr_binary: expr "==" expr +#line 553 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2629 "parser.cpp" + break; + + case 111: // expr_binary: expr "!=" expr +#line 555 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2600 "parser.cpp" +#line 2635 "parser.cpp" break; - case 107: // expr_binary: expr "<=" expr -#line 546 "parser.ypp" + case 112: // expr_binary: expr "<=" expr +#line 557 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2606 "parser.cpp" +#line 2641 "parser.cpp" break; - case 108: // expr_binary: expr ">=" expr -#line 548 "parser.ypp" + case 113: // expr_binary: expr ">=" expr +#line 559 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2612 "parser.cpp" +#line 2647 "parser.cpp" break; - case 109: // expr_binary: expr "<" expr -#line 550 "parser.ypp" + case 114: // expr_binary: expr "<" expr +#line 561 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2618 "parser.cpp" +#line 2653 "parser.cpp" break; - case 110: // expr_binary: expr ">" expr -#line 552 "parser.ypp" + case 115: // expr_binary: expr ">" expr +#line 563 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2624 "parser.cpp" +#line 2659 "parser.cpp" break; - case 111: // expr_binary: expr "|" expr -#line 554 "parser.ypp" + case 116: // expr_binary: expr "|" expr +#line 565 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2630 "parser.cpp" +#line 2665 "parser.cpp" break; - case 112: // expr_binary: expr "&" expr -#line 556 "parser.ypp" + case 117: // expr_binary: expr "&" expr +#line 567 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2636 "parser.cpp" +#line 2671 "parser.cpp" break; - case 113: // expr_binary: expr "^" expr -#line 558 "parser.ypp" + case 118: // expr_binary: expr "^" expr +#line 569 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2642 "parser.cpp" +#line 2677 "parser.cpp" break; - case 114: // expr_binary: expr "<<" expr -#line 560 "parser.ypp" + case 119: // expr_binary: expr "<<" expr +#line 571 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2648 "parser.cpp" +#line 2683 "parser.cpp" break; - case 115: // expr_binary: expr ">>" expr -#line 562 "parser.ypp" + case 120: // expr_binary: expr ">>" expr +#line 573 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2654 "parser.cpp" +#line 2689 "parser.cpp" break; - case 116: // expr_binary: expr "+" expr -#line 564 "parser.ypp" + case 121: // expr_binary: expr "+" expr +#line 575 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2660 "parser.cpp" +#line 2695 "parser.cpp" break; - case 117: // expr_binary: expr "-" expr -#line 566 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2666 "parser.cpp" - break; - - case 118: // expr_binary: expr "*" expr -#line 568 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2672 "parser.cpp" - break; - - case 119: // expr_binary: expr "/" expr -#line 570 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2678 "parser.cpp" - break; - - case 120: // expr_binary: expr "%" expr -#line 572 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2684 "parser.cpp" - break; - - case 121: // expr_primitive: expr_complement -#line 576 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } -#line 2690 "parser.cpp" - break; - - case 122: // expr_primitive: expr_not + case 122: // expr_binary: expr "-" expr #line 577 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } -#line 2696 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2701 "parser.cpp" break; - case 123: // expr_primitive: expr_call -#line 578 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 2702 "parser.cpp" - break; - - case 124: // expr_primitive: expr_method + case 123: // expr_binary: expr "*" expr #line 579 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 2708 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2707 "parser.cpp" break; - case 125: // expr_primitive: expr_add_array -#line 580 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } -#line 2714 "parser.cpp" - break; - - case 126: // expr_primitive: expr_reference + case 124: // expr_binary: expr "/" expr #line 581 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } -#line 2720 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2713 "parser.cpp" break; - case 127: // expr_primitive: expr_array -#line 582 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 2726 "parser.cpp" - break; - - case 128: // expr_primitive: expr_field + case 125: // expr_binary: expr "%" expr #line 583 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 2732 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2719 "parser.cpp" break; - case 129: // expr_primitive: expr_size -#line 584 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } -#line 2738 "parser.cpp" - break; - - case 130: // expr_primitive: expr_paren -#line 585 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } -#line 2744 "parser.cpp" - break; - - case 131: // expr_primitive: expr_thisthread -#line 586 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } -#line 2750 "parser.cpp" - break; - - case 132: // expr_primitive: expr_empty_array + case 126: // expr_primitive: expr_complement #line 587 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } -#line 2756 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } +#line 2725 "parser.cpp" break; - case 133: // expr_primitive: expr_undefined + case 127: // expr_primitive: expr_not #line 588 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } -#line 2762 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } +#line 2731 "parser.cpp" break; - case 134: // expr_primitive: expr_game + case 128: // expr_primitive: expr_call #line 589 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 2768 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 2737 "parser.cpp" break; - case 135: // expr_primitive: expr_self + case 129: // expr_primitive: expr_method #line 590 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 2774 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 2743 "parser.cpp" break; - case 136: // expr_primitive: expr_anim + case 130: // expr_primitive: expr_add_array #line 591 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 2780 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } +#line 2749 "parser.cpp" break; - case 137: // expr_primitive: expr_level + case 131: // expr_primitive: expr_reference #line 592 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 2786 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } +#line 2755 "parser.cpp" break; - case 138: // expr_primitive: expr_animation + case 132: // expr_primitive: expr_array #line 593 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } -#line 2792 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 2761 "parser.cpp" break; - case 139: // expr_primitive: expr_animtree + case 133: // expr_primitive: expr_field #line 594 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } -#line 2798 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 2767 "parser.cpp" break; - case 140: // expr_primitive: expr_identifier + case 134: // expr_primitive: expr_size #line 595 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 2804 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } +#line 2773 "parser.cpp" break; - case 141: // expr_primitive: expr_istring + case 135: // expr_primitive: expr_paren #line 596 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } -#line 2810 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } +#line 2779 "parser.cpp" break; - case 142: // expr_primitive: expr_string + case 136: // expr_primitive: expr_thisthread #line 597 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } -#line 2816 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } +#line 2785 "parser.cpp" break; - case 143: // expr_primitive: expr_color + case 137: // expr_primitive: expr_empty_array #line 598 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } -#line 2822 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } +#line 2791 "parser.cpp" break; - case 144: // expr_primitive: expr_vector + case 138: // expr_primitive: expr_undefined #line 599 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } -#line 2828 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } +#line 2797 "parser.cpp" break; - case 145: // expr_primitive: expr_float + case 139: // expr_primitive: expr_game #line 600 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } -#line 2834 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 2803 "parser.cpp" break; - case 146: // expr_primitive: expr_integer + case 140: // expr_primitive: expr_self #line 601 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } -#line 2840 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 2809 "parser.cpp" break; - case 147: // expr_primitive: expr_false + case 141: // expr_primitive: expr_anim #line 602 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } -#line 2846 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 2815 "parser.cpp" break; - case 148: // expr_primitive: expr_true + case 142: // expr_primitive: expr_level #line 603 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } -#line 2852 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 2821 "parser.cpp" break; - case 149: // expr_complement: "~" expr + case 143: // expr_primitive: expr_animation +#line 604 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } +#line 2827 "parser.cpp" + break; + + case 144: // expr_primitive: expr_animtree +#line 605 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } +#line 2833 "parser.cpp" + break; + + case 145: // expr_primitive: expr_identifier +#line 606 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 2839 "parser.cpp" + break; + + case 146: // expr_primitive: expr_istring +#line 607 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } +#line 2845 "parser.cpp" + break; + + case 147: // expr_primitive: expr_string #line 608 "parser.ypp" - { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2858 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } +#line 2851 "parser.cpp" break; - case 150: // expr_not: "!" expr + case 148: // expr_primitive: expr_color +#line 609 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } +#line 2857 "parser.cpp" + break; + + case 149: // expr_primitive: expr_vector +#line 610 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } +#line 2863 "parser.cpp" + break; + + case 150: // expr_primitive: expr_float +#line 611 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } +#line 2869 "parser.cpp" + break; + + case 151: // expr_primitive: expr_integer +#line 612 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } +#line 2875 "parser.cpp" + break; + + case 152: // expr_primitive: expr_false #line 613 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } +#line 2881 "parser.cpp" + break; + + case 153: // expr_primitive: expr_true +#line 614 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } +#line 2887 "parser.cpp" + break; + + case 154: // expr_complement: "~" expr +#line 619 "parser.ypp" + { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2893 "parser.cpp" + break; + + case 155: // expr_not: "!" expr +#line 624 "parser.ypp" { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2864 "parser.cpp" +#line 2899 "parser.cpp" break; - case 151: // expr_call: expr_function -#line 617 "parser.ypp" + case 156: // expr_call: expr_function +#line 628 "parser.ypp" { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2870 "parser.cpp" +#line 2905 "parser.cpp" break; - case 152: // expr_call: expr_pointer -#line 618 "parser.ypp" - { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2876 "parser.cpp" - break; - - case 153: // expr_method: expr_object expr_function -#line 621 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2882 "parser.cpp" - break; - - case 154: // expr_method: expr_object expr_pointer -#line 622 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2888 "parser.cpp" - break; - - case 155: // expr_function: expr_identifier "(" expr_arguments ")" -#line 627 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2894 "parser.cpp" - break; - - case 156: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" + case 157: // expr_call: expr_pointer #line 629 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2900 "parser.cpp" + { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } +#line 2911 "parser.cpp" break; - case 157: // expr_function: "thread" expr_identifier "(" expr_arguments ")" -#line 631 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2906 "parser.cpp" + case 158: // expr_method: expr_object expr_function +#line 632 "parser.ypp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 2917 "parser.cpp" break; - case 158: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" + case 159: // expr_method: expr_object expr_pointer #line 633 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2912 "parser.cpp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 2923 "parser.cpp" break; - case 159: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" -#line 635 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2918 "parser.cpp" + case 160: // expr_function: expr_identifier "(" expr_arguments ")" +#line 638 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 2929 "parser.cpp" break; - case 160: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 637 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2924 "parser.cpp" + case 161: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" +#line 640 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 2935 "parser.cpp" break; - case 161: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" + case 162: // expr_function: "thread" expr_identifier "(" expr_arguments ")" #line 642 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2930 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 2941 "parser.cpp" break; - case 162: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 163: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" #line 644 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2936 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 2947 "parser.cpp" break; - case 163: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 164: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" #line 646 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2942 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 2953 "parser.cpp" break; - case 164: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 165: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" #line 648 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::builtin); } -#line 2948 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 2959 "parser.cpp" break; - case 165: // expr_add_array: "[" expr_arguments_no_empty "]" + case 166: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" #line 653 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 2965 "parser.cpp" + break; + + case 167: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 655 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 2971 "parser.cpp" + break; + + case 168: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 657 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 2977 "parser.cpp" + break; + + case 169: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 659 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::builtin); } +#line 2983 "parser.cpp" + break; + + case 170: // expr_add_array: "[" expr_arguments_no_empty "]" +#line 664 "parser.ypp" { yylhs.value.as < ast::expr_add_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ())); } -#line 2954 "parser.cpp" +#line 2989 "parser.cpp" break; - case 166: // expr_parameters: expr_parameters "," expr_identifier -#line 658 "parser.ypp" - { yylhs.value.as < ast::expr_parameters::ptr > () = std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 2960 "parser.cpp" - break; - - case 167: // expr_parameters: expr_identifier -#line 660 "parser.ypp" - { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 2966 "parser.cpp" - break; - - case 168: // expr_parameters: %empty -#line 662 "parser.ypp" - { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } -#line 2972 "parser.cpp" - break; - - case 169: // expr_arguments: expr_arguments_no_empty -#line 667 "parser.ypp" - { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } -#line 2978 "parser.cpp" - break; - - case 170: // expr_arguments: %empty + case 171: // expr_parameters: expr_parameters "," expr_identifier #line 669 "parser.ypp" + { yylhs.value.as < ast::expr_parameters::ptr > () = std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } +#line 2995 "parser.cpp" + break; + + case 172: // expr_parameters: expr_identifier +#line 671 "parser.ypp" + { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } +#line 3001 "parser.cpp" + break; + + case 173: // expr_parameters: %empty +#line 673 "parser.ypp" + { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } +#line 3007 "parser.cpp" + break; + + case 174: // expr_arguments: expr_arguments_no_empty +#line 678 "parser.ypp" + { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } +#line 3013 "parser.cpp" + break; + + case 175: // expr_arguments: %empty +#line 680 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); } -#line 2984 "parser.cpp" +#line 3019 "parser.cpp" break; - case 171: // expr_arguments_no_empty: expr_arguments "," expr -#line 674 "parser.ypp" + case 176: // expr_arguments_no_empty: expr_arguments "," expr +#line 685 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ()); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2990 "parser.cpp" +#line 3025 "parser.cpp" break; - case 172: // expr_arguments_no_empty: expr -#line 676 "parser.ypp" + case 177: // expr_arguments_no_empty: expr +#line 687 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2996 "parser.cpp" +#line 3031 "parser.cpp" break; - case 173: // expr_reference: "::" expr_identifier -#line 681 "parser.ypp" + case 178: // expr_reference: "::" expr_identifier +#line 692 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3002 "parser.cpp" +#line 3037 "parser.cpp" break; - case 174: // expr_reference: expr_path "::" expr_identifier -#line 683 "parser.ypp" + case 179: // expr_reference: expr_path "::" expr_identifier +#line 694 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_path::ptr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3008 "parser.cpp" +#line 3043 "parser.cpp" break; - case 175: // expr_array: expr_object "[" expr "]" -#line 688 "parser.ypp" + case 180: // expr_array: expr_object "[" expr "]" +#line 699 "parser.ypp" { yylhs.value.as < ast::expr_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3014 "parser.cpp" +#line 3049 "parser.cpp" break; - case 176: // expr_field: expr_object "." expr_identifier -#line 693 "parser.ypp" + case 181: // expr_field: expr_object "." expr_identifier +#line 704 "parser.ypp" { yylhs.value.as < ast::expr_field::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3020 "parser.cpp" +#line 3055 "parser.cpp" break; - case 177: // expr_size: expr_object ".size" -#line 698 "parser.ypp" - { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3026 "parser.cpp" - break; - - case 178: // expr_paren: "(" expr ")" -#line 703 "parser.ypp" - { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3032 "parser.cpp" - break; - - case 179: // expr_object: expr_call -#line 707 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 3038 "parser.cpp" - break; - - case 180: // expr_object: expr_method -#line 708 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 3044 "parser.cpp" - break; - - case 181: // expr_object: expr_array + case 182: // expr_size: expr_object ".size" #line 709 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 3050 "parser.cpp" + { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3061 "parser.cpp" break; - case 182: // expr_object: expr_field -#line 710 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 3056 "parser.cpp" - break; - - case 183: // expr_object: expr_game -#line 711 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 3062 "parser.cpp" - break; - - case 184: // expr_object: expr_self -#line 712 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 3068 "parser.cpp" - break; - - case 185: // expr_object: expr_anim -#line 713 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 3074 "parser.cpp" - break; - - case 186: // expr_object: expr_level + case 183: // expr_paren: "(" expr ")" #line 714 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 3080 "parser.cpp" + { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3067 "parser.cpp" break; - case 187: // expr_object: expr_identifier -#line 715 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 3086 "parser.cpp" + case 184: // expr_object: expr_call +#line 718 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 3073 "parser.cpp" break; - case 188: // expr_thisthread: "thisthread" + case 185: // expr_object: expr_method +#line 719 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 3079 "parser.cpp" + break; + + case 186: // expr_object: expr_array #line 720 "parser.ypp" - { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } -#line 3092 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 3085 "parser.cpp" break; - case 189: // expr_empty_array: "[" "]" + case 187: // expr_object: expr_field +#line 721 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 3091 "parser.cpp" + break; + + case 188: // expr_object: expr_game +#line 722 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 3097 "parser.cpp" + break; + + case 189: // expr_object: expr_self +#line 723 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 3103 "parser.cpp" + break; + + case 190: // expr_object: expr_anim +#line 724 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 3109 "parser.cpp" + break; + + case 191: // expr_object: expr_level #line 725 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 3115 "parser.cpp" + break; + + case 192: // expr_object: expr_identifier +#line 726 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 3121 "parser.cpp" + break; + + case 193: // expr_thisthread: "thisthread" +#line 731 "parser.ypp" + { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } +#line 3127 "parser.cpp" + break; + + case 194: // expr_empty_array: "[" "]" +#line 736 "parser.ypp" { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } -#line 3098 "parser.cpp" +#line 3133 "parser.cpp" break; - case 190: // expr_undefined: "undefined" -#line 730 "parser.ypp" + case 195: // expr_undefined: "undefined" +#line 741 "parser.ypp" { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } -#line 3104 "parser.cpp" +#line 3139 "parser.cpp" break; - case 191: // expr_game: "game" -#line 735 "parser.ypp" + case 196: // expr_game: "game" +#line 746 "parser.ypp" { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } -#line 3110 "parser.cpp" +#line 3145 "parser.cpp" break; - case 192: // expr_self: "self" -#line 740 "parser.ypp" + case 197: // expr_self: "self" +#line 751 "parser.ypp" { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } -#line 3116 "parser.cpp" +#line 3151 "parser.cpp" break; - case 193: // expr_anim: "anim" -#line 745 "parser.ypp" + case 198: // expr_anim: "anim" +#line 756 "parser.ypp" { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } -#line 3122 "parser.cpp" +#line 3157 "parser.cpp" break; - case 194: // expr_level: "level" -#line 750 "parser.ypp" + case 199: // expr_level: "level" +#line 761 "parser.ypp" { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } -#line 3128 "parser.cpp" +#line 3163 "parser.cpp" break; - case 195: // expr_animation: "%" "identifier" -#line 755 "parser.ypp" + case 200: // expr_animation: "%" "identifier" +#line 766 "parser.ypp" { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3134 "parser.cpp" +#line 3169 "parser.cpp" break; - case 196: // expr_animtree: "#animtree" -#line 760 "parser.ypp" + case 201: // expr_animtree: "#animtree" +#line 771 "parser.ypp" { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } -#line 3140 "parser.cpp" +#line 3175 "parser.cpp" break; - case 197: // expr_identifier: "identifier" -#line 765 "parser.ypp" + case 202: // expr_identifier: "identifier" +#line 776 "parser.ypp" { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3146 "parser.cpp" +#line 3181 "parser.cpp" break; - case 198: // expr_path: "path" -#line 770 "parser.ypp" + case 203: // expr_path: "path" +#line 781 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3152 "parser.cpp" +#line 3187 "parser.cpp" break; - case 199: // expr_path: expr_identifier -#line 772 "parser.ypp" + case 204: // expr_path: expr_identifier +#line 783 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < ast::expr_identifier::ptr > ()->value); } -#line 3158 "parser.cpp" +#line 3193 "parser.cpp" break; - case 200: // expr_istring: "localized string" -#line 777 "parser.ypp" + case 205: // expr_istring: "localized string" +#line 788 "parser.ypp" { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3164 "parser.cpp" +#line 3199 "parser.cpp" break; - case 201: // expr_string: "string literal" -#line 782 "parser.ypp" + case 206: // expr_string: "string literal" +#line 793 "parser.ypp" { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3170 "parser.cpp" +#line 3205 "parser.cpp" break; - case 202: // expr_color: "color" -#line 787 "parser.ypp" + case 207: // expr_color: "color" +#line 798 "parser.ypp" { yylhs.value.as < ast::expr_color::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3176 "parser.cpp" +#line 3211 "parser.cpp" break; - case 203: // expr_vector: "(" expr "," expr "," expr ")" -#line 792 "parser.ypp" + case 208: // expr_vector: "(" expr "," expr "," expr ")" +#line 803 "parser.ypp" { yylhs.value.as < ast::expr_vector::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3182 "parser.cpp" +#line 3217 "parser.cpp" break; - case 204: // expr_float: "-" "float" -#line 797 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3188 "parser.cpp" - break; - - case 205: // expr_float: "float" -#line 799 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3194 "parser.cpp" - break; - - case 206: // expr_integer: "-" "int" -#line 804 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3200 "parser.cpp" - break; - - case 207: // expr_integer: "int" -#line 806 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3206 "parser.cpp" - break; - - case 208: // expr_integer: "octal int" + case 209: // expr_float: "-" "float" #line 808 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3212 "parser.cpp" + { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 3223 "parser.cpp" break; - case 209: // expr_integer: "binary int" + case 210: // expr_float: "float" #line 810 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3218 "parser.cpp" + { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3229 "parser.cpp" break; - case 210: // expr_integer: "hexadecimal int" -#line 812 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3224 "parser.cpp" + case 211: // expr_integer: "-" "int" +#line 815 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 3235 "parser.cpp" break; - case 211: // expr_false: "false" + case 212: // expr_integer: "int" #line 817 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3241 "parser.cpp" + break; + + case 213: // expr_integer: "octal int" +#line 819 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3247 "parser.cpp" + break; + + case 214: // expr_integer: "binary int" +#line 821 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3253 "parser.cpp" + break; + + case 215: // expr_integer: "hexadecimal int" +#line 823 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3259 "parser.cpp" + break; + + case 216: // expr_false: "false" +#line 828 "parser.ypp" { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } -#line 3230 "parser.cpp" +#line 3265 "parser.cpp" break; - case 212: // expr_true: "true" -#line 822 "parser.ypp" + case 217: // expr_true: "true" +#line 833 "parser.ypp" { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } -#line 3236 "parser.cpp" +#line 3271 "parser.cpp" break; -#line 3240 "parser.cpp" +#line 3275 "parser.cpp" default: break; @@ -3420,11 +3455,11 @@ namespace xsk { namespace gsc { namespace iw6 { { static const char *const yy_sname[] = { - "end of file", "error", "invalid token", "#inline", "#include", - "#using_animtree", "#animtree", "endon", "notify", "wait", "waittill", - "waittillmatch", "waittillframeend", "if", "else", "do", "while", "for", - "foreach", "in", "switch", "case", "default", "break", "continue", - "return", "breakpoint", "prof_begin", "prof_end", "thread", + "end of file", "error", "invalid token", "/#", "#/", "#inline", + "#include", "#using_animtree", "#animtree", "endon", "notify", "wait", + "waittill", "waittillmatch", "waittillframeend", "if", "else", "do", + "while", "for", "foreach", "in", "switch", "case", "default", "break", + "continue", "return", "breakpoint", "prof_begin", "prof_end", "thread", "childthread", "thisthread", "call", "true", "false", "undefined", ".size", "game", "self", "anim", "level", "(", ")", "{", "}", "[", "]", ",", ".", "::", ":", ";", "?", "++", "--", "<<", ">>", "||", "&&", "==", @@ -3435,8 +3470,8 @@ namespace xsk { namespace gsc { namespace iw6 { "ADD_ARRAY", "THEN", "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", "$accept", "root", "program", "inline", "include", "declaration", "decl_usingtree", "decl_constant", "decl_thread", "stmt", - "stmt_block", "stmt_list", "stmt_expr", "stmt_call", "stmt_assign", - "stmt_endon", "stmt_notify", "stmt_wait", "stmt_waittill", + "stmt_dev", "stmt_block", "stmt_list", "stmt_expr", "stmt_call", + "stmt_assign", "stmt_endon", "stmt_notify", "stmt_wait", "stmt_waittill", "stmt_waittillmatch", "stmt_waittillframeend", "stmt_if", "stmt_ifelse", "stmt_while", "stmt_dowhile", "stmt_for", "stmt_foreach", "stmt_switch", "stmt_case", "stmt_default", "stmt_break", "stmt_continue", @@ -3716,666 +3751,715 @@ namespace xsk { namespace gsc { namespace iw6 { } - const short parser::yypact_ninf_ = -254; + const short parser::yypact_ninf_ = -261; - const short parser::yytable_ninf_ = -200; + const short parser::yytable_ninf_ = -205; const short parser::yypact_[] = { - 13, 19, 19, -11, -254, 21, 13, -254, -254, -254, - -254, -254, -254, -10, -254, -254, -5, 7, -24, -254, - -254, -254, -254, -26, 800, -254, -254, -254, 26, 2, - -254, -254, -20, -17, -254, 31, -254, -254, -254, -254, - -254, -254, -254, 800, 666, -26, 800, 800, 24, -2, - -254, -254, -254, -254, -254, -254, -254, 1820, -254, -254, - -254, -254, -254, 160, 425, -254, -254, -254, -254, 468, - 562, -254, -254, 756, -254, -254, -254, 764, 823, 831, - 891, -254, -254, 11, 39, -254, -254, -254, -254, -254, - -254, -254, -254, 45, 56, -26, 58, 41, 64, 62, - 91, 85, 88, 1106, 666, -254, 1903, 97, 108, -254, - -254, -254, -254, -254, -254, -254, 800, 800, 800, 800, - 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, - 800, 800, 800, 800, 800, -254, 867, -26, -254, -254, - 105, 107, 800, -26, -254, 994, -254, -254, 800, 800, - -26, 800, 800, -26, 800, -254, 800, 1550, 800, -254, - 1785, 167, 167, 1934, 1944, 2026, 2026, 37, 37, 37, - 37, 1975, 2016, 1985, -30, -30, -254, -254, -254, 1590, - -254, -26, 33, -254, 119, 800, 111, 129, 1096, 130, - 138, 139, 142, 73, 113, 136, 148, 733, 151, 152, - 170, -254, 169, 72, 72, -254, -254, 1045, -254, -254, - -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, - -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, - -254, 161, 172, 175, 176, 179, -254, -254, 918, -254, - -254, -254, -254, -27, 1630, 44, 183, 1670, 47, 190, - 1710, 1749, 189, 1903, 800, -254, 119, -254, 800, 1855, - -254, 800, 220, 800, -3, -26, 800, 145, 191, 192, - -254, -254, -254, -254, 1890, -254, 800, 800, 800, -254, - -254, 42, 42, -254, -254, -254, -254, -254, -254, -254, - 202, 204, 212, 213, -254, -254, 800, 800, 800, 800, - 800, 800, 800, 800, 800, 800, 800, 209, -254, 800, - 210, -254, 800, 211, 800, 218, 1903, 83, -254, 1272, - 219, 1306, 216, -254, -254, -254, 494, 1, 1340, -254, - -254, -254, 84, 93, 1550, 800, 800, 800, 800, 1903, - 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, - 222, 94, 227, 100, 228, 1374, 800, -254, 1096, 800, - 1096, 800, 800, -26, 56, 221, 226, 1408, 1150, 1194, - 1238, 800, -254, 800, -254, 800, -254, 122, 247, 1442, - -254, 1903, 232, 1476, 252, -254, -254, -254, 233, 234, - 800, 238, 800, 239, 800, 144, 153, 173, -254, 1096, - 240, -3, 1096, 800, -254, -254, 250, -254, 251, -254, - 253, -254, -254, -254, -254, -254, 275, -254, 1510, 269, - 272, 273, 1096, 1096, -254, -254, -254, -254, -254 + 17, -261, -261, -61, -61, -12, -261, 42, 17, -261, + -261, -261, -261, -261, -261, -17, -261, -261, -36, 15, + -16, -261, -261, -261, -261, -8, 911, -261, -261, -261, + 38, 18, -261, -261, -40, -33, -261, 41, -261, -261, + -261, -261, -261, -261, -261, 911, 777, -8, 911, 911, + -43, 1, -261, -261, -261, -261, -261, -261, -261, 2063, + -261, -261, -261, -261, -261, 69, 347, -261, -261, -261, + -261, 507, 710, -261, -261, 734, -261, -261, -261, 742, + 801, 867, 875, -261, -261, 26, 45, -261, -261, -261, + -261, -261, -261, -261, -261, 49, 53, -8, 58, 66, + 60, 70, 77, 89, 90, 1389, 777, -261, 2146, 95, + 103, -261, -261, -261, -261, -261, -261, -261, 911, 911, + 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, + 911, 911, 911, 911, 911, 911, 911, -261, 978, -8, + -261, -261, 117, 112, 911, -8, -261, 1073, -261, -261, + 911, 911, -8, 911, 911, -8, 911, -261, 911, 974, + 911, -261, 2028, 162, 162, 2177, 2187, 1059, 1059, 8, + 8, 8, 8, 2218, 2259, 2228, -15, -15, -261, -261, + -261, 1833, -261, -8, 36, -261, 123, 1149, 911, 120, + 125, 1327, 128, 132, 134, 135, 28, 127, 131, 133, + 844, 136, 145, 150, -261, 147, 570, 570, -261, -261, + -261, 1200, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, 142, 144, 146, 148, 149, + -261, -261, 642, -261, -261, -261, -261, -10, 1873, 55, + 155, 1913, 64, 160, 1953, 1992, 156, 2146, 911, -261, + 123, -261, 911, -261, 1276, 2098, -261, 911, 190, 911, + -2, -8, 911, 111, 158, 167, -261, -261, -261, -261, + 2133, -261, 911, 911, 911, -261, -261, 438, 438, -261, + -261, -261, -261, -261, -261, -261, 166, 169, 171, 180, + -261, -261, 911, 911, 911, 911, 911, 911, 911, 911, + 911, 911, 911, 176, -261, 911, 177, -261, 911, 178, + 911, 185, 2146, 82, -261, -261, 1555, 186, 1589, 188, + -261, -261, -261, 1353, -3, 1623, -261, -261, -261, 83, + 84, 974, 911, 911, 911, 911, 2146, 2146, 2146, 2146, + 2146, 2146, 2146, 2146, 2146, 2146, 2146, 197, 85, 200, + 86, 207, 1657, 911, -261, 1327, 911, 1327, 911, 911, + -8, 53, 199, 203, 1691, 1433, 1477, 1521, 911, -261, + 911, -261, 911, -261, 94, 214, 1725, -261, 2146, 204, + 1759, 232, -261, -261, -261, 205, 206, 911, 208, 911, + 209, 911, 97, 115, 118, -261, 1327, 212, -2, 1327, + 911, -261, -261, 216, -261, 222, -261, 224, -261, -261, + -261, -261, -261, 225, -261, 1793, 219, 221, 223, 1327, + 1327, -261, -261, -261, -261, -261 }; const unsigned char parser::yydefact_[] = { - 3, 0, 0, 0, 197, 0, 2, 7, 8, 9, - 12, 13, 14, 0, 198, 199, 0, 0, 0, 1, - 4, 5, 6, 168, 0, 10, 11, 201, 0, 0, - 167, 196, 0, 0, 188, 0, 212, 211, 190, 191, - 192, 193, 194, 0, 170, 0, 0, 0, 0, 0, - 200, 202, 205, 207, 208, 209, 210, 0, 82, 83, - 84, 121, 122, 123, 124, 151, 152, 125, 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, 0, 0, 0, 0, 199, 0, 0, - 199, 0, 0, 0, 170, 189, 172, 0, 169, 173, - 150, 149, 204, 206, 195, 16, 0, 0, 0, 0, + 3, 12, 13, 0, 0, 0, 202, 0, 2, 7, + 8, 9, 14, 15, 16, 0, 203, 204, 0, 0, + 0, 1, 4, 5, 6, 173, 0, 10, 11, 206, + 0, 0, 172, 201, 0, 0, 193, 0, 217, 216, + 195, 196, 197, 198, 199, 0, 175, 0, 0, 0, + 0, 0, 205, 207, 210, 212, 213, 214, 215, 0, + 87, 88, 89, 126, 127, 128, 129, 156, 157, 130, + 131, 132, 133, 134, 135, 0, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 0, 146, 147, 148, + 149, 150, 151, 152, 153, 0, 0, 0, 0, 204, + 0, 0, 204, 0, 0, 0, 175, 194, 177, 0, + 174, 178, 155, 154, 209, 211, 200, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 177, 0, 0, 153, 154, - 199, 0, 170, 0, 15, 0, 17, 166, 0, 170, - 0, 0, 170, 0, 0, 178, 0, 172, 0, 165, - 0, 114, 115, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 116, 117, 118, 119, 120, 0, - 176, 0, 0, 169, 174, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 182, 0, 0, + 158, 159, 204, 0, 175, 0, 17, 0, 19, 171, + 0, 175, 0, 0, 175, 0, 0, 183, 0, 177, + 0, 170, 0, 119, 120, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 121, 122, 123, 124, + 125, 0, 181, 0, 0, 174, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 43, 0, 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, 0, 0, 179, 180, 181, 182, 0, 183, - 184, 185, 186, 187, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 171, 0, 175, 0, 155, 170, 0, - 63, 0, 0, 0, 49, 0, 0, 0, 0, 0, - 74, 75, 76, 78, 0, 79, 170, 170, 0, 179, - 180, 98, 100, 42, 44, 52, 53, 54, 50, 51, - 0, 0, 0, 0, 99, 101, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 157, 170, - 0, 159, 170, 0, 0, 0, 102, 0, 58, 0, - 0, 0, 0, 46, 47, 48, 0, 0, 0, 73, - 72, 77, 0, 0, 0, 0, 0, 0, 0, 87, - 93, 94, 95, 96, 97, 88, 89, 90, 92, 91, - 0, 0, 0, 0, 0, 0, 170, 156, 0, 0, - 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 170, 158, 170, 160, 170, 203, 0, 64, 0, - 66, 85, 0, 0, 0, 71, 80, 81, 0, 0, - 170, 0, 170, 0, 170, 0, 0, 0, 161, 0, - 0, 49, 0, 0, 55, 57, 169, 60, 169, 62, - 169, 162, 163, 164, 65, 67, 0, 69, 0, 0, - 0, 0, 0, 0, 56, 59, 61, 68, 70 + 0, 0, 0, 0, 48, 0, 0, 0, 50, 20, + 21, 0, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 0, 0, 0, 184, 185, + 186, 187, 0, 188, 189, 190, 191, 192, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 176, 0, 180, + 0, 160, 175, 46, 0, 0, 68, 0, 0, 0, + 54, 0, 0, 0, 0, 0, 79, 80, 81, 83, + 0, 84, 175, 175, 0, 184, 185, 103, 105, 47, + 49, 57, 58, 59, 55, 56, 0, 0, 0, 0, + 104, 106, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 162, 175, 0, 164, 175, 0, + 0, 0, 107, 0, 45, 63, 0, 0, 0, 0, + 51, 52, 53, 0, 0, 0, 78, 77, 82, 0, + 0, 0, 0, 0, 0, 0, 92, 98, 99, 100, + 101, 102, 93, 94, 95, 97, 96, 0, 0, 0, + 0, 0, 0, 175, 161, 0, 0, 0, 91, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 175, 163, + 175, 165, 175, 208, 0, 69, 0, 71, 90, 0, + 0, 0, 76, 85, 86, 0, 0, 175, 0, 175, + 0, 175, 0, 0, 0, 166, 0, 0, 54, 0, + 0, 60, 62, 174, 65, 174, 67, 174, 167, 168, + 169, 70, 72, 0, 74, 0, 0, 0, 0, 0, + 0, 61, 64, 66, 73, 75 }; const short parser::yypgoto_[] = { - -254, -254, -254, 288, 319, 322, -254, -254, -254, -183, - -90, -254, -122, -254, -254, -254, -254, -254, -254, -254, - -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, - -254, -254, -254, -254, -254, -254, 182, -254, -253, -252, - -249, -254, -254, -254, -254, -254, -126, -80, -64, -60, - -254, -254, 300, -41, -254, -31, -6, -254, -254, 230, - -254, -254, -254, 237, 243, 268, 318, -254, -254, 0, - 6, -254, -8, -254, -254, -254, 141, -254, -254 + -261, -261, -261, 267, 274, 275, -261, -261, -261, -175, + -261, -94, 98, -124, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, 187, -261, -260, + -259, -255, -261, -261, -261, -261, -261, -128, -37, -70, + -66, -261, -261, 425, -45, -261, -26, 157, -261, -261, + 241, -261, -261, -261, 255, 273, 329, 361, -261, -261, + 0, 9, -261, -14, -261, -261, -261, 93, -261, -261 }; const short parser::yydefgoto_[] = { - 0, 5, 6, 7, 8, 9, 10, 11, 12, 205, - 206, 207, 322, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 106, 382, 231, 232, - 233, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 29, 107, 183, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92 + 0, 7, 8, 9, 10, 11, 12, 13, 14, 208, + 209, 210, 211, 329, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 108, 389, 235, + 236, 237, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 31, 109, 185, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94 }; const short parser::yytable_[] = { - 13, 15, 15, 108, 146, 262, 13, 16, 17, 138, - 28, 323, 324, 139, 142, 325, 1, 2, 3, 234, - 362, 19, -199, 30, 284, 96, 32, 33, 99, 35, - 18, 23, 97, 100, 39, 40, 41, 42, 98, 101, - -187, -187, 202, -187, 94, 109, 25, -187, 363, 95, - 203, 204, 142, 132, 133, 134, -187, 24, 26, -187, - -199, 4, 234, 108, 27, 235, 14, 4, 93, 14, - 4, 32, 33, 140, 35, 257, 102, 279, 279, 141, - 158, 234, 149, 14, 4, 114, 308, 136, 143, 311, - 137, 158, 117, 118, 158, 147, 144, -187, -187, 145, - 4, 32, 33, 148, 35, 14, 4, 151, 235, 39, - 40, 41, 42, 150, 236, 112, 113, 202, 130, 131, - 132, 133, 134, 280, 280, 357, 365, 235, 14, 4, - 158, 158, 152, 154, 153, 366, 372, 180, 279, 237, - 158, 158, 374, 184, 158, 243, 142, 158, 323, 324, - 246, 141, 325, 249, 159, 267, 181, 236, 14, 4, - 258, 27, 260, 270, 398, 53, 54, 55, 56, 158, - 261, 263, 236, 236, 138, 378, 236, 380, 139, 264, - 265, 256, 237, 266, 280, 268, 411, 271, 243, -179, - -179, 158, -179, 276, 141, 412, -179, 237, 237, 272, - 158, 237, 275, 243, 243, -179, 57, 243, -179, 141, - 141, 277, 285, 141, 278, 413, 414, 138, 138, 417, - 158, 139, 139, 286, 309, 103, 287, 288, 110, 111, - 289, 312, 234, 236, 234, 315, 320, 113, 140, 427, - 428, 329, 330, 335, 141, 336, -179, -179, 130, 131, - 132, 133, 134, 337, 338, 350, 352, 354, 237, 356, - 359, 399, 138, 371, 243, 327, 139, 361, 373, 375, - 141, 403, 386, 234, 385, 279, 234, 387, 235, 416, - 235, 140, 140, 401, 404, 405, 157, 141, 141, 407, - 409, 415, 419, 420, 20, 421, 234, 234, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 422, 179, 235, - 424, 280, 235, 425, 426, 21, 140, 236, 22, 236, - 244, 0, 141, 247, 269, 0, 250, 0, 251, 0, - 253, 0, 235, 235, 0, 0, 0, 0, 0, 406, - 0, 408, 237, 410, 237, 0, 0, 0, 243, 0, - 243, 0, 0, 384, 141, 0, 141, 259, 236, 0, - 236, 236, 0, 0, 0, 238, 0, 0, 0, 274, - 0, 0, 239, 0, 0, 0, 0, 0, 240, 0, - 0, 236, 236, 237, 0, 237, 237, 0, 0, 243, - 0, 243, 243, 0, 0, 141, 0, 141, 141, 0, - 0, 0, 0, 241, 0, 0, 237, 237, 238, 0, - 0, 0, 243, 243, 0, 239, 0, 0, 141, 141, - 0, 240, 0, 281, 282, 0, 316, 238, 0, 0, - 239, 239, 182, 319, 239, 321, 240, 240, 328, 245, - 240, 0, 248, 0, -180, -180, 241, -180, 0, 0, - 334, -180, 0, 242, 0, 0, 0, 0, 0, 0, - -180, 241, 241, -180, 0, 241, 0, 0, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 0, - 0, 0, 0, 0, 326, 0, 355, -181, -181, 0, - -181, 239, 0, 0, -181, 0, 242, 240, 0, 0, - 0, -180, -180, -181, 0, 0, -181, 367, 368, 369, - 370, 242, 242, 32, 33, 242, 35, 0, 0, 0, - 0, 0, 241, 0, 0, 0, 0, 0, 0, 136, - 0, 379, 137, 381, 383, 0, 0, 294, 295, 0, - 0, 0, 0, 0, -181, -181, 0, 0, 317, 0, - 0, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 0, 0, 0, 0, 332, 333, 0, 0, - 14, 4, 242, 0, 0, 418, 0, 0, 238, 0, - 238, -182, -182, 0, -182, 239, 0, 239, -182, 0, - 0, 240, 0, 240, 0, 0, 0, -182, 0, 351, - -182, 0, 353, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 241, 0, 241, 238, - 0, 326, 238, 0, 0, 0, 239, 0, 239, 239, - 0, 0, 240, 0, 240, 240, 0, 0, -182, -182, - 0, 0, 238, 238, 0, 0, 377, 0, 0, 239, - 239, 0, 0, 0, 0, 240, 240, 241, 0, 241, - 241, 395, 31, 396, 0, 397, 242, 0, 242, 0, + 15, 110, 148, 17, 17, 140, 30, 98, 15, 141, + 330, 331, 18, 19, 101, 332, 268, 27, 369, 238, + 1, 2, 3, 4, 5, 32, 25, 16, 6, 34, + 35, 20, 37, 144, 99, 102, 290, 41, 42, 43, + 44, -204, 21, 100, 103, 205, 370, 111, 16, 6, + 114, 115, 26, 206, 207, 16, 6, -192, -192, 238, + -192, 110, 96, 238, -192, 119, 120, 97, 28, 144, + 134, 135, 136, -192, 29, 142, -192, -204, 285, 285, + 261, 6, 95, 238, 143, 160, 16, 6, 104, 290, + 116, 132, 133, 134, 135, 136, 145, 149, 147, 314, + -184, -184, 146, -184, 160, 150, 6, -184, 317, 151, + 239, 152, 273, 160, -192, -192, -184, 153, 29, -184, + 154, 240, 55, 56, 57, 58, 364, 372, 373, 379, + 381, 160, 160, 160, 160, 160, 238, 156, 405, 182, + 155, 418, 285, 160, 160, 186, 160, 247, 330, 331, + 239, 161, 250, 332, 239, 253, 143, -184, -184, 419, + 144, 240, 420, 183, 160, 240, 262, 160, 267, 286, + 286, 269, 140, 266, 239, 270, 141, 271, 272, 276, + 240, 240, 274, 260, 277, 240, 278, 247, 282, 281, + 385, 247, 387, 283, 284, 291, 143, 292, 315, 293, + 143, 294, 295, 318, 321, 115, 247, 247, 327, 342, + 336, 247, 343, 59, 344, 143, 143, 140, 140, 337, + 143, 141, 141, 345, 357, 359, 361, 239, 363, 366, + 406, 421, 105, 286, 424, 112, 113, 238, 240, 238, + 378, 368, 142, 380, 240, 132, 133, 134, 135, 136, + 382, 143, 393, 410, 434, 435, 394, 408, 411, 412, + 426, 414, 416, 140, 247, 422, 427, 141, 428, 429, + 247, 334, 431, 143, 432, 22, 433, 392, 238, 143, + 285, 238, 23, 24, 423, 264, 0, 142, 142, 275, + 0, 0, 0, 159, 0, 0, 143, 143, 0, 0, + 0, 238, 238, 0, 241, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 0, 181, 0, 0, 239, 0, + 239, 0, 0, 142, 0, 0, 0, 248, 0, 240, + 251, 240, 143, 254, 241, 255, 0, 257, 241, 0, + 0, 0, 413, 0, 415, 0, 417, 0, 0, 0, + 0, 0, 0, 241, 241, 247, 0, 247, 241, 239, + 391, 286, 239, 0, 143, 265, 143, 0, -185, -185, + 240, -185, 240, 240, 0, -185, 0, 280, 242, 0, + 0, 0, 239, 239, -185, 0, 0, -185, 0, 0, + 0, 0, 243, 240, 240, 0, 247, 0, 247, 247, + 0, 0, 0, 0, 0, 143, 0, 143, 143, 0, + 244, 241, 0, 0, 0, 0, 0, 241, 242, 247, + 247, 0, 242, 0, 0, -185, -185, 0, 143, 143, + 0, 0, 243, 0, 0, 322, 243, 287, 288, 0, + 0, 0, 242, 0, 326, 0, 328, 0, 0, 335, + 244, 243, 243, 0, 244, 0, 243, 0, 0, 34, + 35, 341, 37, 0, 0, 0, 245, 0, 0, 244, + 244, 0, 0, 0, 244, 138, 0, 0, 139, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 0, 0, 0, 0, 0, 242, 0, 362, 246, 0, + 0, 333, 0, 0, 0, 0, 245, 0, 0, 243, + 245, 0, 241, 0, 241, 243, 16, 6, 0, 374, + 375, 376, 377, 0, 0, 245, 245, 244, -186, -186, + 245, -186, 0, 244, 0, -186, 0, 0, 246, 0, + 0, 0, 246, 386, -186, 388, 390, -186, 0, 0, + 0, 0, 0, 241, 0, 241, 241, 246, 246, 184, + 0, 0, 246, 0, 0, 0, 249, 0, 0, 252, + 0, 0, 0, 0, 0, 0, 241, 241, 0, 0, + 0, 0, 0, 245, 0, -186, -186, 425, 0, 245, + 0, 34, 35, 0, 37, 0, 242, 0, 242, 41, + 42, 43, 44, 0, 0, 0, 0, 205, 0, 0, + 243, 0, 243, 0, 0, 246, 0, 0, 0, 0, + 0, 246, 0, 0, 0, 0, 0, 0, 244, 0, + 244, 0, 0, 0, 0, 0, 0, 242, 0, 333, + 242, 296, 297, 0, 298, 299, 0, 0, 16, 6, + 0, 243, 0, 243, 243, 0, 0, 0, 0, 0, + 242, 242, 0, 34, 35, 0, 37, 0, 0, 244, + 0, 244, 244, 0, 243, 243, 0, 323, 0, 138, + 0, 0, 139, 0, 245, 0, 245, 300, 301, 0, + 0, 0, 244, 244, 0, 0, 0, 339, 340, 0, + 0, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 0, 0, 0, 0, 246, 0, 246, 0, + 16, 6, 0, 0, 0, 245, 0, 245, 245, 0, + 358, -187, -187, 360, -187, 0, 0, 0, -187, 0, + 0, 0, 0, 0, 0, 0, 0, -187, 245, 245, + -187, 0, 0, 0, 0, 34, 35, 246, 37, 246, + 246, 0, 137, -188, -188, 0, -188, 0, 0, 0, + -188, 138, 0, 0, 139, 33, 0, 0, 384, -188, + 246, 246, -188, 0, 0, 0, 0, 0, -187, -187, + 0, 0, 0, 402, 0, 403, 0, 404, 34, 35, + 36, 37, 38, 39, 40, 0, 41, 42, 43, 44, + 45, 0, 16, 6, 106, 107, 0, 0, 47, 0, + -188, -188, -189, -189, 0, -189, 0, 0, 0, -189, + 0, 0, 0, 0, 48, 49, 0, 0, -189, 0, + 0, -189, 33, 0, 0, 0, 0, 0, 0, 0, + 0, 50, 0, 0, 51, 16, 6, 29, 52, 53, + 54, 55, 56, 57, 58, 34, 35, 36, 37, 38, + 39, 40, 0, 41, 42, 43, 44, 45, 0, -189, + -189, 46, 0, 0, 0, 47, 0, 279, -190, -190, + 0, -190, 0, 0, 0, -190, -191, -191, 0, -191, + 0, 48, 49, -191, -190, 0, 0, -190, 0, 33, + 0, 0, -191, 0, 0, -191, 0, 0, 50, 0, + 0, 51, 16, 6, 29, 52, 53, 54, 55, 56, + 57, 58, 34, 35, 36, 37, 38, 39, 40, 0, + 41, 42, 43, 44, 45, -190, -190, 0, 46, 0, + 0, 0, 47, -191, -191, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, + 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, + 0, 0, 0, 0, 0, 50, 0, 0, 51, 16, + 6, 29, 52, 53, 54, 55, 56, 57, 58, 34, + 35, 36, 37, 38, 39, 40, 0, 41, 42, 43, + 44, 45, 256, 0, 0, 106, 0, 0, 118, 47, + 0, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 0, 0, 0, 0, 48, 49, 0, 0, 0, + 0, 0, 0, 0, 129, 130, 131, 132, 133, 134, + 135, 136, 50, 0, 0, 51, 16, 6, 29, 52, + 53, 54, 55, 56, 57, 58, 187, 0, 0, 0, + 0, 0, 0, 0, 188, 0, 0, 189, 190, 0, + 191, 192, 193, 194, 0, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 34, 35, 0, 37, 0, 0, + 0, 0, 41, 42, 43, 44, 119, 120, 147, 204, + 205, 0, 125, 126, 127, 128, 0, 0, 206, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 241, 241, 0, 0, 0, 32, 33, 34, 35, 36, - 37, 38, 0, 39, 40, 41, 42, 43, 0, 0, - 0, 104, 105, 0, 0, 45, 0, 242, 0, 242, - 242, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 46, 47, 0, 0, 0, 0, 0, 0, 31, - 242, 242, 0, 0, 0, 0, 0, 0, 48, 0, - 0, 49, 14, 4, 27, 50, 51, 52, 53, 54, - 55, 56, 32, 33, 34, 35, 36, 37, 38, 0, - 39, 40, 41, 42, 43, 0, 0, 0, 44, 0, - 0, 0, 45, 0, 273, 32, 33, 0, 35, 0, - 0, 0, 135, -183, -183, 0, -183, 0, 46, 47, - -183, 136, 0, 0, 137, 0, 31, 0, 0, -183, - 0, 0, -183, 0, 0, 48, 0, 0, 49, 14, - 4, 27, 50, 51, 52, 53, 54, 55, 56, 32, - 33, 34, 35, 36, 37, 38, 0, 39, 40, 41, - 42, 43, 14, 4, 0, 44, 0, 0, 0, 45, - -183, -183, -184, -184, 0, -184, 0, 0, 0, -184, - -185, -185, 0, -185, 0, 46, 47, -185, -184, 0, - 0, -184, 0, 31, 0, 0, -185, 0, 0, -185, - 0, 0, 48, 0, 0, 49, 14, 4, 27, 50, - 51, 52, 53, 54, 55, 56, 32, 33, 34, 35, - 36, 37, 38, 0, 39, 40, 41, 42, 43, -184, - -184, 0, 104, 0, 0, 0, 45, -185, -185, 0, - -186, -186, 0, -186, 0, 290, 291, -186, 292, 293, - 0, 0, 46, 47, 0, 0, -186, 0, 0, -186, - 0, 0, 0, 0, 0, 0, 0, 32, 33, 48, - 35, 0, 49, 14, 4, 27, 50, 51, 52, 53, - 54, 55, 56, 136, 0, 0, 137, 0, 0, 0, - 0, 294, 295, 0, 0, 0, 0, -186, -186, 0, - 0, 0, 0, 0, 0, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 0, 0, 0, 0, - 0, 0, 0, 185, 14, 4, 186, 187, 0, 188, - 189, 190, 191, 0, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 32, 33, 0, 35, 0, 0, 0, - 0, 39, 40, 41, 42, 0, 0, 145, 201, 202, - 0, 0, 0, 0, 0, 0, 0, 203, 204, 0, - 0, 0, 0, 0, 185, 0, 0, 186, 187, 0, - 188, 189, 190, 191, 0, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 32, 33, 0, 35, 0, 0, - 14, 4, 39, 40, 41, 42, 0, 0, 145, 283, - 202, 0, 0, 0, 0, 0, 0, 0, 203, 204, - 0, 0, 0, 0, 0, 185, 0, 0, 186, 187, - 0, 188, 189, 190, 191, 0, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 32, 33, 0, 35, 0, - 0, 14, 4, 39, 40, 41, 42, 0, 0, 145, - 0, 202, 0, 0, 0, 0, 0, 0, 155, 203, - 204, 0, 0, 156, 0, 0, 0, 0, 116, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 14, 4, 127, 128, 129, 130, 131, 132, - 133, 134, 389, 0, 0, 0, 0, 390, 0, 0, - 0, 0, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 391, 0, 0, 0, - 0, 392, 0, 0, 0, 0, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 132, 133, 134, 135, 136, 0, 0, 0, + 0, 0, 187, 263, 0, 0, 0, 0, 0, 0, + 188, 16, 6, 189, 190, 0, 191, 192, 193, 194, + 0, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 34, 35, 0, 37, 0, 0, 0, 0, 41, 42, + 43, 44, 0, 0, 147, 0, 205, 0, 0, 0, + 0, 0, 0, 187, 206, 207, 0, 0, 0, 0, + 0, 188, 0, 0, 189, 190, 0, 191, 192, 193, + 194, 0, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 34, 35, 0, 37, 0, 0, 16, 6, 41, + 42, 43, 44, 0, 0, 147, 289, 205, 0, 0, + 0, 0, 0, 0, 0, 206, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 393, 0, 0, 0, 0, 394, 0, 0, 0, 0, - 116, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 358, 0, 127, 128, 129, 130, - 131, 132, 133, 134, 116, 0, 0, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 360, 0, - 127, 128, 129, 130, 131, 132, 133, 134, 116, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 364, 0, 127, 128, 129, 130, 131, 132, - 133, 134, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 376, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, + 324, 0, 0, 0, 0, 0, 0, 188, 16, 6, + 189, 190, 0, 191, 192, 193, 194, 0, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 34, 35, 0, + 37, 0, 0, 0, 0, 41, 42, 43, 44, 0, + 0, 147, 0, 205, 0, 0, 0, 0, 0, 0, + 187, 206, 207, 0, 0, 0, 0, 0, 188, 0, + 0, 189, 190, 0, 191, 192, 193, 194, 0, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 34, 35, + 0, 37, 0, 0, 16, 6, 41, 42, 43, 44, + 0, 0, 147, 0, 205, 0, 0, 0, 0, 0, + 0, 0, 206, 207, 34, 35, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 388, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 116, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 400, 0, 127, 128, 129, 130, - 131, 132, 133, 134, 116, 0, 0, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 402, 0, - 127, 128, 129, 130, 131, 132, 133, 134, 116, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 423, 0, 127, 128, 129, 130, 131, 132, - 133, 134, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 252, 0, 0, 0, - 0, 0, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 255, 0, 0, 0, - 0, 0, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 307, 0, 0, 0, - 0, 0, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 310, 0, 0, 0, - 0, 0, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 313, 0, 0, 0, - 0, 0, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 314, 0, 0, 0, - 0, 116, 0, 0, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 127, 128, 129, - 130, 131, 132, 133, 134, 254, 0, 116, 0, 0, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 127, 128, 129, 130, 131, 132, 133, - 134, 115, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 318, 116, 0, 0, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 127, 128, 129, 130, 131, 132, 133, - 134, 331, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 116, 0, 0, 117, 118, + 138, 0, 0, 139, 0, 0, 0, 0, 300, 301, + 0, 0, 0, 0, 0, 16, 6, 0, 0, 0, + 0, 0, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 157, 0, 0, 0, 0, 158, 0, + 0, 16, 6, 118, 0, 0, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, + 130, 131, 132, 133, 134, 135, 136, 396, 0, 0, + 0, 0, 397, 0, 0, 0, 0, 118, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 0, 0, 0, 0, - 0, 127, 128, 129, 130, 131, 132, 133, 134, 117, - 118, 0, 120, 121, 122, 123, 124, 125, 126, 117, - 118, 0, 0, 121, 122, 123, 124, 125, 126, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 117, 118, 0, 0, 121, 122, 123, 124, 125, 126, - 117, 118, 0, 0, 121, 122, 123, 124, 125, 126, - 0, 0, 0, 0, 128, 129, 130, 131, 132, 133, - 134, 0, 0, 0, 128, 0, 130, 131, 132, 133, - 134, 117, 118, 0, 0, 121, 122, 123, 124, 125, - 126, 117, 118, 0, 0, 0, 0, 123, 124, 125, - 126, 0, 0, 0, 0, 0, 0, 130, 131, 132, - 133, 134, 0, 0, 0, 0, 0, 130, 131, 132, - 133, 134 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 129, 130, 131, 132, 133, 134, 135, + 136, 398, 0, 0, 0, 0, 399, 0, 0, 0, + 0, 118, 0, 0, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 129, 130, 131, + 132, 133, 134, 135, 136, 400, 0, 0, 0, 0, + 401, 0, 0, 0, 0, 118, 0, 0, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 365, + 0, 129, 130, 131, 132, 133, 134, 135, 136, 118, + 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 367, 0, 129, 130, 131, 132, 133, + 134, 135, 136, 118, 0, 0, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 371, 0, 129, + 130, 131, 132, 133, 134, 135, 136, 118, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 383, 0, 129, 130, 131, 132, 133, 134, 135, + 136, 118, 0, 0, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 395, 0, 129, 130, 131, + 132, 133, 134, 135, 136, 118, 0, 0, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 407, + 0, 129, 130, 131, 132, 133, 134, 135, 136, 118, + 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 409, 0, 129, 130, 131, 132, 133, + 134, 135, 136, 118, 0, 0, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 430, 0, 129, + 130, 131, 132, 133, 134, 135, 136, 118, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 129, 130, 131, 132, 133, 134, 135, + 136, 259, 0, 0, 0, 0, 0, 118, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 129, 130, 131, 132, 133, 134, 135, + 136, 313, 0, 0, 0, 0, 0, 118, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 129, 130, 131, 132, 133, 134, 135, + 136, 316, 0, 0, 0, 0, 0, 118, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 129, 130, 131, 132, 133, 134, 135, + 136, 319, 0, 0, 0, 0, 0, 118, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 129, 130, 131, 132, 133, 134, 135, + 136, 320, 0, 0, 0, 0, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 258, 0, 118, 0, 0, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, + 131, 132, 133, 134, 135, 136, 117, 118, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 129, 130, 131, 132, 133, 134, 135, + 136, 325, 118, 0, 0, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, + 131, 132, 133, 134, 135, 136, 338, 118, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 118, 0, 0, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 0, 0, 0, 0, 0, 129, 130, 131, 132, + 133, 134, 135, 136, 119, 120, 0, 122, 123, 124, + 125, 126, 127, 128, 119, 120, 0, 0, 123, 124, + 125, 126, 127, 128, 0, 0, 0, 129, 130, 131, + 132, 133, 134, 135, 136, 0, 0, 129, 130, 131, + 132, 133, 134, 135, 136, 119, 120, 0, 0, 123, + 124, 125, 126, 127, 128, 119, 120, 0, 0, 123, + 124, 125, 126, 127, 128, 0, 0, 0, 0, 130, + 131, 132, 133, 134, 135, 136, 0, 0, 0, 130, + 0, 132, 133, 134, 135, 136, 119, 120, 0, 0, + 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 132, 133, 134, 135, 136 }; const short parser::yycheck_[] = { - 0, 1, 2, 44, 94, 188, 6, 1, 2, 73, - 18, 264, 264, 73, 41, 264, 3, 4, 5, 145, - 19, 0, 49, 23, 207, 45, 29, 30, 45, 32, - 41, 41, 32, 33, 37, 38, 39, 40, 32, 33, - 29, 30, 45, 32, 42, 45, 51, 36, 47, 47, - 53, 54, 41, 83, 84, 85, 45, 67, 51, 48, - 49, 87, 188, 104, 88, 145, 86, 87, 42, 86, - 87, 29, 30, 73, 32, 42, 45, 203, 204, 73, - 47, 207, 41, 86, 87, 87, 42, 45, 49, 42, - 48, 47, 55, 56, 47, 95, 51, 86, 87, 43, - 87, 29, 30, 45, 32, 86, 87, 45, 188, 37, - 38, 39, 40, 49, 145, 91, 92, 45, 81, 82, - 83, 84, 85, 203, 204, 42, 42, 207, 86, 87, - 47, 47, 41, 45, 49, 42, 42, 137, 264, 145, - 47, 47, 42, 143, 47, 145, 41, 47, 401, 401, - 150, 145, 401, 153, 46, 82, 49, 188, 86, 87, - 41, 88, 51, 50, 42, 92, 93, 94, 95, 47, - 41, 41, 203, 204, 238, 358, 207, 360, 238, 41, - 41, 181, 188, 41, 264, 193, 42, 51, 188, 29, - 30, 47, 32, 41, 188, 42, 36, 203, 204, 51, - 47, 207, 51, 203, 204, 45, 24, 207, 48, 203, - 204, 41, 51, 207, 45, 42, 399, 281, 282, 402, - 47, 281, 282, 51, 41, 43, 51, 51, 46, 47, - 51, 41, 358, 264, 360, 46, 16, 92, 238, 422, - 423, 50, 50, 41, 238, 41, 86, 87, 81, 82, - 83, 84, 85, 41, 41, 46, 46, 46, 264, 41, - 41, 14, 326, 41, 264, 265, 326, 51, 41, 41, - 264, 19, 51, 399, 364, 401, 402, 51, 358, 401, - 360, 281, 282, 51, 51, 51, 104, 281, 282, 51, - 51, 51, 42, 42, 6, 42, 422, 423, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 42, 136, 399, - 51, 401, 402, 51, 51, 6, 326, 358, 6, 360, - 148, -1, 326, 151, 193, -1, 154, -1, 156, -1, - 158, -1, 422, 423, -1, -1, -1, -1, -1, 390, - -1, 392, 358, 394, 360, -1, -1, -1, 358, -1, - 360, -1, -1, 363, 358, -1, 360, 185, 399, -1, - 401, 402, -1, -1, -1, 145, -1, -1, -1, 197, - -1, -1, 145, -1, -1, -1, -1, -1, 145, -1, - -1, 422, 423, 399, -1, 401, 402, -1, -1, 399, - -1, 401, 402, -1, -1, 399, -1, 401, 402, -1, - -1, -1, -1, 145, -1, -1, 422, 423, 188, -1, - -1, -1, 422, 423, -1, 188, -1, -1, 422, 423, - -1, 188, -1, 203, 204, -1, 254, 207, -1, -1, - 203, 204, 142, 261, 207, 263, 203, 204, 266, 149, - 207, -1, 152, -1, 29, 30, 188, 32, -1, -1, - 278, 36, -1, 145, -1, -1, -1, -1, -1, -1, - 45, 203, 204, 48, -1, 207, -1, -1, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, -1, - -1, -1, -1, -1, 264, -1, 314, 29, 30, -1, - 32, 264, -1, -1, 36, -1, 188, 264, -1, -1, - -1, 86, 87, 45, -1, -1, 48, 335, 336, 337, - 338, 203, 204, 29, 30, 207, 32, -1, -1, -1, - -1, -1, 264, -1, -1, -1, -1, -1, -1, 45, - -1, 359, 48, 361, 362, -1, -1, 53, 54, -1, - -1, -1, -1, -1, 86, 87, -1, -1, 258, -1, - -1, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, -1, -1, -1, -1, 276, 277, -1, -1, - 86, 87, 264, -1, -1, 403, -1, -1, 358, -1, - 360, 29, 30, -1, 32, 358, -1, 360, 36, -1, - -1, 358, -1, 360, -1, -1, -1, 45, -1, 309, - 48, -1, 312, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 358, -1, 360, 399, - -1, 401, 402, -1, -1, -1, 399, -1, 401, 402, - -1, -1, 399, -1, 401, 402, -1, -1, 86, 87, - -1, -1, 422, 423, -1, -1, 356, -1, -1, 422, - 423, -1, -1, -1, -1, 422, 423, 399, -1, 401, - 402, 371, 6, 373, -1, 375, 358, -1, 360, -1, + 0, 46, 96, 3, 4, 75, 20, 47, 8, 75, + 270, 270, 3, 4, 47, 270, 191, 53, 21, 147, + 3, 4, 5, 6, 7, 25, 43, 88, 89, 31, + 32, 43, 34, 43, 34, 35, 211, 39, 40, 41, + 42, 51, 0, 34, 35, 47, 49, 47, 88, 89, + 93, 94, 69, 55, 56, 88, 89, 31, 32, 187, + 34, 106, 44, 191, 38, 57, 58, 49, 53, 43, + 85, 86, 87, 47, 90, 75, 50, 51, 206, 207, + 44, 89, 44, 211, 75, 49, 88, 89, 47, 264, + 89, 83, 84, 85, 86, 87, 51, 97, 45, 44, + 31, 32, 53, 34, 49, 47, 89, 38, 44, 43, + 147, 51, 84, 49, 88, 89, 47, 47, 90, 50, + 43, 147, 94, 95, 96, 97, 44, 44, 44, 44, + 44, 49, 49, 49, 49, 49, 264, 47, 44, 139, + 51, 44, 270, 49, 49, 145, 49, 147, 408, 408, + 187, 48, 152, 408, 191, 155, 147, 88, 89, 44, + 43, 187, 44, 51, 49, 191, 43, 49, 43, 206, + 207, 43, 242, 53, 211, 43, 242, 43, 43, 52, + 206, 207, 196, 183, 53, 211, 53, 187, 43, 53, + 365, 191, 367, 43, 47, 53, 187, 53, 43, 53, + 191, 53, 53, 43, 48, 94, 206, 207, 18, 43, + 52, 211, 43, 26, 43, 206, 207, 287, 288, 52, + 211, 287, 288, 43, 48, 48, 48, 264, 43, 43, + 16, 406, 45, 270, 409, 48, 49, 365, 264, 367, + 43, 53, 242, 43, 270, 83, 84, 85, 86, 87, + 43, 242, 53, 21, 429, 430, 53, 53, 53, 53, + 44, 53, 53, 333, 264, 53, 44, 333, 44, 44, + 270, 271, 53, 264, 53, 8, 53, 371, 406, 270, + 408, 409, 8, 8, 408, 187, -1, 287, 288, 196, + -1, -1, -1, 106, -1, -1, 287, 288, -1, -1, + -1, 429, 430, -1, 147, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, -1, 138, -1, -1, 365, -1, + 367, -1, -1, 333, -1, -1, -1, 150, -1, 365, + 153, 367, 333, 156, 187, 158, -1, 160, 191, -1, + -1, -1, 397, -1, 399, -1, 401, -1, -1, -1, + -1, -1, -1, 206, 207, 365, -1, 367, 211, 406, + 370, 408, 409, -1, 365, 188, 367, -1, 31, 32, + 406, 34, 408, 409, -1, 38, -1, 200, 147, -1, + -1, -1, 429, 430, 47, -1, -1, 50, -1, -1, + -1, -1, 147, 429, 430, -1, 406, -1, 408, 409, + -1, -1, -1, -1, -1, 406, -1, 408, 409, -1, + 147, 264, -1, -1, -1, -1, -1, 270, 187, 429, + 430, -1, 191, -1, -1, 88, 89, -1, 429, 430, + -1, -1, 187, -1, -1, 258, 191, 206, 207, -1, + -1, -1, 211, -1, 267, -1, 269, -1, -1, 272, + 187, 206, 207, -1, 191, -1, 211, -1, -1, 31, + 32, 284, 34, -1, -1, -1, 147, -1, -1, 206, + 207, -1, -1, -1, 211, 47, -1, -1, 50, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, -1, -1, -1, -1, 264, -1, 320, 147, -1, + -1, 270, -1, -1, -1, -1, 187, -1, -1, 264, + 191, -1, 365, -1, 367, 270, 88, 89, -1, 342, + 343, 344, 345, -1, -1, 206, 207, 264, 31, 32, + 211, 34, -1, 270, -1, 38, -1, -1, 187, -1, + -1, -1, 191, 366, 47, 368, 369, 50, -1, -1, + -1, -1, -1, 406, -1, 408, 409, 206, 207, 144, + -1, -1, 211, -1, -1, -1, 151, -1, -1, 154, + -1, -1, -1, -1, -1, -1, 429, 430, -1, -1, + -1, -1, -1, 264, -1, 88, 89, 410, -1, 270, + -1, 31, 32, -1, 34, -1, 365, -1, 367, 39, + 40, 41, 42, -1, -1, -1, -1, 47, -1, -1, + 365, -1, 367, -1, -1, 264, -1, -1, -1, -1, + -1, 270, -1, -1, -1, -1, -1, -1, 365, -1, + 367, -1, -1, -1, -1, -1, -1, 406, -1, 408, + 409, 9, 10, -1, 12, 13, -1, -1, 88, 89, + -1, 406, -1, 408, 409, -1, -1, -1, -1, -1, + 429, 430, -1, 31, 32, -1, 34, -1, -1, 406, + -1, 408, 409, -1, 429, 430, -1, 262, -1, 47, + -1, -1, 50, -1, 365, -1, 367, 55, 56, -1, + -1, -1, 429, 430, -1, -1, -1, 282, 283, -1, + -1, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, -1, -1, -1, -1, 365, -1, 367, -1, + 88, 89, -1, -1, -1, 406, -1, 408, 409, -1, + 315, 31, 32, 318, 34, -1, -1, -1, 38, -1, + -1, -1, -1, -1, -1, -1, -1, 47, 429, 430, + 50, -1, -1, -1, -1, 31, 32, 406, 34, 408, + 409, -1, 38, 31, 32, -1, 34, -1, -1, -1, + 38, 47, -1, -1, 50, 8, -1, -1, 363, 47, + 429, 430, 50, -1, -1, -1, -1, -1, 88, 89, + -1, -1, -1, 378, -1, 380, -1, 382, 31, 32, + 33, 34, 35, 36, 37, -1, 39, 40, 41, 42, + 43, -1, 88, 89, 47, 48, -1, -1, 51, -1, + 88, 89, 31, 32, -1, 34, -1, -1, -1, 38, + -1, -1, -1, -1, 67, 68, -1, -1, 47, -1, + -1, 50, 8, -1, -1, -1, -1, -1, -1, -1, + -1, 84, -1, -1, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 31, 32, 33, 34, 35, + 36, 37, -1, 39, 40, 41, 42, 43, -1, 88, + 89, 47, -1, -1, -1, 51, -1, 53, 31, 32, + -1, 34, -1, -1, -1, 38, 31, 32, -1, 34, + -1, 67, 68, 38, 47, -1, -1, 50, -1, 8, + -1, -1, 47, -1, -1, 50, -1, -1, 84, -1, + -1, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 31, 32, 33, 34, 35, 36, 37, -1, + 39, 40, 41, 42, 43, 88, 89, -1, 47, -1, + -1, -1, 51, 88, 89, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 67, 68, + -1, -1, -1, -1, -1, -1, 8, -1, -1, -1, + -1, -1, -1, -1, -1, 84, -1, -1, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 31, + 32, 33, 34, 35, 36, 37, -1, 39, 40, 41, + 42, 43, 48, -1, -1, 47, -1, -1, 54, 51, + -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, -1, -1, -1, -1, 67, 68, -1, -1, -1, + -1, -1, -1, -1, 80, 81, 82, 83, 84, 85, + 86, 87, 84, -1, -1, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 3, -1, -1, -1, + -1, -1, -1, -1, 11, -1, -1, 14, 15, -1, + 17, 18, 19, 20, -1, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, -1, 34, -1, -1, + -1, -1, 39, 40, 41, 42, 57, 58, 45, 46, + 47, -1, 63, 64, 65, 66, -1, -1, 55, 56, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 422, 423, -1, -1, -1, 29, 30, 31, 32, 33, - 34, 35, -1, 37, 38, 39, 40, 41, -1, -1, - -1, 45, 46, -1, -1, 49, -1, 399, -1, 401, - 402, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 65, 66, -1, -1, -1, -1, -1, -1, 6, - 422, 423, -1, -1, -1, -1, -1, -1, 82, -1, - -1, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 29, 30, 31, 32, 33, 34, 35, -1, - 37, 38, 39, 40, 41, -1, -1, -1, 45, -1, - -1, -1, 49, -1, 51, 29, 30, -1, 32, -1, - -1, -1, 36, 29, 30, -1, 32, -1, 65, 66, - 36, 45, -1, -1, 48, -1, 6, -1, -1, 45, - -1, -1, 48, -1, -1, 82, -1, -1, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 29, - 30, 31, 32, 33, 34, 35, -1, 37, 38, 39, - 40, 41, 86, 87, -1, 45, -1, -1, -1, 49, - 86, 87, 29, 30, -1, 32, -1, -1, -1, 36, - 29, 30, -1, 32, -1, 65, 66, 36, 45, -1, - -1, 48, -1, 6, -1, -1, 45, -1, -1, 48, - -1, -1, 82, -1, -1, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 29, 30, 31, 32, - 33, 34, 35, -1, 37, 38, 39, 40, 41, 86, - 87, -1, 45, -1, -1, -1, 49, 86, 87, -1, - 29, 30, -1, 32, -1, 7, 8, 36, 10, 11, - -1, -1, 65, 66, -1, -1, 45, -1, -1, 48, - -1, -1, -1, -1, -1, -1, -1, 29, 30, 82, - 32, -1, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 45, -1, -1, 48, -1, -1, -1, - -1, 53, 54, -1, -1, -1, -1, 86, 87, -1, - -1, -1, -1, -1, -1, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, -1, -1, -1, -1, - -1, -1, -1, 9, 86, 87, 12, 13, -1, 15, - 16, 17, 18, -1, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, -1, 32, -1, -1, -1, - -1, 37, 38, 39, 40, -1, -1, 43, 44, 45, - -1, -1, -1, -1, -1, -1, -1, 53, 54, -1, - -1, -1, -1, -1, 9, -1, -1, 12, 13, -1, - 15, 16, 17, 18, -1, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, -1, 32, -1, -1, - 86, 87, 37, 38, 39, 40, -1, -1, 43, 44, - 45, -1, -1, -1, -1, -1, -1, -1, 53, 54, - -1, -1, -1, -1, -1, 9, -1, -1, 12, 13, - -1, 15, 16, 17, 18, -1, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, -1, 32, -1, - -1, 86, 87, 37, 38, 39, 40, -1, -1, 43, - -1, 45, -1, -1, -1, -1, -1, -1, 42, 53, - 54, -1, -1, 47, -1, -1, -1, -1, 52, -1, - -1, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 86, 87, 78, 79, 80, 81, 82, 83, - 84, 85, 42, -1, -1, -1, -1, 47, -1, -1, - -1, -1, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 42, -1, -1, -1, - -1, 47, -1, -1, -1, -1, 52, -1, -1, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, -1, + -1, -1, 83, 84, 85, 86, 87, -1, -1, -1, + -1, -1, 3, 4, -1, -1, -1, -1, -1, -1, + 11, 88, 89, 14, 15, -1, 17, 18, 19, 20, + -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, -1, 34, -1, -1, -1, -1, 39, 40, + 41, 42, -1, -1, 45, -1, 47, -1, -1, -1, + -1, -1, -1, 3, 55, 56, -1, -1, -1, -1, + -1, 11, -1, -1, 14, 15, -1, 17, 18, 19, + 20, -1, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, -1, 34, -1, -1, 88, 89, 39, + 40, 41, 42, -1, -1, 45, 46, 47, -1, -1, + -1, -1, -1, -1, -1, 55, 56, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 78, 79, 80, 81, 82, 83, 84, 85, - 42, -1, -1, -1, -1, 47, -1, -1, -1, -1, - 52, -1, -1, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 42, -1, 78, 79, 80, 81, - 82, 83, 84, 85, 52, -1, -1, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 42, -1, - 78, 79, 80, 81, 82, 83, 84, 85, 52, -1, - -1, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 42, -1, 78, 79, 80, 81, 82, 83, - 84, 85, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 42, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 52, -1, -1, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, + 4, -1, -1, -1, -1, -1, -1, 11, 88, 89, + 14, 15, -1, 17, 18, 19, 20, -1, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, + 34, -1, -1, -1, -1, 39, 40, 41, 42, -1, + -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, + 3, 55, 56, -1, -1, -1, -1, -1, 11, -1, + -1, 14, 15, -1, 17, 18, 19, 20, -1, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + -1, 34, -1, -1, 88, 89, 39, 40, 41, 42, + -1, -1, 45, -1, 47, -1, -1, -1, -1, -1, + -1, -1, 55, 56, 31, 32, -1, 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 42, -1, 78, 79, 80, 81, 82, 83, 84, 85, - 52, -1, -1, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 42, -1, 78, 79, 80, 81, - 82, 83, 84, 85, 52, -1, -1, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 42, -1, - 78, 79, 80, 81, 82, 83, 84, 85, 52, -1, - -1, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 42, -1, 78, 79, 80, 81, 82, 83, - 84, 85, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 46, -1, -1, -1, - -1, -1, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 46, -1, -1, -1, - -1, -1, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 46, -1, -1, -1, - -1, -1, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 46, -1, -1, -1, - -1, -1, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 46, -1, -1, -1, - -1, -1, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 47, -1, -1, -1, - -1, 52, -1, -1, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, - 81, 82, 83, 84, 85, 50, -1, 52, -1, -1, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 47, -1, -1, 50, -1, -1, -1, -1, 55, 56, + -1, -1, -1, -1, -1, 88, 89, -1, -1, -1, + -1, -1, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 44, -1, -1, -1, -1, 49, -1, + -1, 88, 89, 54, -1, -1, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, + 81, 82, 83, 84, 85, 86, 87, 44, -1, -1, + -1, -1, 49, -1, -1, -1, -1, 54, -1, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 78, 79, 80, 81, 82, 83, 84, - 85, 51, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 51, 52, -1, -1, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + -1, -1, -1, 80, 81, 82, 83, 84, 85, 86, + 87, 44, -1, -1, -1, -1, 49, -1, -1, -1, + -1, 54, -1, -1, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 80, 81, 82, + 83, 84, 85, 86, 87, 44, -1, -1, -1, -1, + 49, -1, -1, -1, -1, 54, -1, -1, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 44, + -1, 80, 81, 82, 83, 84, 85, 86, 87, 54, + -1, -1, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 44, -1, 80, 81, 82, 83, 84, + 85, 86, 87, 54, -1, -1, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 44, -1, 80, + 81, 82, 83, 84, 85, 86, 87, 54, -1, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 78, 79, 80, 81, 82, 83, 84, - 85, 51, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 52, -1, -1, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 78, 79, - 80, 81, 82, 83, 84, 85, -1, -1, -1, -1, - -1, 78, 79, 80, 81, 82, 83, 84, 85, 55, - 56, -1, 58, 59, 60, 61, 62, 63, 64, 55, - 56, -1, -1, 59, 60, 61, 62, 63, 64, -1, - -1, -1, 78, 79, 80, 81, 82, 83, 84, 85, - -1, -1, 78, 79, 80, 81, 82, 83, 84, 85, - 55, 56, -1, -1, 59, 60, 61, 62, 63, 64, - 55, 56, -1, -1, 59, 60, 61, 62, 63, 64, - -1, -1, -1, -1, 79, 80, 81, 82, 83, 84, - 85, -1, -1, -1, 79, -1, 81, 82, 83, 84, - 85, 55, 56, -1, -1, 59, 60, 61, 62, 63, - 64, 55, 56, -1, -1, -1, -1, 61, 62, 63, - 64, -1, -1, -1, -1, -1, -1, 81, 82, 83, - 84, 85, -1, -1, -1, -1, -1, 81, 82, 83, - 84, 85 + -1, 44, -1, 80, 81, 82, 83, 84, 85, 86, + 87, 54, -1, -1, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 44, -1, 80, 81, 82, + 83, 84, 85, 86, 87, 54, -1, -1, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 44, + -1, 80, 81, 82, 83, 84, 85, 86, 87, 54, + -1, -1, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 44, -1, 80, 81, 82, 83, 84, + 85, 86, 87, 54, -1, -1, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 44, -1, 80, + 81, 82, 83, 84, 85, 86, 87, 54, -1, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 80, 81, 82, 83, 84, 85, 86, + 87, 48, -1, -1, -1, -1, -1, 54, -1, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 80, 81, 82, 83, 84, 85, 86, + 87, 48, -1, -1, -1, -1, -1, 54, -1, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 80, 81, 82, 83, 84, 85, 86, + 87, 48, -1, -1, -1, -1, -1, 54, -1, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 80, 81, 82, 83, 84, 85, 86, + 87, 48, -1, -1, -1, -1, -1, 54, -1, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 80, 81, 82, 83, 84, 85, 86, + 87, 49, -1, -1, -1, -1, 54, -1, -1, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, + 52, -1, 54, -1, -1, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 80, 81, + 82, 83, 84, 85, 86, 87, 53, 54, -1, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 80, 81, 82, 83, 84, 85, 86, + 87, 53, 54, -1, -1, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 80, 81, + 82, 83, 84, 85, 86, 87, 53, 54, -1, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 54, -1, -1, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 80, 81, 82, 83, 84, 85, 86, + 87, -1, -1, -1, -1, -1, 80, 81, 82, 83, + 84, 85, 86, 87, 57, 58, -1, 60, 61, 62, + 63, 64, 65, 66, 57, 58, -1, -1, 61, 62, + 63, 64, 65, 66, -1, -1, -1, 80, 81, 82, + 83, 84, 85, 86, 87, -1, -1, 80, 81, 82, + 83, 84, 85, 86, 87, 57, 58, -1, -1, 61, + 62, 63, 64, 65, 66, 57, 58, -1, -1, 61, + 62, 63, 64, 65, 66, -1, -1, -1, -1, 81, + 82, 83, 84, 85, 86, 87, -1, -1, -1, 81, + -1, 83, 84, 85, 86, 87, 57, 58, -1, -1, + 61, 62, 63, 64, 65, 66, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 83, 84, 85, 86, 87 }; const unsigned char parser::yystos_[] = { - 0, 3, 4, 5, 87, 106, 107, 108, 109, 110, - 111, 112, 113, 174, 86, 174, 175, 175, 41, 0, - 108, 109, 110, 41, 67, 51, 51, 88, 177, 156, - 174, 6, 29, 30, 31, 32, 33, 34, 35, 37, - 38, 39, 40, 41, 45, 49, 65, 66, 82, 85, - 89, 90, 91, 92, 93, 94, 95, 141, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 42, 42, 47, 45, 174, 175, 45, - 174, 175, 45, 141, 45, 46, 141, 157, 158, 174, - 141, 141, 91, 92, 87, 51, 52, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 78, 79, 80, - 81, 82, 83, 84, 85, 36, 45, 48, 153, 154, - 174, 175, 41, 49, 51, 43, 115, 174, 45, 41, - 49, 45, 41, 49, 45, 42, 47, 141, 47, 46, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 174, 49, 157, 158, 174, 9, 12, 13, 15, 16, - 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 44, 45, 53, 54, 114, 115, 116, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 143, 144, 145, 151, 152, 160, 161, 164, 168, - 169, 170, 171, 174, 141, 157, 174, 141, 157, 174, - 141, 141, 46, 141, 50, 46, 174, 42, 41, 141, - 51, 41, 114, 41, 41, 41, 41, 82, 177, 181, - 50, 51, 51, 51, 141, 51, 41, 41, 45, 151, - 152, 164, 164, 44, 114, 51, 51, 51, 51, 51, - 7, 8, 10, 11, 53, 54, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 46, 42, 41, - 46, 42, 41, 46, 47, 46, 141, 157, 51, 141, - 16, 141, 117, 143, 144, 145, 164, 174, 141, 50, - 50, 51, 157, 157, 141, 41, 41, 41, 41, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 46, 157, 46, 157, 46, 141, 41, 42, 42, 41, - 42, 51, 19, 47, 42, 42, 42, 141, 141, 141, - 141, 41, 42, 41, 42, 41, 42, 157, 114, 141, - 114, 141, 142, 141, 174, 115, 51, 51, 42, 42, - 47, 42, 47, 42, 47, 157, 157, 157, 42, 14, - 42, 51, 42, 19, 51, 51, 158, 51, 158, 51, - 158, 42, 42, 42, 114, 51, 117, 114, 141, 42, - 42, 42, 42, 42, 51, 51, 51, 114, 114 + 0, 3, 4, 5, 6, 7, 89, 108, 109, 110, + 111, 112, 113, 114, 115, 177, 88, 177, 178, 178, + 43, 0, 110, 111, 112, 43, 69, 53, 53, 90, + 180, 159, 177, 8, 31, 32, 33, 34, 35, 36, + 37, 39, 40, 41, 42, 43, 47, 51, 67, 68, + 84, 87, 91, 92, 93, 94, 95, 96, 97, 144, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 44, 44, 49, 47, 177, + 178, 47, 177, 178, 47, 144, 47, 48, 144, 160, + 161, 177, 144, 144, 93, 94, 89, 53, 54, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 80, + 81, 82, 83, 84, 85, 86, 87, 38, 47, 50, + 156, 157, 177, 178, 43, 51, 53, 45, 118, 177, + 47, 43, 51, 47, 43, 51, 47, 44, 49, 144, + 49, 48, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 177, 51, 160, 161, 177, 3, 11, 14, + 15, 17, 18, 19, 20, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 46, 47, 55, 56, 116, 117, + 118, 119, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 146, 147, 148, 154, 155, + 163, 164, 167, 171, 172, 173, 174, 177, 144, 160, + 177, 144, 160, 177, 144, 144, 48, 144, 52, 48, + 177, 44, 43, 4, 119, 144, 53, 43, 116, 43, + 43, 43, 43, 84, 180, 184, 52, 53, 53, 53, + 144, 53, 43, 43, 47, 154, 155, 167, 167, 46, + 116, 53, 53, 53, 53, 53, 9, 10, 12, 13, + 55, 56, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 48, 44, 43, 48, 44, 43, 48, + 49, 48, 144, 160, 4, 53, 144, 18, 144, 120, + 146, 147, 148, 167, 177, 144, 52, 52, 53, 160, + 160, 144, 43, 43, 43, 43, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 48, 160, 48, + 160, 48, 144, 43, 44, 44, 43, 44, 53, 21, + 49, 44, 44, 44, 144, 144, 144, 144, 43, 44, + 43, 44, 43, 44, 160, 116, 144, 116, 144, 145, + 144, 177, 118, 53, 53, 44, 44, 49, 44, 49, + 44, 49, 160, 160, 160, 44, 16, 44, 53, 44, + 21, 53, 53, 161, 53, 161, 53, 161, 44, 44, + 44, 116, 53, 120, 116, 144, 44, 44, 44, 44, + 44, 53, 53, 53, 116, 116 }; const unsigned char parser::yyr1_[] = { - 0, 105, 106, 106, 107, 107, 107, 107, 107, 107, - 108, 109, 110, 110, 110, 111, 112, 113, 114, 114, - 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 115, 115, 116, 116, 117, 117, 117, 117, - 118, 118, 119, 119, 119, 120, 121, 121, 122, 123, - 123, 124, 124, 125, 126, 127, 128, 129, 130, 131, - 131, 132, 133, 133, 134, 135, 136, 137, 137, 138, - 139, 140, 141, 141, 141, 142, 142, 143, 143, 143, - 143, 143, 143, 143, 143, 143, 143, 143, 144, 144, - 145, 145, 146, 147, 147, 147, 147, 147, 147, 147, - 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, - 147, 148, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 148, 149, - 150, 151, 151, 152, 152, 153, 153, 153, 153, 153, - 153, 154, 154, 154, 154, 155, 156, 156, 156, 157, - 157, 158, 158, 159, 159, 160, 161, 162, 163, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 175, - 176, 177, 178, 179, 180, 180, 181, 181, 181, 181, - 181, 182, 183 + 0, 107, 108, 108, 109, 109, 109, 109, 109, 109, + 110, 111, 112, 112, 112, 112, 112, 113, 114, 115, + 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, + 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, + 116, 116, 116, 116, 116, 117, 117, 118, 118, 119, + 119, 120, 120, 120, 120, 121, 121, 122, 122, 122, + 123, 124, 124, 125, 126, 126, 127, 127, 128, 129, + 130, 131, 132, 133, 134, 134, 135, 136, 136, 137, + 138, 139, 140, 140, 141, 142, 143, 144, 144, 144, + 145, 145, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 147, 147, 148, 148, 149, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 152, 153, 154, 154, 155, 155, + 156, 156, 156, 156, 156, 156, 157, 157, 157, 157, + 158, 159, 159, 159, 160, 160, 161, 161, 162, 162, + 163, 164, 165, 166, 167, 167, 167, 167, 167, 167, + 167, 167, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 178, 179, 180, 181, 182, 183, + 183, 184, 184, 184, 184, 184, 185, 186 }; const signed char parser::yyr2_[] = { 0, 2, 1, 0, 2, 2, 2, 1, 1, 1, - 3, 3, 1, 1, 1, 5, 4, 5, 1, 1, + 3, 3, 1, 1, 1, 1, 1, 5, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 2, 2, 1, 1, 1, 1, 0, - 2, 2, 2, 2, 2, 6, 8, 6, 3, 8, - 6, 8, 6, 2, 5, 7, 5, 7, 9, 7, - 9, 5, 3, 3, 2, 2, 2, 3, 2, 2, - 5, 5, 1, 1, 1, 1, 0, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, - 2, 2, 5, 3, 3, 3, 3, 3, 3, 3, + 1, 1, 1, 1, 1, 3, 2, 3, 2, 2, + 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, + 6, 8, 6, 3, 8, 6, 8, 6, 2, 5, + 7, 5, 7, 9, 7, 9, 5, 3, 3, 2, + 2, 2, 3, 2, 2, 5, 5, 1, 1, 1, + 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 2, 2, 2, 2, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 3, 3, 3, 3, 3, 3, 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, 1, 1, 2, 2, 4, 6, 5, 7, 5, - 7, 8, 9, 9, 9, 3, 3, 1, 0, 1, - 0, 3, 1, 2, 3, 4, 3, 2, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, - 1, 1, 1, 7, 2, 1, 2, 1, 1, 1, - 1, 1, 1 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 2, 1, 1, 2, 2, + 4, 6, 5, 7, 5, 7, 8, 9, 9, 9, + 3, 3, 1, 0, 1, 0, 3, 1, 2, 3, + 4, 3, 2, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, + 2, 1, 1, 1, 1, 1, 1, 1, 7, 2, + 1, 2, 1, 1, 1, 1, 1, 1 }; @@ -4385,28 +4469,28 @@ namespace xsk { namespace gsc { namespace iw6 { const short parser::yyrline_[] = { - 0, 249, 249, 250, 254, 256, 258, 260, 262, 264, - 269, 273, 278, 279, 280, 284, 289, 294, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 326, 327, 331, 333, 338, 340, 342, 345, - 349, 351, 356, 358, 360, 365, 370, 372, 377, 382, - 384, 389, 391, 396, 401, 406, 411, 416, 421, 426, - 428, 433, 438, 440, 445, 450, 455, 460, 462, 467, - 472, 477, 482, 483, 484, 488, 489, 493, 495, 497, - 499, 501, 503, 505, 507, 509, 511, 513, 518, 520, - 525, 527, 532, 537, 539, 541, 543, 545, 547, 549, - 551, 553, 555, 557, 559, 561, 563, 565, 567, 569, - 571, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 607, - 612, 617, 618, 621, 622, 626, 628, 630, 632, 634, - 636, 641, 643, 645, 647, 652, 657, 659, 662, 666, - 669, 673, 675, 680, 682, 687, 692, 697, 702, 707, - 708, 709, 710, 711, 712, 713, 714, 715, 719, 724, - 729, 734, 739, 744, 749, 754, 759, 764, 769, 771, - 776, 781, 786, 791, 796, 798, 803, 805, 807, 809, - 811, 816, 821 + 0, 252, 252, 253, 257, 259, 261, 263, 265, 267, + 272, 276, 281, 282, 283, 284, 285, 289, 294, 299, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 332, 333, 337, 338, 342, + 344, 349, 351, 353, 356, 360, 362, 367, 369, 371, + 376, 381, 383, 388, 393, 395, 400, 402, 407, 412, + 417, 422, 427, 432, 437, 439, 444, 449, 451, 456, + 461, 466, 471, 473, 478, 483, 488, 493, 494, 495, + 499, 500, 504, 506, 508, 510, 512, 514, 516, 518, + 520, 522, 524, 529, 531, 536, 538, 543, 548, 550, + 552, 554, 556, 558, 560, 562, 564, 566, 568, 570, + 572, 574, 576, 578, 580, 582, 587, 588, 589, 590, + 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, + 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, + 611, 612, 613, 614, 618, 623, 628, 629, 632, 633, + 637, 639, 641, 643, 645, 647, 652, 654, 656, 658, + 663, 668, 670, 673, 677, 680, 684, 686, 691, 693, + 698, 703, 708, 713, 718, 719, 720, 721, 722, 723, + 724, 725, 726, 730, 735, 740, 745, 750, 755, 760, + 765, 770, 775, 780, 782, 787, 792, 797, 802, 807, + 809, 814, 816, 818, 820, 822, 827, 832 }; void @@ -4439,9 +4523,9 @@ namespace xsk { namespace gsc { namespace iw6 { #line 13 "parser.ypp" } } } // xsk::gsc::iw6 -#line 4443 "parser.cpp" +#line 4527 "parser.cpp" -#line 825 "parser.ypp" +#line 836 "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 961d7ba7..55a73086 100644 --- a/src/iw6/xsk/parser.hpp +++ b/src/iw6/xsk/parser.hpp @@ -580,6 +580,7 @@ namespace xsk { namespace gsc { namespace iw6 { // stmt_ifelse char dummy54[sizeof (ast::stmt_ifelse::ptr)]; + // stmt_dev // stmt_block // stmt_list char dummy55[sizeof (ast::stmt_list::ptr)]; @@ -676,108 +677,110 @@ namespace xsk { namespace gsc { namespace iw6 { IW6EOF = 0, // "end of file" IW6error = 1, // error IW6UNDEF = 2, // "invalid token" - INLINE = 3, // "#inline" - INCLUDE = 4, // "#include" - USINGTREE = 5, // "#using_animtree" - ANIMTREE = 6, // "#animtree" - ENDON = 7, // "endon" - NOTIFY = 8, // "notify" - WAIT = 9, // "wait" - WAITTILL = 10, // "waittill" - WAITTILLMATCH = 11, // "waittillmatch" - WAITTILLFRAMEEND = 12, // "waittillframeend" - IF = 13, // "if" - ELSE = 14, // "else" - DO = 15, // "do" - WHILE = 16, // "while" - FOR = 17, // "for" - FOREACH = 18, // "foreach" - IN = 19, // "in" - SWITCH = 20, // "switch" - CASE = 21, // "case" - DEFAULT = 22, // "default" - BREAK = 23, // "break" - CONTINUE = 24, // "continue" - RETURN = 25, // "return" - BREAKPOINT = 26, // "breakpoint" - PROFBEGIN = 27, // "prof_begin" - PROFEND = 28, // "prof_end" - THREAD = 29, // "thread" - CHILDTHREAD = 30, // "childthread" - THISTHREAD = 31, // "thisthread" - CALL = 32, // "call" - TRUE = 33, // "true" - FALSE = 34, // "false" - UNDEFINED = 35, // "undefined" - SIZE = 36, // ".size" - GAME = 37, // "game" - SELF = 38, // "self" - ANIM = 39, // "anim" - LEVEL = 40, // "level" - LPAREN = 41, // "(" - RPAREN = 42, // ")" - LBRACE = 43, // "{" - RBRACE = 44, // "}" - LBRACKET = 45, // "[" - RBRACKET = 46, // "]" - COMMA = 47, // "," - DOT = 48, // "." - DOUBLECOLON = 49, // "::" - COLON = 50, // ":" - SEMICOLON = 51, // ";" - QMARK = 52, // "?" - INCREMENT = 53, // "++" - DECREMENT = 54, // "--" - LSHIFT = 55, // "<<" - RSHIFT = 56, // ">>" - OR = 57, // "||" - AND = 58, // "&&" - EQUALITY = 59, // "==" - INEQUALITY = 60, // "!=" - LESS_EQUAL = 61, // "<=" - GREATER_EQUAL = 62, // ">=" - LESS = 63, // "<" - GREATER = 64, // ">" - NOT = 65, // "!" - COMPLEMENT = 66, // "~" - ASSIGN = 67, // "=" - ASSIGN_ADD = 68, // "+=" - ASSIGN_SUB = 69, // "-=" - ASSIGN_MUL = 70, // "*=" - ASSIGN_DIV = 71, // "/=" - ASSIGN_MOD = 72, // "%=" - ASSIGN_BW_OR = 73, // "|=" - ASSIGN_BW_AND = 74, // "&=" - ASSIGN_BW_EXOR = 75, // "^=" - ASSIGN_RSHIFT = 76, // ">>=" - ASSIGN_LSHIFT = 77, // "<<=" - BITWISE_OR = 78, // "|" - BITWISE_AND = 79, // "&" - BITWISE_EXOR = 80, // "^" - ADD = 81, // "+" - SUB = 82, // "-" - MUL = 83, // "*" - DIV = 84, // "/" - MOD = 85, // "%" - PATH = 86, // "path" - IDENTIFIER = 87, // "identifier" - STRING = 88, // "string literal" - ISTRING = 89, // "localized string" - COLOR = 90, // "color" - FLOAT = 91, // "float" - INT_DEC = 92, // "int" - INT_OCT = 93, // "octal int" - INT_BIN = 94, // "binary int" - INT_HEX = 95, // "hexadecimal int" - ADD_ARRAY = 96, // ADD_ARRAY - THEN = 97, // THEN - TERN = 98, // TERN - NEG = 99, // NEG - ANIMREF = 100, // ANIMREF - PREINC = 101, // PREINC - PREDEC = 102, // PREDEC - POSTINC = 103, // POSTINC - POSTDEC = 104 // POSTDEC + DEVBEGIN = 3, // "/#" + DEVEND = 4, // "#/" + INLINE = 5, // "#inline" + INCLUDE = 6, // "#include" + USINGTREE = 7, // "#using_animtree" + ANIMTREE = 8, // "#animtree" + ENDON = 9, // "endon" + NOTIFY = 10, // "notify" + WAIT = 11, // "wait" + WAITTILL = 12, // "waittill" + WAITTILLMATCH = 13, // "waittillmatch" + WAITTILLFRAMEEND = 14, // "waittillframeend" + IF = 15, // "if" + ELSE = 16, // "else" + DO = 17, // "do" + WHILE = 18, // "while" + FOR = 19, // "for" + FOREACH = 20, // "foreach" + IN = 21, // "in" + SWITCH = 22, // "switch" + CASE = 23, // "case" + DEFAULT = 24, // "default" + BREAK = 25, // "break" + CONTINUE = 26, // "continue" + RETURN = 27, // "return" + BREAKPOINT = 28, // "breakpoint" + PROFBEGIN = 29, // "prof_begin" + PROFEND = 30, // "prof_end" + THREAD = 31, // "thread" + CHILDTHREAD = 32, // "childthread" + THISTHREAD = 33, // "thisthread" + CALL = 34, // "call" + TRUE = 35, // "true" + FALSE = 36, // "false" + UNDEFINED = 37, // "undefined" + SIZE = 38, // ".size" + GAME = 39, // "game" + SELF = 40, // "self" + ANIM = 41, // "anim" + LEVEL = 42, // "level" + LPAREN = 43, // "(" + RPAREN = 44, // ")" + LBRACE = 45, // "{" + RBRACE = 46, // "}" + LBRACKET = 47, // "[" + RBRACKET = 48, // "]" + COMMA = 49, // "," + DOT = 50, // "." + DOUBLECOLON = 51, // "::" + COLON = 52, // ":" + SEMICOLON = 53, // ";" + QMARK = 54, // "?" + INCREMENT = 55, // "++" + DECREMENT = 56, // "--" + LSHIFT = 57, // "<<" + RSHIFT = 58, // ">>" + OR = 59, // "||" + AND = 60, // "&&" + EQUALITY = 61, // "==" + INEQUALITY = 62, // "!=" + LESS_EQUAL = 63, // "<=" + GREATER_EQUAL = 64, // ">=" + LESS = 65, // "<" + GREATER = 66, // ">" + NOT = 67, // "!" + COMPLEMENT = 68, // "~" + ASSIGN = 69, // "=" + ASSIGN_ADD = 70, // "+=" + ASSIGN_SUB = 71, // "-=" + ASSIGN_MUL = 72, // "*=" + ASSIGN_DIV = 73, // "/=" + ASSIGN_MOD = 74, // "%=" + ASSIGN_BW_OR = 75, // "|=" + ASSIGN_BW_AND = 76, // "&=" + ASSIGN_BW_EXOR = 77, // "^=" + ASSIGN_RSHIFT = 78, // ">>=" + ASSIGN_LSHIFT = 79, // "<<=" + BITWISE_OR = 80, // "|" + BITWISE_AND = 81, // "&" + BITWISE_EXOR = 82, // "^" + ADD = 83, // "+" + SUB = 84, // "-" + MUL = 85, // "*" + DIV = 86, // "/" + MOD = 87, // "%" + PATH = 88, // "path" + IDENTIFIER = 89, // "identifier" + STRING = 90, // "string literal" + ISTRING = 91, // "localized string" + COLOR = 92, // "color" + FLOAT = 93, // "float" + INT_DEC = 94, // "int" + INT_OCT = 95, // "octal int" + INT_BIN = 96, // "binary int" + INT_HEX = 97, // "hexadecimal int" + ADD_ARRAY = 98, // ADD_ARRAY + THEN = 99, // THEN + TERN = 100, // TERN + NEG = 101, // NEG + ANIMREF = 102, // ANIMREF + PREINC = 103, // PREINC + PREDEC = 104, // PREDEC + POSTINC = 105, // POSTINC + POSTDEC = 106 // POSTDEC }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; @@ -794,192 +797,195 @@ namespace xsk { namespace gsc { namespace iw6 { { enum symbol_kind_type { - YYNTOKENS = 105, ///< Number of tokens. + YYNTOKENS = 107, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error S_YYUNDEF = 2, // "invalid token" - S_INLINE = 3, // "#inline" - S_INCLUDE = 4, // "#include" - S_USINGTREE = 5, // "#using_animtree" - S_ANIMTREE = 6, // "#animtree" - S_ENDON = 7, // "endon" - S_NOTIFY = 8, // "notify" - S_WAIT = 9, // "wait" - S_WAITTILL = 10, // "waittill" - S_WAITTILLMATCH = 11, // "waittillmatch" - S_WAITTILLFRAMEEND = 12, // "waittillframeend" - S_IF = 13, // "if" - S_ELSE = 14, // "else" - S_DO = 15, // "do" - S_WHILE = 16, // "while" - S_FOR = 17, // "for" - S_FOREACH = 18, // "foreach" - S_IN = 19, // "in" - S_SWITCH = 20, // "switch" - S_CASE = 21, // "case" - S_DEFAULT = 22, // "default" - S_BREAK = 23, // "break" - S_CONTINUE = 24, // "continue" - S_RETURN = 25, // "return" - S_BREAKPOINT = 26, // "breakpoint" - S_PROFBEGIN = 27, // "prof_begin" - S_PROFEND = 28, // "prof_end" - S_THREAD = 29, // "thread" - S_CHILDTHREAD = 30, // "childthread" - S_THISTHREAD = 31, // "thisthread" - S_CALL = 32, // "call" - S_TRUE = 33, // "true" - S_FALSE = 34, // "false" - S_UNDEFINED = 35, // "undefined" - S_SIZE = 36, // ".size" - S_GAME = 37, // "game" - S_SELF = 38, // "self" - S_ANIM = 39, // "anim" - S_LEVEL = 40, // "level" - S_LPAREN = 41, // "(" - S_RPAREN = 42, // ")" - S_LBRACE = 43, // "{" - S_RBRACE = 44, // "}" - S_LBRACKET = 45, // "[" - S_RBRACKET = 46, // "]" - S_COMMA = 47, // "," - S_DOT = 48, // "." - S_DOUBLECOLON = 49, // "::" - S_COLON = 50, // ":" - S_SEMICOLON = 51, // ";" - S_QMARK = 52, // "?" - S_INCREMENT = 53, // "++" - S_DECREMENT = 54, // "--" - S_LSHIFT = 55, // "<<" - S_RSHIFT = 56, // ">>" - S_OR = 57, // "||" - S_AND = 58, // "&&" - S_EQUALITY = 59, // "==" - S_INEQUALITY = 60, // "!=" - S_LESS_EQUAL = 61, // "<=" - S_GREATER_EQUAL = 62, // ">=" - S_LESS = 63, // "<" - S_GREATER = 64, // ">" - S_NOT = 65, // "!" - S_COMPLEMENT = 66, // "~" - S_ASSIGN = 67, // "=" - S_ASSIGN_ADD = 68, // "+=" - S_ASSIGN_SUB = 69, // "-=" - S_ASSIGN_MUL = 70, // "*=" - S_ASSIGN_DIV = 71, // "/=" - S_ASSIGN_MOD = 72, // "%=" - S_ASSIGN_BW_OR = 73, // "|=" - S_ASSIGN_BW_AND = 74, // "&=" - S_ASSIGN_BW_EXOR = 75, // "^=" - S_ASSIGN_RSHIFT = 76, // ">>=" - S_ASSIGN_LSHIFT = 77, // "<<=" - S_BITWISE_OR = 78, // "|" - S_BITWISE_AND = 79, // "&" - S_BITWISE_EXOR = 80, // "^" - S_ADD = 81, // "+" - S_SUB = 82, // "-" - S_MUL = 83, // "*" - S_DIV = 84, // "/" - S_MOD = 85, // "%" - S_PATH = 86, // "path" - S_IDENTIFIER = 87, // "identifier" - S_STRING = 88, // "string literal" - S_ISTRING = 89, // "localized string" - S_COLOR = 90, // "color" - S_FLOAT = 91, // "float" - S_INT_DEC = 92, // "int" - S_INT_OCT = 93, // "octal int" - S_INT_BIN = 94, // "binary int" - S_INT_HEX = 95, // "hexadecimal int" - S_ADD_ARRAY = 96, // ADD_ARRAY - S_THEN = 97, // THEN - S_TERN = 98, // TERN - S_NEG = 99, // NEG - S_ANIMREF = 100, // ANIMREF - S_PREINC = 101, // PREINC - S_PREDEC = 102, // PREDEC - S_POSTINC = 103, // POSTINC - S_POSTDEC = 104, // POSTDEC - S_YYACCEPT = 105, // $accept - S_root = 106, // root - S_program = 107, // program - S_inline = 108, // inline - S_include = 109, // include - S_declaration = 110, // declaration - S_decl_usingtree = 111, // decl_usingtree - S_decl_constant = 112, // decl_constant - S_decl_thread = 113, // decl_thread - S_stmt = 114, // stmt - S_stmt_block = 115, // stmt_block - S_stmt_list = 116, // stmt_list - S_stmt_expr = 117, // stmt_expr - S_stmt_call = 118, // stmt_call - S_stmt_assign = 119, // stmt_assign - S_stmt_endon = 120, // stmt_endon - S_stmt_notify = 121, // stmt_notify - S_stmt_wait = 122, // stmt_wait - S_stmt_waittill = 123, // stmt_waittill - S_stmt_waittillmatch = 124, // stmt_waittillmatch - S_stmt_waittillframeend = 125, // stmt_waittillframeend - S_stmt_if = 126, // stmt_if - S_stmt_ifelse = 127, // stmt_ifelse - S_stmt_while = 128, // stmt_while - S_stmt_dowhile = 129, // stmt_dowhile - S_stmt_for = 130, // stmt_for - S_stmt_foreach = 131, // stmt_foreach - S_stmt_switch = 132, // stmt_switch - S_stmt_case = 133, // stmt_case - S_stmt_default = 134, // stmt_default - S_stmt_break = 135, // stmt_break - S_stmt_continue = 136, // stmt_continue - S_stmt_return = 137, // stmt_return - S_stmt_breakpoint = 138, // stmt_breakpoint - S_stmt_prof_begin = 139, // stmt_prof_begin - S_stmt_prof_end = 140, // stmt_prof_end - S_expr = 141, // expr - S_expr_or_empty = 142, // expr_or_empty - S_expr_assign = 143, // expr_assign - S_expr_increment = 144, // expr_increment - S_expr_decrement = 145, // expr_decrement - S_expr_ternary = 146, // expr_ternary - S_expr_binary = 147, // expr_binary - S_expr_primitive = 148, // expr_primitive - S_expr_complement = 149, // expr_complement - S_expr_not = 150, // expr_not - S_expr_call = 151, // expr_call - S_expr_method = 152, // expr_method - S_expr_function = 153, // expr_function - S_expr_pointer = 154, // expr_pointer - S_expr_add_array = 155, // expr_add_array - S_expr_parameters = 156, // expr_parameters - S_expr_arguments = 157, // expr_arguments - S_expr_arguments_no_empty = 158, // expr_arguments_no_empty - S_expr_reference = 159, // expr_reference - S_expr_array = 160, // expr_array - S_expr_field = 161, // expr_field - S_expr_size = 162, // expr_size - S_expr_paren = 163, // expr_paren - S_expr_object = 164, // expr_object - S_expr_thisthread = 165, // expr_thisthread - S_expr_empty_array = 166, // expr_empty_array - S_expr_undefined = 167, // expr_undefined - S_expr_game = 168, // expr_game - S_expr_self = 169, // expr_self - S_expr_anim = 170, // expr_anim - S_expr_level = 171, // expr_level - S_expr_animation = 172, // expr_animation - S_expr_animtree = 173, // expr_animtree - S_expr_identifier = 174, // expr_identifier - S_expr_path = 175, // expr_path - S_expr_istring = 176, // expr_istring - S_expr_string = 177, // expr_string - S_expr_color = 178, // expr_color - S_expr_vector = 179, // expr_vector - S_expr_float = 180, // expr_float - S_expr_integer = 181, // expr_integer - S_expr_false = 182, // expr_false - S_expr_true = 183 // expr_true + S_DEVBEGIN = 3, // "/#" + S_DEVEND = 4, // "#/" + S_INLINE = 5, // "#inline" + S_INCLUDE = 6, // "#include" + S_USINGTREE = 7, // "#using_animtree" + S_ANIMTREE = 8, // "#animtree" + S_ENDON = 9, // "endon" + S_NOTIFY = 10, // "notify" + S_WAIT = 11, // "wait" + S_WAITTILL = 12, // "waittill" + S_WAITTILLMATCH = 13, // "waittillmatch" + S_WAITTILLFRAMEEND = 14, // "waittillframeend" + S_IF = 15, // "if" + S_ELSE = 16, // "else" + S_DO = 17, // "do" + S_WHILE = 18, // "while" + S_FOR = 19, // "for" + S_FOREACH = 20, // "foreach" + S_IN = 21, // "in" + S_SWITCH = 22, // "switch" + S_CASE = 23, // "case" + S_DEFAULT = 24, // "default" + S_BREAK = 25, // "break" + S_CONTINUE = 26, // "continue" + S_RETURN = 27, // "return" + S_BREAKPOINT = 28, // "breakpoint" + S_PROFBEGIN = 29, // "prof_begin" + S_PROFEND = 30, // "prof_end" + S_THREAD = 31, // "thread" + S_CHILDTHREAD = 32, // "childthread" + S_THISTHREAD = 33, // "thisthread" + S_CALL = 34, // "call" + S_TRUE = 35, // "true" + S_FALSE = 36, // "false" + S_UNDEFINED = 37, // "undefined" + S_SIZE = 38, // ".size" + S_GAME = 39, // "game" + S_SELF = 40, // "self" + S_ANIM = 41, // "anim" + S_LEVEL = 42, // "level" + S_LPAREN = 43, // "(" + S_RPAREN = 44, // ")" + S_LBRACE = 45, // "{" + S_RBRACE = 46, // "}" + S_LBRACKET = 47, // "[" + S_RBRACKET = 48, // "]" + S_COMMA = 49, // "," + S_DOT = 50, // "." + S_DOUBLECOLON = 51, // "::" + S_COLON = 52, // ":" + S_SEMICOLON = 53, // ";" + S_QMARK = 54, // "?" + S_INCREMENT = 55, // "++" + S_DECREMENT = 56, // "--" + S_LSHIFT = 57, // "<<" + S_RSHIFT = 58, // ">>" + S_OR = 59, // "||" + S_AND = 60, // "&&" + S_EQUALITY = 61, // "==" + S_INEQUALITY = 62, // "!=" + S_LESS_EQUAL = 63, // "<=" + S_GREATER_EQUAL = 64, // ">=" + S_LESS = 65, // "<" + S_GREATER = 66, // ">" + S_NOT = 67, // "!" + S_COMPLEMENT = 68, // "~" + S_ASSIGN = 69, // "=" + S_ASSIGN_ADD = 70, // "+=" + S_ASSIGN_SUB = 71, // "-=" + S_ASSIGN_MUL = 72, // "*=" + S_ASSIGN_DIV = 73, // "/=" + S_ASSIGN_MOD = 74, // "%=" + S_ASSIGN_BW_OR = 75, // "|=" + S_ASSIGN_BW_AND = 76, // "&=" + S_ASSIGN_BW_EXOR = 77, // "^=" + S_ASSIGN_RSHIFT = 78, // ">>=" + S_ASSIGN_LSHIFT = 79, // "<<=" + S_BITWISE_OR = 80, // "|" + S_BITWISE_AND = 81, // "&" + S_BITWISE_EXOR = 82, // "^" + S_ADD = 83, // "+" + S_SUB = 84, // "-" + S_MUL = 85, // "*" + S_DIV = 86, // "/" + S_MOD = 87, // "%" + S_PATH = 88, // "path" + S_IDENTIFIER = 89, // "identifier" + S_STRING = 90, // "string literal" + S_ISTRING = 91, // "localized string" + S_COLOR = 92, // "color" + S_FLOAT = 93, // "float" + S_INT_DEC = 94, // "int" + S_INT_OCT = 95, // "octal int" + S_INT_BIN = 96, // "binary int" + S_INT_HEX = 97, // "hexadecimal int" + S_ADD_ARRAY = 98, // ADD_ARRAY + S_THEN = 99, // THEN + S_TERN = 100, // TERN + S_NEG = 101, // NEG + S_ANIMREF = 102, // ANIMREF + S_PREINC = 103, // PREINC + S_PREDEC = 104, // PREDEC + S_POSTINC = 105, // POSTINC + S_POSTDEC = 106, // POSTDEC + S_YYACCEPT = 107, // $accept + S_root = 108, // root + S_program = 109, // program + S_inline = 110, // inline + S_include = 111, // include + S_declaration = 112, // declaration + S_decl_usingtree = 113, // decl_usingtree + S_decl_constant = 114, // decl_constant + S_decl_thread = 115, // decl_thread + S_stmt = 116, // stmt + S_stmt_dev = 117, // stmt_dev + S_stmt_block = 118, // stmt_block + S_stmt_list = 119, // stmt_list + S_stmt_expr = 120, // stmt_expr + S_stmt_call = 121, // stmt_call + S_stmt_assign = 122, // stmt_assign + S_stmt_endon = 123, // stmt_endon + S_stmt_notify = 124, // stmt_notify + S_stmt_wait = 125, // stmt_wait + S_stmt_waittill = 126, // stmt_waittill + S_stmt_waittillmatch = 127, // stmt_waittillmatch + S_stmt_waittillframeend = 128, // stmt_waittillframeend + S_stmt_if = 129, // stmt_if + S_stmt_ifelse = 130, // stmt_ifelse + S_stmt_while = 131, // stmt_while + S_stmt_dowhile = 132, // stmt_dowhile + S_stmt_for = 133, // stmt_for + S_stmt_foreach = 134, // stmt_foreach + S_stmt_switch = 135, // stmt_switch + S_stmt_case = 136, // stmt_case + S_stmt_default = 137, // stmt_default + S_stmt_break = 138, // stmt_break + S_stmt_continue = 139, // stmt_continue + S_stmt_return = 140, // stmt_return + S_stmt_breakpoint = 141, // stmt_breakpoint + S_stmt_prof_begin = 142, // stmt_prof_begin + S_stmt_prof_end = 143, // stmt_prof_end + S_expr = 144, // expr + S_expr_or_empty = 145, // expr_or_empty + S_expr_assign = 146, // expr_assign + S_expr_increment = 147, // expr_increment + S_expr_decrement = 148, // expr_decrement + S_expr_ternary = 149, // expr_ternary + S_expr_binary = 150, // expr_binary + S_expr_primitive = 151, // expr_primitive + S_expr_complement = 152, // expr_complement + S_expr_not = 153, // expr_not + S_expr_call = 154, // expr_call + S_expr_method = 155, // expr_method + S_expr_function = 156, // expr_function + S_expr_pointer = 157, // expr_pointer + S_expr_add_array = 158, // expr_add_array + S_expr_parameters = 159, // expr_parameters + S_expr_arguments = 160, // expr_arguments + S_expr_arguments_no_empty = 161, // expr_arguments_no_empty + S_expr_reference = 162, // expr_reference + S_expr_array = 163, // expr_array + S_expr_field = 164, // expr_field + S_expr_size = 165, // expr_size + S_expr_paren = 166, // expr_paren + S_expr_object = 167, // expr_object + S_expr_thisthread = 168, // expr_thisthread + S_expr_empty_array = 169, // expr_empty_array + S_expr_undefined = 170, // expr_undefined + S_expr_game = 171, // expr_game + S_expr_self = 172, // expr_self + S_expr_anim = 173, // expr_anim + S_expr_level = 174, // expr_level + S_expr_animation = 175, // expr_animation + S_expr_animtree = 176, // expr_animtree + S_expr_identifier = 177, // expr_identifier + S_expr_path = 178, // expr_path + S_expr_istring = 179, // expr_istring + S_expr_string = 180, // expr_string + S_expr_color = 181, // expr_color + S_expr_vector = 182, // expr_vector + S_expr_float = 183, // expr_float + S_expr_integer = 184, // expr_integer + S_expr_false = 185, // expr_false + S_expr_true = 186 // expr_true }; }; @@ -1242,6 +1248,7 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< ast::stmt_ifelse::ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (std::move (that.value)); @@ -2495,6 +2502,7 @@ switch (yykind) value.template destroy< ast::stmt_ifelse::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.template destroy< ast::stmt_list::ptr > (); @@ -2754,6 +2762,36 @@ switch (yykind) return symbol_type (token::IW6UNDEF, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_DEVBEGIN (location_type l) + { + return symbol_type (token::DEVBEGIN, std::move (l)); + } +#else + static + symbol_type + make_DEVBEGIN (const location_type& l) + { + return symbol_type (token::DEVBEGIN, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_DEVEND (location_type l) + { + return symbol_type (token::DEVEND, std::move (l)); + } +#else + static + symbol_type + make_DEVEND (const location_type& l) + { + return symbol_type (token::DEVEND, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4628,9 +4666,9 @@ switch (yykind) /// Constants. enum { - yylast_ = 2111, ///< Last index in yytable_. - yynnts_ = 79, ///< Number of nonterminal symbols. - yyfinal_ = 19 ///< Termination state number. + yylast_ = 2346, ///< Last index in yytable_. + yynnts_ = 80, ///< Number of nonterminal symbols. + yyfinal_ = 21 ///< Termination state number. }; @@ -4883,6 +4921,7 @@ switch (yykind) value.copy< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.copy< ast::stmt_list::ptr > (YY_MOVE (that.value)); @@ -5196,6 +5235,7 @@ switch (yykind) value.move< ast::stmt_ifelse::ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (YY_MOVE (s.value)); @@ -5317,7 +5357,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::iw6 -#line 5321 "parser.hpp" +#line 5361 "parser.hpp" diff --git a/src/iw7/xsk/compiler.cpp b/src/iw7/xsk/compiler.cpp index b12a3128..c129f980 100644 --- a/src/iw7/xsk/compiler.cpp +++ b/src/iw7/xsk/compiler.cpp @@ -85,6 +85,7 @@ void compiler::compile_program(const ast::program::ptr& program) constants_.clear(); local_functions_.clear(); index_ = 1; + developer_thread_ = false; for (const auto& entry : program->declarations) { @@ -150,6 +151,12 @@ void compiler::emit_declaration(const ast::decl& decl) { switch (decl.kind()) { + case ast::kind::decl_dev_begin: + developer_thread_ = true; + break; + case ast::kind::decl_dev_end: + developer_thread_ = false; + break; case ast::kind::decl_usingtree: emit_decl_usingtree(decl.as_usingtree); break; @@ -166,6 +173,9 @@ void compiler::emit_declaration(const ast::decl& decl) void compiler::emit_decl_usingtree(const ast::decl_usingtree::ptr& animtree) { + if(developer_thread_) + throw comp_error(animtree->loc(), "cannot put #using_animtree inside /# ... #/ comment"); + animtrees_.push_back({ animtree->name->value, false }); } diff --git a/src/iw7/xsk/lexer.cpp b/src/iw7/xsk/lexer.cpp index c62e2f9c..d9f0ece3 100644 --- a/src/iw7/xsk/lexer.cpp +++ b/src/iw7/xsk/lexer.cpp @@ -555,8 +555,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 108 -#define YY_END_OF_BUFFER 109 +#define YY_NUM_RULES 110 +#define YY_END_OF_BUFFER 111 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -564,44 +564,44 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[325] = +static const flex_int16_t yy_accept[328] = { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 109, 107, - 1, 2, 92, 107, 107, 91, 95, 107, 52, 53, - 89, 87, 58, 88, 59, 90, 106, 106, 61, 62, - 76, 86, 77, 63, 98, 56, 57, 96, 98, 98, - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 54, 94, 55, 93, 5, 6, - 5, 107, 89, 9, 10, 9, 73, 0, 100, 0, - 13, 0, 0, 0, 0, 82, 0, 71, 0, 84, - 0, 0, 12, 80, 64, 78, 65, 79, 102, 0, - 8, 4, 3, 81, 102, 106, 103, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 111, 109, + 1, 2, 94, 109, 109, 93, 97, 109, 54, 55, + 91, 89, 60, 90, 61, 92, 108, 108, 63, 64, + 78, 88, 79, 65, 100, 58, 59, 98, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 56, 96, 57, 95, 5, 6, + 5, 12, 13, 12, 109, 91, 92, 75, 0, 102, + 0, 15, 0, 0, 0, 0, 84, 0, 73, 0, + 86, 0, 0, 8, 82, 66, 80, 67, 81, 104, + 0, 11, 4, 3, 83, 104, 108, 105, 0, 0, - 0, 60, 68, 74, 72, 75, 69, 98, 85, 98, - 98, 98, 98, 98, 98, 26, 98, 98, 98, 98, - 98, 24, 30, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 83, 70, 7, 11, 0, 100, - 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, - 0, 100, 0, 102, 0, 3, 102, 102, 103, 104, - 105, 97, 66, 67, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 28, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 98, 98, 98, 98, 101, 0, - 0, 0, 0, 0, 99, 0, 0, 99, 0, 0, + 0, 0, 62, 70, 76, 74, 77, 71, 100, 87, + 100, 100, 100, 100, 100, 100, 28, 100, 100, 100, + 100, 100, 26, 32, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 85, 72, 7, 14, 10, + 9, 0, 102, 0, 0, 0, 0, 0, 0, 101, + 0, 0, 0, 0, 102, 0, 104, 0, 3, 104, + 104, 105, 106, 107, 99, 68, 69, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 30, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 103, 0, 0, 0, 0, 0, 101, 0, 0, - 50, 98, 43, 32, 98, 98, 98, 25, 98, 98, - 98, 48, 98, 98, 98, 98, 49, 98, 98, 98, - 44, 98, 20, 98, 0, 0, 0, 0, 0, 47, - 34, 98, 98, 98, 18, 45, 98, 51, 98, 98, - 98, 98, 98, 98, 98, 98, 27, 0, 0, 0, - 0, 0, 98, 98, 98, 98, 98, 19, 98, 98, - 36, 31, 98, 40, 98, 98, 101, 0, 0, 14, - 0, 98, 98, 98, 33, 29, 98, 98, 98, 98, - 98, 0, 15, 0, 98, 98, 35, 98, 39, 98, - 98, 21, 17, 0, 98, 98, 98, 98, 46, 98, + 101, 0, 0, 52, 100, 45, 34, 100, 100, 100, + 27, 100, 100, 100, 50, 100, 100, 100, 100, 51, + 100, 100, 100, 46, 100, 22, 100, 0, 0, 0, + 0, 0, 49, 36, 100, 100, 100, 20, 47, 100, + 53, 100, 100, 100, 100, 100, 100, 100, 100, 29, + 0, 0, 0, 0, 0, 100, 100, 100, 100, 100, + 21, 100, 100, 38, 33, 100, 42, 100, 100, 103, + 0, 0, 16, 0, 100, 100, 100, 35, 31, 100, + 100, 100, 100, 100, 0, 17, 0, 100, 100, 37, + 100, 41, 100, 100, 23, 19, 0, 100, 100, 100, - 98, 0, 37, 98, 38, 42, 98, 98, 0, 41, - 98, 98, 0, 98, 98, 0, 98, 22, 0, 98, - 16, 98, 23, 0 + 100, 48, 100, 100, 0, 39, 100, 40, 44, 100, + 100, 0, 43, 100, 100, 0, 100, 100, 0, 100, + 24, 0, 100, 18, 100, 25, 0 } ; static const YY_CHAR yy_ec[256] = @@ -647,91 +647,91 @@ static const YY_CHAR yy_meta[64] = 1, 1, 1 } ; -static const flex_int16_t yy_base[345] = +static const flex_int16_t yy_base[348] = { 0, - 0, 0, 61, 62, 60, 63, 64, 65, 696, 697, - 697, 697, 670, 71, 60, 669, 73, 70, 697, 697, - 63, 70, 697, 69, 71, 94, 102, 109, 671, 697, - 61, 667, 76, 697, 658, 697, 697, 665, 60, 74, - 99, 104, 63, 101, 80, 106, 75, 108, 111, 119, - 120, 113, 117, 131, 697, 122, 697, 697, 697, 697, - 672, 139, 663, 697, 697, 670, 697, 154, 697, 164, - 697, 0, 637, 636, 631, 697, 157, 697, 162, 697, - 163, 170, 697, 697, 697, 697, 697, 697, 180, 638, - 697, 697, 0, 697, 186, 192, 198, 158, 205, 223, + 0, 0, 61, 62, 63, 64, 65, 66, 702, 703, + 703, 703, 676, 63, 58, 675, 76, 67, 703, 703, + 62, 67, 703, 73, 86, 85, 96, 102, 677, 703, + 65, 673, 68, 703, 664, 703, 703, 671, 75, 76, + 93, 99, 98, 105, 111, 108, 78, 103, 100, 113, + 118, 125, 123, 127, 703, 136, 703, 703, 703, 703, + 678, 703, 703, 677, 145, 668, 161, 703, 158, 703, + 163, 703, 0, 643, 642, 637, 703, 160, 703, 161, + 703, 165, 176, 703, 703, 703, 703, 703, 703, 183, + 644, 703, 703, 0, 703, 187, 194, 200, 195, 216, - 0, 697, 657, 697, 697, 697, 656, 647, 697, 54, - 137, 182, 147, 153, 194, 646, 156, 148, 187, 193, - 199, 645, 644, 197, 200, 207, 204, 222, 226, 233, - 213, 234, 237, 239, 697, 697, 697, 697, 243, 244, - 270, 0, 631, 146, 630, 274, 697, 278, 271, 283, - 279, 280, 284, 697, 615, 0, 276, 697, 303, 282, - 0, 640, 697, 697, 257, 269, 281, 258, 287, 275, - 293, 292, 277, 298, 299, 302, 304, 305, 306, 308, - 311, 313, 309, 314, 316, 319, 321, 323, 0, 624, - 624, 625, 620, 353, 354, 361, 352, 356, 365, 627, + 234, 0, 703, 663, 703, 703, 703, 662, 653, 703, + 143, 148, 184, 147, 150, 197, 652, 189, 203, 191, + 193, 208, 651, 650, 190, 207, 214, 211, 233, 215, + 225, 224, 245, 236, 249, 703, 703, 703, 703, 703, + 703, 254, 263, 281, 0, 637, 148, 636, 278, 703, + 285, 280, 288, 283, 284, 292, 703, 621, 0, 284, + 703, 311, 290, 0, 646, 703, 703, 267, 287, 265, + 266, 286, 289, 301, 295, 302, 304, 306, 307, 308, + 309, 313, 312, 317, 318, 320, 323, 325, 327, 328, + 329, 0, 630, 630, 631, 626, 358, 360, 366, 361, - 634, 336, 633, 632, 338, 339, 340, 631, 343, 347, - 344, 630, 346, 357, 364, 350, 629, 368, 358, 371, - 628, 363, 370, 373, 0, 606, 604, 609, 614, 697, - 376, 377, 380, 378, 623, 622, 382, 621, 383, 385, - 384, 386, 395, 402, 387, 389, 620, 0, 600, 611, - 609, 613, 403, 404, 405, 407, 410, 615, 411, 413, - 614, 613, 412, 612, 414, 418, 697, 603, 602, 697, - 605, 422, 416, 417, 608, 607, 423, 436, 437, 438, - 426, 598, 697, 589, 439, 441, 604, 442, 603, 444, - 450, 447, 697, 590, 451, 459, 452, 453, 601, 458, + 365, 372, 633, 640, 53, 639, 638, 344, 345, 346, + 637, 347, 354, 352, 636, 350, 367, 370, 355, 635, + 353, 369, 371, 634, 377, 378, 379, 0, 612, 610, + 615, 620, 703, 380, 381, 384, 382, 629, 628, 383, + 627, 385, 401, 388, 392, 394, 407, 408, 411, 626, + 0, 606, 617, 615, 619, 395, 413, 393, 397, 416, + 621, 417, 419, 620, 619, 421, 618, 422, 428, 703, + 609, 608, 703, 611, 429, 426, 431, 614, 613, 433, + 430, 436, 446, 434, 604, 703, 595, 447, 449, 610, + 450, 609, 451, 452, 456, 703, 596, 432, 460, 458, - 461, 585, 582, 464, 573, 531, 466, 467, 499, 519, - 469, 473, 472, 474, 475, 482, 481, 487, 475, 476, - 697, 478, 480, 697, 525, 533, 541, 546, 554, 560, - 564, 572, 452, 580, 588, 596, 604, 608, 304, 616, - 624, 245, 177, 109 + 461, 607, 466, 469, 591, 588, 470, 579, 537, 472, + 467, 505, 525, 475, 478, 478, 479, 480, 488, 481, + 495, 486, 482, 703, 486, 492, 703, 531, 539, 547, + 552, 560, 566, 570, 578, 511, 586, 594, 602, 610, + 614, 419, 622, 630, 305, 246, 179 } ; -static const flex_int16_t yy_def[345] = +static const flex_int16_t yy_def[348] = { 0, - 324, 1, 325, 325, 1, 1, 326, 326, 324, 324, - 324, 324, 324, 327, 328, 324, 324, 329, 324, 324, - 324, 324, 324, 324, 324, 324, 330, 330, 324, 324, - 324, 324, 324, 324, 331, 324, 324, 324, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 324, 324, 324, 324, 324, 324, - 324, 328, 324, 324, 324, 324, 324, 327, 324, 332, - 324, 333, 333, 324, 324, 324, 334, 324, 335, 324, - 329, 336, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 337, 324, 324, 330, 330, 330, 330, 330, + 327, 1, 328, 328, 329, 329, 1, 1, 327, 327, + 327, 327, 327, 330, 331, 327, 327, 332, 327, 327, + 327, 327, 327, 327, 327, 327, 333, 333, 327, 327, + 327, 327, 327, 327, 334, 327, 327, 327, 334, 334, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 331, 327, 327, 327, 330, 327, + 335, 327, 336, 336, 327, 327, 327, 337, 327, 338, + 327, 332, 339, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 340, 327, 327, 333, 333, 333, 333, - 338, 324, 324, 324, 324, 324, 324, 331, 324, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 324, 324, 324, 324, 327, 327, - 332, 339, 324, 324, 324, 334, 324, 340, 335, 341, - 329, 329, 336, 324, 324, 337, 324, 324, 330, 330, - 100, 338, 324, 324, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 342, 324, - 324, 324, 324, 334, 334, 340, 335, 335, 341, 324, + 333, 341, 327, 327, 327, 327, 327, 327, 334, 327, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 334, 327, 327, 327, 327, 327, + 327, 330, 330, 335, 342, 327, 327, 327, 337, 327, + 343, 338, 344, 332, 332, 339, 327, 327, 340, 327, + 327, 333, 333, 101, 341, 327, 327, 334, 334, 334, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 334, 345, 327, 327, 327, 327, 337, 337, 343, 338, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 343, 324, 324, 324, 324, 324, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 344, 324, 324, - 324, 324, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 324, 324, 324, 324, - 324, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 324, 324, 324, 331, 331, 331, 331, 331, 331, - 331, 331, 324, 324, 331, 331, 331, 331, 331, 331, + 338, 344, 327, 334, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 334, 334, 334, 346, 327, 327, + 327, 327, 327, 334, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 347, 327, 327, 327, 327, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 327, + 327, 327, 327, 327, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 327, 327, 327, 334, 334, 334, + 334, 334, 334, 334, 334, 327, 327, 334, 334, 334, - 331, 324, 331, 331, 331, 331, 331, 331, 324, 331, - 331, 331, 324, 331, 331, 324, 331, 331, 324, 331, - 324, 331, 331, 0, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324 + 334, 334, 334, 334, 327, 334, 334, 334, 334, 334, + 334, 327, 334, 334, 334, 327, 334, 334, 327, 334, + 334, 327, 334, 327, 334, 334, 0, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327 } ; -static const flex_int16_t yy_nxt[761] = +static const flex_int16_t yy_nxt[767] = { 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 28, @@ -739,86 +739,87 @@ static const flex_int16_t yy_nxt[761] = 35, 36, 10, 37, 38, 35, 39, 40, 41, 42, 43, 44, 45, 35, 46, 35, 47, 35, 48, 35, 49, 50, 51, 52, 53, 35, 54, 35, 35, 55, - 56, 57, 58, 60, 60, 62, 65, 65, 62, 66, - 66, 63, 61, 61, 63, 69, 71, 77, 69, 83, - 78, 79, 85, 87, 103, 104, 101, 84, 89, 89, - 89, 89, 101, 88, 86, 101, 73, 80, 165, 91, + 56, 57, 58, 60, 60, 63, 63, 70, 64, 64, + 65, 65, 61, 61, 72, 70, 66, 66, 84, 86, + 78, 67, 67, 79, 80, 102, 85, 88, 104, 105, + 92, 87, 107, 108, 74, 71, 93, 89, 234, 83, - 106, 107, 82, 70, 74, 92, 101, 101, 110, 117, - 93, 118, 101, 267, 75, 124, 121, 95, 94, 96, - 97, 97, 96, 90, 95, 111, 96, 96, 96, 96, - 99, 101, 100, 101, 101, 112, 101, 119, 101, 99, - 101, 101, 113, 101, 115, 101, 135, 122, 114, 101, - 120, 101, 101, 116, 123, 138, 130, 125, 69, 127, - 128, 147, 126, 101, 131, 132, 68, 133, 140, 101, - 147, 69, 81, 324, 134, 73, 129, 166, 152, 101, - 101, 248, 136, 74, 191, 101, 70, 173, 101, 148, - 101, 169, 192, 75, 150, 82, 141, 89, 89, 89, + 81, 94, 75, 90, 90, 90, 90, 102, 102, 95, + 102, 96, 76, 97, 98, 98, 97, 96, 125, 97, + 97, 97, 97, 111, 100, 102, 101, 112, 102, 113, + 102, 102, 102, 100, 102, 102, 114, 102, 91, 116, + 102, 120, 115, 102, 118, 102, 119, 122, 117, 123, + 102, 127, 126, 128, 121, 102, 124, 102, 129, 102, + 136, 140, 70, 134, 150, 69, 141, 143, 131, 150, + 135, 133, 93, 70, 130, 102, 132, 94, 82, 102, + 102, 74, 102, 270, 155, 95, 194, 168, 169, 75, + 71, 172, 151, 153, 195, 144, 137, 83, 173, 76, - 89, 170, 153, 157, 157, 157, 157, 95, 172, 96, - 96, 96, 96, 95, 101, 159, 159, 159, 96, 101, - 324, 154, 160, 160, 101, 101, 101, 158, 167, 101, - 101, 101, 101, 174, 168, 171, 101, 101, 324, 101, - 161, 161, 161, 161, 175, 101, 176, 69, 69, 225, - 161, 161, 177, 178, 101, 101, 179, 180, 101, 161, - 161, 161, 161, 161, 161, 101, 101, 185, 181, 101, - 182, 101, 68, 186, 140, 70, 70, 183, 147, 147, - 146, 187, 195, 188, 184, 149, 81, 69, 69, 101, - 101, 198, 152, 157, 157, 157, 157, 324, 204, 160, + 90, 90, 90, 90, 160, 160, 160, 160, 156, 96, + 327, 97, 97, 97, 97, 96, 102, 162, 162, 162, + 97, 102, 102, 102, 157, 102, 102, 102, 161, 102, + 170, 327, 102, 163, 163, 102, 171, 177, 174, 102, + 102, 175, 176, 102, 178, 180, 102, 102, 102, 327, + 251, 164, 164, 164, 164, 179, 102, 102, 70, 185, + 181, 164, 164, 182, 183, 102, 102, 70, 102, 186, + 164, 164, 164, 164, 164, 164, 187, 102, 188, 184, + 190, 102, 150, 69, 189, 143, 71, 149, 150, 198, + 152, 70, 70, 191, 82, 71, 201, 102, 102, 102, - 160, 101, 141, 150, 201, 202, 148, 101, 189, 101, - 196, 82, 82, 101, 101, 199, 153, 158, 95, 101, - 159, 159, 159, 96, 101, 101, 209, 203, 206, 207, - 101, 101, 208, 205, 101, 101, 101, 101, 101, 211, - 101, 101, 212, 101, 213, 101, 101, 215, 101, 214, - 210, 101, 217, 101, 220, 101, 221, 147, 147, 222, - 147, 219, 216, 146, 147, 195, 218, 149, 101, 224, - 101, 101, 101, 198, 223, 101, 101, 232, 101, 101, - 237, 231, 101, 233, 150, 148, 148, 236, 150, 101, - 101, 235, 238, 196, 234, 101, 101, 199, 239, 240, + 155, 160, 160, 160, 160, 327, 207, 163, 163, 228, + 151, 206, 153, 144, 204, 83, 83, 199, 102, 102, + 202, 102, 102, 205, 156, 161, 96, 102, 162, 162, + 162, 97, 208, 102, 102, 211, 102, 210, 102, 102, + 102, 102, 209, 102, 102, 102, 214, 215, 216, 102, + 102, 212, 102, 217, 218, 102, 213, 102, 220, 102, + 102, 102, 150, 223, 150, 224, 219, 225, 149, 150, + 198, 221, 222, 150, 152, 227, 102, 102, 102, 102, + 201, 226, 102, 235, 102, 102, 102, 102, 240, 236, + 151, 245, 151, 153, 239, 238, 241, 153, 199, 102, - 101, 241, 101, 101, 245, 101, 242, 244, 101, 101, - 101, 243, 101, 247, 101, 101, 101, 101, 101, 101, - 257, 101, 259, 246, 256, 260, 253, 101, 255, 262, - 254, 265, 261, 266, 101, 101, 101, 101, 263, 101, - 258, 264, 101, 101, 101, 101, 101, 273, 101, 101, - 101, 277, 272, 276, 101, 101, 142, 287, 101, 274, - 275, 278, 280, 279, 281, 288, 285, 286, 101, 101, - 101, 101, 292, 101, 101, 289, 101, 290, 291, 101, - 298, 296, 101, 101, 101, 101, 297, 295, 300, 299, - 101, 101, 306, 101, 301, 304, 101, 308, 101, 101, + 237, 102, 102, 102, 202, 243, 244, 247, 242, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 248, 250, + 102, 260, 246, 192, 102, 102, 102, 102, 259, 102, + 256, 249, 258, 102, 257, 265, 264, 266, 262, 102, + 102, 263, 261, 102, 275, 102, 267, 277, 102, 102, + 278, 102, 268, 102, 102, 269, 276, 280, 102, 279, + 102, 102, 102, 102, 102, 102, 102, 281, 102, 292, + 283, 290, 282, 288, 284, 291, 293, 289, 102, 102, + 295, 102, 102, 102, 102, 306, 294, 301, 102, 299, + 102, 302, 102, 102, 300, 298, 307, 303, 102, 102, - 305, 101, 311, 310, 303, 101, 101, 101, 101, 307, - 101, 315, 101, 101, 317, 321, 314, 323, 318, 101, - 312, 320, 319, 316, 322, 59, 59, 59, 59, 59, - 59, 59, 59, 64, 64, 64, 64, 64, 64, 64, - 64, 68, 68, 68, 68, 68, 68, 68, 68, 72, - 72, 101, 313, 72, 81, 81, 81, 81, 81, 81, - 81, 81, 98, 101, 98, 98, 98, 98, 108, 108, - 108, 108, 139, 139, 139, 139, 139, 139, 139, 139, - 146, 146, 146, 146, 146, 146, 146, 146, 149, 149, - 149, 149, 149, 149, 149, 149, 151, 151, 151, 151, + 309, 102, 102, 304, 102, 311, 308, 102, 314, 313, + 102, 102, 102, 102, 102, 145, 318, 310, 102, 320, + 315, 323, 317, 321, 102, 326, 324, 102, 322, 319, + 325, 59, 59, 59, 59, 59, 59, 59, 59, 62, + 62, 62, 62, 62, 62, 62, 62, 69, 69, 69, + 69, 69, 69, 69, 69, 73, 73, 102, 316, 73, + 82, 82, 82, 82, 82, 82, 82, 82, 99, 102, + 99, 99, 99, 99, 109, 109, 109, 109, 142, 142, + 142, 142, 142, 142, 142, 142, 149, 149, 149, 149, + 149, 149, 149, 149, 152, 152, 152, 152, 152, 152, - 151, 151, 151, 151, 156, 101, 156, 156, 156, 156, - 156, 156, 162, 162, 101, 162, 194, 194, 194, 194, - 194, 194, 194, 194, 197, 197, 197, 197, 197, 197, - 197, 197, 309, 101, 302, 101, 101, 294, 293, 101, - 101, 284, 283, 282, 101, 101, 101, 101, 271, 270, - 269, 268, 101, 101, 101, 101, 252, 251, 250, 249, - 101, 101, 101, 101, 101, 101, 101, 230, 229, 228, - 227, 226, 101, 200, 193, 190, 101, 101, 101, 101, - 164, 163, 155, 145, 144, 143, 138, 84, 137, 109, - 101, 105, 102, 76, 67, 324, 9, 324, 324, 324, + 152, 152, 154, 154, 154, 154, 154, 154, 154, 154, + 159, 102, 159, 159, 159, 159, 159, 159, 165, 165, + 102, 165, 197, 197, 197, 197, 197, 197, 197, 197, + 200, 200, 200, 200, 200, 200, 200, 200, 312, 102, + 305, 102, 102, 297, 296, 102, 102, 287, 286, 285, + 102, 102, 102, 102, 274, 273, 272, 271, 102, 102, + 102, 102, 255, 254, 253, 252, 102, 102, 102, 102, + 102, 102, 102, 233, 232, 231, 230, 229, 102, 203, + 196, 193, 102, 102, 102, 102, 167, 166, 158, 148, + 147, 146, 85, 139, 138, 110, 102, 106, 103, 77, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324 + 68, 327, 9, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327 } ; -static const flex_int16_t yy_chk[761] = +static const flex_int16_t yy_chk[767] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -826,83 +827,84 @@ static const flex_int16_t yy_chk[761] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 7, 8, 6, 7, - 8, 5, 3, 4, 6, 14, 15, 17, 18, 21, - 17, 17, 22, 24, 31, 31, 110, 21, 25, 25, - 25, 25, 39, 24, 22, 43, 15, 17, 110, 26, + 1, 1, 1, 3, 4, 5, 6, 14, 5, 6, + 7, 8, 3, 4, 15, 18, 7, 8, 21, 22, + 17, 7, 8, 17, 17, 205, 21, 24, 31, 31, + 26, 22, 33, 33, 15, 14, 26, 24, 205, 18, - 33, 33, 18, 14, 15, 26, 40, 47, 39, 43, - 26, 43, 45, 344, 15, 47, 45, 27, 26, 27, - 27, 27, 27, 25, 28, 40, 28, 28, 28, 28, - 27, 41, 27, 44, 27, 41, 42, 44, 46, 27, - 48, 28, 41, 49, 42, 52, 56, 46, 41, 53, - 44, 50, 51, 42, 46, 62, 52, 48, 68, 50, - 51, 77, 49, 54, 52, 53, 70, 54, 70, 111, - 79, 81, 82, 98, 54, 62, 51, 111, 82, 113, - 118, 343, 56, 62, 144, 114, 68, 118, 117, 77, - 98, 113, 144, 62, 79, 81, 70, 89, 89, 89, + 17, 26, 15, 25, 25, 25, 25, 39, 40, 26, + 47, 27, 15, 27, 27, 27, 27, 28, 47, 28, + 28, 28, 28, 39, 27, 41, 27, 40, 27, 41, + 43, 42, 49, 27, 28, 48, 41, 44, 25, 42, + 46, 44, 41, 45, 43, 50, 43, 45, 42, 46, + 51, 49, 48, 50, 44, 53, 46, 52, 51, 54, + 56, 65, 69, 54, 78, 71, 67, 71, 52, 80, + 54, 53, 67, 82, 51, 111, 52, 67, 83, 114, + 112, 65, 115, 347, 83, 67, 147, 111, 112, 65, + 69, 114, 78, 80, 147, 71, 56, 82, 115, 65, - 89, 114, 82, 95, 95, 95, 95, 96, 117, 96, - 96, 96, 96, 97, 112, 97, 97, 97, 97, 119, - 99, 89, 99, 99, 96, 120, 115, 95, 112, 124, - 97, 121, 125, 119, 112, 115, 127, 99, 100, 126, - 100, 100, 100, 100, 120, 131, 121, 139, 140, 342, - 100, 100, 124, 125, 128, 100, 126, 127, 129, 100, - 100, 100, 100, 100, 100, 130, 132, 131, 128, 133, - 129, 134, 141, 132, 141, 139, 140, 130, 146, 149, - 148, 133, 148, 134, 130, 150, 153, 151, 152, 165, - 168, 150, 153, 157, 157, 157, 157, 160, 168, 160, + 90, 90, 90, 90, 96, 96, 96, 96, 83, 97, + 99, 97, 97, 97, 97, 98, 113, 98, 98, 98, + 98, 118, 125, 120, 90, 121, 97, 99, 96, 116, + 113, 100, 98, 100, 100, 119, 113, 120, 116, 126, + 122, 118, 119, 128, 121, 125, 127, 130, 100, 101, + 346, 101, 101, 101, 101, 122, 132, 131, 142, 130, + 126, 101, 101, 127, 128, 129, 101, 143, 134, 131, + 101, 101, 101, 101, 101, 101, 131, 133, 132, 129, + 134, 135, 149, 144, 133, 144, 142, 151, 152, 151, + 153, 154, 155, 135, 156, 143, 153, 170, 171, 168, - 160, 166, 141, 149, 165, 166, 146, 170, 339, 173, - 148, 151, 152, 167, 160, 150, 153, 157, 159, 169, - 159, 159, 159, 159, 172, 171, 173, 167, 170, 171, - 174, 175, 172, 169, 176, 159, 177, 178, 179, 175, - 180, 183, 176, 181, 177, 182, 184, 179, 185, 178, - 174, 186, 181, 187, 184, 188, 185, 194, 195, 186, - 197, 183, 180, 196, 198, 196, 182, 199, 202, 188, - 205, 206, 207, 199, 187, 209, 211, 205, 213, 210, - 211, 202, 216, 206, 197, 194, 195, 210, 198, 214, - 219, 209, 213, 196, 207, 222, 215, 199, 214, 215, + 156, 160, 160, 160, 160, 163, 171, 163, 163, 345, + 149, 170, 152, 144, 168, 154, 155, 151, 172, 169, + 153, 173, 163, 169, 156, 160, 162, 175, 162, 162, + 162, 162, 172, 174, 176, 175, 177, 174, 178, 179, + 180, 181, 173, 162, 183, 182, 178, 179, 180, 184, + 185, 176, 186, 181, 182, 187, 177, 188, 184, 189, + 190, 191, 197, 187, 198, 188, 183, 189, 199, 200, + 199, 185, 186, 201, 202, 191, 208, 209, 210, 212, + 202, 190, 216, 208, 214, 221, 213, 219, 214, 209, + 197, 221, 198, 200, 213, 212, 216, 201, 199, 217, - 218, 216, 223, 220, 222, 224, 218, 220, 231, 232, - 234, 219, 233, 224, 237, 239, 241, 240, 242, 245, - 237, 246, 240, 223, 234, 240, 231, 243, 233, 242, - 232, 245, 241, 246, 244, 253, 254, 255, 243, 256, - 239, 244, 257, 259, 263, 260, 265, 254, 273, 274, - 266, 259, 253, 257, 272, 277, 333, 274, 281, 255, - 256, 260, 265, 263, 266, 277, 272, 273, 278, 279, - 280, 285, 281, 286, 288, 278, 290, 279, 280, 292, - 290, 286, 291, 295, 297, 298, 288, 285, 292, 291, - 300, 296, 298, 301, 292, 296, 304, 301, 307, 308, + 210, 222, 218, 223, 202, 218, 219, 223, 217, 225, + 226, 227, 234, 235, 237, 240, 236, 242, 225, 227, + 244, 240, 222, 342, 245, 258, 246, 256, 237, 259, + 234, 226, 236, 243, 235, 245, 244, 246, 243, 247, + 248, 243, 242, 249, 256, 257, 247, 258, 260, 262, + 259, 263, 248, 266, 268, 249, 257, 262, 276, 260, + 269, 275, 281, 277, 298, 280, 284, 263, 282, 281, + 268, 277, 266, 275, 269, 280, 282, 276, 283, 288, + 284, 289, 291, 293, 294, 298, 283, 293, 295, 289, + 300, 294, 299, 301, 291, 288, 299, 295, 303, 311, - 297, 311, 307, 304, 295, 312, 314, 315, 320, 300, - 322, 312, 323, 317, 314, 319, 311, 322, 315, 318, - 308, 317, 316, 313, 320, 325, 325, 325, 325, 325, - 325, 325, 325, 326, 326, 326, 326, 326, 326, 326, - 326, 327, 327, 327, 327, 327, 327, 327, 327, 328, - 328, 310, 309, 328, 329, 329, 329, 329, 329, 329, - 329, 329, 330, 306, 330, 330, 330, 330, 331, 331, - 331, 331, 332, 332, 332, 332, 332, 332, 332, 332, - 334, 334, 334, 334, 334, 334, 334, 334, 335, 335, - 335, 335, 335, 335, 335, 335, 336, 336, 336, 336, + 301, 304, 307, 295, 310, 304, 300, 314, 310, 307, + 315, 317, 318, 320, 323, 336, 315, 303, 325, 317, + 311, 320, 314, 318, 326, 325, 322, 321, 319, 316, + 323, 328, 328, 328, 328, 328, 328, 328, 328, 329, + 329, 329, 329, 329, 329, 329, 329, 330, 330, 330, + 330, 330, 330, 330, 330, 331, 331, 313, 312, 331, + 332, 332, 332, 332, 332, 332, 332, 332, 333, 309, + 333, 333, 333, 333, 334, 334, 334, 334, 335, 335, + 335, 335, 335, 335, 335, 335, 337, 337, 337, 337, + 337, 337, 337, 337, 338, 338, 338, 338, 338, 338, - 336, 336, 336, 336, 337, 305, 337, 337, 337, 337, - 337, 337, 338, 338, 303, 338, 340, 340, 340, 340, - 340, 340, 340, 340, 341, 341, 341, 341, 341, 341, - 341, 341, 302, 299, 294, 289, 287, 284, 282, 276, - 275, 271, 269, 268, 264, 262, 261, 258, 252, 251, - 250, 249, 247, 238, 236, 235, 229, 228, 227, 226, - 221, 217, 212, 208, 204, 203, 201, 200, 193, 192, - 191, 190, 162, 155, 145, 143, 123, 122, 116, 108, - 107, 103, 90, 75, 74, 73, 66, 63, 61, 38, - 35, 32, 29, 16, 13, 9, 324, 324, 324, 324, + 338, 338, 339, 339, 339, 339, 339, 339, 339, 339, + 340, 308, 340, 340, 340, 340, 340, 340, 341, 341, + 306, 341, 343, 343, 343, 343, 343, 343, 343, 343, + 344, 344, 344, 344, 344, 344, 344, 344, 305, 302, + 297, 292, 290, 287, 285, 279, 278, 274, 272, 271, + 267, 265, 264, 261, 255, 254, 253, 252, 250, 241, + 239, 238, 232, 231, 230, 229, 224, 220, 215, 211, + 207, 206, 204, 203, 196, 195, 194, 193, 165, 158, + 148, 146, 124, 123, 117, 109, 108, 104, 91, 76, + 75, 74, 66, 64, 61, 38, 35, 32, 29, 16, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324 + 13, 9, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327 } ; /* The intent behind this definition is that it'll catch @@ -923,14 +925,14 @@ static const flex_int16_t yy_chk[761] = #line 25 "lexer.lpp" #define YY_USER_ACTION ctx->loc.columns(yyleng); -#line 926 "lexer.cpp" - #line 928 "lexer.cpp" + +#line 930 "lexer.cpp" #define INITIAL 0 -#define COMMENT_BLOCK_STATE 1 -#define DEVBLOCK_ON_STATE 2 -#define DEVBLOCK_OFF_STATE 3 +#define COMMENT_STATE 1 +#define DEV_OFF_STATE 2 +#define DEV_ON_STATE 3 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way @@ -1194,7 +1196,7 @@ YY_DECL ctx->loc.step(); -#line 1197 "lexer.cpp" +#line 1199 "lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1221,13 +1223,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 >= 325 ) + if ( yy_current_state >= 328 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 324 ); + while ( yy_current_state != 327 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -1255,552 +1257,571 @@ YY_RULE_SETUP case 2: /* rule 2 can match eol */ YY_RULE_SETUP -#line 52 "lexer.lpp" +#line 51 "lexer.lpp" { ctx->loc.lines(yyleng); ctx->loc.step(); } YY_BREAK case 3: YY_RULE_SETUP -#line 54 "lexer.lpp" +#line 53 "lexer.lpp" YY_BREAK case 4: YY_RULE_SETUP -#line 56 "lexer.lpp" -{ BEGIN(COMMENT_BLOCK_STATE); } +#line 55 "lexer.lpp" +{ BEGIN(COMMENT_STATE); } YY_BREAK case 5: YY_RULE_SETUP -#line 57 "lexer.lpp" +#line 56 "lexer.lpp" YY_BREAK case 6: /* rule 6 can match eol */ YY_RULE_SETUP -#line 58 "lexer.lpp" +#line 57 "lexer.lpp" { ctx->loc.lines(yyleng); ctx->loc.step(); } YY_BREAK case 7: YY_RULE_SETUP -#line 59 "lexer.lpp" +#line 58 "lexer.lpp" { BEGIN(INITIAL); } YY_BREAK +case YY_STATE_EOF(COMMENT_STATE): +#line 59 "lexer.lpp" +{ throw iw7::parser::syntax_error(ctx->loc, "unmatched multiline comment start ('/*')"); } + YY_BREAK case 8: YY_RULE_SETUP -#line 61 "lexer.lpp" -{ BEGIN(ctx->mode == xsk::gsc::build::dev ? DEVBLOCK_ON_STATE : DEVBLOCK_OFF_STATE); } +#line 60 "lexer.lpp" +{ throw iw7::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } YY_BREAK case 9: YY_RULE_SETUP #line 62 "lexer.lpp" - +{ throw iw7::parser::syntax_error(ctx->loc, "cannot recurse devblock ('/#')"); } YY_BREAK case 10: -/* rule 10 can match eol */ YY_RULE_SETUP #line 63 "lexer.lpp" -{ ctx->loc.lines(yyleng); ctx->loc.step(); } +{ BEGIN(INITIAL); return iw7::parser::make_DEVEND(ctx->loc); } + YY_BREAK +case YY_STATE_EOF(DEV_ON_STATE): +#line 64 "lexer.lpp" +{ throw iw7::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } YY_BREAK case 11: YY_RULE_SETUP -#line 64 "lexer.lpp" -{ BEGIN(INITIAL); } +#line 66 "lexer.lpp" +{ BEGIN(ctx->mode == xsk::gsc::build::dev ? DEV_ON_STATE : DEV_OFF_STATE); if(ctx->mode == xsk::gsc::build::dev) return iw7::parser::make_DEVBEGIN(ctx->loc); } YY_BREAK case 12: YY_RULE_SETUP -#line 66 "lexer.lpp" -{ throw iw7::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } +#line 67 "lexer.lpp" + YY_BREAK case 13: +/* rule 13 can match eol */ YY_RULE_SETUP -#line 67 "lexer.lpp" -{ throw iw7::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } +#line 68 "lexer.lpp" +{ ctx->loc.lines(yyleng); ctx->loc.step(); } YY_BREAK case 14: YY_RULE_SETUP #line 69 "lexer.lpp" -{ return iw7::parser::make_INLINE(ctx->loc); } +{ BEGIN(INITIAL); } + YY_BREAK +case YY_STATE_EOF(DEV_OFF_STATE): +#line 70 "lexer.lpp" +{ throw iw7::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } YY_BREAK case 15: YY_RULE_SETUP -#line 70 "lexer.lpp" -{ return iw7::parser::make_INCLUDE(ctx->loc); } +#line 71 "lexer.lpp" +{ throw iw7::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } YY_BREAK case 16: YY_RULE_SETUP -#line 71 "lexer.lpp" -{ return iw7::parser::make_USINGTREE(ctx->loc); } +#line 73 "lexer.lpp" +{ return iw7::parser::make_INLINE(ctx->loc); } YY_BREAK case 17: YY_RULE_SETUP -#line 72 "lexer.lpp" -{ return iw7::parser::make_ANIMTREE(ctx->loc); } +#line 74 "lexer.lpp" +{ return iw7::parser::make_INCLUDE(ctx->loc); } YY_BREAK case 18: YY_RULE_SETUP -#line 73 "lexer.lpp" -{ return iw7::parser::make_ENDON(ctx->loc); } +#line 75 "lexer.lpp" +{ return iw7::parser::make_USINGTREE(ctx->loc); } YY_BREAK case 19: YY_RULE_SETUP -#line 74 "lexer.lpp" -{ return iw7::parser::make_NOTIFY(ctx->loc); } +#line 76 "lexer.lpp" +{ return iw7::parser::make_ANIMTREE(ctx->loc); } YY_BREAK case 20: YY_RULE_SETUP -#line 75 "lexer.lpp" -{ return iw7::parser::make_WAIT(ctx->loc); } +#line 77 "lexer.lpp" +{ return iw7::parser::make_ENDON(ctx->loc); } YY_BREAK case 21: YY_RULE_SETUP -#line 76 "lexer.lpp" -{ return iw7::parser::make_WAITTILL(ctx->loc); } +#line 78 "lexer.lpp" +{ return iw7::parser::make_NOTIFY(ctx->loc); } YY_BREAK case 22: YY_RULE_SETUP -#line 77 "lexer.lpp" -{ return iw7::parser::make_WAITTILLMATCH(ctx->loc); } +#line 79 "lexer.lpp" +{ return iw7::parser::make_WAIT(ctx->loc); } YY_BREAK case 23: YY_RULE_SETUP -#line 78 "lexer.lpp" -{ return iw7::parser::make_WAITTILLFRAMEEND(ctx->loc); } +#line 80 "lexer.lpp" +{ return iw7::parser::make_WAITTILL(ctx->loc); } YY_BREAK case 24: YY_RULE_SETUP -#line 79 "lexer.lpp" -{ return iw7::parser::make_IF(ctx->loc); } +#line 81 "lexer.lpp" +{ return iw7::parser::make_WAITTILLMATCH(ctx->loc); } YY_BREAK case 25: YY_RULE_SETUP -#line 80 "lexer.lpp" -{ return iw7::parser::make_ELSE(ctx->loc); } +#line 82 "lexer.lpp" +{ return iw7::parser::make_WAITTILLFRAMEEND(ctx->loc); } YY_BREAK case 26: YY_RULE_SETUP -#line 81 "lexer.lpp" -{ return iw7::parser::make_DO(ctx->loc); } +#line 83 "lexer.lpp" +{ return iw7::parser::make_IF(ctx->loc); } YY_BREAK case 27: YY_RULE_SETUP -#line 82 "lexer.lpp" -{ return iw7::parser::make_WHILE(ctx->loc); } +#line 84 "lexer.lpp" +{ return iw7::parser::make_ELSE(ctx->loc); } YY_BREAK case 28: YY_RULE_SETUP -#line 83 "lexer.lpp" -{ return iw7::parser::make_FOR(ctx->loc); } +#line 85 "lexer.lpp" +{ return iw7::parser::make_DO(ctx->loc); } YY_BREAK case 29: YY_RULE_SETUP -#line 84 "lexer.lpp" -{ return iw7::parser::make_FOREACH(ctx->loc); } +#line 86 "lexer.lpp" +{ return iw7::parser::make_WHILE(ctx->loc); } YY_BREAK case 30: YY_RULE_SETUP -#line 85 "lexer.lpp" -{ return iw7::parser::make_IN(ctx->loc); } +#line 87 "lexer.lpp" +{ return iw7::parser::make_FOR(ctx->loc); } YY_BREAK case 31: YY_RULE_SETUP -#line 86 "lexer.lpp" -{ return iw7::parser::make_SWITCH(ctx->loc); } +#line 88 "lexer.lpp" +{ return iw7::parser::make_FOREACH(ctx->loc); } YY_BREAK case 32: YY_RULE_SETUP -#line 87 "lexer.lpp" -{ return iw7::parser::make_CASE(ctx->loc); } +#line 89 "lexer.lpp" +{ return iw7::parser::make_IN(ctx->loc); } YY_BREAK case 33: YY_RULE_SETUP -#line 88 "lexer.lpp" -{ return iw7::parser::make_DEFAULT(ctx->loc); } +#line 90 "lexer.lpp" +{ return iw7::parser::make_SWITCH(ctx->loc); } YY_BREAK case 34: YY_RULE_SETUP -#line 89 "lexer.lpp" -{ return iw7::parser::make_BREAK(ctx->loc); } +#line 91 "lexer.lpp" +{ return iw7::parser::make_CASE(ctx->loc); } YY_BREAK case 35: YY_RULE_SETUP -#line 90 "lexer.lpp" -{ return iw7::parser::make_CONTINUE(ctx->loc); } +#line 92 "lexer.lpp" +{ return iw7::parser::make_DEFAULT(ctx->loc); } YY_BREAK case 36: YY_RULE_SETUP -#line 91 "lexer.lpp" -{ return iw7::parser::make_RETURN(ctx->loc); } +#line 93 "lexer.lpp" +{ return iw7::parser::make_BREAK(ctx->loc); } YY_BREAK case 37: YY_RULE_SETUP -#line 92 "lexer.lpp" -{ return iw7::parser::make_BREAKPOINT(ctx->loc); } +#line 94 "lexer.lpp" +{ return iw7::parser::make_CONTINUE(ctx->loc); } YY_BREAK case 38: YY_RULE_SETUP -#line 93 "lexer.lpp" -{ return iw7::parser::make_PROFBEGIN(ctx->loc); } +#line 95 "lexer.lpp" +{ return iw7::parser::make_RETURN(ctx->loc); } YY_BREAK case 39: YY_RULE_SETUP -#line 94 "lexer.lpp" -{ return iw7::parser::make_PROFEND(ctx->loc); } +#line 96 "lexer.lpp" +{ return iw7::parser::make_BREAKPOINT(ctx->loc); } YY_BREAK case 40: YY_RULE_SETUP -#line 95 "lexer.lpp" -{ return iw7::parser::make_THREAD(ctx->loc); } +#line 97 "lexer.lpp" +{ return iw7::parser::make_PROFBEGIN(ctx->loc); } YY_BREAK case 41: YY_RULE_SETUP -#line 96 "lexer.lpp" -{ return iw7::parser::make_CHILDTHREAD(ctx->loc); } +#line 98 "lexer.lpp" +{ return iw7::parser::make_PROFEND(ctx->loc); } YY_BREAK case 42: YY_RULE_SETUP -#line 97 "lexer.lpp" -{ return iw7::parser::make_THISTHREAD(ctx->loc); } +#line 99 "lexer.lpp" +{ return iw7::parser::make_THREAD(ctx->loc); } YY_BREAK case 43: YY_RULE_SETUP -#line 98 "lexer.lpp" -{ return iw7::parser::make_CALL(ctx->loc); } +#line 100 "lexer.lpp" +{ return iw7::parser::make_CHILDTHREAD(ctx->loc); } YY_BREAK case 44: YY_RULE_SETUP -#line 99 "lexer.lpp" -{ return iw7::parser::make_TRUE(ctx->loc); } +#line 101 "lexer.lpp" +{ return iw7::parser::make_THISTHREAD(ctx->loc); } YY_BREAK case 45: YY_RULE_SETUP -#line 100 "lexer.lpp" -{ return iw7::parser::make_FALSE(ctx->loc); } +#line 102 "lexer.lpp" +{ return iw7::parser::make_CALL(ctx->loc); } YY_BREAK case 46: YY_RULE_SETUP -#line 101 "lexer.lpp" -{ return iw7::parser::make_UNDEFINED(ctx->loc); } +#line 103 "lexer.lpp" +{ return iw7::parser::make_TRUE(ctx->loc); } YY_BREAK case 47: YY_RULE_SETUP -#line 102 "lexer.lpp" -{ return iw7::parser::make_SIZE(ctx->loc); } +#line 104 "lexer.lpp" +{ return iw7::parser::make_FALSE(ctx->loc); } YY_BREAK case 48: YY_RULE_SETUP -#line 103 "lexer.lpp" -{ return iw7::parser::make_GAME(ctx->loc); } +#line 105 "lexer.lpp" +{ return iw7::parser::make_UNDEFINED(ctx->loc); } YY_BREAK case 49: YY_RULE_SETUP -#line 104 "lexer.lpp" -{ return iw7::parser::make_SELF(ctx->loc); } +#line 106 "lexer.lpp" +{ return iw7::parser::make_SIZE(ctx->loc); } YY_BREAK case 50: YY_RULE_SETUP -#line 105 "lexer.lpp" -{ return iw7::parser::make_ANIM(ctx->loc); } +#line 107 "lexer.lpp" +{ return iw7::parser::make_GAME(ctx->loc); } YY_BREAK case 51: YY_RULE_SETUP -#line 106 "lexer.lpp" -{ return iw7::parser::make_LEVEL(ctx->loc); } +#line 108 "lexer.lpp" +{ return iw7::parser::make_SELF(ctx->loc); } YY_BREAK case 52: YY_RULE_SETUP -#line 107 "lexer.lpp" -{ return iw7::parser::make_LPAREN(ctx->loc); } +#line 109 "lexer.lpp" +{ return iw7::parser::make_ANIM(ctx->loc); } YY_BREAK case 53: YY_RULE_SETUP -#line 108 "lexer.lpp" -{ return iw7::parser::make_RPAREN(ctx->loc); } +#line 110 "lexer.lpp" +{ return iw7::parser::make_LEVEL(ctx->loc); } YY_BREAK case 54: YY_RULE_SETUP -#line 109 "lexer.lpp" -{ return iw7::parser::make_LBRACE(ctx->loc); } +#line 111 "lexer.lpp" +{ return iw7::parser::make_LPAREN(ctx->loc); } YY_BREAK case 55: YY_RULE_SETUP -#line 110 "lexer.lpp" -{ return iw7::parser::make_RBRACE(ctx->loc); } +#line 112 "lexer.lpp" +{ return iw7::parser::make_RPAREN(ctx->loc); } YY_BREAK case 56: YY_RULE_SETUP -#line 111 "lexer.lpp" -{ return iw7::parser::make_LBRACKET(ctx->loc); } +#line 113 "lexer.lpp" +{ return iw7::parser::make_LBRACE(ctx->loc); } YY_BREAK case 57: YY_RULE_SETUP -#line 112 "lexer.lpp" -{ return iw7::parser::make_RBRACKET(ctx->loc); } +#line 114 "lexer.lpp" +{ return iw7::parser::make_RBRACE(ctx->loc); } YY_BREAK case 58: YY_RULE_SETUP -#line 113 "lexer.lpp" -{ return iw7::parser::make_COMMA(ctx->loc); } +#line 115 "lexer.lpp" +{ return iw7::parser::make_LBRACKET(ctx->loc); } YY_BREAK case 59: YY_RULE_SETUP -#line 114 "lexer.lpp" -{ return iw7::parser::make_DOT(ctx->loc); } +#line 116 "lexer.lpp" +{ return iw7::parser::make_RBRACKET(ctx->loc); } YY_BREAK case 60: YY_RULE_SETUP -#line 115 "lexer.lpp" -{ return iw7::parser::make_DOUBLECOLON(ctx->loc); } +#line 117 "lexer.lpp" +{ return iw7::parser::make_COMMA(ctx->loc); } YY_BREAK case 61: YY_RULE_SETUP -#line 116 "lexer.lpp" -{ return iw7::parser::make_COLON(ctx->loc); } +#line 118 "lexer.lpp" +{ return iw7::parser::make_DOT(ctx->loc); } YY_BREAK case 62: YY_RULE_SETUP -#line 117 "lexer.lpp" -{ return iw7::parser::make_SEMICOLON(ctx->loc); } +#line 119 "lexer.lpp" +{ return iw7::parser::make_DOUBLECOLON(ctx->loc); } YY_BREAK case 63: YY_RULE_SETUP -#line 118 "lexer.lpp" -{ return iw7::parser::make_QMARK(ctx->loc); } +#line 120 "lexer.lpp" +{ return iw7::parser::make_COLON(ctx->loc); } YY_BREAK case 64: YY_RULE_SETUP -#line 119 "lexer.lpp" -{ return iw7::parser::make_INCREMENT(ctx->loc); } +#line 121 "lexer.lpp" +{ return iw7::parser::make_SEMICOLON(ctx->loc); } YY_BREAK case 65: YY_RULE_SETUP -#line 120 "lexer.lpp" -{ return iw7::parser::make_DECREMENT(ctx->loc); } +#line 122 "lexer.lpp" +{ return iw7::parser::make_QMARK(ctx->loc); } YY_BREAK case 66: YY_RULE_SETUP -#line 121 "lexer.lpp" -{ return iw7::parser::make_ASSIGN_LSHIFT(ctx->loc); } +#line 123 "lexer.lpp" +{ return iw7::parser::make_INCREMENT(ctx->loc); } YY_BREAK case 67: YY_RULE_SETUP -#line 122 "lexer.lpp" -{ return iw7::parser::make_ASSIGN_RSHIFT(ctx->loc); } +#line 124 "lexer.lpp" +{ return iw7::parser::make_DECREMENT(ctx->loc); } YY_BREAK case 68: YY_RULE_SETUP -#line 123 "lexer.lpp" -{ return iw7::parser::make_LSHIFT(ctx->loc); } +#line 125 "lexer.lpp" +{ return iw7::parser::make_ASSIGN_LSHIFT(ctx->loc); } YY_BREAK case 69: YY_RULE_SETUP -#line 124 "lexer.lpp" -{ return iw7::parser::make_RSHIFT(ctx->loc); } +#line 126 "lexer.lpp" +{ return iw7::parser::make_ASSIGN_RSHIFT(ctx->loc); } YY_BREAK case 70: YY_RULE_SETUP -#line 125 "lexer.lpp" -{ return iw7::parser::make_OR(ctx->loc); } +#line 127 "lexer.lpp" +{ return iw7::parser::make_LSHIFT(ctx->loc); } YY_BREAK case 71: YY_RULE_SETUP -#line 126 "lexer.lpp" -{ return iw7::parser::make_AND(ctx->loc); } +#line 128 "lexer.lpp" +{ return iw7::parser::make_RSHIFT(ctx->loc); } YY_BREAK case 72: YY_RULE_SETUP -#line 127 "lexer.lpp" -{ return iw7::parser::make_EQUALITY(ctx->loc); } +#line 129 "lexer.lpp" +{ return iw7::parser::make_OR(ctx->loc); } YY_BREAK case 73: YY_RULE_SETUP -#line 128 "lexer.lpp" -{ return iw7::parser::make_INEQUALITY(ctx->loc); } +#line 130 "lexer.lpp" +{ return iw7::parser::make_AND(ctx->loc); } YY_BREAK case 74: YY_RULE_SETUP -#line 129 "lexer.lpp" -{ return iw7::parser::make_LESS_EQUAL(ctx->loc); } +#line 131 "lexer.lpp" +{ return iw7::parser::make_EQUALITY(ctx->loc); } YY_BREAK case 75: YY_RULE_SETUP -#line 130 "lexer.lpp" -{ return iw7::parser::make_GREATER_EQUAL(ctx->loc); } +#line 132 "lexer.lpp" +{ return iw7::parser::make_INEQUALITY(ctx->loc); } YY_BREAK case 76: YY_RULE_SETUP -#line 131 "lexer.lpp" -{ return iw7::parser::make_LESS(ctx->loc); } +#line 133 "lexer.lpp" +{ return iw7::parser::make_LESS_EQUAL(ctx->loc); } YY_BREAK case 77: YY_RULE_SETUP -#line 132 "lexer.lpp" -{ return iw7::parser::make_GREATER(ctx->loc); } +#line 134 "lexer.lpp" +{ return iw7::parser::make_GREATER_EQUAL(ctx->loc); } YY_BREAK case 78: YY_RULE_SETUP -#line 133 "lexer.lpp" -{ return iw7::parser::make_ASSIGN_ADD(ctx->loc); } +#line 135 "lexer.lpp" +{ return iw7::parser::make_LESS(ctx->loc); } YY_BREAK case 79: YY_RULE_SETUP -#line 134 "lexer.lpp" -{ return iw7::parser::make_ASSIGN_SUB(ctx->loc); } +#line 136 "lexer.lpp" +{ return iw7::parser::make_GREATER(ctx->loc); } YY_BREAK case 80: YY_RULE_SETUP -#line 135 "lexer.lpp" -{ return iw7::parser::make_ASSIGN_MUL(ctx->loc); } +#line 137 "lexer.lpp" +{ return iw7::parser::make_ASSIGN_ADD(ctx->loc); } YY_BREAK case 81: YY_RULE_SETUP -#line 136 "lexer.lpp" -{ return iw7::parser::make_ASSIGN_DIV(ctx->loc); } +#line 138 "lexer.lpp" +{ return iw7::parser::make_ASSIGN_SUB(ctx->loc); } YY_BREAK case 82: YY_RULE_SETUP -#line 137 "lexer.lpp" -{ return iw7::parser::make_ASSIGN_MOD(ctx->loc); } +#line 139 "lexer.lpp" +{ return iw7::parser::make_ASSIGN_MUL(ctx->loc); } YY_BREAK case 83: YY_RULE_SETUP -#line 138 "lexer.lpp" -{ return iw7::parser::make_ASSIGN_BW_OR(ctx->loc); } +#line 140 "lexer.lpp" +{ return iw7::parser::make_ASSIGN_DIV(ctx->loc); } YY_BREAK case 84: YY_RULE_SETUP -#line 139 "lexer.lpp" -{ return iw7::parser::make_ASSIGN_BW_AND(ctx->loc); } +#line 141 "lexer.lpp" +{ return iw7::parser::make_ASSIGN_MOD(ctx->loc); } YY_BREAK case 85: YY_RULE_SETUP -#line 140 "lexer.lpp" -{ return iw7::parser::make_ASSIGN_BW_EXOR(ctx->loc); } +#line 142 "lexer.lpp" +{ return iw7::parser::make_ASSIGN_BW_OR(ctx->loc); } YY_BREAK case 86: YY_RULE_SETUP -#line 141 "lexer.lpp" -{ return iw7::parser::make_ASSIGN(ctx->loc); } +#line 143 "lexer.lpp" +{ return iw7::parser::make_ASSIGN_BW_AND(ctx->loc); } YY_BREAK case 87: YY_RULE_SETUP -#line 142 "lexer.lpp" -{ return iw7::parser::make_ADD(ctx->loc); } +#line 144 "lexer.lpp" +{ return iw7::parser::make_ASSIGN_BW_EXOR(ctx->loc); } YY_BREAK case 88: YY_RULE_SETUP -#line 143 "lexer.lpp" -{ return iw7::parser::make_SUB(ctx->loc); } +#line 145 "lexer.lpp" +{ return iw7::parser::make_ASSIGN(ctx->loc); } YY_BREAK case 89: YY_RULE_SETUP -#line 144 "lexer.lpp" -{ return iw7::parser::make_MUL(ctx->loc); } +#line 146 "lexer.lpp" +{ return iw7::parser::make_ADD(ctx->loc); } YY_BREAK case 90: YY_RULE_SETUP -#line 145 "lexer.lpp" -{ return iw7::parser::make_DIV(ctx->loc); } +#line 147 "lexer.lpp" +{ return iw7::parser::make_SUB(ctx->loc); } YY_BREAK case 91: YY_RULE_SETUP -#line 146 "lexer.lpp" -{ return iw7::parser::make_MOD(ctx->loc); } +#line 148 "lexer.lpp" +{ return iw7::parser::make_MUL(ctx->loc); } YY_BREAK case 92: YY_RULE_SETUP -#line 147 "lexer.lpp" -{ return iw7::parser::make_NOT(ctx->loc); } +#line 149 "lexer.lpp" +{ return iw7::parser::make_DIV(ctx->loc); } YY_BREAK case 93: YY_RULE_SETUP -#line 148 "lexer.lpp" -{ return iw7::parser::make_COMPLEMENT(ctx->loc); } +#line 150 "lexer.lpp" +{ return iw7::parser::make_MOD(ctx->loc); } YY_BREAK case 94: YY_RULE_SETUP -#line 149 "lexer.lpp" -{ return iw7::parser::make_BITWISE_OR(ctx->loc); } +#line 151 "lexer.lpp" +{ return iw7::parser::make_NOT(ctx->loc); } YY_BREAK case 95: YY_RULE_SETUP -#line 150 "lexer.lpp" -{ return iw7::parser::make_BITWISE_AND(ctx->loc); } +#line 152 "lexer.lpp" +{ return iw7::parser::make_COMPLEMENT(ctx->loc); } YY_BREAK case 96: YY_RULE_SETUP -#line 151 "lexer.lpp" -{ return iw7::parser::make_BITWISE_EXOR(ctx->loc); } +#line 153 "lexer.lpp" +{ return iw7::parser::make_BITWISE_OR(ctx->loc); } YY_BREAK case 97: YY_RULE_SETUP -#line 152 "lexer.lpp" -{ return iw7::parser::make_PATH(xsk::utils::string::fordslash(yytext), ctx->loc); } +#line 154 "lexer.lpp" +{ return iw7::parser::make_BITWISE_AND(ctx->loc); } YY_BREAK case 98: YY_RULE_SETUP -#line 153 "lexer.lpp" -{ return iw7::parser::make_IDENTIFIER((std::string(yytext, 3) == "_ID") ? std::string(yytext) : xsk::utils::string::to_lower(yytext), ctx->loc); } +#line 155 "lexer.lpp" +{ return iw7::parser::make_BITWISE_EXOR(ctx->loc); } YY_BREAK case 99: -/* rule 99 can match eol */ -YY_RULE_SETUP -#line 154 "lexer.lpp" -{ return iw7::parser::make_ISTRING(std::string(yytext).substr(1), ctx->loc); } - YY_BREAK -case 100: -/* rule 100 can match eol */ -YY_RULE_SETUP -#line 155 "lexer.lpp" -{ return iw7::parser::make_STRING(std::string(yytext), ctx->loc); } - YY_BREAK -case 101: YY_RULE_SETUP #line 156 "lexer.lpp" -{ return iw7::parser::make_COLOR(std::string(yytext).substr(1), ctx->loc); } +{ return iw7::parser::make_PATH(xsk::utils::string::fordslash(yytext), ctx->loc); } YY_BREAK -case 102: +case 100: YY_RULE_SETUP #line 157 "lexer.lpp" -{ return iw7::parser::make_FLOAT(std::string(yytext), ctx->loc); } +{ return iw7::parser::make_IDENTIFIER((std::string(yytext, 3) == "_ID") ? std::string(yytext) : xsk::utils::string::to_lower(yytext), ctx->loc); } + YY_BREAK +case 101: +/* rule 101 can match eol */ +YY_RULE_SETUP +#line 158 "lexer.lpp" +{ return iw7::parser::make_ISTRING(std::string(yytext).substr(1), ctx->loc); } + YY_BREAK +case 102: +/* rule 102 can match eol */ +YY_RULE_SETUP +#line 159 "lexer.lpp" +{ return iw7::parser::make_STRING(std::string(yytext), ctx->loc); } YY_BREAK case 103: YY_RULE_SETUP -#line 158 "lexer.lpp" -{ return iw7::parser::make_INT_OCT(xsk::utils::string::oct_to_dec(yytext), ctx->loc); } +#line 160 "lexer.lpp" +{ return iw7::parser::make_COLOR(std::string(yytext).substr(1), ctx->loc); } YY_BREAK case 104: YY_RULE_SETUP -#line 159 "lexer.lpp" -{ return iw7::parser::make_INT_BIN(xsk::utils::string::bin_to_dec(yytext), ctx->loc); } +#line 161 "lexer.lpp" +{ return iw7::parser::make_FLOAT(std::string(yytext), ctx->loc); } YY_BREAK case 105: YY_RULE_SETUP -#line 160 "lexer.lpp" -{ return iw7::parser::make_INT_HEX(xsk::utils::string::hex_to_dec(yytext), ctx->loc); } +#line 162 "lexer.lpp" +{ return iw7::parser::make_INT_OCT(xsk::utils::string::oct_to_dec(yytext), ctx->loc); } YY_BREAK case 106: YY_RULE_SETUP -#line 161 "lexer.lpp" -{ return iw7::parser::make_INT_DEC(std::string(yytext), ctx->loc); } - YY_BREAK -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(COMMENT_BLOCK_STATE): -case YY_STATE_EOF(DEVBLOCK_ON_STATE): -case YY_STATE_EOF(DEVBLOCK_OFF_STATE): -#line 162 "lexer.lpp" -{ if(ctx->header_top > 0) iw7_pop_header(ctx); else return iw7::parser::make_IW7EOF(ctx->loc); } +#line 163 "lexer.lpp" +{ return iw7::parser::make_INT_BIN(xsk::utils::string::bin_to_dec(yytext), ctx->loc); } YY_BREAK case 107: -/* rule 107 can match eol */ YY_RULE_SETUP -#line 163 "lexer.lpp" -{ throw iw7::parser::syntax_error(ctx->loc, "bad token: \'" + std::string(yytext) + "\'"); } +#line 164 "lexer.lpp" +{ return iw7::parser::make_INT_HEX(xsk::utils::string::hex_to_dec(yytext), ctx->loc); } YY_BREAK case 108: YY_RULE_SETUP #line 165 "lexer.lpp" +{ return iw7::parser::make_INT_DEC(std::string(yytext), ctx->loc); } + YY_BREAK +case YY_STATE_EOF(INITIAL): +#line 166 "lexer.lpp" +{ if(ctx->header_top > 0) iw7_pop_header(ctx); else return iw7::parser::make_IW7EOF(ctx->loc); } + YY_BREAK +case 109: +/* rule 109 can match eol */ +YY_RULE_SETUP +#line 167 "lexer.lpp" +{ throw iw7::parser::syntax_error(ctx->loc, "bad token: \'" + std::string(yytext) + "\'"); } + YY_BREAK +case 110: +YY_RULE_SETUP +#line 169 "lexer.lpp" ECHO; YY_BREAK -#line 1803 "lexer.cpp" +#line 1824 "lexer.cpp" case YY_END_OF_BUFFER: { @@ -2098,7 +2119,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 >= 325 ) + if ( yy_current_state >= 328 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2127,11 +2148,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 >= 325 ) + if ( yy_current_state >= 328 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 324); + yy_is_jam = (yy_current_state == 327); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -2930,7 +2951,7 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 165 "lexer.lpp" +#line 169 "lexer.lpp" void iw7_push_header(xsk::gsc::context* ctx, const std::string& file) diff --git a/src/iw7/xsk/lexer.hpp b/src/iw7/xsk/lexer.hpp index e6fae07b..4114b759 100644 --- a/src/iw7/xsk/lexer.hpp +++ b/src/iw7/xsk/lexer.hpp @@ -439,9 +439,9 @@ void yyfree ( void * , yyscan_t yyscanner ); #ifdef YY_HEADER_EXPORT_START_CONDITIONS #define INITIAL 0 -#define COMMENT_BLOCK_STATE 1 -#define DEVBLOCK_ON_STATE 2 -#define DEVBLOCK_OFF_STATE 3 +#define COMMENT_STATE 1 +#define DEV_OFF_STATE 2 +#define DEV_ON_STATE 3 #endif @@ -703,7 +703,7 @@ extern int yylex (yyscan_t yyscanner); #undef yyTABLES_NAME #endif -#line 165 "lexer.lpp" +#line 169 "lexer.lpp" #line 709 "lexer.hpp" diff --git a/src/iw7/xsk/parser.cpp b/src/iw7/xsk/parser.cpp index 56f20c21..734ac39d 100644 --- a/src/iw7/xsk/parser.cpp +++ b/src/iw7/xsk/parser.cpp @@ -442,6 +442,7 @@ namespace xsk { namespace gsc { namespace iw7 { value.YY_MOVE_OR_COPY< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.YY_MOVE_OR_COPY< ast::stmt_list::ptr > (YY_MOVE (that.value)); @@ -741,6 +742,7 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (YY_MOVE (that.value)); @@ -1040,6 +1042,7 @@ namespace xsk { namespace gsc { namespace iw7 { value.copy< ast::stmt_ifelse::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.copy< ast::stmt_list::ptr > (that.value); @@ -1338,6 +1341,7 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< ast::stmt_ifelse::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (that.value); @@ -1891,6 +1895,7 @@ namespace xsk { namespace gsc { namespace iw7 { yylhs.value.emplace< ast::stmt_ifelse::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list yylhs.value.emplace< ast::stmt_list::ptr > (); @@ -1970,1273 +1975,1303 @@ namespace xsk { namespace gsc { namespace iw7 { switch (yyn) { case 2: // root: program -#line 249 "parser.ypp" +#line 252 "parser.ypp" { ast = std::move(yystack_[0].value.as < ast::program::ptr > ()); } -#line 1976 "parser.cpp" +#line 1981 "parser.cpp" break; case 3: // root: %empty -#line 250 "parser.ypp" +#line 253 "parser.ypp" { ast = std::make_unique(yylhs.location); } -#line 1982 "parser.cpp" +#line 1987 "parser.cpp" break; case 4: // program: program inline -#line 255 "parser.ypp" +#line 258 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); } -#line 1988 "parser.cpp" +#line 1993 "parser.cpp" break; case 5: // program: program include -#line 257 "parser.ypp" +#line 260 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 1994 "parser.cpp" +#line 1999 "parser.cpp" break; case 6: // program: program declaration -#line 259 "parser.ypp" +#line 262 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2000 "parser.cpp" +#line 2005 "parser.cpp" break; case 7: // program: inline -#line 261 "parser.ypp" +#line 264 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); } -#line 2006 "parser.cpp" +#line 2011 "parser.cpp" break; case 8: // program: include -#line 263 "parser.ypp" +#line 266 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 2012 "parser.cpp" +#line 2017 "parser.cpp" break; case 9: // program: declaration -#line 265 "parser.ypp" +#line 268 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2018 "parser.cpp" +#line 2023 "parser.cpp" break; case 10: // inline: "#inline" expr_path ";" -#line 269 "parser.ypp" +#line 272 "parser.ypp" { iw7_push_header(ctx, yystack_[1].value.as < ast::expr_path::ptr > ()->value); } -#line 2024 "parser.cpp" +#line 2029 "parser.cpp" break; case 11: // include: "#include" expr_path ";" -#line 274 "parser.ypp" +#line 277 "parser.ypp" { yylhs.value.as < ast::include::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_path::ptr > ())); } -#line 2030 "parser.cpp" +#line 2035 "parser.cpp" break; - case 12: // declaration: decl_usingtree -#line 278 "parser.ypp" + case 12: // declaration: "/#" +#line 281 "parser.ypp" + { yylhs.value.as < ast::decl > ().as_dev_begin = std::make_unique(yylhs.location); } +#line 2041 "parser.cpp" + break; + + case 13: // declaration: "#/" +#line 282 "parser.ypp" + { yylhs.value.as < ast::decl > ().as_dev_end = std::make_unique(yylhs.location); } +#line 2047 "parser.cpp" + break; + + case 14: // declaration: decl_usingtree +#line 283 "parser.ypp" { yylhs.value.as < ast::decl > ().as_usingtree = std::move(yystack_[0].value.as < ast::decl_usingtree::ptr > ()); } -#line 2036 "parser.cpp" +#line 2053 "parser.cpp" break; - case 13: // declaration: decl_constant -#line 279 "parser.ypp" + case 15: // declaration: decl_constant +#line 284 "parser.ypp" { yylhs.value.as < ast::decl > ().as_constant = std::move(yystack_[0].value.as < ast::decl_constant::ptr > ()); } -#line 2042 "parser.cpp" +#line 2059 "parser.cpp" break; - case 14: // declaration: decl_thread -#line 280 "parser.ypp" - { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } -#line 2048 "parser.cpp" - break; - - case 15: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" + case 16: // declaration: decl_thread #line 285 "parser.ypp" - { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_usingtree::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_string::ptr > ())); } -#line 2054 "parser.cpp" + { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } +#line 2065 "parser.cpp" break; - case 16: // decl_constant: expr_identifier "=" expr ";" + case 17: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" #line 290 "parser.ypp" - { yylhs.value.as < ast::decl_constant::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2060 "parser.cpp" + { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_usingtree::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_string::ptr > ())); } +#line 2071 "parser.cpp" break; - case 17: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block + case 18: // decl_constant: expr_identifier "=" expr ";" #line 295 "parser.ypp" - { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_thread::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2066 "parser.cpp" + { yylhs.value.as < ast::decl_constant::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } +#line 2077 "parser.cpp" break; - case 18: // stmt: stmt_block -#line 299 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } -#line 2072 "parser.cpp" - break; - - case 19: // stmt: stmt_call + case 19: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block #line 300 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } -#line 2078 "parser.cpp" + { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_thread::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } +#line 2083 "parser.cpp" break; - case 20: // stmt: stmt_assign -#line 301 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } -#line 2084 "parser.cpp" - break; - - case 21: // stmt: stmt_endon -#line 302 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } -#line 2090 "parser.cpp" - break; - - case 22: // stmt: stmt_notify -#line 303 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } -#line 2096 "parser.cpp" - break; - - case 23: // stmt: stmt_wait + case 20: // stmt: stmt_dev #line 304 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } -#line 2102 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } +#line 2089 "parser.cpp" break; - case 24: // stmt: stmt_waittill + case 21: // stmt: stmt_block #line 305 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } -#line 2108 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } +#line 2095 "parser.cpp" break; - case 25: // stmt: stmt_waittillmatch + case 22: // stmt: stmt_call #line 306 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } -#line 2114 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } +#line 2101 "parser.cpp" break; - case 26: // stmt: stmt_waittillframeend + case 23: // stmt: stmt_assign #line 307 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } -#line 2120 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } +#line 2107 "parser.cpp" break; - case 27: // stmt: stmt_if + case 24: // stmt: stmt_endon #line 308 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } -#line 2126 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } +#line 2113 "parser.cpp" break; - case 28: // stmt: stmt_ifelse + case 25: // stmt: stmt_notify #line 309 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } -#line 2132 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } +#line 2119 "parser.cpp" break; - case 29: // stmt: stmt_while + case 26: // stmt: stmt_wait #line 310 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } -#line 2138 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } +#line 2125 "parser.cpp" break; - case 30: // stmt: stmt_dowhile + case 27: // stmt: stmt_waittill #line 311 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } -#line 2144 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } +#line 2131 "parser.cpp" break; - case 31: // stmt: stmt_for + case 28: // stmt: stmt_waittillmatch #line 312 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } -#line 2150 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } +#line 2137 "parser.cpp" break; - case 32: // stmt: stmt_foreach + case 29: // stmt: stmt_waittillframeend #line 313 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } -#line 2156 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } +#line 2143 "parser.cpp" break; - case 33: // stmt: stmt_switch + case 30: // stmt: stmt_if #line 314 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } -#line 2162 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } +#line 2149 "parser.cpp" break; - case 34: // stmt: stmt_case + case 31: // stmt: stmt_ifelse #line 315 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } -#line 2168 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } +#line 2155 "parser.cpp" break; - case 35: // stmt: stmt_default + case 32: // stmt: stmt_while #line 316 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } -#line 2174 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } +#line 2161 "parser.cpp" break; - case 36: // stmt: stmt_break + case 33: // stmt: stmt_dowhile #line 317 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } -#line 2180 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } +#line 2167 "parser.cpp" break; - case 37: // stmt: stmt_continue + case 34: // stmt: stmt_for #line 318 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } -#line 2186 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } +#line 2173 "parser.cpp" break; - case 38: // stmt: stmt_return + case 35: // stmt: stmt_foreach #line 319 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } -#line 2192 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } +#line 2179 "parser.cpp" break; - case 39: // stmt: stmt_breakpoint + case 36: // stmt: stmt_switch #line 320 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } -#line 2198 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } +#line 2185 "parser.cpp" break; - case 40: // stmt: stmt_prof_begin + case 37: // stmt: stmt_case #line 321 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } -#line 2204 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } +#line 2191 "parser.cpp" break; - case 41: // stmt: stmt_prof_end + case 38: // stmt: stmt_default #line 322 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } -#line 2210 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } +#line 2197 "parser.cpp" break; - case 42: // stmt_block: "{" stmt_list "}" + case 39: // stmt: stmt_break +#line 323 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } +#line 2203 "parser.cpp" + break; + + case 40: // stmt: stmt_continue +#line 324 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } +#line 2209 "parser.cpp" + break; + + case 41: // stmt: stmt_return +#line 325 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } +#line 2215 "parser.cpp" + break; + + case 42: // stmt: stmt_breakpoint #line 326 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } -#line 2216 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } +#line 2221 "parser.cpp" break; - case 43: // stmt_block: "{" "}" + case 43: // stmt: stmt_prof_begin #line 327 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } -#line 2222 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } +#line 2227 "parser.cpp" break; - case 44: // stmt_list: stmt_list stmt + case 44: // stmt: stmt_prof_end +#line 328 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } +#line 2233 "parser.cpp" + break; + + case 45: // stmt_dev: "/#" stmt_list "#/" #line 332 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2228 "parser.cpp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } +#line 2239 "parser.cpp" break; - case 45: // stmt_list: stmt -#line 334 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2234 "parser.cpp" + case 46: // stmt_dev: "/#" "#/" +#line 333 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } +#line 2245 "parser.cpp" break; - case 46: // stmt_expr: expr_assign -#line 339 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2240 "parser.cpp" + case 47: // stmt_block: "{" stmt_list "}" +#line 337 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } +#line 2251 "parser.cpp" break; - case 47: // stmt_expr: expr_increment -#line 341 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2246 "parser.cpp" + case 48: // stmt_block: "{" "}" +#line 338 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } +#line 2257 "parser.cpp" break; - case 48: // stmt_expr: expr_decrement + case 49: // stmt_list: stmt_list stmt #line 343 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2252 "parser.cpp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2263 "parser.cpp" break; - case 49: // stmt_expr: %empty + case 50: // stmt_list: stmt #line 345 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2258 "parser.cpp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2269 "parser.cpp" break; - case 50: // stmt_call: expr_call ";" + case 51: // stmt_expr: expr_assign #line 350 "parser.ypp" - { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } -#line 2264 "parser.cpp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2275 "parser.cpp" break; - case 51: // stmt_call: expr_method ";" + case 52: // stmt_expr: expr_increment #line 352 "parser.ypp" - { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_method::ptr > ()))); } -#line 2270 "parser.cpp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2281 "parser.cpp" break; - case 52: // stmt_assign: expr_assign ";" -#line 357 "parser.ypp" - { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2276 "parser.cpp" + case 53: // stmt_expr: expr_decrement +#line 354 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2287 "parser.cpp" break; - case 53: // stmt_assign: expr_increment ";" -#line 359 "parser.ypp" - { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2282 "parser.cpp" + case 54: // stmt_expr: %empty +#line 356 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } +#line 2293 "parser.cpp" break; - case 54: // stmt_assign: expr_decrement ";" + case 55: // stmt_call: expr_call ";" #line 361 "parser.ypp" + { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } +#line 2299 "parser.cpp" + break; + + case 56: // stmt_call: expr_method ";" +#line 363 "parser.ypp" + { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_method::ptr > ()))); } +#line 2305 "parser.cpp" + break; + + case 57: // stmt_assign: expr_assign ";" +#line 368 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2288 "parser.cpp" +#line 2311 "parser.cpp" break; - case 55: // stmt_endon: expr_object "endon" "(" expr ")" ";" -#line 366 "parser.ypp" + case 58: // stmt_assign: expr_increment ";" +#line 370 "parser.ypp" + { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 2317 "parser.cpp" + break; + + case 59: // stmt_assign: expr_decrement ";" +#line 372 "parser.ypp" + { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 2323 "parser.cpp" + break; + + case 60: // stmt_endon: expr_object "endon" "(" expr ")" ";" +#line 377 "parser.ypp" { yylhs.value.as < ast::stmt_endon::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ())); } -#line 2294 "parser.cpp" +#line 2329 "parser.cpp" break; - case 56: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" -#line 371 "parser.ypp" + case 61: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" +#line 382 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2300 "parser.cpp" +#line 2335 "parser.cpp" break; - case 57: // stmt_notify: expr_object "notify" "(" expr ")" ";" -#line 373 "parser.ypp" + case 62: // stmt_notify: expr_object "notify" "(" expr ")" ";" +#line 384 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2306 "parser.cpp" +#line 2341 "parser.cpp" break; - case 58: // stmt_wait: "wait" expr ";" -#line 378 "parser.ypp" + case 63: // stmt_wait: "wait" expr ";" +#line 389 "parser.ypp" { yylhs.value.as < ast::stmt_wait::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2312 "parser.cpp" +#line 2347 "parser.cpp" break; - case 59: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" -#line 383 "parser.ypp" + case 64: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" +#line 394 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2318 "parser.cpp" +#line 2353 "parser.cpp" break; - case 60: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" -#line 385 "parser.ypp" + case 65: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" +#line 396 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2324 "parser.cpp" +#line 2359 "parser.cpp" break; - case 61: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" -#line 390 "parser.ypp" + case 66: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" +#line 401 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2330 "parser.cpp" +#line 2365 "parser.cpp" break; - case 62: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" -#line 392 "parser.ypp" + case 67: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" +#line 403 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2336 "parser.cpp" +#line 2371 "parser.cpp" break; - case 63: // stmt_waittillframeend: "waittillframeend" ";" -#line 397 "parser.ypp" + case 68: // stmt_waittillframeend: "waittillframeend" ";" +#line 408 "parser.ypp" { yylhs.value.as < ast::stmt_waittillframeend::ptr > () = std::make_unique(yylhs.location); } -#line 2342 "parser.cpp" +#line 2377 "parser.cpp" break; - case 64: // stmt_if: "if" "(" expr ")" stmt -#line 402 "parser.ypp" + case 69: // stmt_if: "if" "(" expr ")" stmt +#line 413 "parser.ypp" { yylhs.value.as < ast::stmt_if::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2348 "parser.cpp" +#line 2383 "parser.cpp" break; - case 65: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 407 "parser.ypp" + case 70: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 418 "parser.ypp" { yylhs.value.as < ast::stmt_ifelse::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::stmt > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2354 "parser.cpp" +#line 2389 "parser.cpp" break; - case 66: // stmt_while: "while" "(" expr ")" stmt -#line 412 "parser.ypp" + case 71: // stmt_while: "while" "(" expr ")" stmt +#line 423 "parser.ypp" { yylhs.value.as < ast::stmt_while::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2360 "parser.cpp" +#line 2395 "parser.cpp" break; - case 67: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" -#line 417 "parser.ypp" + case 72: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" +#line 428 "parser.ypp" { yylhs.value.as < ast::stmt_dowhile::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[5].value.as < ast::stmt > ())); } -#line 2366 "parser.cpp" +#line 2401 "parser.cpp" break; - case 68: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt -#line 422 "parser.ypp" + case 73: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt +#line 433 "parser.ypp" { yylhs.value.as < ast::stmt_for::ptr > () = std::make_unique(yylhs.location, ast::stmt(std::move(yystack_[6].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[4].value.as < ast::expr > ()), ast::stmt(std::move(yystack_[2].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2372 "parser.cpp" +#line 2407 "parser.cpp" break; - case 69: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt -#line 427 "parser.ypp" + case 74: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt +#line 438 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2378 "parser.cpp" +#line 2413 "parser.cpp" break; - case 70: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt -#line 429 "parser.ypp" + case 75: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt +#line 440 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[6].value.as < ast::expr_identifier::ptr > ())), ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2384 "parser.cpp" +#line 2419 "parser.cpp" break; - case 71: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 434 "parser.ypp" + case 76: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 445 "parser.ypp" { yylhs.value.as < ast::stmt_switch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2390 "parser.cpp" +#line 2425 "parser.cpp" break; - case 72: // stmt_case: "case" expr_integer ":" -#line 439 "parser.ypp" + case 77: // stmt_case: "case" expr_integer ":" +#line 450 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_integer::ptr > ())), std::make_unique(yylhs.location)); } -#line 2396 "parser.cpp" +#line 2431 "parser.cpp" break; - case 73: // stmt_case: "case" expr_string ":" -#line 441 "parser.ypp" + case 78: // stmt_case: "case" expr_string ":" +#line 452 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_string::ptr > ())), std::make_unique(yylhs.location)); } -#line 2402 "parser.cpp" +#line 2437 "parser.cpp" break; - case 74: // stmt_default: "default" ":" -#line 446 "parser.ypp" + case 79: // stmt_default: "default" ":" +#line 457 "parser.ypp" { yylhs.value.as < ast::stmt_default::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2408 "parser.cpp" +#line 2443 "parser.cpp" break; - case 75: // stmt_break: "break" ";" -#line 451 "parser.ypp" + case 80: // stmt_break: "break" ";" +#line 462 "parser.ypp" { yylhs.value.as < ast::stmt_break::ptr > () = std::make_unique(yylhs.location); } -#line 2414 "parser.cpp" +#line 2449 "parser.cpp" break; - case 76: // stmt_continue: "continue" ";" -#line 456 "parser.ypp" + case 81: // stmt_continue: "continue" ";" +#line 467 "parser.ypp" { yylhs.value.as < ast::stmt_continue::ptr > () = std::make_unique(yylhs.location); } -#line 2420 "parser.cpp" +#line 2455 "parser.cpp" break; - case 77: // stmt_return: "return" expr ";" -#line 461 "parser.ypp" + case 82: // stmt_return: "return" expr ";" +#line 472 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2426 "parser.cpp" +#line 2461 "parser.cpp" break; - case 78: // stmt_return: "return" ";" -#line 463 "parser.ypp" + case 83: // stmt_return: "return" ";" +#line 474 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2432 "parser.cpp" +#line 2467 "parser.cpp" break; - case 79: // stmt_breakpoint: "breakpoint" ";" -#line 468 "parser.ypp" + case 84: // stmt_breakpoint: "breakpoint" ";" +#line 479 "parser.ypp" { yylhs.value.as < ast::stmt_breakpoint::ptr > () = std::make_unique(yylhs.location); } -#line 2438 "parser.cpp" +#line 2473 "parser.cpp" break; - case 80: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 473 "parser.ypp" - { yylhs.value.as < ast::stmt_prof_begin::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2444 "parser.cpp" - break; - - case 81: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 478 "parser.ypp" - { yylhs.value.as < ast::stmt_prof_end::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2450 "parser.cpp" - break; - - case 82: // expr: expr_ternary -#line 482 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2456 "parser.cpp" - break; - - case 83: // expr: expr_binary -#line 483 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2462 "parser.cpp" - break; - - case 84: // expr: expr_primitive + case 85: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" #line 484 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2468 "parser.cpp" + { yylhs.value.as < ast::stmt_prof_begin::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } +#line 2479 "parser.cpp" break; - case 85: // expr_or_empty: expr -#line 488 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2474 "parser.cpp" - break; - - case 86: // expr_or_empty: %empty + case 86: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" #line 489 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } -#line 2480 "parser.cpp" + { yylhs.value.as < ast::stmt_prof_end::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } +#line 2485 "parser.cpp" break; - case 87: // expr_assign: expr_object "=" expr + case 87: // expr: expr_ternary +#line 493 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2491 "parser.cpp" + break; + + case 88: // expr: expr_binary #line 494 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2486 "parser.cpp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2497 "parser.cpp" break; - case 88: // expr_assign: expr_object "|=" expr -#line 496 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2492 "parser.cpp" + case 89: // expr: expr_primitive +#line 495 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2503 "parser.cpp" break; - case 89: // expr_assign: expr_object "&=" expr -#line 498 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2498 "parser.cpp" + case 90: // expr_or_empty: expr +#line 499 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2509 "parser.cpp" break; - case 90: // expr_assign: expr_object "^=" expr + case 91: // expr_or_empty: %empty #line 500 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } +#line 2515 "parser.cpp" + break; + + case 92: // expr_assign: expr_object "=" expr +#line 505 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2521 "parser.cpp" + break; + + case 93: // expr_assign: expr_object "|=" expr +#line 507 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2527 "parser.cpp" + break; + + case 94: // expr_assign: expr_object "&=" expr +#line 509 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2533 "parser.cpp" + break; + + case 95: // expr_assign: expr_object "^=" expr +#line 511 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2504 "parser.cpp" +#line 2539 "parser.cpp" break; - case 91: // expr_assign: expr_object "<<=" expr -#line 502 "parser.ypp" + case 96: // expr_assign: expr_object "<<=" expr +#line 513 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()),std::move( yystack_[0].value.as < ast::expr > ())); } -#line 2510 "parser.cpp" +#line 2545 "parser.cpp" break; - case 92: // expr_assign: expr_object ">>=" expr -#line 504 "parser.ypp" + case 97: // expr_assign: expr_object ">>=" expr +#line 515 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2516 "parser.cpp" +#line 2551 "parser.cpp" break; - case 93: // expr_assign: expr_object "+=" expr -#line 506 "parser.ypp" + case 98: // expr_assign: expr_object "+=" expr +#line 517 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2522 "parser.cpp" +#line 2557 "parser.cpp" break; - case 94: // expr_assign: expr_object "-=" expr -#line 508 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2528 "parser.cpp" - break; - - case 95: // expr_assign: expr_object "*=" expr -#line 510 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2534 "parser.cpp" - break; - - case 96: // expr_assign: expr_object "/=" expr -#line 512 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2540 "parser.cpp" - break; - - case 97: // expr_assign: expr_object "%=" expr -#line 514 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2546 "parser.cpp" - break; - - case 98: // expr_increment: "++" expr_object + case 99: // expr_assign: expr_object "-=" expr #line 519 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2552 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2563 "parser.cpp" break; - case 99: // expr_increment: expr_object "++" + case 100: // expr_assign: expr_object "*=" expr #line 521 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2569 "parser.cpp" + break; + + case 101: // expr_assign: expr_object "/=" expr +#line 523 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2575 "parser.cpp" + break; + + case 102: // expr_assign: expr_object "%=" expr +#line 525 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2581 "parser.cpp" + break; + + case 103: // expr_increment: "++" expr_object +#line 530 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } +#line 2587 "parser.cpp" + break; + + case 104: // expr_increment: expr_object "++" +#line 532 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2558 "parser.cpp" +#line 2593 "parser.cpp" break; - case 100: // expr_decrement: "--" expr_object -#line 526 "parser.ypp" + case 105: // expr_decrement: "--" expr_object +#line 537 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2564 "parser.cpp" +#line 2599 "parser.cpp" break; - case 101: // expr_decrement: expr_object "--" -#line 528 "parser.ypp" + case 106: // expr_decrement: expr_object "--" +#line 539 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2570 "parser.cpp" +#line 2605 "parser.cpp" break; - case 102: // expr_ternary: expr "?" expr ":" expr -#line 533 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2576 "parser.cpp" - break; - - case 103: // expr_binary: expr "||" expr -#line 538 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2582 "parser.cpp" - break; - - case 104: // expr_binary: expr "&&" expr -#line 540 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2588 "parser.cpp" - break; - - case 105: // expr_binary: expr "==" expr -#line 542 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2594 "parser.cpp" - break; - - case 106: // expr_binary: expr "!=" expr + case 107: // expr_ternary: expr "?" expr ":" expr #line 544 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2611 "parser.cpp" + break; + + case 108: // expr_binary: expr "||" expr +#line 549 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2617 "parser.cpp" + break; + + case 109: // expr_binary: expr "&&" expr +#line 551 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2623 "parser.cpp" + break; + + case 110: // expr_binary: expr "==" expr +#line 553 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2629 "parser.cpp" + break; + + case 111: // expr_binary: expr "!=" expr +#line 555 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2600 "parser.cpp" +#line 2635 "parser.cpp" break; - case 107: // expr_binary: expr "<=" expr -#line 546 "parser.ypp" + case 112: // expr_binary: expr "<=" expr +#line 557 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2606 "parser.cpp" +#line 2641 "parser.cpp" break; - case 108: // expr_binary: expr ">=" expr -#line 548 "parser.ypp" + case 113: // expr_binary: expr ">=" expr +#line 559 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2612 "parser.cpp" +#line 2647 "parser.cpp" break; - case 109: // expr_binary: expr "<" expr -#line 550 "parser.ypp" + case 114: // expr_binary: expr "<" expr +#line 561 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2618 "parser.cpp" +#line 2653 "parser.cpp" break; - case 110: // expr_binary: expr ">" expr -#line 552 "parser.ypp" + case 115: // expr_binary: expr ">" expr +#line 563 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2624 "parser.cpp" +#line 2659 "parser.cpp" break; - case 111: // expr_binary: expr "|" expr -#line 554 "parser.ypp" + case 116: // expr_binary: expr "|" expr +#line 565 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2630 "parser.cpp" +#line 2665 "parser.cpp" break; - case 112: // expr_binary: expr "&" expr -#line 556 "parser.ypp" + case 117: // expr_binary: expr "&" expr +#line 567 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2636 "parser.cpp" +#line 2671 "parser.cpp" break; - case 113: // expr_binary: expr "^" expr -#line 558 "parser.ypp" + case 118: // expr_binary: expr "^" expr +#line 569 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2642 "parser.cpp" +#line 2677 "parser.cpp" break; - case 114: // expr_binary: expr "<<" expr -#line 560 "parser.ypp" + case 119: // expr_binary: expr "<<" expr +#line 571 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2648 "parser.cpp" +#line 2683 "parser.cpp" break; - case 115: // expr_binary: expr ">>" expr -#line 562 "parser.ypp" + case 120: // expr_binary: expr ">>" expr +#line 573 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2654 "parser.cpp" +#line 2689 "parser.cpp" break; - case 116: // expr_binary: expr "+" expr -#line 564 "parser.ypp" + case 121: // expr_binary: expr "+" expr +#line 575 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2660 "parser.cpp" +#line 2695 "parser.cpp" break; - case 117: // expr_binary: expr "-" expr -#line 566 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2666 "parser.cpp" - break; - - case 118: // expr_binary: expr "*" expr -#line 568 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2672 "parser.cpp" - break; - - case 119: // expr_binary: expr "/" expr -#line 570 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2678 "parser.cpp" - break; - - case 120: // expr_binary: expr "%" expr -#line 572 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2684 "parser.cpp" - break; - - case 121: // expr_primitive: expr_complement -#line 576 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } -#line 2690 "parser.cpp" - break; - - case 122: // expr_primitive: expr_not + case 122: // expr_binary: expr "-" expr #line 577 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } -#line 2696 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2701 "parser.cpp" break; - case 123: // expr_primitive: expr_call -#line 578 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 2702 "parser.cpp" - break; - - case 124: // expr_primitive: expr_method + case 123: // expr_binary: expr "*" expr #line 579 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 2708 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2707 "parser.cpp" break; - case 125: // expr_primitive: expr_add_array -#line 580 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } -#line 2714 "parser.cpp" - break; - - case 126: // expr_primitive: expr_reference + case 124: // expr_binary: expr "/" expr #line 581 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } -#line 2720 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2713 "parser.cpp" break; - case 127: // expr_primitive: expr_array -#line 582 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 2726 "parser.cpp" - break; - - case 128: // expr_primitive: expr_field + case 125: // expr_binary: expr "%" expr #line 583 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 2732 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2719 "parser.cpp" break; - case 129: // expr_primitive: expr_size -#line 584 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } -#line 2738 "parser.cpp" - break; - - case 130: // expr_primitive: expr_paren -#line 585 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } -#line 2744 "parser.cpp" - break; - - case 131: // expr_primitive: expr_thisthread -#line 586 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } -#line 2750 "parser.cpp" - break; - - case 132: // expr_primitive: expr_empty_array + case 126: // expr_primitive: expr_complement #line 587 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } -#line 2756 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } +#line 2725 "parser.cpp" break; - case 133: // expr_primitive: expr_undefined + case 127: // expr_primitive: expr_not #line 588 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } -#line 2762 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } +#line 2731 "parser.cpp" break; - case 134: // expr_primitive: expr_game + case 128: // expr_primitive: expr_call #line 589 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 2768 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 2737 "parser.cpp" break; - case 135: // expr_primitive: expr_self + case 129: // expr_primitive: expr_method #line 590 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 2774 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 2743 "parser.cpp" break; - case 136: // expr_primitive: expr_anim + case 130: // expr_primitive: expr_add_array #line 591 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 2780 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } +#line 2749 "parser.cpp" break; - case 137: // expr_primitive: expr_level + case 131: // expr_primitive: expr_reference #line 592 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 2786 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } +#line 2755 "parser.cpp" break; - case 138: // expr_primitive: expr_animation + case 132: // expr_primitive: expr_array #line 593 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } -#line 2792 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 2761 "parser.cpp" break; - case 139: // expr_primitive: expr_animtree + case 133: // expr_primitive: expr_field #line 594 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } -#line 2798 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 2767 "parser.cpp" break; - case 140: // expr_primitive: expr_identifier + case 134: // expr_primitive: expr_size #line 595 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 2804 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } +#line 2773 "parser.cpp" break; - case 141: // expr_primitive: expr_istring + case 135: // expr_primitive: expr_paren #line 596 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } -#line 2810 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } +#line 2779 "parser.cpp" break; - case 142: // expr_primitive: expr_string + case 136: // expr_primitive: expr_thisthread #line 597 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } -#line 2816 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } +#line 2785 "parser.cpp" break; - case 143: // expr_primitive: expr_color + case 137: // expr_primitive: expr_empty_array #line 598 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } -#line 2822 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } +#line 2791 "parser.cpp" break; - case 144: // expr_primitive: expr_vector + case 138: // expr_primitive: expr_undefined #line 599 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } -#line 2828 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } +#line 2797 "parser.cpp" break; - case 145: // expr_primitive: expr_float + case 139: // expr_primitive: expr_game #line 600 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } -#line 2834 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 2803 "parser.cpp" break; - case 146: // expr_primitive: expr_integer + case 140: // expr_primitive: expr_self #line 601 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } -#line 2840 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 2809 "parser.cpp" break; - case 147: // expr_primitive: expr_false + case 141: // expr_primitive: expr_anim #line 602 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } -#line 2846 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 2815 "parser.cpp" break; - case 148: // expr_primitive: expr_true + case 142: // expr_primitive: expr_level #line 603 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } -#line 2852 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 2821 "parser.cpp" break; - case 149: // expr_complement: "~" expr + case 143: // expr_primitive: expr_animation +#line 604 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } +#line 2827 "parser.cpp" + break; + + case 144: // expr_primitive: expr_animtree +#line 605 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } +#line 2833 "parser.cpp" + break; + + case 145: // expr_primitive: expr_identifier +#line 606 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 2839 "parser.cpp" + break; + + case 146: // expr_primitive: expr_istring +#line 607 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } +#line 2845 "parser.cpp" + break; + + case 147: // expr_primitive: expr_string #line 608 "parser.ypp" - { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2858 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } +#line 2851 "parser.cpp" break; - case 150: // expr_not: "!" expr + case 148: // expr_primitive: expr_color +#line 609 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } +#line 2857 "parser.cpp" + break; + + case 149: // expr_primitive: expr_vector +#line 610 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } +#line 2863 "parser.cpp" + break; + + case 150: // expr_primitive: expr_float +#line 611 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } +#line 2869 "parser.cpp" + break; + + case 151: // expr_primitive: expr_integer +#line 612 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } +#line 2875 "parser.cpp" + break; + + case 152: // expr_primitive: expr_false #line 613 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } +#line 2881 "parser.cpp" + break; + + case 153: // expr_primitive: expr_true +#line 614 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } +#line 2887 "parser.cpp" + break; + + case 154: // expr_complement: "~" expr +#line 619 "parser.ypp" + { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2893 "parser.cpp" + break; + + case 155: // expr_not: "!" expr +#line 624 "parser.ypp" { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2864 "parser.cpp" +#line 2899 "parser.cpp" break; - case 151: // expr_call: expr_function -#line 617 "parser.ypp" + case 156: // expr_call: expr_function +#line 628 "parser.ypp" { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2870 "parser.cpp" +#line 2905 "parser.cpp" break; - case 152: // expr_call: expr_pointer -#line 618 "parser.ypp" - { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2876 "parser.cpp" - break; - - case 153: // expr_method: expr_object expr_function -#line 621 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2882 "parser.cpp" - break; - - case 154: // expr_method: expr_object expr_pointer -#line 622 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2888 "parser.cpp" - break; - - case 155: // expr_function: expr_identifier "(" expr_arguments ")" -#line 627 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2894 "parser.cpp" - break; - - case 156: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" + case 157: // expr_call: expr_pointer #line 629 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2900 "parser.cpp" + { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } +#line 2911 "parser.cpp" break; - case 157: // expr_function: "thread" expr_identifier "(" expr_arguments ")" -#line 631 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2906 "parser.cpp" + case 158: // expr_method: expr_object expr_function +#line 632 "parser.ypp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 2917 "parser.cpp" break; - case 158: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" + case 159: // expr_method: expr_object expr_pointer #line 633 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2912 "parser.cpp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 2923 "parser.cpp" break; - case 159: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" -#line 635 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2918 "parser.cpp" + case 160: // expr_function: expr_identifier "(" expr_arguments ")" +#line 638 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 2929 "parser.cpp" break; - case 160: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 637 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2924 "parser.cpp" + case 161: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" +#line 640 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 2935 "parser.cpp" break; - case 161: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" + case 162: // expr_function: "thread" expr_identifier "(" expr_arguments ")" #line 642 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2930 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 2941 "parser.cpp" break; - case 162: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 163: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" #line 644 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2936 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 2947 "parser.cpp" break; - case 163: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 164: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" #line 646 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2942 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 2953 "parser.cpp" break; - case 164: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 165: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" #line 648 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::builtin); } -#line 2948 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 2959 "parser.cpp" break; - case 165: // expr_add_array: "[" expr_arguments_no_empty "]" + case 166: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" #line 653 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 2965 "parser.cpp" + break; + + case 167: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 655 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 2971 "parser.cpp" + break; + + case 168: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 657 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 2977 "parser.cpp" + break; + + case 169: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 659 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::builtin); } +#line 2983 "parser.cpp" + break; + + case 170: // expr_add_array: "[" expr_arguments_no_empty "]" +#line 664 "parser.ypp" { yylhs.value.as < ast::expr_add_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ())); } -#line 2954 "parser.cpp" +#line 2989 "parser.cpp" break; - case 166: // expr_parameters: expr_parameters "," expr_identifier -#line 658 "parser.ypp" - { yylhs.value.as < ast::expr_parameters::ptr > () = std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 2960 "parser.cpp" - break; - - case 167: // expr_parameters: expr_identifier -#line 660 "parser.ypp" - { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 2966 "parser.cpp" - break; - - case 168: // expr_parameters: %empty -#line 662 "parser.ypp" - { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } -#line 2972 "parser.cpp" - break; - - case 169: // expr_arguments: expr_arguments_no_empty -#line 667 "parser.ypp" - { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } -#line 2978 "parser.cpp" - break; - - case 170: // expr_arguments: %empty + case 171: // expr_parameters: expr_parameters "," expr_identifier #line 669 "parser.ypp" + { yylhs.value.as < ast::expr_parameters::ptr > () = std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } +#line 2995 "parser.cpp" + break; + + case 172: // expr_parameters: expr_identifier +#line 671 "parser.ypp" + { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } +#line 3001 "parser.cpp" + break; + + case 173: // expr_parameters: %empty +#line 673 "parser.ypp" + { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } +#line 3007 "parser.cpp" + break; + + case 174: // expr_arguments: expr_arguments_no_empty +#line 678 "parser.ypp" + { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } +#line 3013 "parser.cpp" + break; + + case 175: // expr_arguments: %empty +#line 680 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); } -#line 2984 "parser.cpp" +#line 3019 "parser.cpp" break; - case 171: // expr_arguments_no_empty: expr_arguments "," expr -#line 674 "parser.ypp" + case 176: // expr_arguments_no_empty: expr_arguments "," expr +#line 685 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ()); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2990 "parser.cpp" +#line 3025 "parser.cpp" break; - case 172: // expr_arguments_no_empty: expr -#line 676 "parser.ypp" + case 177: // expr_arguments_no_empty: expr +#line 687 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2996 "parser.cpp" +#line 3031 "parser.cpp" break; - case 173: // expr_reference: "::" expr_identifier -#line 681 "parser.ypp" + case 178: // expr_reference: "::" expr_identifier +#line 692 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3002 "parser.cpp" +#line 3037 "parser.cpp" break; - case 174: // expr_reference: expr_path "::" expr_identifier -#line 683 "parser.ypp" + case 179: // expr_reference: expr_path "::" expr_identifier +#line 694 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_path::ptr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3008 "parser.cpp" +#line 3043 "parser.cpp" break; - case 175: // expr_array: expr_object "[" expr "]" -#line 688 "parser.ypp" + case 180: // expr_array: expr_object "[" expr "]" +#line 699 "parser.ypp" { yylhs.value.as < ast::expr_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3014 "parser.cpp" +#line 3049 "parser.cpp" break; - case 176: // expr_field: expr_object "." expr_identifier -#line 693 "parser.ypp" + case 181: // expr_field: expr_object "." expr_identifier +#line 704 "parser.ypp" { yylhs.value.as < ast::expr_field::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3020 "parser.cpp" +#line 3055 "parser.cpp" break; - case 177: // expr_size: expr_object ".size" -#line 698 "parser.ypp" - { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3026 "parser.cpp" - break; - - case 178: // expr_paren: "(" expr ")" -#line 703 "parser.ypp" - { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3032 "parser.cpp" - break; - - case 179: // expr_object: expr_call -#line 707 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 3038 "parser.cpp" - break; - - case 180: // expr_object: expr_method -#line 708 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 3044 "parser.cpp" - break; - - case 181: // expr_object: expr_array + case 182: // expr_size: expr_object ".size" #line 709 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 3050 "parser.cpp" + { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3061 "parser.cpp" break; - case 182: // expr_object: expr_field -#line 710 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 3056 "parser.cpp" - break; - - case 183: // expr_object: expr_game -#line 711 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 3062 "parser.cpp" - break; - - case 184: // expr_object: expr_self -#line 712 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 3068 "parser.cpp" - break; - - case 185: // expr_object: expr_anim -#line 713 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 3074 "parser.cpp" - break; - - case 186: // expr_object: expr_level + case 183: // expr_paren: "(" expr ")" #line 714 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 3080 "parser.cpp" + { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3067 "parser.cpp" break; - case 187: // expr_object: expr_identifier -#line 715 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 3086 "parser.cpp" + case 184: // expr_object: expr_call +#line 718 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 3073 "parser.cpp" break; - case 188: // expr_thisthread: "thisthread" + case 185: // expr_object: expr_method +#line 719 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 3079 "parser.cpp" + break; + + case 186: // expr_object: expr_array #line 720 "parser.ypp" - { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } -#line 3092 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 3085 "parser.cpp" break; - case 189: // expr_empty_array: "[" "]" + case 187: // expr_object: expr_field +#line 721 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 3091 "parser.cpp" + break; + + case 188: // expr_object: expr_game +#line 722 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 3097 "parser.cpp" + break; + + case 189: // expr_object: expr_self +#line 723 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 3103 "parser.cpp" + break; + + case 190: // expr_object: expr_anim +#line 724 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 3109 "parser.cpp" + break; + + case 191: // expr_object: expr_level #line 725 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 3115 "parser.cpp" + break; + + case 192: // expr_object: expr_identifier +#line 726 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 3121 "parser.cpp" + break; + + case 193: // expr_thisthread: "thisthread" +#line 731 "parser.ypp" + { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } +#line 3127 "parser.cpp" + break; + + case 194: // expr_empty_array: "[" "]" +#line 736 "parser.ypp" { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } -#line 3098 "parser.cpp" +#line 3133 "parser.cpp" break; - case 190: // expr_undefined: "undefined" -#line 730 "parser.ypp" + case 195: // expr_undefined: "undefined" +#line 741 "parser.ypp" { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } -#line 3104 "parser.cpp" +#line 3139 "parser.cpp" break; - case 191: // expr_game: "game" -#line 735 "parser.ypp" + case 196: // expr_game: "game" +#line 746 "parser.ypp" { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } -#line 3110 "parser.cpp" +#line 3145 "parser.cpp" break; - case 192: // expr_self: "self" -#line 740 "parser.ypp" + case 197: // expr_self: "self" +#line 751 "parser.ypp" { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } -#line 3116 "parser.cpp" +#line 3151 "parser.cpp" break; - case 193: // expr_anim: "anim" -#line 745 "parser.ypp" + case 198: // expr_anim: "anim" +#line 756 "parser.ypp" { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } -#line 3122 "parser.cpp" +#line 3157 "parser.cpp" break; - case 194: // expr_level: "level" -#line 750 "parser.ypp" + case 199: // expr_level: "level" +#line 761 "parser.ypp" { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } -#line 3128 "parser.cpp" +#line 3163 "parser.cpp" break; - case 195: // expr_animation: "%" "identifier" -#line 755 "parser.ypp" + case 200: // expr_animation: "%" "identifier" +#line 766 "parser.ypp" { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3134 "parser.cpp" +#line 3169 "parser.cpp" break; - case 196: // expr_animtree: "#animtree" -#line 760 "parser.ypp" + case 201: // expr_animtree: "#animtree" +#line 771 "parser.ypp" { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } -#line 3140 "parser.cpp" +#line 3175 "parser.cpp" break; - case 197: // expr_identifier: "identifier" -#line 765 "parser.ypp" + case 202: // expr_identifier: "identifier" +#line 776 "parser.ypp" { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3146 "parser.cpp" +#line 3181 "parser.cpp" break; - case 198: // expr_path: "path" -#line 770 "parser.ypp" + case 203: // expr_path: "path" +#line 781 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3152 "parser.cpp" +#line 3187 "parser.cpp" break; - case 199: // expr_path: expr_identifier -#line 772 "parser.ypp" + case 204: // expr_path: expr_identifier +#line 783 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < ast::expr_identifier::ptr > ()->value); } -#line 3158 "parser.cpp" +#line 3193 "parser.cpp" break; - case 200: // expr_istring: "localized string" -#line 777 "parser.ypp" + case 205: // expr_istring: "localized string" +#line 788 "parser.ypp" { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3164 "parser.cpp" +#line 3199 "parser.cpp" break; - case 201: // expr_string: "string literal" -#line 782 "parser.ypp" + case 206: // expr_string: "string literal" +#line 793 "parser.ypp" { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3170 "parser.cpp" +#line 3205 "parser.cpp" break; - case 202: // expr_color: "color" -#line 787 "parser.ypp" + case 207: // expr_color: "color" +#line 798 "parser.ypp" { yylhs.value.as < ast::expr_color::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3176 "parser.cpp" +#line 3211 "parser.cpp" break; - case 203: // expr_vector: "(" expr "," expr "," expr ")" -#line 792 "parser.ypp" + case 208: // expr_vector: "(" expr "," expr "," expr ")" +#line 803 "parser.ypp" { yylhs.value.as < ast::expr_vector::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3182 "parser.cpp" +#line 3217 "parser.cpp" break; - case 204: // expr_float: "-" "float" -#line 797 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3188 "parser.cpp" - break; - - case 205: // expr_float: "float" -#line 799 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3194 "parser.cpp" - break; - - case 206: // expr_integer: "-" "int" -#line 804 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3200 "parser.cpp" - break; - - case 207: // expr_integer: "int" -#line 806 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3206 "parser.cpp" - break; - - case 208: // expr_integer: "octal int" + case 209: // expr_float: "-" "float" #line 808 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3212 "parser.cpp" + { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 3223 "parser.cpp" break; - case 209: // expr_integer: "binary int" + case 210: // expr_float: "float" #line 810 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3218 "parser.cpp" + { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3229 "parser.cpp" break; - case 210: // expr_integer: "hexadecimal int" -#line 812 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3224 "parser.cpp" + case 211: // expr_integer: "-" "int" +#line 815 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 3235 "parser.cpp" break; - case 211: // expr_false: "false" + case 212: // expr_integer: "int" #line 817 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3241 "parser.cpp" + break; + + case 213: // expr_integer: "octal int" +#line 819 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3247 "parser.cpp" + break; + + case 214: // expr_integer: "binary int" +#line 821 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3253 "parser.cpp" + break; + + case 215: // expr_integer: "hexadecimal int" +#line 823 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3259 "parser.cpp" + break; + + case 216: // expr_false: "false" +#line 828 "parser.ypp" { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } -#line 3230 "parser.cpp" +#line 3265 "parser.cpp" break; - case 212: // expr_true: "true" -#line 822 "parser.ypp" + case 217: // expr_true: "true" +#line 833 "parser.ypp" { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } -#line 3236 "parser.cpp" +#line 3271 "parser.cpp" break; -#line 3240 "parser.cpp" +#line 3275 "parser.cpp" default: break; @@ -3420,11 +3455,11 @@ namespace xsk { namespace gsc { namespace iw7 { { static const char *const yy_sname[] = { - "end of file", "error", "invalid token", "#inline", "#include", - "#using_animtree", "#animtree", "endon", "notify", "wait", "waittill", - "waittillmatch", "waittillframeend", "if", "else", "do", "while", "for", - "foreach", "in", "switch", "case", "default", "break", "continue", - "return", "breakpoint", "prof_begin", "prof_end", "thread", + "end of file", "error", "invalid token", "/#", "#/", "#inline", + "#include", "#using_animtree", "#animtree", "endon", "notify", "wait", + "waittill", "waittillmatch", "waittillframeend", "if", "else", "do", + "while", "for", "foreach", "in", "switch", "case", "default", "break", + "continue", "return", "breakpoint", "prof_begin", "prof_end", "thread", "childthread", "thisthread", "call", "true", "false", "undefined", ".size", "game", "self", "anim", "level", "(", ")", "{", "}", "[", "]", ",", ".", "::", ":", ";", "?", "++", "--", "<<", ">>", "||", "&&", "==", @@ -3435,8 +3470,8 @@ namespace xsk { namespace gsc { namespace iw7 { "ADD_ARRAY", "THEN", "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", "$accept", "root", "program", "inline", "include", "declaration", "decl_usingtree", "decl_constant", "decl_thread", "stmt", - "stmt_block", "stmt_list", "stmt_expr", "stmt_call", "stmt_assign", - "stmt_endon", "stmt_notify", "stmt_wait", "stmt_waittill", + "stmt_dev", "stmt_block", "stmt_list", "stmt_expr", "stmt_call", + "stmt_assign", "stmt_endon", "stmt_notify", "stmt_wait", "stmt_waittill", "stmt_waittillmatch", "stmt_waittillframeend", "stmt_if", "stmt_ifelse", "stmt_while", "stmt_dowhile", "stmt_for", "stmt_foreach", "stmt_switch", "stmt_case", "stmt_default", "stmt_break", "stmt_continue", @@ -3716,666 +3751,715 @@ namespace xsk { namespace gsc { namespace iw7 { } - const short parser::yypact_ninf_ = -254; + const short parser::yypact_ninf_ = -261; - const short parser::yytable_ninf_ = -200; + const short parser::yytable_ninf_ = -205; const short parser::yypact_[] = { - 13, 19, 19, -11, -254, 21, 13, -254, -254, -254, - -254, -254, -254, -10, -254, -254, -5, 7, -24, -254, - -254, -254, -254, -26, 800, -254, -254, -254, 26, 2, - -254, -254, -20, -17, -254, 31, -254, -254, -254, -254, - -254, -254, -254, 800, 666, -26, 800, 800, 24, -2, - -254, -254, -254, -254, -254, -254, -254, 1820, -254, -254, - -254, -254, -254, 160, 425, -254, -254, -254, -254, 468, - 562, -254, -254, 756, -254, -254, -254, 764, 823, 831, - 891, -254, -254, 11, 39, -254, -254, -254, -254, -254, - -254, -254, -254, 45, 56, -26, 58, 41, 64, 62, - 91, 85, 88, 1106, 666, -254, 1903, 97, 108, -254, - -254, -254, -254, -254, -254, -254, 800, 800, 800, 800, - 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, - 800, 800, 800, 800, 800, -254, 867, -26, -254, -254, - 105, 107, 800, -26, -254, 994, -254, -254, 800, 800, - -26, 800, 800, -26, 800, -254, 800, 1550, 800, -254, - 1785, 167, 167, 1934, 1944, 2026, 2026, 37, 37, 37, - 37, 1975, 2016, 1985, -30, -30, -254, -254, -254, 1590, - -254, -26, 33, -254, 119, 800, 111, 129, 1096, 130, - 138, 139, 142, 73, 113, 136, 148, 733, 151, 152, - 170, -254, 169, 72, 72, -254, -254, 1045, -254, -254, - -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, - -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, - -254, 161, 172, 175, 176, 179, -254, -254, 918, -254, - -254, -254, -254, -27, 1630, 44, 183, 1670, 47, 190, - 1710, 1749, 189, 1903, 800, -254, 119, -254, 800, 1855, - -254, 800, 220, 800, -3, -26, 800, 145, 191, 192, - -254, -254, -254, -254, 1890, -254, 800, 800, 800, -254, - -254, 42, 42, -254, -254, -254, -254, -254, -254, -254, - 202, 204, 212, 213, -254, -254, 800, 800, 800, 800, - 800, 800, 800, 800, 800, 800, 800, 209, -254, 800, - 210, -254, 800, 211, 800, 218, 1903, 83, -254, 1272, - 219, 1306, 216, -254, -254, -254, 494, 1, 1340, -254, - -254, -254, 84, 93, 1550, 800, 800, 800, 800, 1903, - 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, - 222, 94, 227, 100, 228, 1374, 800, -254, 1096, 800, - 1096, 800, 800, -26, 56, 221, 226, 1408, 1150, 1194, - 1238, 800, -254, 800, -254, 800, -254, 122, 247, 1442, - -254, 1903, 232, 1476, 252, -254, -254, -254, 233, 234, - 800, 238, 800, 239, 800, 144, 153, 173, -254, 1096, - 240, -3, 1096, 800, -254, -254, 250, -254, 251, -254, - 253, -254, -254, -254, -254, -254, 275, -254, 1510, 269, - 272, 273, 1096, 1096, -254, -254, -254, -254, -254 + 17, -261, -261, -61, -61, -12, -261, 42, 17, -261, + -261, -261, -261, -261, -261, -17, -261, -261, -36, 15, + -16, -261, -261, -261, -261, -8, 911, -261, -261, -261, + 38, 18, -261, -261, -40, -33, -261, 41, -261, -261, + -261, -261, -261, -261, -261, 911, 777, -8, 911, 911, + -43, 1, -261, -261, -261, -261, -261, -261, -261, 2063, + -261, -261, -261, -261, -261, 69, 347, -261, -261, -261, + -261, 507, 710, -261, -261, 734, -261, -261, -261, 742, + 801, 867, 875, -261, -261, 26, 45, -261, -261, -261, + -261, -261, -261, -261, -261, 49, 53, -8, 58, 66, + 60, 70, 77, 89, 90, 1389, 777, -261, 2146, 95, + 103, -261, -261, -261, -261, -261, -261, -261, 911, 911, + 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, + 911, 911, 911, 911, 911, 911, 911, -261, 978, -8, + -261, -261, 117, 112, 911, -8, -261, 1073, -261, -261, + 911, 911, -8, 911, 911, -8, 911, -261, 911, 974, + 911, -261, 2028, 162, 162, 2177, 2187, 1059, 1059, 8, + 8, 8, 8, 2218, 2259, 2228, -15, -15, -261, -261, + -261, 1833, -261, -8, 36, -261, 123, 1149, 911, 120, + 125, 1327, 128, 132, 134, 135, 28, 127, 131, 133, + 844, 136, 145, 150, -261, 147, 570, 570, -261, -261, + -261, 1200, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, 142, 144, 146, 148, 149, + -261, -261, 642, -261, -261, -261, -261, -10, 1873, 55, + 155, 1913, 64, 160, 1953, 1992, 156, 2146, 911, -261, + 123, -261, 911, -261, 1276, 2098, -261, 911, 190, 911, + -2, -8, 911, 111, 158, 167, -261, -261, -261, -261, + 2133, -261, 911, 911, 911, -261, -261, 438, 438, -261, + -261, -261, -261, -261, -261, -261, 166, 169, 171, 180, + -261, -261, 911, 911, 911, 911, 911, 911, 911, 911, + 911, 911, 911, 176, -261, 911, 177, -261, 911, 178, + 911, 185, 2146, 82, -261, -261, 1555, 186, 1589, 188, + -261, -261, -261, 1353, -3, 1623, -261, -261, -261, 83, + 84, 974, 911, 911, 911, 911, 2146, 2146, 2146, 2146, + 2146, 2146, 2146, 2146, 2146, 2146, 2146, 197, 85, 200, + 86, 207, 1657, 911, -261, 1327, 911, 1327, 911, 911, + -8, 53, 199, 203, 1691, 1433, 1477, 1521, 911, -261, + 911, -261, 911, -261, 94, 214, 1725, -261, 2146, 204, + 1759, 232, -261, -261, -261, 205, 206, 911, 208, 911, + 209, 911, 97, 115, 118, -261, 1327, 212, -2, 1327, + 911, -261, -261, 216, -261, 222, -261, 224, -261, -261, + -261, -261, -261, 225, -261, 1793, 219, 221, 223, 1327, + 1327, -261, -261, -261, -261, -261 }; const unsigned char parser::yydefact_[] = { - 3, 0, 0, 0, 197, 0, 2, 7, 8, 9, - 12, 13, 14, 0, 198, 199, 0, 0, 0, 1, - 4, 5, 6, 168, 0, 10, 11, 201, 0, 0, - 167, 196, 0, 0, 188, 0, 212, 211, 190, 191, - 192, 193, 194, 0, 170, 0, 0, 0, 0, 0, - 200, 202, 205, 207, 208, 209, 210, 0, 82, 83, - 84, 121, 122, 123, 124, 151, 152, 125, 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, 0, 0, 0, 0, 199, 0, 0, - 199, 0, 0, 0, 170, 189, 172, 0, 169, 173, - 150, 149, 204, 206, 195, 16, 0, 0, 0, 0, + 3, 12, 13, 0, 0, 0, 202, 0, 2, 7, + 8, 9, 14, 15, 16, 0, 203, 204, 0, 0, + 0, 1, 4, 5, 6, 173, 0, 10, 11, 206, + 0, 0, 172, 201, 0, 0, 193, 0, 217, 216, + 195, 196, 197, 198, 199, 0, 175, 0, 0, 0, + 0, 0, 205, 207, 210, 212, 213, 214, 215, 0, + 87, 88, 89, 126, 127, 128, 129, 156, 157, 130, + 131, 132, 133, 134, 135, 0, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 0, 146, 147, 148, + 149, 150, 151, 152, 153, 0, 0, 0, 0, 204, + 0, 0, 204, 0, 0, 0, 175, 194, 177, 0, + 174, 178, 155, 154, 209, 211, 200, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 177, 0, 0, 153, 154, - 199, 0, 170, 0, 15, 0, 17, 166, 0, 170, - 0, 0, 170, 0, 0, 178, 0, 172, 0, 165, - 0, 114, 115, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 116, 117, 118, 119, 120, 0, - 176, 0, 0, 169, 174, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 182, 0, 0, + 158, 159, 204, 0, 175, 0, 17, 0, 19, 171, + 0, 175, 0, 0, 175, 0, 0, 183, 0, 177, + 0, 170, 0, 119, 120, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 121, 122, 123, 124, + 125, 0, 181, 0, 0, 174, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 43, 0, 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, 0, 0, 179, 180, 181, 182, 0, 183, - 184, 185, 186, 187, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 171, 0, 175, 0, 155, 170, 0, - 63, 0, 0, 0, 49, 0, 0, 0, 0, 0, - 74, 75, 76, 78, 0, 79, 170, 170, 0, 179, - 180, 98, 100, 42, 44, 52, 53, 54, 50, 51, - 0, 0, 0, 0, 99, 101, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 157, 170, - 0, 159, 170, 0, 0, 0, 102, 0, 58, 0, - 0, 0, 0, 46, 47, 48, 0, 0, 0, 73, - 72, 77, 0, 0, 0, 0, 0, 0, 0, 87, - 93, 94, 95, 96, 97, 88, 89, 90, 92, 91, - 0, 0, 0, 0, 0, 0, 170, 156, 0, 0, - 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 170, 158, 170, 160, 170, 203, 0, 64, 0, - 66, 85, 0, 0, 0, 71, 80, 81, 0, 0, - 170, 0, 170, 0, 170, 0, 0, 0, 161, 0, - 0, 49, 0, 0, 55, 57, 169, 60, 169, 62, - 169, 162, 163, 164, 65, 67, 0, 69, 0, 0, - 0, 0, 0, 0, 56, 59, 61, 68, 70 + 0, 0, 0, 0, 48, 0, 0, 0, 50, 20, + 21, 0, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 0, 0, 0, 184, 185, + 186, 187, 0, 188, 189, 190, 191, 192, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 176, 0, 180, + 0, 160, 175, 46, 0, 0, 68, 0, 0, 0, + 54, 0, 0, 0, 0, 0, 79, 80, 81, 83, + 0, 84, 175, 175, 0, 184, 185, 103, 105, 47, + 49, 57, 58, 59, 55, 56, 0, 0, 0, 0, + 104, 106, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 162, 175, 0, 164, 175, 0, + 0, 0, 107, 0, 45, 63, 0, 0, 0, 0, + 51, 52, 53, 0, 0, 0, 78, 77, 82, 0, + 0, 0, 0, 0, 0, 0, 92, 98, 99, 100, + 101, 102, 93, 94, 95, 97, 96, 0, 0, 0, + 0, 0, 0, 175, 161, 0, 0, 0, 91, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 175, 163, + 175, 165, 175, 208, 0, 69, 0, 71, 90, 0, + 0, 0, 76, 85, 86, 0, 0, 175, 0, 175, + 0, 175, 0, 0, 0, 166, 0, 0, 54, 0, + 0, 60, 62, 174, 65, 174, 67, 174, 167, 168, + 169, 70, 72, 0, 74, 0, 0, 0, 0, 0, + 0, 61, 64, 66, 73, 75 }; const short parser::yypgoto_[] = { - -254, -254, -254, 288, 319, 322, -254, -254, -254, -183, - -90, -254, -122, -254, -254, -254, -254, -254, -254, -254, - -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, - -254, -254, -254, -254, -254, -254, 182, -254, -253, -252, - -249, -254, -254, -254, -254, -254, -126, -80, -64, -60, - -254, -254, 300, -41, -254, -31, -6, -254, -254, 230, - -254, -254, -254, 237, 243, 268, 318, -254, -254, 0, - 6, -254, -8, -254, -254, -254, 141, -254, -254 + -261, -261, -261, 267, 274, 275, -261, -261, -261, -175, + -261, -94, 98, -124, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, 187, -261, -260, + -259, -255, -261, -261, -261, -261, -261, -128, -37, -70, + -66, -261, -261, 425, -45, -261, -26, 157, -261, -261, + 241, -261, -261, -261, 255, 273, 329, 361, -261, -261, + 0, 9, -261, -14, -261, -261, -261, 93, -261, -261 }; const short parser::yydefgoto_[] = { - 0, 5, 6, 7, 8, 9, 10, 11, 12, 205, - 206, 207, 322, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 106, 382, 231, 232, - 233, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 29, 107, 183, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92 + 0, 7, 8, 9, 10, 11, 12, 13, 14, 208, + 209, 210, 211, 329, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 108, 389, 235, + 236, 237, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 31, 109, 185, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94 }; const short parser::yytable_[] = { - 13, 15, 15, 108, 146, 262, 13, 16, 17, 138, - 28, 323, 324, 139, 142, 325, 1, 2, 3, 234, - 362, 19, -199, 30, 284, 96, 32, 33, 99, 35, - 18, 23, 97, 100, 39, 40, 41, 42, 98, 101, - -187, -187, 202, -187, 94, 109, 25, -187, 363, 95, - 203, 204, 142, 132, 133, 134, -187, 24, 26, -187, - -199, 4, 234, 108, 27, 235, 14, 4, 93, 14, - 4, 32, 33, 140, 35, 257, 102, 279, 279, 141, - 158, 234, 149, 14, 4, 114, 308, 136, 143, 311, - 137, 158, 117, 118, 158, 147, 144, -187, -187, 145, - 4, 32, 33, 148, 35, 14, 4, 151, 235, 39, - 40, 41, 42, 150, 236, 112, 113, 202, 130, 131, - 132, 133, 134, 280, 280, 357, 365, 235, 14, 4, - 158, 158, 152, 154, 153, 366, 372, 180, 279, 237, - 158, 158, 374, 184, 158, 243, 142, 158, 323, 324, - 246, 141, 325, 249, 159, 267, 181, 236, 14, 4, - 258, 27, 260, 270, 398, 53, 54, 55, 56, 158, - 261, 263, 236, 236, 138, 378, 236, 380, 139, 264, - 265, 256, 237, 266, 280, 268, 411, 271, 243, -179, - -179, 158, -179, 276, 141, 412, -179, 237, 237, 272, - 158, 237, 275, 243, 243, -179, 57, 243, -179, 141, - 141, 277, 285, 141, 278, 413, 414, 138, 138, 417, - 158, 139, 139, 286, 309, 103, 287, 288, 110, 111, - 289, 312, 234, 236, 234, 315, 320, 113, 140, 427, - 428, 329, 330, 335, 141, 336, -179, -179, 130, 131, - 132, 133, 134, 337, 338, 350, 352, 354, 237, 356, - 359, 399, 138, 371, 243, 327, 139, 361, 373, 375, - 141, 403, 386, 234, 385, 279, 234, 387, 235, 416, - 235, 140, 140, 401, 404, 405, 157, 141, 141, 407, - 409, 415, 419, 420, 20, 421, 234, 234, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 422, 179, 235, - 424, 280, 235, 425, 426, 21, 140, 236, 22, 236, - 244, 0, 141, 247, 269, 0, 250, 0, 251, 0, - 253, 0, 235, 235, 0, 0, 0, 0, 0, 406, - 0, 408, 237, 410, 237, 0, 0, 0, 243, 0, - 243, 0, 0, 384, 141, 0, 141, 259, 236, 0, - 236, 236, 0, 0, 0, 238, 0, 0, 0, 274, - 0, 0, 239, 0, 0, 0, 0, 0, 240, 0, - 0, 236, 236, 237, 0, 237, 237, 0, 0, 243, - 0, 243, 243, 0, 0, 141, 0, 141, 141, 0, - 0, 0, 0, 241, 0, 0, 237, 237, 238, 0, - 0, 0, 243, 243, 0, 239, 0, 0, 141, 141, - 0, 240, 0, 281, 282, 0, 316, 238, 0, 0, - 239, 239, 182, 319, 239, 321, 240, 240, 328, 245, - 240, 0, 248, 0, -180, -180, 241, -180, 0, 0, - 334, -180, 0, 242, 0, 0, 0, 0, 0, 0, - -180, 241, 241, -180, 0, 241, 0, 0, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 0, - 0, 0, 0, 0, 326, 0, 355, -181, -181, 0, - -181, 239, 0, 0, -181, 0, 242, 240, 0, 0, - 0, -180, -180, -181, 0, 0, -181, 367, 368, 369, - 370, 242, 242, 32, 33, 242, 35, 0, 0, 0, - 0, 0, 241, 0, 0, 0, 0, 0, 0, 136, - 0, 379, 137, 381, 383, 0, 0, 294, 295, 0, - 0, 0, 0, 0, -181, -181, 0, 0, 317, 0, - 0, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 0, 0, 0, 0, 332, 333, 0, 0, - 14, 4, 242, 0, 0, 418, 0, 0, 238, 0, - 238, -182, -182, 0, -182, 239, 0, 239, -182, 0, - 0, 240, 0, 240, 0, 0, 0, -182, 0, 351, - -182, 0, 353, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 241, 0, 241, 238, - 0, 326, 238, 0, 0, 0, 239, 0, 239, 239, - 0, 0, 240, 0, 240, 240, 0, 0, -182, -182, - 0, 0, 238, 238, 0, 0, 377, 0, 0, 239, - 239, 0, 0, 0, 0, 240, 240, 241, 0, 241, - 241, 395, 31, 396, 0, 397, 242, 0, 242, 0, + 15, 110, 148, 17, 17, 140, 30, 98, 15, 141, + 330, 331, 18, 19, 101, 332, 268, 27, 369, 238, + 1, 2, 3, 4, 5, 32, 25, 16, 6, 34, + 35, 20, 37, 144, 99, 102, 290, 41, 42, 43, + 44, -204, 21, 100, 103, 205, 370, 111, 16, 6, + 114, 115, 26, 206, 207, 16, 6, -192, -192, 238, + -192, 110, 96, 238, -192, 119, 120, 97, 28, 144, + 134, 135, 136, -192, 29, 142, -192, -204, 285, 285, + 261, 6, 95, 238, 143, 160, 16, 6, 104, 290, + 116, 132, 133, 134, 135, 136, 145, 149, 147, 314, + -184, -184, 146, -184, 160, 150, 6, -184, 317, 151, + 239, 152, 273, 160, -192, -192, -184, 153, 29, -184, + 154, 240, 55, 56, 57, 58, 364, 372, 373, 379, + 381, 160, 160, 160, 160, 160, 238, 156, 405, 182, + 155, 418, 285, 160, 160, 186, 160, 247, 330, 331, + 239, 161, 250, 332, 239, 253, 143, -184, -184, 419, + 144, 240, 420, 183, 160, 240, 262, 160, 267, 286, + 286, 269, 140, 266, 239, 270, 141, 271, 272, 276, + 240, 240, 274, 260, 277, 240, 278, 247, 282, 281, + 385, 247, 387, 283, 284, 291, 143, 292, 315, 293, + 143, 294, 295, 318, 321, 115, 247, 247, 327, 342, + 336, 247, 343, 59, 344, 143, 143, 140, 140, 337, + 143, 141, 141, 345, 357, 359, 361, 239, 363, 366, + 406, 421, 105, 286, 424, 112, 113, 238, 240, 238, + 378, 368, 142, 380, 240, 132, 133, 134, 135, 136, + 382, 143, 393, 410, 434, 435, 394, 408, 411, 412, + 426, 414, 416, 140, 247, 422, 427, 141, 428, 429, + 247, 334, 431, 143, 432, 22, 433, 392, 238, 143, + 285, 238, 23, 24, 423, 264, 0, 142, 142, 275, + 0, 0, 0, 159, 0, 0, 143, 143, 0, 0, + 0, 238, 238, 0, 241, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 0, 181, 0, 0, 239, 0, + 239, 0, 0, 142, 0, 0, 0, 248, 0, 240, + 251, 240, 143, 254, 241, 255, 0, 257, 241, 0, + 0, 0, 413, 0, 415, 0, 417, 0, 0, 0, + 0, 0, 0, 241, 241, 247, 0, 247, 241, 239, + 391, 286, 239, 0, 143, 265, 143, 0, -185, -185, + 240, -185, 240, 240, 0, -185, 0, 280, 242, 0, + 0, 0, 239, 239, -185, 0, 0, -185, 0, 0, + 0, 0, 243, 240, 240, 0, 247, 0, 247, 247, + 0, 0, 0, 0, 0, 143, 0, 143, 143, 0, + 244, 241, 0, 0, 0, 0, 0, 241, 242, 247, + 247, 0, 242, 0, 0, -185, -185, 0, 143, 143, + 0, 0, 243, 0, 0, 322, 243, 287, 288, 0, + 0, 0, 242, 0, 326, 0, 328, 0, 0, 335, + 244, 243, 243, 0, 244, 0, 243, 0, 0, 34, + 35, 341, 37, 0, 0, 0, 245, 0, 0, 244, + 244, 0, 0, 0, 244, 138, 0, 0, 139, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 0, 0, 0, 0, 0, 242, 0, 362, 246, 0, + 0, 333, 0, 0, 0, 0, 245, 0, 0, 243, + 245, 0, 241, 0, 241, 243, 16, 6, 0, 374, + 375, 376, 377, 0, 0, 245, 245, 244, -186, -186, + 245, -186, 0, 244, 0, -186, 0, 0, 246, 0, + 0, 0, 246, 386, -186, 388, 390, -186, 0, 0, + 0, 0, 0, 241, 0, 241, 241, 246, 246, 184, + 0, 0, 246, 0, 0, 0, 249, 0, 0, 252, + 0, 0, 0, 0, 0, 0, 241, 241, 0, 0, + 0, 0, 0, 245, 0, -186, -186, 425, 0, 245, + 0, 34, 35, 0, 37, 0, 242, 0, 242, 41, + 42, 43, 44, 0, 0, 0, 0, 205, 0, 0, + 243, 0, 243, 0, 0, 246, 0, 0, 0, 0, + 0, 246, 0, 0, 0, 0, 0, 0, 244, 0, + 244, 0, 0, 0, 0, 0, 0, 242, 0, 333, + 242, 296, 297, 0, 298, 299, 0, 0, 16, 6, + 0, 243, 0, 243, 243, 0, 0, 0, 0, 0, + 242, 242, 0, 34, 35, 0, 37, 0, 0, 244, + 0, 244, 244, 0, 243, 243, 0, 323, 0, 138, + 0, 0, 139, 0, 245, 0, 245, 300, 301, 0, + 0, 0, 244, 244, 0, 0, 0, 339, 340, 0, + 0, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 0, 0, 0, 0, 246, 0, 246, 0, + 16, 6, 0, 0, 0, 245, 0, 245, 245, 0, + 358, -187, -187, 360, -187, 0, 0, 0, -187, 0, + 0, 0, 0, 0, 0, 0, 0, -187, 245, 245, + -187, 0, 0, 0, 0, 34, 35, 246, 37, 246, + 246, 0, 137, -188, -188, 0, -188, 0, 0, 0, + -188, 138, 0, 0, 139, 33, 0, 0, 384, -188, + 246, 246, -188, 0, 0, 0, 0, 0, -187, -187, + 0, 0, 0, 402, 0, 403, 0, 404, 34, 35, + 36, 37, 38, 39, 40, 0, 41, 42, 43, 44, + 45, 0, 16, 6, 106, 107, 0, 0, 47, 0, + -188, -188, -189, -189, 0, -189, 0, 0, 0, -189, + 0, 0, 0, 0, 48, 49, 0, 0, -189, 0, + 0, -189, 33, 0, 0, 0, 0, 0, 0, 0, + 0, 50, 0, 0, 51, 16, 6, 29, 52, 53, + 54, 55, 56, 57, 58, 34, 35, 36, 37, 38, + 39, 40, 0, 41, 42, 43, 44, 45, 0, -189, + -189, 46, 0, 0, 0, 47, 0, 279, -190, -190, + 0, -190, 0, 0, 0, -190, -191, -191, 0, -191, + 0, 48, 49, -191, -190, 0, 0, -190, 0, 33, + 0, 0, -191, 0, 0, -191, 0, 0, 50, 0, + 0, 51, 16, 6, 29, 52, 53, 54, 55, 56, + 57, 58, 34, 35, 36, 37, 38, 39, 40, 0, + 41, 42, 43, 44, 45, -190, -190, 0, 46, 0, + 0, 0, 47, -191, -191, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, + 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, + 0, 0, 0, 0, 0, 50, 0, 0, 51, 16, + 6, 29, 52, 53, 54, 55, 56, 57, 58, 34, + 35, 36, 37, 38, 39, 40, 0, 41, 42, 43, + 44, 45, 256, 0, 0, 106, 0, 0, 118, 47, + 0, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 0, 0, 0, 0, 48, 49, 0, 0, 0, + 0, 0, 0, 0, 129, 130, 131, 132, 133, 134, + 135, 136, 50, 0, 0, 51, 16, 6, 29, 52, + 53, 54, 55, 56, 57, 58, 187, 0, 0, 0, + 0, 0, 0, 0, 188, 0, 0, 189, 190, 0, + 191, 192, 193, 194, 0, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 34, 35, 0, 37, 0, 0, + 0, 0, 41, 42, 43, 44, 119, 120, 147, 204, + 205, 0, 125, 126, 127, 128, 0, 0, 206, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 241, 241, 0, 0, 0, 32, 33, 34, 35, 36, - 37, 38, 0, 39, 40, 41, 42, 43, 0, 0, - 0, 104, 105, 0, 0, 45, 0, 242, 0, 242, - 242, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 46, 47, 0, 0, 0, 0, 0, 0, 31, - 242, 242, 0, 0, 0, 0, 0, 0, 48, 0, - 0, 49, 14, 4, 27, 50, 51, 52, 53, 54, - 55, 56, 32, 33, 34, 35, 36, 37, 38, 0, - 39, 40, 41, 42, 43, 0, 0, 0, 44, 0, - 0, 0, 45, 0, 273, 32, 33, 0, 35, 0, - 0, 0, 135, -183, -183, 0, -183, 0, 46, 47, - -183, 136, 0, 0, 137, 0, 31, 0, 0, -183, - 0, 0, -183, 0, 0, 48, 0, 0, 49, 14, - 4, 27, 50, 51, 52, 53, 54, 55, 56, 32, - 33, 34, 35, 36, 37, 38, 0, 39, 40, 41, - 42, 43, 14, 4, 0, 44, 0, 0, 0, 45, - -183, -183, -184, -184, 0, -184, 0, 0, 0, -184, - -185, -185, 0, -185, 0, 46, 47, -185, -184, 0, - 0, -184, 0, 31, 0, 0, -185, 0, 0, -185, - 0, 0, 48, 0, 0, 49, 14, 4, 27, 50, - 51, 52, 53, 54, 55, 56, 32, 33, 34, 35, - 36, 37, 38, 0, 39, 40, 41, 42, 43, -184, - -184, 0, 104, 0, 0, 0, 45, -185, -185, 0, - -186, -186, 0, -186, 0, 290, 291, -186, 292, 293, - 0, 0, 46, 47, 0, 0, -186, 0, 0, -186, - 0, 0, 0, 0, 0, 0, 0, 32, 33, 48, - 35, 0, 49, 14, 4, 27, 50, 51, 52, 53, - 54, 55, 56, 136, 0, 0, 137, 0, 0, 0, - 0, 294, 295, 0, 0, 0, 0, -186, -186, 0, - 0, 0, 0, 0, 0, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 0, 0, 0, 0, - 0, 0, 0, 185, 14, 4, 186, 187, 0, 188, - 189, 190, 191, 0, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 32, 33, 0, 35, 0, 0, 0, - 0, 39, 40, 41, 42, 0, 0, 145, 201, 202, - 0, 0, 0, 0, 0, 0, 0, 203, 204, 0, - 0, 0, 0, 0, 185, 0, 0, 186, 187, 0, - 188, 189, 190, 191, 0, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 32, 33, 0, 35, 0, 0, - 14, 4, 39, 40, 41, 42, 0, 0, 145, 283, - 202, 0, 0, 0, 0, 0, 0, 0, 203, 204, - 0, 0, 0, 0, 0, 185, 0, 0, 186, 187, - 0, 188, 189, 190, 191, 0, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 32, 33, 0, 35, 0, - 0, 14, 4, 39, 40, 41, 42, 0, 0, 145, - 0, 202, 0, 0, 0, 0, 0, 0, 155, 203, - 204, 0, 0, 156, 0, 0, 0, 0, 116, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 14, 4, 127, 128, 129, 130, 131, 132, - 133, 134, 389, 0, 0, 0, 0, 390, 0, 0, - 0, 0, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 391, 0, 0, 0, - 0, 392, 0, 0, 0, 0, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 132, 133, 134, 135, 136, 0, 0, 0, + 0, 0, 187, 263, 0, 0, 0, 0, 0, 0, + 188, 16, 6, 189, 190, 0, 191, 192, 193, 194, + 0, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 34, 35, 0, 37, 0, 0, 0, 0, 41, 42, + 43, 44, 0, 0, 147, 0, 205, 0, 0, 0, + 0, 0, 0, 187, 206, 207, 0, 0, 0, 0, + 0, 188, 0, 0, 189, 190, 0, 191, 192, 193, + 194, 0, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 34, 35, 0, 37, 0, 0, 16, 6, 41, + 42, 43, 44, 0, 0, 147, 289, 205, 0, 0, + 0, 0, 0, 0, 0, 206, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 393, 0, 0, 0, 0, 394, 0, 0, 0, 0, - 116, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 358, 0, 127, 128, 129, 130, - 131, 132, 133, 134, 116, 0, 0, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 360, 0, - 127, 128, 129, 130, 131, 132, 133, 134, 116, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 364, 0, 127, 128, 129, 130, 131, 132, - 133, 134, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 376, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, + 324, 0, 0, 0, 0, 0, 0, 188, 16, 6, + 189, 190, 0, 191, 192, 193, 194, 0, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 34, 35, 0, + 37, 0, 0, 0, 0, 41, 42, 43, 44, 0, + 0, 147, 0, 205, 0, 0, 0, 0, 0, 0, + 187, 206, 207, 0, 0, 0, 0, 0, 188, 0, + 0, 189, 190, 0, 191, 192, 193, 194, 0, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 34, 35, + 0, 37, 0, 0, 16, 6, 41, 42, 43, 44, + 0, 0, 147, 0, 205, 0, 0, 0, 0, 0, + 0, 0, 206, 207, 34, 35, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 388, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 116, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 400, 0, 127, 128, 129, 130, - 131, 132, 133, 134, 116, 0, 0, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 402, 0, - 127, 128, 129, 130, 131, 132, 133, 134, 116, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 423, 0, 127, 128, 129, 130, 131, 132, - 133, 134, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 252, 0, 0, 0, - 0, 0, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 255, 0, 0, 0, - 0, 0, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 307, 0, 0, 0, - 0, 0, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 310, 0, 0, 0, - 0, 0, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 313, 0, 0, 0, - 0, 0, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 314, 0, 0, 0, - 0, 116, 0, 0, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 127, 128, 129, - 130, 131, 132, 133, 134, 254, 0, 116, 0, 0, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 127, 128, 129, 130, 131, 132, 133, - 134, 115, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 318, 116, 0, 0, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 127, 128, 129, 130, 131, 132, 133, - 134, 331, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 116, 0, 0, 117, 118, + 138, 0, 0, 139, 0, 0, 0, 0, 300, 301, + 0, 0, 0, 0, 0, 16, 6, 0, 0, 0, + 0, 0, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 157, 0, 0, 0, 0, 158, 0, + 0, 16, 6, 118, 0, 0, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, + 130, 131, 132, 133, 134, 135, 136, 396, 0, 0, + 0, 0, 397, 0, 0, 0, 0, 118, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 0, 0, 0, 0, - 0, 127, 128, 129, 130, 131, 132, 133, 134, 117, - 118, 0, 120, 121, 122, 123, 124, 125, 126, 117, - 118, 0, 0, 121, 122, 123, 124, 125, 126, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 117, 118, 0, 0, 121, 122, 123, 124, 125, 126, - 117, 118, 0, 0, 121, 122, 123, 124, 125, 126, - 0, 0, 0, 0, 128, 129, 130, 131, 132, 133, - 134, 0, 0, 0, 128, 0, 130, 131, 132, 133, - 134, 117, 118, 0, 0, 121, 122, 123, 124, 125, - 126, 117, 118, 0, 0, 0, 0, 123, 124, 125, - 126, 0, 0, 0, 0, 0, 0, 130, 131, 132, - 133, 134, 0, 0, 0, 0, 0, 130, 131, 132, - 133, 134 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 129, 130, 131, 132, 133, 134, 135, + 136, 398, 0, 0, 0, 0, 399, 0, 0, 0, + 0, 118, 0, 0, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 129, 130, 131, + 132, 133, 134, 135, 136, 400, 0, 0, 0, 0, + 401, 0, 0, 0, 0, 118, 0, 0, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 365, + 0, 129, 130, 131, 132, 133, 134, 135, 136, 118, + 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 367, 0, 129, 130, 131, 132, 133, + 134, 135, 136, 118, 0, 0, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 371, 0, 129, + 130, 131, 132, 133, 134, 135, 136, 118, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 383, 0, 129, 130, 131, 132, 133, 134, 135, + 136, 118, 0, 0, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 395, 0, 129, 130, 131, + 132, 133, 134, 135, 136, 118, 0, 0, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 407, + 0, 129, 130, 131, 132, 133, 134, 135, 136, 118, + 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 409, 0, 129, 130, 131, 132, 133, + 134, 135, 136, 118, 0, 0, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 430, 0, 129, + 130, 131, 132, 133, 134, 135, 136, 118, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 129, 130, 131, 132, 133, 134, 135, + 136, 259, 0, 0, 0, 0, 0, 118, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 129, 130, 131, 132, 133, 134, 135, + 136, 313, 0, 0, 0, 0, 0, 118, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 129, 130, 131, 132, 133, 134, 135, + 136, 316, 0, 0, 0, 0, 0, 118, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 129, 130, 131, 132, 133, 134, 135, + 136, 319, 0, 0, 0, 0, 0, 118, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 129, 130, 131, 132, 133, 134, 135, + 136, 320, 0, 0, 0, 0, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 258, 0, 118, 0, 0, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, + 131, 132, 133, 134, 135, 136, 117, 118, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 129, 130, 131, 132, 133, 134, 135, + 136, 325, 118, 0, 0, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, + 131, 132, 133, 134, 135, 136, 338, 118, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 118, 0, 0, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 0, 0, 0, 0, 0, 129, 130, 131, 132, + 133, 134, 135, 136, 119, 120, 0, 122, 123, 124, + 125, 126, 127, 128, 119, 120, 0, 0, 123, 124, + 125, 126, 127, 128, 0, 0, 0, 129, 130, 131, + 132, 133, 134, 135, 136, 0, 0, 129, 130, 131, + 132, 133, 134, 135, 136, 119, 120, 0, 0, 123, + 124, 125, 126, 127, 128, 119, 120, 0, 0, 123, + 124, 125, 126, 127, 128, 0, 0, 0, 0, 130, + 131, 132, 133, 134, 135, 136, 0, 0, 0, 130, + 0, 132, 133, 134, 135, 136, 119, 120, 0, 0, + 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 132, 133, 134, 135, 136 }; const short parser::yycheck_[] = { - 0, 1, 2, 44, 94, 188, 6, 1, 2, 73, - 18, 264, 264, 73, 41, 264, 3, 4, 5, 145, - 19, 0, 49, 23, 207, 45, 29, 30, 45, 32, - 41, 41, 32, 33, 37, 38, 39, 40, 32, 33, - 29, 30, 45, 32, 42, 45, 51, 36, 47, 47, - 53, 54, 41, 83, 84, 85, 45, 67, 51, 48, - 49, 87, 188, 104, 88, 145, 86, 87, 42, 86, - 87, 29, 30, 73, 32, 42, 45, 203, 204, 73, - 47, 207, 41, 86, 87, 87, 42, 45, 49, 42, - 48, 47, 55, 56, 47, 95, 51, 86, 87, 43, - 87, 29, 30, 45, 32, 86, 87, 45, 188, 37, - 38, 39, 40, 49, 145, 91, 92, 45, 81, 82, - 83, 84, 85, 203, 204, 42, 42, 207, 86, 87, - 47, 47, 41, 45, 49, 42, 42, 137, 264, 145, - 47, 47, 42, 143, 47, 145, 41, 47, 401, 401, - 150, 145, 401, 153, 46, 82, 49, 188, 86, 87, - 41, 88, 51, 50, 42, 92, 93, 94, 95, 47, - 41, 41, 203, 204, 238, 358, 207, 360, 238, 41, - 41, 181, 188, 41, 264, 193, 42, 51, 188, 29, - 30, 47, 32, 41, 188, 42, 36, 203, 204, 51, - 47, 207, 51, 203, 204, 45, 24, 207, 48, 203, - 204, 41, 51, 207, 45, 42, 399, 281, 282, 402, - 47, 281, 282, 51, 41, 43, 51, 51, 46, 47, - 51, 41, 358, 264, 360, 46, 16, 92, 238, 422, - 423, 50, 50, 41, 238, 41, 86, 87, 81, 82, - 83, 84, 85, 41, 41, 46, 46, 46, 264, 41, - 41, 14, 326, 41, 264, 265, 326, 51, 41, 41, - 264, 19, 51, 399, 364, 401, 402, 51, 358, 401, - 360, 281, 282, 51, 51, 51, 104, 281, 282, 51, - 51, 51, 42, 42, 6, 42, 422, 423, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 42, 136, 399, - 51, 401, 402, 51, 51, 6, 326, 358, 6, 360, - 148, -1, 326, 151, 193, -1, 154, -1, 156, -1, - 158, -1, 422, 423, -1, -1, -1, -1, -1, 390, - -1, 392, 358, 394, 360, -1, -1, -1, 358, -1, - 360, -1, -1, 363, 358, -1, 360, 185, 399, -1, - 401, 402, -1, -1, -1, 145, -1, -1, -1, 197, - -1, -1, 145, -1, -1, -1, -1, -1, 145, -1, - -1, 422, 423, 399, -1, 401, 402, -1, -1, 399, - -1, 401, 402, -1, -1, 399, -1, 401, 402, -1, - -1, -1, -1, 145, -1, -1, 422, 423, 188, -1, - -1, -1, 422, 423, -1, 188, -1, -1, 422, 423, - -1, 188, -1, 203, 204, -1, 254, 207, -1, -1, - 203, 204, 142, 261, 207, 263, 203, 204, 266, 149, - 207, -1, 152, -1, 29, 30, 188, 32, -1, -1, - 278, 36, -1, 145, -1, -1, -1, -1, -1, -1, - 45, 203, 204, 48, -1, 207, -1, -1, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, -1, - -1, -1, -1, -1, 264, -1, 314, 29, 30, -1, - 32, 264, -1, -1, 36, -1, 188, 264, -1, -1, - -1, 86, 87, 45, -1, -1, 48, 335, 336, 337, - 338, 203, 204, 29, 30, 207, 32, -1, -1, -1, - -1, -1, 264, -1, -1, -1, -1, -1, -1, 45, - -1, 359, 48, 361, 362, -1, -1, 53, 54, -1, - -1, -1, -1, -1, 86, 87, -1, -1, 258, -1, - -1, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, -1, -1, -1, -1, 276, 277, -1, -1, - 86, 87, 264, -1, -1, 403, -1, -1, 358, -1, - 360, 29, 30, -1, 32, 358, -1, 360, 36, -1, - -1, 358, -1, 360, -1, -1, -1, 45, -1, 309, - 48, -1, 312, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 358, -1, 360, 399, - -1, 401, 402, -1, -1, -1, 399, -1, 401, 402, - -1, -1, 399, -1, 401, 402, -1, -1, 86, 87, - -1, -1, 422, 423, -1, -1, 356, -1, -1, 422, - 423, -1, -1, -1, -1, 422, 423, 399, -1, 401, - 402, 371, 6, 373, -1, 375, 358, -1, 360, -1, + 0, 46, 96, 3, 4, 75, 20, 47, 8, 75, + 270, 270, 3, 4, 47, 270, 191, 53, 21, 147, + 3, 4, 5, 6, 7, 25, 43, 88, 89, 31, + 32, 43, 34, 43, 34, 35, 211, 39, 40, 41, + 42, 51, 0, 34, 35, 47, 49, 47, 88, 89, + 93, 94, 69, 55, 56, 88, 89, 31, 32, 187, + 34, 106, 44, 191, 38, 57, 58, 49, 53, 43, + 85, 86, 87, 47, 90, 75, 50, 51, 206, 207, + 44, 89, 44, 211, 75, 49, 88, 89, 47, 264, + 89, 83, 84, 85, 86, 87, 51, 97, 45, 44, + 31, 32, 53, 34, 49, 47, 89, 38, 44, 43, + 147, 51, 84, 49, 88, 89, 47, 47, 90, 50, + 43, 147, 94, 95, 96, 97, 44, 44, 44, 44, + 44, 49, 49, 49, 49, 49, 264, 47, 44, 139, + 51, 44, 270, 49, 49, 145, 49, 147, 408, 408, + 187, 48, 152, 408, 191, 155, 147, 88, 89, 44, + 43, 187, 44, 51, 49, 191, 43, 49, 43, 206, + 207, 43, 242, 53, 211, 43, 242, 43, 43, 52, + 206, 207, 196, 183, 53, 211, 53, 187, 43, 53, + 365, 191, 367, 43, 47, 53, 187, 53, 43, 53, + 191, 53, 53, 43, 48, 94, 206, 207, 18, 43, + 52, 211, 43, 26, 43, 206, 207, 287, 288, 52, + 211, 287, 288, 43, 48, 48, 48, 264, 43, 43, + 16, 406, 45, 270, 409, 48, 49, 365, 264, 367, + 43, 53, 242, 43, 270, 83, 84, 85, 86, 87, + 43, 242, 53, 21, 429, 430, 53, 53, 53, 53, + 44, 53, 53, 333, 264, 53, 44, 333, 44, 44, + 270, 271, 53, 264, 53, 8, 53, 371, 406, 270, + 408, 409, 8, 8, 408, 187, -1, 287, 288, 196, + -1, -1, -1, 106, -1, -1, 287, 288, -1, -1, + -1, 429, 430, -1, 147, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, -1, 138, -1, -1, 365, -1, + 367, -1, -1, 333, -1, -1, -1, 150, -1, 365, + 153, 367, 333, 156, 187, 158, -1, 160, 191, -1, + -1, -1, 397, -1, 399, -1, 401, -1, -1, -1, + -1, -1, -1, 206, 207, 365, -1, 367, 211, 406, + 370, 408, 409, -1, 365, 188, 367, -1, 31, 32, + 406, 34, 408, 409, -1, 38, -1, 200, 147, -1, + -1, -1, 429, 430, 47, -1, -1, 50, -1, -1, + -1, -1, 147, 429, 430, -1, 406, -1, 408, 409, + -1, -1, -1, -1, -1, 406, -1, 408, 409, -1, + 147, 264, -1, -1, -1, -1, -1, 270, 187, 429, + 430, -1, 191, -1, -1, 88, 89, -1, 429, 430, + -1, -1, 187, -1, -1, 258, 191, 206, 207, -1, + -1, -1, 211, -1, 267, -1, 269, -1, -1, 272, + 187, 206, 207, -1, 191, -1, 211, -1, -1, 31, + 32, 284, 34, -1, -1, -1, 147, -1, -1, 206, + 207, -1, -1, -1, 211, 47, -1, -1, 50, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, -1, -1, -1, -1, 264, -1, 320, 147, -1, + -1, 270, -1, -1, -1, -1, 187, -1, -1, 264, + 191, -1, 365, -1, 367, 270, 88, 89, -1, 342, + 343, 344, 345, -1, -1, 206, 207, 264, 31, 32, + 211, 34, -1, 270, -1, 38, -1, -1, 187, -1, + -1, -1, 191, 366, 47, 368, 369, 50, -1, -1, + -1, -1, -1, 406, -1, 408, 409, 206, 207, 144, + -1, -1, 211, -1, -1, -1, 151, -1, -1, 154, + -1, -1, -1, -1, -1, -1, 429, 430, -1, -1, + -1, -1, -1, 264, -1, 88, 89, 410, -1, 270, + -1, 31, 32, -1, 34, -1, 365, -1, 367, 39, + 40, 41, 42, -1, -1, -1, -1, 47, -1, -1, + 365, -1, 367, -1, -1, 264, -1, -1, -1, -1, + -1, 270, -1, -1, -1, -1, -1, -1, 365, -1, + 367, -1, -1, -1, -1, -1, -1, 406, -1, 408, + 409, 9, 10, -1, 12, 13, -1, -1, 88, 89, + -1, 406, -1, 408, 409, -1, -1, -1, -1, -1, + 429, 430, -1, 31, 32, -1, 34, -1, -1, 406, + -1, 408, 409, -1, 429, 430, -1, 262, -1, 47, + -1, -1, 50, -1, 365, -1, 367, 55, 56, -1, + -1, -1, 429, 430, -1, -1, -1, 282, 283, -1, + -1, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, -1, -1, -1, -1, 365, -1, 367, -1, + 88, 89, -1, -1, -1, 406, -1, 408, 409, -1, + 315, 31, 32, 318, 34, -1, -1, -1, 38, -1, + -1, -1, -1, -1, -1, -1, -1, 47, 429, 430, + 50, -1, -1, -1, -1, 31, 32, 406, 34, 408, + 409, -1, 38, 31, 32, -1, 34, -1, -1, -1, + 38, 47, -1, -1, 50, 8, -1, -1, 363, 47, + 429, 430, 50, -1, -1, -1, -1, -1, 88, 89, + -1, -1, -1, 378, -1, 380, -1, 382, 31, 32, + 33, 34, 35, 36, 37, -1, 39, 40, 41, 42, + 43, -1, 88, 89, 47, 48, -1, -1, 51, -1, + 88, 89, 31, 32, -1, 34, -1, -1, -1, 38, + -1, -1, -1, -1, 67, 68, -1, -1, 47, -1, + -1, 50, 8, -1, -1, -1, -1, -1, -1, -1, + -1, 84, -1, -1, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 31, 32, 33, 34, 35, + 36, 37, -1, 39, 40, 41, 42, 43, -1, 88, + 89, 47, -1, -1, -1, 51, -1, 53, 31, 32, + -1, 34, -1, -1, -1, 38, 31, 32, -1, 34, + -1, 67, 68, 38, 47, -1, -1, 50, -1, 8, + -1, -1, 47, -1, -1, 50, -1, -1, 84, -1, + -1, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 31, 32, 33, 34, 35, 36, 37, -1, + 39, 40, 41, 42, 43, 88, 89, -1, 47, -1, + -1, -1, 51, 88, 89, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 67, 68, + -1, -1, -1, -1, -1, -1, 8, -1, -1, -1, + -1, -1, -1, -1, -1, 84, -1, -1, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 31, + 32, 33, 34, 35, 36, 37, -1, 39, 40, 41, + 42, 43, 48, -1, -1, 47, -1, -1, 54, 51, + -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, -1, -1, -1, -1, 67, 68, -1, -1, -1, + -1, -1, -1, -1, 80, 81, 82, 83, 84, 85, + 86, 87, 84, -1, -1, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 3, -1, -1, -1, + -1, -1, -1, -1, 11, -1, -1, 14, 15, -1, + 17, 18, 19, 20, -1, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, -1, 34, -1, -1, + -1, -1, 39, 40, 41, 42, 57, 58, 45, 46, + 47, -1, 63, 64, 65, 66, -1, -1, 55, 56, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 422, 423, -1, -1, -1, 29, 30, 31, 32, 33, - 34, 35, -1, 37, 38, 39, 40, 41, -1, -1, - -1, 45, 46, -1, -1, 49, -1, 399, -1, 401, - 402, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 65, 66, -1, -1, -1, -1, -1, -1, 6, - 422, 423, -1, -1, -1, -1, -1, -1, 82, -1, - -1, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 29, 30, 31, 32, 33, 34, 35, -1, - 37, 38, 39, 40, 41, -1, -1, -1, 45, -1, - -1, -1, 49, -1, 51, 29, 30, -1, 32, -1, - -1, -1, 36, 29, 30, -1, 32, -1, 65, 66, - 36, 45, -1, -1, 48, -1, 6, -1, -1, 45, - -1, -1, 48, -1, -1, 82, -1, -1, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 29, - 30, 31, 32, 33, 34, 35, -1, 37, 38, 39, - 40, 41, 86, 87, -1, 45, -1, -1, -1, 49, - 86, 87, 29, 30, -1, 32, -1, -1, -1, 36, - 29, 30, -1, 32, -1, 65, 66, 36, 45, -1, - -1, 48, -1, 6, -1, -1, 45, -1, -1, 48, - -1, -1, 82, -1, -1, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 29, 30, 31, 32, - 33, 34, 35, -1, 37, 38, 39, 40, 41, 86, - 87, -1, 45, -1, -1, -1, 49, 86, 87, -1, - 29, 30, -1, 32, -1, 7, 8, 36, 10, 11, - -1, -1, 65, 66, -1, -1, 45, -1, -1, 48, - -1, -1, -1, -1, -1, -1, -1, 29, 30, 82, - 32, -1, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 45, -1, -1, 48, -1, -1, -1, - -1, 53, 54, -1, -1, -1, -1, 86, 87, -1, - -1, -1, -1, -1, -1, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, -1, -1, -1, -1, - -1, -1, -1, 9, 86, 87, 12, 13, -1, 15, - 16, 17, 18, -1, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, -1, 32, -1, -1, -1, - -1, 37, 38, 39, 40, -1, -1, 43, 44, 45, - -1, -1, -1, -1, -1, -1, -1, 53, 54, -1, - -1, -1, -1, -1, 9, -1, -1, 12, 13, -1, - 15, 16, 17, 18, -1, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, -1, 32, -1, -1, - 86, 87, 37, 38, 39, 40, -1, -1, 43, 44, - 45, -1, -1, -1, -1, -1, -1, -1, 53, 54, - -1, -1, -1, -1, -1, 9, -1, -1, 12, 13, - -1, 15, 16, 17, 18, -1, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, -1, 32, -1, - -1, 86, 87, 37, 38, 39, 40, -1, -1, 43, - -1, 45, -1, -1, -1, -1, -1, -1, 42, 53, - 54, -1, -1, 47, -1, -1, -1, -1, 52, -1, - -1, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 86, 87, 78, 79, 80, 81, 82, 83, - 84, 85, 42, -1, -1, -1, -1, 47, -1, -1, - -1, -1, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 42, -1, -1, -1, - -1, 47, -1, -1, -1, -1, 52, -1, -1, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, -1, + -1, -1, 83, 84, 85, 86, 87, -1, -1, -1, + -1, -1, 3, 4, -1, -1, -1, -1, -1, -1, + 11, 88, 89, 14, 15, -1, 17, 18, 19, 20, + -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, -1, 34, -1, -1, -1, -1, 39, 40, + 41, 42, -1, -1, 45, -1, 47, -1, -1, -1, + -1, -1, -1, 3, 55, 56, -1, -1, -1, -1, + -1, 11, -1, -1, 14, 15, -1, 17, 18, 19, + 20, -1, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, -1, 34, -1, -1, 88, 89, 39, + 40, 41, 42, -1, -1, 45, 46, 47, -1, -1, + -1, -1, -1, -1, -1, 55, 56, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 78, 79, 80, 81, 82, 83, 84, 85, - 42, -1, -1, -1, -1, 47, -1, -1, -1, -1, - 52, -1, -1, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 42, -1, 78, 79, 80, 81, - 82, 83, 84, 85, 52, -1, -1, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 42, -1, - 78, 79, 80, 81, 82, 83, 84, 85, 52, -1, - -1, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 42, -1, 78, 79, 80, 81, 82, 83, - 84, 85, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 42, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 52, -1, -1, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, + 4, -1, -1, -1, -1, -1, -1, 11, 88, 89, + 14, 15, -1, 17, 18, 19, 20, -1, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, + 34, -1, -1, -1, -1, 39, 40, 41, 42, -1, + -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, + 3, 55, 56, -1, -1, -1, -1, -1, 11, -1, + -1, 14, 15, -1, 17, 18, 19, 20, -1, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + -1, 34, -1, -1, 88, 89, 39, 40, 41, 42, + -1, -1, 45, -1, 47, -1, -1, -1, -1, -1, + -1, -1, 55, 56, 31, 32, -1, 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 42, -1, 78, 79, 80, 81, 82, 83, 84, 85, - 52, -1, -1, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 42, -1, 78, 79, 80, 81, - 82, 83, 84, 85, 52, -1, -1, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 42, -1, - 78, 79, 80, 81, 82, 83, 84, 85, 52, -1, - -1, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 42, -1, 78, 79, 80, 81, 82, 83, - 84, 85, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 46, -1, -1, -1, - -1, -1, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 46, -1, -1, -1, - -1, -1, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 46, -1, -1, -1, - -1, -1, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 46, -1, -1, -1, - -1, -1, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 46, -1, -1, -1, - -1, -1, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 47, -1, -1, -1, - -1, 52, -1, -1, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, - 81, 82, 83, 84, 85, 50, -1, 52, -1, -1, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 47, -1, -1, 50, -1, -1, -1, -1, 55, 56, + -1, -1, -1, -1, -1, 88, 89, -1, -1, -1, + -1, -1, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 44, -1, -1, -1, -1, 49, -1, + -1, 88, 89, 54, -1, -1, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, + 81, 82, 83, 84, 85, 86, 87, 44, -1, -1, + -1, -1, 49, -1, -1, -1, -1, 54, -1, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 78, 79, 80, 81, 82, 83, 84, - 85, 51, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 51, 52, -1, -1, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + -1, -1, -1, 80, 81, 82, 83, 84, 85, 86, + 87, 44, -1, -1, -1, -1, 49, -1, -1, -1, + -1, 54, -1, -1, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 80, 81, 82, + 83, 84, 85, 86, 87, 44, -1, -1, -1, -1, + 49, -1, -1, -1, -1, 54, -1, -1, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 44, + -1, 80, 81, 82, 83, 84, 85, 86, 87, 54, + -1, -1, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 44, -1, 80, 81, 82, 83, 84, + 85, 86, 87, 54, -1, -1, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 44, -1, 80, + 81, 82, 83, 84, 85, 86, 87, 54, -1, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 78, 79, 80, 81, 82, 83, 84, - 85, 51, 52, -1, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 52, -1, -1, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 78, 79, - 80, 81, 82, 83, 84, 85, -1, -1, -1, -1, - -1, 78, 79, 80, 81, 82, 83, 84, 85, 55, - 56, -1, 58, 59, 60, 61, 62, 63, 64, 55, - 56, -1, -1, 59, 60, 61, 62, 63, 64, -1, - -1, -1, 78, 79, 80, 81, 82, 83, 84, 85, - -1, -1, 78, 79, 80, 81, 82, 83, 84, 85, - 55, 56, -1, -1, 59, 60, 61, 62, 63, 64, - 55, 56, -1, -1, 59, 60, 61, 62, 63, 64, - -1, -1, -1, -1, 79, 80, 81, 82, 83, 84, - 85, -1, -1, -1, 79, -1, 81, 82, 83, 84, - 85, 55, 56, -1, -1, 59, 60, 61, 62, 63, - 64, 55, 56, -1, -1, -1, -1, 61, 62, 63, - 64, -1, -1, -1, -1, -1, -1, 81, 82, 83, - 84, 85, -1, -1, -1, -1, -1, 81, 82, 83, - 84, 85 + -1, 44, -1, 80, 81, 82, 83, 84, 85, 86, + 87, 54, -1, -1, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 44, -1, 80, 81, 82, + 83, 84, 85, 86, 87, 54, -1, -1, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 44, + -1, 80, 81, 82, 83, 84, 85, 86, 87, 54, + -1, -1, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 44, -1, 80, 81, 82, 83, 84, + 85, 86, 87, 54, -1, -1, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 44, -1, 80, + 81, 82, 83, 84, 85, 86, 87, 54, -1, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 80, 81, 82, 83, 84, 85, 86, + 87, 48, -1, -1, -1, -1, -1, 54, -1, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 80, 81, 82, 83, 84, 85, 86, + 87, 48, -1, -1, -1, -1, -1, 54, -1, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 80, 81, 82, 83, 84, 85, 86, + 87, 48, -1, -1, -1, -1, -1, 54, -1, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 80, 81, 82, 83, 84, 85, 86, + 87, 48, -1, -1, -1, -1, -1, 54, -1, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 80, 81, 82, 83, 84, 85, 86, + 87, 49, -1, -1, -1, -1, 54, -1, -1, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, + 52, -1, 54, -1, -1, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 80, 81, + 82, 83, 84, 85, 86, 87, 53, 54, -1, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 80, 81, 82, 83, 84, 85, 86, + 87, 53, 54, -1, -1, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 80, 81, + 82, 83, 84, 85, 86, 87, 53, 54, -1, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 54, -1, -1, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 80, 81, 82, 83, 84, 85, 86, + 87, -1, -1, -1, -1, -1, 80, 81, 82, 83, + 84, 85, 86, 87, 57, 58, -1, 60, 61, 62, + 63, 64, 65, 66, 57, 58, -1, -1, 61, 62, + 63, 64, 65, 66, -1, -1, -1, 80, 81, 82, + 83, 84, 85, 86, 87, -1, -1, 80, 81, 82, + 83, 84, 85, 86, 87, 57, 58, -1, -1, 61, + 62, 63, 64, 65, 66, 57, 58, -1, -1, 61, + 62, 63, 64, 65, 66, -1, -1, -1, -1, 81, + 82, 83, 84, 85, 86, 87, -1, -1, -1, 81, + -1, 83, 84, 85, 86, 87, 57, 58, -1, -1, + 61, 62, 63, 64, 65, 66, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 83, 84, 85, 86, 87 }; const unsigned char parser::yystos_[] = { - 0, 3, 4, 5, 87, 106, 107, 108, 109, 110, - 111, 112, 113, 174, 86, 174, 175, 175, 41, 0, - 108, 109, 110, 41, 67, 51, 51, 88, 177, 156, - 174, 6, 29, 30, 31, 32, 33, 34, 35, 37, - 38, 39, 40, 41, 45, 49, 65, 66, 82, 85, - 89, 90, 91, 92, 93, 94, 95, 141, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 42, 42, 47, 45, 174, 175, 45, - 174, 175, 45, 141, 45, 46, 141, 157, 158, 174, - 141, 141, 91, 92, 87, 51, 52, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 78, 79, 80, - 81, 82, 83, 84, 85, 36, 45, 48, 153, 154, - 174, 175, 41, 49, 51, 43, 115, 174, 45, 41, - 49, 45, 41, 49, 45, 42, 47, 141, 47, 46, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 174, 49, 157, 158, 174, 9, 12, 13, 15, 16, - 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 44, 45, 53, 54, 114, 115, 116, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 143, 144, 145, 151, 152, 160, 161, 164, 168, - 169, 170, 171, 174, 141, 157, 174, 141, 157, 174, - 141, 141, 46, 141, 50, 46, 174, 42, 41, 141, - 51, 41, 114, 41, 41, 41, 41, 82, 177, 181, - 50, 51, 51, 51, 141, 51, 41, 41, 45, 151, - 152, 164, 164, 44, 114, 51, 51, 51, 51, 51, - 7, 8, 10, 11, 53, 54, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 46, 42, 41, - 46, 42, 41, 46, 47, 46, 141, 157, 51, 141, - 16, 141, 117, 143, 144, 145, 164, 174, 141, 50, - 50, 51, 157, 157, 141, 41, 41, 41, 41, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 46, 157, 46, 157, 46, 141, 41, 42, 42, 41, - 42, 51, 19, 47, 42, 42, 42, 141, 141, 141, - 141, 41, 42, 41, 42, 41, 42, 157, 114, 141, - 114, 141, 142, 141, 174, 115, 51, 51, 42, 42, - 47, 42, 47, 42, 47, 157, 157, 157, 42, 14, - 42, 51, 42, 19, 51, 51, 158, 51, 158, 51, - 158, 42, 42, 42, 114, 51, 117, 114, 141, 42, - 42, 42, 42, 42, 51, 51, 51, 114, 114 + 0, 3, 4, 5, 6, 7, 89, 108, 109, 110, + 111, 112, 113, 114, 115, 177, 88, 177, 178, 178, + 43, 0, 110, 111, 112, 43, 69, 53, 53, 90, + 180, 159, 177, 8, 31, 32, 33, 34, 35, 36, + 37, 39, 40, 41, 42, 43, 47, 51, 67, 68, + 84, 87, 91, 92, 93, 94, 95, 96, 97, 144, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 44, 44, 49, 47, 177, + 178, 47, 177, 178, 47, 144, 47, 48, 144, 160, + 161, 177, 144, 144, 93, 94, 89, 53, 54, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 80, + 81, 82, 83, 84, 85, 86, 87, 38, 47, 50, + 156, 157, 177, 178, 43, 51, 53, 45, 118, 177, + 47, 43, 51, 47, 43, 51, 47, 44, 49, 144, + 49, 48, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 177, 51, 160, 161, 177, 3, 11, 14, + 15, 17, 18, 19, 20, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 46, 47, 55, 56, 116, 117, + 118, 119, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 146, 147, 148, 154, 155, + 163, 164, 167, 171, 172, 173, 174, 177, 144, 160, + 177, 144, 160, 177, 144, 144, 48, 144, 52, 48, + 177, 44, 43, 4, 119, 144, 53, 43, 116, 43, + 43, 43, 43, 84, 180, 184, 52, 53, 53, 53, + 144, 53, 43, 43, 47, 154, 155, 167, 167, 46, + 116, 53, 53, 53, 53, 53, 9, 10, 12, 13, + 55, 56, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 48, 44, 43, 48, 44, 43, 48, + 49, 48, 144, 160, 4, 53, 144, 18, 144, 120, + 146, 147, 148, 167, 177, 144, 52, 52, 53, 160, + 160, 144, 43, 43, 43, 43, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 48, 160, 48, + 160, 48, 144, 43, 44, 44, 43, 44, 53, 21, + 49, 44, 44, 44, 144, 144, 144, 144, 43, 44, + 43, 44, 43, 44, 160, 116, 144, 116, 144, 145, + 144, 177, 118, 53, 53, 44, 44, 49, 44, 49, + 44, 49, 160, 160, 160, 44, 16, 44, 53, 44, + 21, 53, 53, 161, 53, 161, 53, 161, 44, 44, + 44, 116, 53, 120, 116, 144, 44, 44, 44, 44, + 44, 53, 53, 53, 116, 116 }; const unsigned char parser::yyr1_[] = { - 0, 105, 106, 106, 107, 107, 107, 107, 107, 107, - 108, 109, 110, 110, 110, 111, 112, 113, 114, 114, - 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 115, 115, 116, 116, 117, 117, 117, 117, - 118, 118, 119, 119, 119, 120, 121, 121, 122, 123, - 123, 124, 124, 125, 126, 127, 128, 129, 130, 131, - 131, 132, 133, 133, 134, 135, 136, 137, 137, 138, - 139, 140, 141, 141, 141, 142, 142, 143, 143, 143, - 143, 143, 143, 143, 143, 143, 143, 143, 144, 144, - 145, 145, 146, 147, 147, 147, 147, 147, 147, 147, - 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, - 147, 148, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 148, 149, - 150, 151, 151, 152, 152, 153, 153, 153, 153, 153, - 153, 154, 154, 154, 154, 155, 156, 156, 156, 157, - 157, 158, 158, 159, 159, 160, 161, 162, 163, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 175, - 176, 177, 178, 179, 180, 180, 181, 181, 181, 181, - 181, 182, 183 + 0, 107, 108, 108, 109, 109, 109, 109, 109, 109, + 110, 111, 112, 112, 112, 112, 112, 113, 114, 115, + 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, + 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, + 116, 116, 116, 116, 116, 117, 117, 118, 118, 119, + 119, 120, 120, 120, 120, 121, 121, 122, 122, 122, + 123, 124, 124, 125, 126, 126, 127, 127, 128, 129, + 130, 131, 132, 133, 134, 134, 135, 136, 136, 137, + 138, 139, 140, 140, 141, 142, 143, 144, 144, 144, + 145, 145, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 147, 147, 148, 148, 149, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 152, 153, 154, 154, 155, 155, + 156, 156, 156, 156, 156, 156, 157, 157, 157, 157, + 158, 159, 159, 159, 160, 160, 161, 161, 162, 162, + 163, 164, 165, 166, 167, 167, 167, 167, 167, 167, + 167, 167, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 178, 179, 180, 181, 182, 183, + 183, 184, 184, 184, 184, 184, 185, 186 }; const signed char parser::yyr2_[] = { 0, 2, 1, 0, 2, 2, 2, 1, 1, 1, - 3, 3, 1, 1, 1, 5, 4, 5, 1, 1, + 3, 3, 1, 1, 1, 1, 1, 5, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 2, 2, 1, 1, 1, 1, 0, - 2, 2, 2, 2, 2, 6, 8, 6, 3, 8, - 6, 8, 6, 2, 5, 7, 5, 7, 9, 7, - 9, 5, 3, 3, 2, 2, 2, 3, 2, 2, - 5, 5, 1, 1, 1, 1, 0, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, - 2, 2, 5, 3, 3, 3, 3, 3, 3, 3, + 1, 1, 1, 1, 1, 3, 2, 3, 2, 2, + 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, + 6, 8, 6, 3, 8, 6, 8, 6, 2, 5, + 7, 5, 7, 9, 7, 9, 5, 3, 3, 2, + 2, 2, 3, 2, 2, 5, 5, 1, 1, 1, + 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 2, 2, 2, 2, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 3, 3, 3, 3, 3, 3, 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, 1, 1, 2, 2, 4, 6, 5, 7, 5, - 7, 8, 9, 9, 9, 3, 3, 1, 0, 1, - 0, 3, 1, 2, 3, 4, 3, 2, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, - 1, 1, 1, 7, 2, 1, 2, 1, 1, 1, - 1, 1, 1 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 2, 1, 1, 2, 2, + 4, 6, 5, 7, 5, 7, 8, 9, 9, 9, + 3, 3, 1, 0, 1, 0, 3, 1, 2, 3, + 4, 3, 2, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, + 2, 1, 1, 1, 1, 1, 1, 1, 7, 2, + 1, 2, 1, 1, 1, 1, 1, 1 }; @@ -4385,28 +4469,28 @@ namespace xsk { namespace gsc { namespace iw7 { const short parser::yyrline_[] = { - 0, 249, 249, 250, 254, 256, 258, 260, 262, 264, - 269, 273, 278, 279, 280, 284, 289, 294, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 326, 327, 331, 333, 338, 340, 342, 345, - 349, 351, 356, 358, 360, 365, 370, 372, 377, 382, - 384, 389, 391, 396, 401, 406, 411, 416, 421, 426, - 428, 433, 438, 440, 445, 450, 455, 460, 462, 467, - 472, 477, 482, 483, 484, 488, 489, 493, 495, 497, - 499, 501, 503, 505, 507, 509, 511, 513, 518, 520, - 525, 527, 532, 537, 539, 541, 543, 545, 547, 549, - 551, 553, 555, 557, 559, 561, 563, 565, 567, 569, - 571, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 607, - 612, 617, 618, 621, 622, 626, 628, 630, 632, 634, - 636, 641, 643, 645, 647, 652, 657, 659, 662, 666, - 669, 673, 675, 680, 682, 687, 692, 697, 702, 707, - 708, 709, 710, 711, 712, 713, 714, 715, 719, 724, - 729, 734, 739, 744, 749, 754, 759, 764, 769, 771, - 776, 781, 786, 791, 796, 798, 803, 805, 807, 809, - 811, 816, 821 + 0, 252, 252, 253, 257, 259, 261, 263, 265, 267, + 272, 276, 281, 282, 283, 284, 285, 289, 294, 299, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 332, 333, 337, 338, 342, + 344, 349, 351, 353, 356, 360, 362, 367, 369, 371, + 376, 381, 383, 388, 393, 395, 400, 402, 407, 412, + 417, 422, 427, 432, 437, 439, 444, 449, 451, 456, + 461, 466, 471, 473, 478, 483, 488, 493, 494, 495, + 499, 500, 504, 506, 508, 510, 512, 514, 516, 518, + 520, 522, 524, 529, 531, 536, 538, 543, 548, 550, + 552, 554, 556, 558, 560, 562, 564, 566, 568, 570, + 572, 574, 576, 578, 580, 582, 587, 588, 589, 590, + 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, + 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, + 611, 612, 613, 614, 618, 623, 628, 629, 632, 633, + 637, 639, 641, 643, 645, 647, 652, 654, 656, 658, + 663, 668, 670, 673, 677, 680, 684, 686, 691, 693, + 698, 703, 708, 713, 718, 719, 720, 721, 722, 723, + 724, 725, 726, 730, 735, 740, 745, 750, 755, 760, + 765, 770, 775, 780, 782, 787, 792, 797, 802, 807, + 809, 814, 816, 818, 820, 822, 827, 832 }; void @@ -4439,9 +4523,9 @@ namespace xsk { namespace gsc { namespace iw7 { #line 13 "parser.ypp" } } } // xsk::gsc::iw7 -#line 4443 "parser.cpp" +#line 4527 "parser.cpp" -#line 825 "parser.ypp" +#line 836 "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 f8c234f5..5a107472 100644 --- a/src/iw7/xsk/parser.hpp +++ b/src/iw7/xsk/parser.hpp @@ -580,6 +580,7 @@ namespace xsk { namespace gsc { namespace iw7 { // stmt_ifelse char dummy54[sizeof (ast::stmt_ifelse::ptr)]; + // stmt_dev // stmt_block // stmt_list char dummy55[sizeof (ast::stmt_list::ptr)]; @@ -676,108 +677,110 @@ namespace xsk { namespace gsc { namespace iw7 { IW7EOF = 0, // "end of file" IW7error = 1, // error IW7UNDEF = 2, // "invalid token" - INLINE = 3, // "#inline" - INCLUDE = 4, // "#include" - USINGTREE = 5, // "#using_animtree" - ANIMTREE = 6, // "#animtree" - ENDON = 7, // "endon" - NOTIFY = 8, // "notify" - WAIT = 9, // "wait" - WAITTILL = 10, // "waittill" - WAITTILLMATCH = 11, // "waittillmatch" - WAITTILLFRAMEEND = 12, // "waittillframeend" - IF = 13, // "if" - ELSE = 14, // "else" - DO = 15, // "do" - WHILE = 16, // "while" - FOR = 17, // "for" - FOREACH = 18, // "foreach" - IN = 19, // "in" - SWITCH = 20, // "switch" - CASE = 21, // "case" - DEFAULT = 22, // "default" - BREAK = 23, // "break" - CONTINUE = 24, // "continue" - RETURN = 25, // "return" - BREAKPOINT = 26, // "breakpoint" - PROFBEGIN = 27, // "prof_begin" - PROFEND = 28, // "prof_end" - THREAD = 29, // "thread" - CHILDTHREAD = 30, // "childthread" - THISTHREAD = 31, // "thisthread" - CALL = 32, // "call" - TRUE = 33, // "true" - FALSE = 34, // "false" - UNDEFINED = 35, // "undefined" - SIZE = 36, // ".size" - GAME = 37, // "game" - SELF = 38, // "self" - ANIM = 39, // "anim" - LEVEL = 40, // "level" - LPAREN = 41, // "(" - RPAREN = 42, // ")" - LBRACE = 43, // "{" - RBRACE = 44, // "}" - LBRACKET = 45, // "[" - RBRACKET = 46, // "]" - COMMA = 47, // "," - DOT = 48, // "." - DOUBLECOLON = 49, // "::" - COLON = 50, // ":" - SEMICOLON = 51, // ";" - QMARK = 52, // "?" - INCREMENT = 53, // "++" - DECREMENT = 54, // "--" - LSHIFT = 55, // "<<" - RSHIFT = 56, // ">>" - OR = 57, // "||" - AND = 58, // "&&" - EQUALITY = 59, // "==" - INEQUALITY = 60, // "!=" - LESS_EQUAL = 61, // "<=" - GREATER_EQUAL = 62, // ">=" - LESS = 63, // "<" - GREATER = 64, // ">" - NOT = 65, // "!" - COMPLEMENT = 66, // "~" - ASSIGN = 67, // "=" - ASSIGN_ADD = 68, // "+=" - ASSIGN_SUB = 69, // "-=" - ASSIGN_MUL = 70, // "*=" - ASSIGN_DIV = 71, // "/=" - ASSIGN_MOD = 72, // "%=" - ASSIGN_BW_OR = 73, // "|=" - ASSIGN_BW_AND = 74, // "&=" - ASSIGN_BW_EXOR = 75, // "^=" - ASSIGN_RSHIFT = 76, // ">>=" - ASSIGN_LSHIFT = 77, // "<<=" - BITWISE_OR = 78, // "|" - BITWISE_AND = 79, // "&" - BITWISE_EXOR = 80, // "^" - ADD = 81, // "+" - SUB = 82, // "-" - MUL = 83, // "*" - DIV = 84, // "/" - MOD = 85, // "%" - PATH = 86, // "path" - IDENTIFIER = 87, // "identifier" - STRING = 88, // "string literal" - ISTRING = 89, // "localized string" - COLOR = 90, // "color" - FLOAT = 91, // "float" - INT_DEC = 92, // "int" - INT_OCT = 93, // "octal int" - INT_BIN = 94, // "binary int" - INT_HEX = 95, // "hexadecimal int" - ADD_ARRAY = 96, // ADD_ARRAY - THEN = 97, // THEN - TERN = 98, // TERN - NEG = 99, // NEG - ANIMREF = 100, // ANIMREF - PREINC = 101, // PREINC - PREDEC = 102, // PREDEC - POSTINC = 103, // POSTINC - POSTDEC = 104 // POSTDEC + DEVBEGIN = 3, // "/#" + DEVEND = 4, // "#/" + INLINE = 5, // "#inline" + INCLUDE = 6, // "#include" + USINGTREE = 7, // "#using_animtree" + ANIMTREE = 8, // "#animtree" + ENDON = 9, // "endon" + NOTIFY = 10, // "notify" + WAIT = 11, // "wait" + WAITTILL = 12, // "waittill" + WAITTILLMATCH = 13, // "waittillmatch" + WAITTILLFRAMEEND = 14, // "waittillframeend" + IF = 15, // "if" + ELSE = 16, // "else" + DO = 17, // "do" + WHILE = 18, // "while" + FOR = 19, // "for" + FOREACH = 20, // "foreach" + IN = 21, // "in" + SWITCH = 22, // "switch" + CASE = 23, // "case" + DEFAULT = 24, // "default" + BREAK = 25, // "break" + CONTINUE = 26, // "continue" + RETURN = 27, // "return" + BREAKPOINT = 28, // "breakpoint" + PROFBEGIN = 29, // "prof_begin" + PROFEND = 30, // "prof_end" + THREAD = 31, // "thread" + CHILDTHREAD = 32, // "childthread" + THISTHREAD = 33, // "thisthread" + CALL = 34, // "call" + TRUE = 35, // "true" + FALSE = 36, // "false" + UNDEFINED = 37, // "undefined" + SIZE = 38, // ".size" + GAME = 39, // "game" + SELF = 40, // "self" + ANIM = 41, // "anim" + LEVEL = 42, // "level" + LPAREN = 43, // "(" + RPAREN = 44, // ")" + LBRACE = 45, // "{" + RBRACE = 46, // "}" + LBRACKET = 47, // "[" + RBRACKET = 48, // "]" + COMMA = 49, // "," + DOT = 50, // "." + DOUBLECOLON = 51, // "::" + COLON = 52, // ":" + SEMICOLON = 53, // ";" + QMARK = 54, // "?" + INCREMENT = 55, // "++" + DECREMENT = 56, // "--" + LSHIFT = 57, // "<<" + RSHIFT = 58, // ">>" + OR = 59, // "||" + AND = 60, // "&&" + EQUALITY = 61, // "==" + INEQUALITY = 62, // "!=" + LESS_EQUAL = 63, // "<=" + GREATER_EQUAL = 64, // ">=" + LESS = 65, // "<" + GREATER = 66, // ">" + NOT = 67, // "!" + COMPLEMENT = 68, // "~" + ASSIGN = 69, // "=" + ASSIGN_ADD = 70, // "+=" + ASSIGN_SUB = 71, // "-=" + ASSIGN_MUL = 72, // "*=" + ASSIGN_DIV = 73, // "/=" + ASSIGN_MOD = 74, // "%=" + ASSIGN_BW_OR = 75, // "|=" + ASSIGN_BW_AND = 76, // "&=" + ASSIGN_BW_EXOR = 77, // "^=" + ASSIGN_RSHIFT = 78, // ">>=" + ASSIGN_LSHIFT = 79, // "<<=" + BITWISE_OR = 80, // "|" + BITWISE_AND = 81, // "&" + BITWISE_EXOR = 82, // "^" + ADD = 83, // "+" + SUB = 84, // "-" + MUL = 85, // "*" + DIV = 86, // "/" + MOD = 87, // "%" + PATH = 88, // "path" + IDENTIFIER = 89, // "identifier" + STRING = 90, // "string literal" + ISTRING = 91, // "localized string" + COLOR = 92, // "color" + FLOAT = 93, // "float" + INT_DEC = 94, // "int" + INT_OCT = 95, // "octal int" + INT_BIN = 96, // "binary int" + INT_HEX = 97, // "hexadecimal int" + ADD_ARRAY = 98, // ADD_ARRAY + THEN = 99, // THEN + TERN = 100, // TERN + NEG = 101, // NEG + ANIMREF = 102, // ANIMREF + PREINC = 103, // PREINC + PREDEC = 104, // PREDEC + POSTINC = 105, // POSTINC + POSTDEC = 106 // POSTDEC }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; @@ -794,192 +797,195 @@ namespace xsk { namespace gsc { namespace iw7 { { enum symbol_kind_type { - YYNTOKENS = 105, ///< Number of tokens. + YYNTOKENS = 107, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error S_YYUNDEF = 2, // "invalid token" - S_INLINE = 3, // "#inline" - S_INCLUDE = 4, // "#include" - S_USINGTREE = 5, // "#using_animtree" - S_ANIMTREE = 6, // "#animtree" - S_ENDON = 7, // "endon" - S_NOTIFY = 8, // "notify" - S_WAIT = 9, // "wait" - S_WAITTILL = 10, // "waittill" - S_WAITTILLMATCH = 11, // "waittillmatch" - S_WAITTILLFRAMEEND = 12, // "waittillframeend" - S_IF = 13, // "if" - S_ELSE = 14, // "else" - S_DO = 15, // "do" - S_WHILE = 16, // "while" - S_FOR = 17, // "for" - S_FOREACH = 18, // "foreach" - S_IN = 19, // "in" - S_SWITCH = 20, // "switch" - S_CASE = 21, // "case" - S_DEFAULT = 22, // "default" - S_BREAK = 23, // "break" - S_CONTINUE = 24, // "continue" - S_RETURN = 25, // "return" - S_BREAKPOINT = 26, // "breakpoint" - S_PROFBEGIN = 27, // "prof_begin" - S_PROFEND = 28, // "prof_end" - S_THREAD = 29, // "thread" - S_CHILDTHREAD = 30, // "childthread" - S_THISTHREAD = 31, // "thisthread" - S_CALL = 32, // "call" - S_TRUE = 33, // "true" - S_FALSE = 34, // "false" - S_UNDEFINED = 35, // "undefined" - S_SIZE = 36, // ".size" - S_GAME = 37, // "game" - S_SELF = 38, // "self" - S_ANIM = 39, // "anim" - S_LEVEL = 40, // "level" - S_LPAREN = 41, // "(" - S_RPAREN = 42, // ")" - S_LBRACE = 43, // "{" - S_RBRACE = 44, // "}" - S_LBRACKET = 45, // "[" - S_RBRACKET = 46, // "]" - S_COMMA = 47, // "," - S_DOT = 48, // "." - S_DOUBLECOLON = 49, // "::" - S_COLON = 50, // ":" - S_SEMICOLON = 51, // ";" - S_QMARK = 52, // "?" - S_INCREMENT = 53, // "++" - S_DECREMENT = 54, // "--" - S_LSHIFT = 55, // "<<" - S_RSHIFT = 56, // ">>" - S_OR = 57, // "||" - S_AND = 58, // "&&" - S_EQUALITY = 59, // "==" - S_INEQUALITY = 60, // "!=" - S_LESS_EQUAL = 61, // "<=" - S_GREATER_EQUAL = 62, // ">=" - S_LESS = 63, // "<" - S_GREATER = 64, // ">" - S_NOT = 65, // "!" - S_COMPLEMENT = 66, // "~" - S_ASSIGN = 67, // "=" - S_ASSIGN_ADD = 68, // "+=" - S_ASSIGN_SUB = 69, // "-=" - S_ASSIGN_MUL = 70, // "*=" - S_ASSIGN_DIV = 71, // "/=" - S_ASSIGN_MOD = 72, // "%=" - S_ASSIGN_BW_OR = 73, // "|=" - S_ASSIGN_BW_AND = 74, // "&=" - S_ASSIGN_BW_EXOR = 75, // "^=" - S_ASSIGN_RSHIFT = 76, // ">>=" - S_ASSIGN_LSHIFT = 77, // "<<=" - S_BITWISE_OR = 78, // "|" - S_BITWISE_AND = 79, // "&" - S_BITWISE_EXOR = 80, // "^" - S_ADD = 81, // "+" - S_SUB = 82, // "-" - S_MUL = 83, // "*" - S_DIV = 84, // "/" - S_MOD = 85, // "%" - S_PATH = 86, // "path" - S_IDENTIFIER = 87, // "identifier" - S_STRING = 88, // "string literal" - S_ISTRING = 89, // "localized string" - S_COLOR = 90, // "color" - S_FLOAT = 91, // "float" - S_INT_DEC = 92, // "int" - S_INT_OCT = 93, // "octal int" - S_INT_BIN = 94, // "binary int" - S_INT_HEX = 95, // "hexadecimal int" - S_ADD_ARRAY = 96, // ADD_ARRAY - S_THEN = 97, // THEN - S_TERN = 98, // TERN - S_NEG = 99, // NEG - S_ANIMREF = 100, // ANIMREF - S_PREINC = 101, // PREINC - S_PREDEC = 102, // PREDEC - S_POSTINC = 103, // POSTINC - S_POSTDEC = 104, // POSTDEC - S_YYACCEPT = 105, // $accept - S_root = 106, // root - S_program = 107, // program - S_inline = 108, // inline - S_include = 109, // include - S_declaration = 110, // declaration - S_decl_usingtree = 111, // decl_usingtree - S_decl_constant = 112, // decl_constant - S_decl_thread = 113, // decl_thread - S_stmt = 114, // stmt - S_stmt_block = 115, // stmt_block - S_stmt_list = 116, // stmt_list - S_stmt_expr = 117, // stmt_expr - S_stmt_call = 118, // stmt_call - S_stmt_assign = 119, // stmt_assign - S_stmt_endon = 120, // stmt_endon - S_stmt_notify = 121, // stmt_notify - S_stmt_wait = 122, // stmt_wait - S_stmt_waittill = 123, // stmt_waittill - S_stmt_waittillmatch = 124, // stmt_waittillmatch - S_stmt_waittillframeend = 125, // stmt_waittillframeend - S_stmt_if = 126, // stmt_if - S_stmt_ifelse = 127, // stmt_ifelse - S_stmt_while = 128, // stmt_while - S_stmt_dowhile = 129, // stmt_dowhile - S_stmt_for = 130, // stmt_for - S_stmt_foreach = 131, // stmt_foreach - S_stmt_switch = 132, // stmt_switch - S_stmt_case = 133, // stmt_case - S_stmt_default = 134, // stmt_default - S_stmt_break = 135, // stmt_break - S_stmt_continue = 136, // stmt_continue - S_stmt_return = 137, // stmt_return - S_stmt_breakpoint = 138, // stmt_breakpoint - S_stmt_prof_begin = 139, // stmt_prof_begin - S_stmt_prof_end = 140, // stmt_prof_end - S_expr = 141, // expr - S_expr_or_empty = 142, // expr_or_empty - S_expr_assign = 143, // expr_assign - S_expr_increment = 144, // expr_increment - S_expr_decrement = 145, // expr_decrement - S_expr_ternary = 146, // expr_ternary - S_expr_binary = 147, // expr_binary - S_expr_primitive = 148, // expr_primitive - S_expr_complement = 149, // expr_complement - S_expr_not = 150, // expr_not - S_expr_call = 151, // expr_call - S_expr_method = 152, // expr_method - S_expr_function = 153, // expr_function - S_expr_pointer = 154, // expr_pointer - S_expr_add_array = 155, // expr_add_array - S_expr_parameters = 156, // expr_parameters - S_expr_arguments = 157, // expr_arguments - S_expr_arguments_no_empty = 158, // expr_arguments_no_empty - S_expr_reference = 159, // expr_reference - S_expr_array = 160, // expr_array - S_expr_field = 161, // expr_field - S_expr_size = 162, // expr_size - S_expr_paren = 163, // expr_paren - S_expr_object = 164, // expr_object - S_expr_thisthread = 165, // expr_thisthread - S_expr_empty_array = 166, // expr_empty_array - S_expr_undefined = 167, // expr_undefined - S_expr_game = 168, // expr_game - S_expr_self = 169, // expr_self - S_expr_anim = 170, // expr_anim - S_expr_level = 171, // expr_level - S_expr_animation = 172, // expr_animation - S_expr_animtree = 173, // expr_animtree - S_expr_identifier = 174, // expr_identifier - S_expr_path = 175, // expr_path - S_expr_istring = 176, // expr_istring - S_expr_string = 177, // expr_string - S_expr_color = 178, // expr_color - S_expr_vector = 179, // expr_vector - S_expr_float = 180, // expr_float - S_expr_integer = 181, // expr_integer - S_expr_false = 182, // expr_false - S_expr_true = 183 // expr_true + S_DEVBEGIN = 3, // "/#" + S_DEVEND = 4, // "#/" + S_INLINE = 5, // "#inline" + S_INCLUDE = 6, // "#include" + S_USINGTREE = 7, // "#using_animtree" + S_ANIMTREE = 8, // "#animtree" + S_ENDON = 9, // "endon" + S_NOTIFY = 10, // "notify" + S_WAIT = 11, // "wait" + S_WAITTILL = 12, // "waittill" + S_WAITTILLMATCH = 13, // "waittillmatch" + S_WAITTILLFRAMEEND = 14, // "waittillframeend" + S_IF = 15, // "if" + S_ELSE = 16, // "else" + S_DO = 17, // "do" + S_WHILE = 18, // "while" + S_FOR = 19, // "for" + S_FOREACH = 20, // "foreach" + S_IN = 21, // "in" + S_SWITCH = 22, // "switch" + S_CASE = 23, // "case" + S_DEFAULT = 24, // "default" + S_BREAK = 25, // "break" + S_CONTINUE = 26, // "continue" + S_RETURN = 27, // "return" + S_BREAKPOINT = 28, // "breakpoint" + S_PROFBEGIN = 29, // "prof_begin" + S_PROFEND = 30, // "prof_end" + S_THREAD = 31, // "thread" + S_CHILDTHREAD = 32, // "childthread" + S_THISTHREAD = 33, // "thisthread" + S_CALL = 34, // "call" + S_TRUE = 35, // "true" + S_FALSE = 36, // "false" + S_UNDEFINED = 37, // "undefined" + S_SIZE = 38, // ".size" + S_GAME = 39, // "game" + S_SELF = 40, // "self" + S_ANIM = 41, // "anim" + S_LEVEL = 42, // "level" + S_LPAREN = 43, // "(" + S_RPAREN = 44, // ")" + S_LBRACE = 45, // "{" + S_RBRACE = 46, // "}" + S_LBRACKET = 47, // "[" + S_RBRACKET = 48, // "]" + S_COMMA = 49, // "," + S_DOT = 50, // "." + S_DOUBLECOLON = 51, // "::" + S_COLON = 52, // ":" + S_SEMICOLON = 53, // ";" + S_QMARK = 54, // "?" + S_INCREMENT = 55, // "++" + S_DECREMENT = 56, // "--" + S_LSHIFT = 57, // "<<" + S_RSHIFT = 58, // ">>" + S_OR = 59, // "||" + S_AND = 60, // "&&" + S_EQUALITY = 61, // "==" + S_INEQUALITY = 62, // "!=" + S_LESS_EQUAL = 63, // "<=" + S_GREATER_EQUAL = 64, // ">=" + S_LESS = 65, // "<" + S_GREATER = 66, // ">" + S_NOT = 67, // "!" + S_COMPLEMENT = 68, // "~" + S_ASSIGN = 69, // "=" + S_ASSIGN_ADD = 70, // "+=" + S_ASSIGN_SUB = 71, // "-=" + S_ASSIGN_MUL = 72, // "*=" + S_ASSIGN_DIV = 73, // "/=" + S_ASSIGN_MOD = 74, // "%=" + S_ASSIGN_BW_OR = 75, // "|=" + S_ASSIGN_BW_AND = 76, // "&=" + S_ASSIGN_BW_EXOR = 77, // "^=" + S_ASSIGN_RSHIFT = 78, // ">>=" + S_ASSIGN_LSHIFT = 79, // "<<=" + S_BITWISE_OR = 80, // "|" + S_BITWISE_AND = 81, // "&" + S_BITWISE_EXOR = 82, // "^" + S_ADD = 83, // "+" + S_SUB = 84, // "-" + S_MUL = 85, // "*" + S_DIV = 86, // "/" + S_MOD = 87, // "%" + S_PATH = 88, // "path" + S_IDENTIFIER = 89, // "identifier" + S_STRING = 90, // "string literal" + S_ISTRING = 91, // "localized string" + S_COLOR = 92, // "color" + S_FLOAT = 93, // "float" + S_INT_DEC = 94, // "int" + S_INT_OCT = 95, // "octal int" + S_INT_BIN = 96, // "binary int" + S_INT_HEX = 97, // "hexadecimal int" + S_ADD_ARRAY = 98, // ADD_ARRAY + S_THEN = 99, // THEN + S_TERN = 100, // TERN + S_NEG = 101, // NEG + S_ANIMREF = 102, // ANIMREF + S_PREINC = 103, // PREINC + S_PREDEC = 104, // PREDEC + S_POSTINC = 105, // POSTINC + S_POSTDEC = 106, // POSTDEC + S_YYACCEPT = 107, // $accept + S_root = 108, // root + S_program = 109, // program + S_inline = 110, // inline + S_include = 111, // include + S_declaration = 112, // declaration + S_decl_usingtree = 113, // decl_usingtree + S_decl_constant = 114, // decl_constant + S_decl_thread = 115, // decl_thread + S_stmt = 116, // stmt + S_stmt_dev = 117, // stmt_dev + S_stmt_block = 118, // stmt_block + S_stmt_list = 119, // stmt_list + S_stmt_expr = 120, // stmt_expr + S_stmt_call = 121, // stmt_call + S_stmt_assign = 122, // stmt_assign + S_stmt_endon = 123, // stmt_endon + S_stmt_notify = 124, // stmt_notify + S_stmt_wait = 125, // stmt_wait + S_stmt_waittill = 126, // stmt_waittill + S_stmt_waittillmatch = 127, // stmt_waittillmatch + S_stmt_waittillframeend = 128, // stmt_waittillframeend + S_stmt_if = 129, // stmt_if + S_stmt_ifelse = 130, // stmt_ifelse + S_stmt_while = 131, // stmt_while + S_stmt_dowhile = 132, // stmt_dowhile + S_stmt_for = 133, // stmt_for + S_stmt_foreach = 134, // stmt_foreach + S_stmt_switch = 135, // stmt_switch + S_stmt_case = 136, // stmt_case + S_stmt_default = 137, // stmt_default + S_stmt_break = 138, // stmt_break + S_stmt_continue = 139, // stmt_continue + S_stmt_return = 140, // stmt_return + S_stmt_breakpoint = 141, // stmt_breakpoint + S_stmt_prof_begin = 142, // stmt_prof_begin + S_stmt_prof_end = 143, // stmt_prof_end + S_expr = 144, // expr + S_expr_or_empty = 145, // expr_or_empty + S_expr_assign = 146, // expr_assign + S_expr_increment = 147, // expr_increment + S_expr_decrement = 148, // expr_decrement + S_expr_ternary = 149, // expr_ternary + S_expr_binary = 150, // expr_binary + S_expr_primitive = 151, // expr_primitive + S_expr_complement = 152, // expr_complement + S_expr_not = 153, // expr_not + S_expr_call = 154, // expr_call + S_expr_method = 155, // expr_method + S_expr_function = 156, // expr_function + S_expr_pointer = 157, // expr_pointer + S_expr_add_array = 158, // expr_add_array + S_expr_parameters = 159, // expr_parameters + S_expr_arguments = 160, // expr_arguments + S_expr_arguments_no_empty = 161, // expr_arguments_no_empty + S_expr_reference = 162, // expr_reference + S_expr_array = 163, // expr_array + S_expr_field = 164, // expr_field + S_expr_size = 165, // expr_size + S_expr_paren = 166, // expr_paren + S_expr_object = 167, // expr_object + S_expr_thisthread = 168, // expr_thisthread + S_expr_empty_array = 169, // expr_empty_array + S_expr_undefined = 170, // expr_undefined + S_expr_game = 171, // expr_game + S_expr_self = 172, // expr_self + S_expr_anim = 173, // expr_anim + S_expr_level = 174, // expr_level + S_expr_animation = 175, // expr_animation + S_expr_animtree = 176, // expr_animtree + S_expr_identifier = 177, // expr_identifier + S_expr_path = 178, // expr_path + S_expr_istring = 179, // expr_istring + S_expr_string = 180, // expr_string + S_expr_color = 181, // expr_color + S_expr_vector = 182, // expr_vector + S_expr_float = 183, // expr_float + S_expr_integer = 184, // expr_integer + S_expr_false = 185, // expr_false + S_expr_true = 186 // expr_true }; }; @@ -1242,6 +1248,7 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< ast::stmt_ifelse::ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (std::move (that.value)); @@ -2495,6 +2502,7 @@ switch (yykind) value.template destroy< ast::stmt_ifelse::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.template destroy< ast::stmt_list::ptr > (); @@ -2754,6 +2762,36 @@ switch (yykind) return symbol_type (token::IW7UNDEF, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_DEVBEGIN (location_type l) + { + return symbol_type (token::DEVBEGIN, std::move (l)); + } +#else + static + symbol_type + make_DEVBEGIN (const location_type& l) + { + return symbol_type (token::DEVBEGIN, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_DEVEND (location_type l) + { + return symbol_type (token::DEVEND, std::move (l)); + } +#else + static + symbol_type + make_DEVEND (const location_type& l) + { + return symbol_type (token::DEVEND, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4628,9 +4666,9 @@ switch (yykind) /// Constants. enum { - yylast_ = 2111, ///< Last index in yytable_. - yynnts_ = 79, ///< Number of nonterminal symbols. - yyfinal_ = 19 ///< Termination state number. + yylast_ = 2346, ///< Last index in yytable_. + yynnts_ = 80, ///< Number of nonterminal symbols. + yyfinal_ = 21 ///< Termination state number. }; @@ -4883,6 +4921,7 @@ switch (yykind) value.copy< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.copy< ast::stmt_list::ptr > (YY_MOVE (that.value)); @@ -5196,6 +5235,7 @@ switch (yykind) value.move< ast::stmt_ifelse::ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (YY_MOVE (s.value)); @@ -5317,7 +5357,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::iw7 -#line 5321 "parser.hpp" +#line 5361 "parser.hpp" diff --git a/src/iw8/xsk/compiler.cpp b/src/iw8/xsk/compiler.cpp index 21ce0a30..72326e6e 100644 --- a/src/iw8/xsk/compiler.cpp +++ b/src/iw8/xsk/compiler.cpp @@ -85,6 +85,7 @@ void compiler::compile_program(const ast::program::ptr& program) constants_.clear(); local_functions_.clear(); index_ = 1; + developer_thread_ = false; for (const auto& entry : program->declarations) { @@ -150,6 +151,12 @@ void compiler::emit_declaration(const ast::decl& decl) { switch (decl.kind()) { + case ast::kind::decl_dev_begin: + developer_thread_ = true; + break; + case ast::kind::decl_dev_end: + developer_thread_ = false; + break; case ast::kind::decl_usingtree: emit_decl_usingtree(decl.as_usingtree); break; @@ -166,6 +173,9 @@ void compiler::emit_declaration(const ast::decl& decl) void compiler::emit_decl_usingtree(const ast::decl_usingtree::ptr& animtree) { + if(developer_thread_) + throw comp_error(animtree->loc(), "cannot put #using_animtree inside /# ... #/ comment"); + animtrees_.push_back({ animtree->name->value, false }); } diff --git a/src/iw8/xsk/lexer.cpp b/src/iw8/xsk/lexer.cpp index b34186b4..9ff442af 100644 --- a/src/iw8/xsk/lexer.cpp +++ b/src/iw8/xsk/lexer.cpp @@ -555,8 +555,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 111 -#define YY_END_OF_BUFFER 112 +#define YY_NUM_RULES 113 +#define YY_END_OF_BUFFER 114 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -564,46 +564,46 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[343] = +static const flex_int16_t yy_accept[346] = { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 112, 110, - 1, 2, 95, 110, 110, 94, 98, 110, 55, 56, - 92, 90, 61, 91, 62, 93, 109, 109, 64, 65, - 79, 89, 80, 66, 101, 101, 59, 60, 99, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 57, 97, 58, 96, 5, - 6, 5, 110, 92, 9, 10, 9, 76, 0, 103, - 0, 13, 0, 0, 0, 0, 85, 0, 74, 0, - 87, 0, 0, 12, 83, 67, 81, 68, 82, 105, - 0, 8, 4, 3, 84, 105, 109, 106, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 114, 112, + 1, 2, 97, 112, 112, 96, 100, 112, 57, 58, + 94, 92, 63, 93, 64, 95, 111, 111, 66, 67, + 81, 91, 82, 68, 103, 103, 61, 62, 101, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 59, 99, 60, 98, 5, + 6, 5, 12, 13, 12, 112, 94, 95, 78, 0, + 105, 0, 15, 0, 0, 0, 0, 87, 0, 76, + 0, 89, 0, 0, 8, 85, 69, 83, 70, 84, + 107, 0, 11, 4, 3, 86, 107, 111, 108, 0, - 0, 0, 63, 71, 77, 75, 78, 72, 101, 101, - 88, 101, 101, 101, 101, 101, 101, 27, 101, 101, - 101, 101, 101, 25, 31, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 86, 73, 7, 11, - 0, 103, 0, 0, 0, 0, 0, 0, 102, 0, - 0, 0, 0, 103, 0, 105, 0, 3, 105, 105, - 106, 107, 108, 100, 69, 70, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 29, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 104, 0, 0, 0, 0, 0, 102, 0, + 0, 0, 0, 65, 73, 79, 77, 80, 74, 103, + 103, 90, 103, 103, 103, 103, 103, 103, 29, 103, + 103, 103, 103, 103, 27, 33, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 88, 75, 7, + 14, 10, 9, 0, 105, 0, 0, 0, 0, 0, + 0, 104, 0, 0, 0, 0, 105, 0, 107, 0, + 3, 107, 107, 108, 109, 110, 102, 71, 72, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 31, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 106, 0, 0, 0, 0, - 0, 102, 0, 0, 101, 101, 51, 101, 44, 33, - 101, 101, 101, 26, 101, 101, 101, 49, 101, 101, - 101, 101, 50, 101, 101, 101, 45, 101, 20, 101, - 0, 0, 0, 0, 0, 48, 101, 101, 35, 101, - 101, 101, 18, 46, 101, 52, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 28, 0, 0, 0, 0, - 0, 101, 54, 101, 101, 101, 101, 101, 19, 101, - 101, 37, 32, 101, 41, 101, 101, 101, 104, 0, - 0, 14, 0, 101, 101, 101, 101, 34, 30, 101, - 101, 101, 101, 101, 101, 0, 15, 0, 101, 101, + 0, 104, 0, 0, 104, 0, 0, 103, 103, 53, + 103, 46, 35, 103, 103, 103, 28, 103, 103, 103, + 51, 103, 103, 103, 103, 52, 103, 103, 103, 47, + 103, 22, 103, 0, 0, 0, 0, 0, 50, 103, + 103, 37, 103, 103, 103, 20, 48, 103, 54, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 30, 0, + 0, 0, 0, 0, 103, 56, 103, 103, 103, 103, + 103, 21, 103, 103, 39, 34, 103, 43, 103, 103, + 103, 106, 0, 0, 16, 0, 103, 103, 103, 103, + 36, 32, 103, 103, 103, 103, 103, 103, 0, 17, - 101, 36, 101, 40, 101, 101, 101, 21, 17, 0, - 53, 101, 101, 101, 101, 47, 24, 101, 101, 0, - 38, 101, 39, 43, 101, 101, 0, 42, 101, 101, - 0, 101, 101, 0, 101, 22, 0, 101, 16, 101, - 23, 0 + 0, 103, 103, 103, 38, 103, 42, 103, 103, 103, + 23, 19, 0, 55, 103, 103, 103, 103, 49, 26, + 103, 103, 0, 40, 103, 41, 45, 103, 103, 0, + 44, 103, 103, 0, 103, 103, 0, 103, 24, 0, + 103, 18, 103, 25, 0 } ; static const YY_CHAR yy_ec[256] = @@ -650,95 +650,95 @@ static const YY_CHAR yy_meta[73] = 1, 1 } ; -static const flex_int16_t yy_base[363] = +static const flex_int16_t yy_base[366] = { 0, - 0, 0, 70, 71, 69, 72, 73, 74, 757, 758, - 758, 758, 731, 80, 69, 730, 82, 79, 758, 758, - 72, 79, 758, 78, 80, 99, 109, 116, 732, 758, - 70, 728, 83, 758, 710, 77, 758, 758, 726, 54, - 84, 101, 98, 108, 113, 60, 125, 68, 102, 104, - 121, 127, 128, 110, 132, 758, 116, 758, 758, 758, - 758, 733, 136, 724, 758, 758, 731, 758, 168, 758, - 189, 758, 0, 689, 688, 683, 758, 170, 758, 171, - 758, 175, 188, 758, 758, 758, 758, 758, 758, 183, - 690, 758, 758, 0, 758, 187, 200, 206, 172, 217, + 0, 0, 70, 71, 72, 73, 74, 75, 763, 764, + 764, 764, 737, 72, 67, 736, 80, 81, 764, 764, + 76, 81, 764, 82, 90, 110, 99, 124, 738, 764, + 71, 734, 73, 764, 716, 87, 764, 764, 732, 90, + 92, 105, 112, 114, 91, 58, 118, 88, 115, 117, + 123, 125, 126, 119, 139, 764, 138, 764, 764, 764, + 764, 739, 764, 764, 738, 165, 729, 177, 764, 179, + 764, 183, 764, 0, 695, 694, 689, 764, 185, 764, + 94, 764, 184, 192, 764, 764, 764, 764, 764, 764, + 179, 696, 764, 764, 0, 764, 185, 196, 221, 180, - 244, 0, 758, 718, 758, 758, 758, 717, 699, 207, - 758, 157, 173, 190, 186, 137, 199, 698, 167, 71, - 75, 197, 209, 697, 696, 202, 205, 212, 215, 213, - 235, 242, 219, 238, 243, 246, 758, 758, 758, 758, - 274, 276, 296, 0, 683, 250, 682, 277, 758, 299, - 298, 302, 300, 301, 305, 758, 667, 0, 302, 758, - 308, 314, 0, 692, 758, 758, 304, 303, 292, 271, - 295, 310, 306, 273, 313, 315, 316, 319, 321, 324, - 326, 325, 327, 328, 331, 330, 335, 338, 341, 344, - 342, 343, 0, 676, 676, 677, 672, 382, 384, 393, + 191, 248, 0, 764, 724, 764, 764, 764, 723, 705, + 223, 764, 178, 181, 193, 202, 201, 203, 704, 186, + 208, 70, 209, 205, 703, 702, 60, 210, 216, 218, + 229, 246, 247, 182, 242, 250, 251, 764, 764, 764, + 764, 764, 764, 269, 277, 304, 0, 689, 254, 688, + 278, 764, 309, 294, 312, 297, 307, 314, 764, 673, + 0, 306, 764, 313, 319, 0, 698, 764, 764, 310, + 286, 288, 298, 306, 300, 311, 301, 317, 316, 323, + 326, 327, 328, 329, 330, 332, 331, 334, 333, 338, + 339, 344, 348, 345, 349, 0, 682, 682, 683, 678, - 381, 386, 397, 679, 369, 365, 686, 270, 685, 684, - 360, 361, 366, 683, 374, 368, 371, 682, 377, 370, - 380, 385, 681, 389, 392, 394, 680, 396, 399, 401, - 0, 658, 656, 661, 666, 758, 410, 411, 403, 406, - 407, 412, 675, 674, 418, 673, 414, 425, 415, 417, - 429, 434, 432, 416, 436, 672, 0, 652, 663, 661, - 665, 445, 667, 437, 442, 443, 446, 447, 666, 449, - 450, 665, 664, 451, 663, 452, 455, 460, 758, 654, - 653, 758, 656, 473, 463, 464, 469, 659, 658, 201, - 471, 472, 476, 479, 482, 649, 758, 640, 497, 486, + 387, 388, 394, 392, 393, 400, 685, 372, 368, 692, + 364, 691, 690, 369, 370, 373, 689, 375, 371, 374, + 688, 383, 380, 396, 384, 687, 398, 385, 401, 686, + 402, 407, 409, 0, 664, 662, 667, 672, 764, 418, + 419, 413, 412, 420, 415, 681, 680, 426, 679, 414, + 435, 421, 423, 438, 441, 442, 425, 445, 678, 0, + 658, 669, 667, 671, 453, 673, 447, 450, 451, 455, + 452, 672, 458, 456, 671, 670, 459, 669, 465, 467, + 460, 764, 660, 659, 764, 662, 479, 470, 475, 477, + 665, 664, 480, 484, 488, 489, 483, 486, 655, 764, - 487, 655, 488, 654, 489, 491, 499, 501, 758, 641, - 652, 490, 505, 492, 506, 651, 633, 503, 514, 609, - 582, 512, 571, 570, 517, 515, 521, 541, 520, 523, - 521, 524, 526, 531, 525, 534, 522, 527, 758, 531, - 528, 758, 585, 593, 601, 606, 614, 620, 624, 632, - 493, 640, 648, 656, 664, 668, 409, 676, 684, 326, - 193, 191 + 646, 504, 493, 495, 661, 501, 643, 502, 505, 499, + 508, 764, 622, 592, 510, 514, 516, 515, 581, 580, + 519, 520, 537, 551, 521, 550, 549, 525, 526, 527, + 544, 527, 530, 521, 533, 534, 454, 535, 424, 414, + 537, 764, 539, 386, 764, 595, 603, 611, 616, 624, + 630, 634, 642, 313, 650, 658, 666, 674, 678, 308, + 686, 694, 282, 213, 208 } ; -static const flex_int16_t yy_def[363] = +static const flex_int16_t yy_def[366] = { 0, - 342, 1, 343, 343, 1, 1, 344, 344, 342, 342, - 342, 342, 342, 345, 346, 342, 342, 347, 342, 342, - 342, 342, 342, 342, 342, 342, 348, 348, 342, 342, - 342, 342, 342, 342, 349, 349, 342, 342, 342, 349, - 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 342, 342, 342, 342, 342, - 342, 342, 346, 342, 342, 342, 342, 342, 345, 342, - 350, 342, 351, 351, 342, 342, 342, 352, 342, 353, - 342, 347, 354, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 355, 342, 342, 348, 348, 348, 348, + 345, 1, 346, 346, 347, 347, 1, 1, 345, 345, + 345, 345, 345, 348, 349, 345, 345, 350, 345, 345, + 345, 345, 345, 345, 345, 345, 351, 351, 345, 345, + 345, 345, 345, 345, 352, 352, 345, 345, 345, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 349, 345, 345, 345, 348, + 345, 353, 345, 354, 354, 345, 345, 345, 355, 345, + 356, 345, 350, 357, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 358, 345, 345, 351, 351, 351, - 348, 356, 342, 342, 342, 342, 342, 342, 349, 349, - 342, 349, 349, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 342, 342, 342, 342, - 345, 345, 350, 357, 342, 342, 342, 352, 342, 358, - 353, 359, 347, 347, 354, 342, 342, 355, 342, 342, - 348, 348, 101, 356, 342, 342, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 360, 342, 342, 342, 342, 352, 352, 358, + 351, 351, 359, 345, 345, 345, 345, 345, 345, 352, + 352, 345, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 345, 345, 345, + 345, 345, 345, 348, 348, 353, 360, 345, 345, 345, + 355, 345, 361, 356, 362, 350, 350, 357, 345, 345, + 358, 345, 345, 351, 351, 102, 359, 345, 345, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 363, 345, 345, 345, 345, - 353, 353, 359, 342, 349, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, - 361, 342, 342, 342, 342, 342, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 362, 342, 342, 342, - 342, 349, 349, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 349, 349, 342, 342, - 342, 342, 342, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 342, 342, 342, 349, 349, + 355, 355, 361, 356, 356, 362, 345, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 364, 345, 345, 345, 345, 345, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 365, + 345, 345, 345, 345, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 345, 345, 345, 345, 345, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 345, 345, - 349, 349, 349, 349, 349, 349, 349, 349, 342, 342, - 349, 349, 349, 349, 349, 349, 349, 349, 349, 342, - 349, 349, 349, 349, 349, 349, 342, 349, 349, 349, - 342, 349, 349, 342, 349, 349, 342, 349, 342, 349, - 349, 0, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342 + 345, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 345, 345, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 345, 352, 352, 352, 352, 352, 352, 345, + 352, 352, 352, 345, 352, 352, 345, 352, 352, 345, + 352, 345, 352, 352, 0, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345 } ; -static const flex_int16_t yy_nxt[831] = +static const flex_int16_t yy_nxt[837] = { 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 28, @@ -747,93 +747,94 @@ static const flex_int16_t yy_nxt[831] = 37, 10, 38, 39, 35, 40, 41, 42, 43, 44, 45, 46, 35, 47, 35, 48, 35, 49, 35, 50, 51, 52, 53, 54, 35, 55, 35, 35, 56, 57, - 58, 59, 61, 61, 63, 66, 66, 63, 67, 67, - 64, 62, 62, 64, 70, 72, 78, 70, 84, 79, - 80, 86, 88, 104, 105, 102, 85, 90, 90, 90, + 58, 59, 61, 61, 64, 64, 71, 65, 65, 66, + 66, 62, 62, 73, 79, 67, 67, 80, 81, 71, + 68, 68, 85, 87, 105, 106, 89, 108, 109, 103, - 90, 102, 89, 87, 92, 123, 81, 107, 108, 102, - 93, 112, 102, 110, 74, 94, 102, 126, 102, 177, - 83, 71, 75, 95, 96, 102, 97, 98, 98, 97, - 178, 96, 76, 97, 97, 97, 97, 100, 110, 102, - 137, 91, 102, 102, 113, 102, 114, 117, 101, 102, - 102, 102, 140, 115, 102, 100, 118, 102, 121, 116, - 127, 110, 102, 119, 128, 120, 102, 134, 102, 102, - 129, 122, 70, 102, 149, 124, 130, 135, 102, 149, - 132, 74, 125, 70, 136, 138, 110, 342, 133, 75, - 82, 69, 131, 142, 174, 279, 154, 257, 102, 76, + 86, 103, 152, 124, 82, 88, 90, 91, 91, 91, + 91, 103, 75, 72, 97, 93, 98, 99, 99, 98, + 76, 94, 84, 111, 184, 181, 95, 101, 103, 103, + 77, 103, 103, 103, 96, 155, 122, 127, 102, 97, + 103, 98, 98, 98, 98, 101, 103, 113, 111, 123, + 115, 92, 114, 103, 111, 103, 103, 116, 103, 103, + 103, 118, 138, 117, 103, 103, 103, 103, 125, 120, + 119, 121, 130, 128, 131, 126, 135, 129, 133, 111, + 103, 142, 143, 71, 136, 70, 134, 145, 94, 152, + 132, 137, 71, 95, 83, 345, 91, 91, 91, 91, - 90, 90, 90, 90, 159, 159, 159, 159, 102, 71, - 169, 150, 152, 102, 102, 96, 83, 97, 97, 97, - 97, 96, 170, 161, 161, 161, 97, 102, 176, 155, - 143, 102, 342, 156, 162, 162, 167, 160, 102, 173, - 102, 102, 102, 102, 168, 171, 102, 102, 102, 175, - 102, 172, 303, 102, 102, 167, 102, 179, 102, 342, - 102, 163, 163, 163, 163, 180, 181, 182, 185, 168, - 183, 163, 163, 163, 163, 163, 102, 184, 70, 102, - 70, 149, 189, 102, 102, 102, 190, 102, 186, 163, - 163, 163, 163, 163, 163, 187, 191, 195, 69, 192, + 157, 96, 162, 162, 162, 162, 345, 139, 165, 165, + 75, 97, 282, 98, 98, 98, 98, 260, 76, 103, + 72, 103, 103, 103, 146, 84, 153, 103, 77, 159, + 173, 172, 103, 158, 103, 163, 97, 103, 164, 164, + 164, 98, 103, 103, 103, 192, 103, 179, 174, 103, + 103, 103, 170, 178, 175, 176, 180, 103, 177, 103, + 171, 183, 103, 345, 103, 166, 166, 166, 166, 182, + 103, 170, 185, 71, 186, 166, 166, 166, 166, 166, + 187, 71, 152, 103, 188, 171, 234, 103, 103, 103, + 193, 103, 103, 166, 166, 166, 166, 166, 166, 189, - 142, 148, 188, 199, 151, 196, 149, 82, 70, 70, - 202, 102, 102, 154, 102, 71, 208, 71, 150, 159, - 159, 159, 159, 96, 239, 161, 161, 161, 97, 342, - 231, 162, 162, 102, 205, 212, 102, 143, 206, 152, - 200, 83, 83, 203, 102, 102, 155, 102, 207, 102, - 209, 102, 160, 205, 102, 102, 102, 102, 213, 210, - 102, 211, 102, 206, 214, 102, 102, 102, 102, 102, - 217, 102, 102, 218, 215, 219, 102, 221, 220, 102, - 216, 223, 102, 102, 102, 102, 149, 226, 149, 149, - 227, 222, 224, 228, 149, 148, 225, 199, 230, 151, + 190, 198, 152, 194, 195, 71, 70, 191, 145, 199, + 72, 151, 196, 202, 154, 71, 83, 147, 72, 153, + 205, 209, 157, 162, 162, 162, 162, 103, 97, 103, + 164, 164, 164, 98, 345, 155, 165, 165, 84, 103, + 208, 103, 103, 211, 210, 146, 209, 103, 84, 213, + 203, 103, 103, 206, 103, 158, 163, 103, 103, 208, + 103, 212, 216, 215, 103, 217, 214, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 220, 221, 222, 103, + 103, 218, 224, 223, 226, 103, 103, 219, 229, 103, + 103, 152, 152, 230, 225, 227, 151, 231, 202, 228, - 237, 102, 102, 238, 229, 202, 102, 102, 240, 102, - 102, 102, 102, 193, 241, 102, 245, 244, 102, 237, - 247, 102, 152, 150, 248, 150, 102, 152, 238, 242, - 102, 243, 246, 102, 200, 102, 250, 102, 203, 252, - 102, 263, 102, 262, 102, 249, 253, 102, 102, 254, - 256, 102, 102, 102, 251, 102, 102, 102, 102, 102, - 263, 255, 264, 262, 266, 268, 102, 267, 265, 273, - 102, 270, 272, 102, 271, 102, 277, 102, 102, 284, - 269, 274, 275, 102, 102, 276, 102, 102, 102, 278, - 102, 102, 102, 102, 286, 285, 102, 144, 290, 289, + 152, 152, 154, 240, 233, 103, 241, 232, 205, 103, + 103, 103, 103, 103, 103, 103, 103, 243, 242, 248, + 247, 103, 240, 244, 103, 103, 103, 103, 153, 153, + 250, 241, 246, 155, 155, 203, 245, 103, 249, 103, + 251, 206, 103, 103, 252, 253, 255, 254, 103, 266, + 103, 265, 256, 103, 103, 103, 103, 257, 259, 103, + 103, 103, 103, 342, 103, 103, 103, 103, 266, 258, + 270, 265, 267, 271, 268, 276, 103, 269, 275, 103, + 272, 273, 103, 103, 274, 280, 103, 287, 103, 278, + 277, 103, 103, 103, 103, 279, 103, 103, 281, 103, - 294, 102, 284, 299, 102, 102, 287, 291, 288, 293, - 102, 292, 102, 102, 102, 295, 300, 102, 302, 304, - 102, 305, 299, 102, 301, 306, 311, 102, 102, 102, - 102, 102, 102, 102, 315, 307, 313, 308, 102, 316, - 102, 314, 102, 312, 102, 311, 102, 102, 317, 323, - 322, 318, 321, 102, 324, 102, 102, 319, 102, 326, - 328, 102, 329, 325, 102, 102, 102, 102, 102, 102, - 333, 339, 102, 335, 338, 102, 332, 330, 336, 341, - 337, 334, 102, 331, 340, 60, 60, 60, 60, 60, - 60, 60, 60, 65, 65, 65, 65, 65, 65, 65, + 103, 103, 289, 340, 292, 288, 103, 293, 103, 302, + 287, 103, 297, 294, 290, 298, 103, 291, 103, 295, + 103, 103, 296, 303, 103, 103, 305, 103, 302, 103, + 103, 306, 307, 314, 103, 304, 103, 308, 309, 310, + 103, 311, 103, 103, 316, 103, 103, 318, 320, 103, + 315, 103, 314, 319, 317, 103, 103, 103, 321, 325, + 103, 103, 103, 327, 322, 329, 103, 103, 103, 331, + 332, 103, 324, 326, 103, 103, 103, 336, 103, 328, + 103, 337, 338, 335, 341, 103, 339, 344, 333, 334, + 103, 103, 103, 330, 343, 60, 60, 60, 60, 60, - 65, 69, 69, 69, 69, 69, 69, 69, 69, 73, - 73, 102, 102, 73, 82, 82, 82, 82, 82, 82, - 82, 82, 99, 102, 99, 99, 99, 99, 109, 109, - 109, 109, 141, 141, 141, 141, 141, 141, 141, 141, - 148, 148, 148, 148, 148, 148, 148, 148, 151, 151, - 151, 151, 151, 151, 151, 151, 153, 153, 153, 153, - 153, 153, 153, 153, 158, 327, 158, 158, 158, 158, - 158, 158, 164, 164, 102, 164, 198, 198, 198, 198, - 198, 198, 198, 198, 201, 201, 201, 201, 201, 201, - 201, 201, 102, 102, 320, 102, 102, 310, 309, 102, + 60, 60, 60, 63, 63, 63, 63, 63, 63, 63, + 63, 70, 70, 70, 70, 70, 70, 70, 70, 74, + 74, 103, 103, 74, 83, 83, 83, 83, 83, 83, + 83, 83, 100, 103, 100, 100, 100, 100, 110, 110, + 110, 110, 144, 144, 144, 144, 144, 144, 144, 144, + 151, 151, 151, 151, 151, 151, 151, 151, 154, 154, + 154, 154, 154, 154, 154, 154, 156, 156, 156, 156, + 156, 156, 156, 156, 161, 323, 161, 161, 161, 161, + 161, 161, 167, 167, 103, 167, 201, 201, 201, 201, + 201, 201, 201, 201, 204, 204, 204, 204, 204, 204, - 102, 298, 297, 296, 102, 102, 102, 102, 102, 283, - 282, 281, 280, 102, 102, 102, 102, 261, 260, 259, - 258, 102, 102, 102, 102, 102, 102, 102, 236, 235, - 234, 233, 232, 102, 204, 197, 194, 102, 102, 102, - 102, 166, 165, 157, 147, 146, 145, 140, 85, 139, - 111, 102, 106, 103, 77, 68, 342, 9, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 204, 204, 103, 313, 312, 103, 103, 301, 300, 299, + 103, 103, 103, 103, 103, 286, 285, 284, 283, 103, + 103, 103, 103, 264, 263, 262, 261, 103, 103, 103, + 103, 103, 103, 103, 239, 238, 237, 236, 235, 103, + 207, 200, 197, 103, 103, 103, 103, 169, 168, 160, + 150, 149, 148, 86, 141, 140, 112, 103, 107, 104, + 78, 69, 345, 9, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342 + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345 } ; -static const flex_int16_t yy_chk[831] = +static const flex_int16_t yy_chk[837] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -842,90 +843,91 @@ static const flex_int16_t yy_chk[831] = 1, 1, 1, 1, 1, 1, 1, 1, 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, 7, 8, 6, 7, 8, - 5, 3, 4, 6, 14, 15, 17, 18, 21, 17, - 17, 22, 24, 31, 31, 40, 21, 25, 25, 25, + 1, 1, 3, 4, 5, 6, 14, 5, 6, 7, + 8, 3, 4, 15, 17, 7, 8, 17, 17, 18, + 7, 8, 21, 22, 31, 31, 24, 33, 33, 46, - 25, 46, 24, 22, 26, 46, 17, 33, 33, 48, - 26, 40, 120, 36, 15, 26, 121, 48, 36, 120, - 18, 14, 15, 26, 27, 41, 27, 27, 27, 27, - 121, 28, 15, 28, 28, 28, 28, 27, 36, 43, - 57, 25, 42, 49, 41, 50, 42, 43, 27, 44, - 27, 54, 63, 42, 45, 27, 43, 28, 45, 42, - 49, 47, 51, 44, 50, 44, 47, 54, 52, 53, - 51, 45, 69, 55, 78, 47, 52, 55, 116, 80, - 53, 63, 47, 82, 55, 57, 47, 99, 53, 63, - 83, 71, 52, 71, 116, 362, 83, 361, 112, 63, + 21, 127, 81, 46, 17, 22, 24, 25, 25, 25, + 25, 122, 15, 14, 27, 26, 27, 27, 27, 27, + 15, 26, 18, 36, 127, 122, 26, 27, 36, 48, + 15, 40, 45, 41, 26, 81, 45, 48, 27, 28, + 27, 28, 28, 28, 28, 27, 42, 40, 36, 45, + 42, 25, 41, 43, 47, 44, 49, 42, 50, 47, + 54, 43, 57, 42, 51, 28, 52, 53, 47, 44, + 43, 44, 51, 49, 52, 47, 54, 50, 53, 47, + 55, 66, 68, 70, 55, 72, 53, 72, 68, 79, + 52, 55, 83, 68, 84, 100, 91, 91, 91, 91, - 90, 90, 90, 90, 96, 96, 96, 96, 119, 69, - 112, 78, 80, 99, 113, 97, 82, 97, 97, 97, - 97, 98, 113, 98, 98, 98, 98, 115, 119, 83, - 71, 114, 100, 90, 100, 100, 110, 96, 122, 115, - 117, 97, 290, 126, 110, 114, 127, 98, 110, 117, - 123, 114, 290, 128, 130, 110, 129, 122, 100, 101, - 133, 101, 101, 101, 101, 123, 126, 127, 130, 110, - 128, 101, 101, 101, 101, 101, 131, 129, 141, 134, - 142, 148, 133, 132, 135, 101, 134, 136, 131, 101, - 101, 101, 101, 101, 101, 132, 135, 146, 143, 136, + 84, 68, 97, 97, 97, 97, 101, 57, 101, 101, + 66, 98, 365, 98, 98, 98, 98, 364, 66, 113, + 70, 100, 114, 134, 72, 83, 79, 120, 66, 91, + 114, 113, 101, 84, 115, 97, 99, 98, 99, 99, + 99, 99, 117, 116, 118, 134, 124, 120, 115, 121, + 123, 128, 111, 118, 115, 116, 121, 129, 117, 130, + 111, 124, 99, 102, 111, 102, 102, 102, 102, 123, + 131, 111, 128, 144, 129, 102, 102, 102, 102, 102, + 130, 145, 151, 135, 131, 111, 363, 132, 133, 102, + 135, 136, 137, 102, 102, 102, 102, 102, 102, 132, - 143, 150, 132, 150, 152, 146, 151, 155, 153, 154, - 152, 208, 170, 155, 174, 141, 170, 142, 148, 159, - 159, 159, 159, 161, 208, 161, 161, 161, 161, 162, - 360, 162, 162, 169, 167, 174, 171, 143, 168, 151, - 150, 153, 154, 152, 168, 167, 155, 173, 169, 161, - 171, 172, 159, 167, 175, 162, 176, 177, 175, 172, - 178, 173, 179, 168, 176, 180, 182, 181, 183, 184, - 179, 186, 185, 180, 177, 181, 187, 183, 182, 188, - 178, 185, 189, 191, 192, 190, 198, 188, 199, 201, - 189, 184, 186, 190, 202, 200, 187, 200, 192, 203, + 133, 149, 154, 136, 137, 156, 146, 133, 146, 149, + 144, 153, 360, 153, 155, 157, 158, 354, 145, 151, + 155, 171, 158, 162, 162, 162, 162, 171, 164, 172, + 164, 164, 164, 164, 165, 154, 165, 165, 156, 173, + 170, 175, 177, 173, 172, 146, 171, 174, 157, 175, + 153, 170, 176, 155, 164, 158, 162, 179, 178, 170, + 165, 174, 178, 177, 180, 179, 176, 181, 182, 183, + 184, 185, 187, 186, 189, 188, 182, 183, 184, 190, + 191, 180, 186, 185, 188, 192, 194, 181, 191, 193, + 195, 201, 202, 192, 187, 189, 203, 193, 203, 190, - 205, 211, 212, 206, 191, 203, 206, 213, 211, 216, - 205, 220, 217, 357, 212, 215, 217, 216, 219, 205, - 220, 221, 201, 198, 221, 199, 222, 202, 206, 213, - 224, 215, 219, 225, 200, 226, 224, 228, 203, 226, - 229, 238, 230, 237, 239, 222, 228, 240, 241, 229, - 230, 237, 238, 242, 225, 247, 249, 254, 250, 245, - 238, 229, 239, 237, 241, 245, 248, 242, 240, 250, - 251, 248, 249, 253, 248, 252, 254, 255, 264, 262, - 247, 251, 252, 265, 266, 253, 262, 267, 268, 255, - 270, 271, 274, 276, 265, 264, 277, 351, 270, 268, + 204, 205, 206, 208, 195, 211, 209, 194, 206, 209, + 214, 215, 219, 208, 216, 220, 218, 214, 211, 220, + 219, 223, 208, 215, 222, 225, 228, 344, 201, 202, + 223, 209, 218, 204, 205, 203, 216, 224, 222, 227, + 224, 206, 229, 231, 225, 227, 229, 228, 232, 241, + 233, 240, 231, 243, 242, 250, 245, 232, 233, 240, + 241, 244, 252, 340, 253, 339, 257, 248, 241, 232, + 245, 240, 242, 248, 243, 253, 251, 244, 252, 254, + 250, 251, 255, 256, 251, 257, 258, 265, 267, 255, + 254, 268, 269, 271, 265, 256, 270, 274, 258, 273, - 277, 278, 262, 284, 285, 286, 266, 271, 267, 276, - 287, 274, 291, 292, 284, 278, 285, 293, 287, 291, - 294, 292, 284, 295, 286, 293, 299, 300, 301, 303, - 305, 312, 306, 314, 305, 294, 301, 295, 299, 306, - 307, 303, 308, 300, 318, 299, 313, 315, 307, 314, - 313, 308, 312, 322, 315, 319, 326, 308, 325, 319, - 322, 329, 325, 318, 330, 332, 335, 333, 338, 341, - 330, 337, 340, 332, 335, 336, 329, 326, 333, 340, - 334, 331, 328, 327, 338, 343, 343, 343, 343, 343, - 343, 343, 343, 344, 344, 344, 344, 344, 344, 344, + 277, 281, 268, 337, 271, 267, 279, 273, 280, 287, + 265, 288, 280, 274, 269, 281, 289, 270, 290, 277, + 287, 293, 279, 288, 297, 294, 290, 298, 287, 295, + 296, 293, 294, 302, 303, 289, 304, 295, 296, 297, + 310, 298, 306, 308, 304, 302, 309, 308, 310, 311, + 303, 315, 302, 309, 306, 316, 318, 317, 311, 316, + 321, 322, 325, 318, 311, 322, 328, 329, 332, 325, + 328, 333, 315, 317, 335, 336, 338, 333, 341, 321, + 343, 334, 335, 332, 338, 331, 336, 343, 329, 330, + 327, 326, 324, 323, 341, 346, 346, 346, 346, 346, - 344, 345, 345, 345, 345, 345, 345, 345, 345, 346, - 346, 324, 323, 346, 347, 347, 347, 347, 347, 347, - 347, 347, 348, 321, 348, 348, 348, 348, 349, 349, - 349, 349, 350, 350, 350, 350, 350, 350, 350, 350, - 352, 352, 352, 352, 352, 352, 352, 352, 353, 353, - 353, 353, 353, 353, 353, 353, 354, 354, 354, 354, - 354, 354, 354, 354, 355, 320, 355, 355, 355, 355, - 355, 355, 356, 356, 317, 356, 358, 358, 358, 358, - 358, 358, 358, 358, 359, 359, 359, 359, 359, 359, - 359, 359, 316, 311, 310, 304, 302, 298, 296, 289, + 346, 346, 346, 347, 347, 347, 347, 347, 347, 347, + 347, 348, 348, 348, 348, 348, 348, 348, 348, 349, + 349, 320, 319, 349, 350, 350, 350, 350, 350, 350, + 350, 350, 351, 314, 351, 351, 351, 351, 352, 352, + 352, 352, 353, 353, 353, 353, 353, 353, 353, 353, + 355, 355, 355, 355, 355, 355, 355, 355, 356, 356, + 356, 356, 356, 356, 356, 356, 357, 357, 357, 357, + 357, 357, 357, 357, 358, 313, 358, 358, 358, 358, + 358, 358, 359, 359, 307, 359, 361, 361, 361, 361, + 361, 361, 361, 361, 362, 362, 362, 362, 362, 362, - 288, 283, 281, 280, 275, 273, 272, 269, 263, 261, - 260, 259, 258, 256, 246, 244, 243, 235, 234, 233, - 232, 227, 223, 218, 214, 210, 209, 207, 204, 197, - 196, 195, 194, 164, 157, 147, 145, 125, 124, 118, - 109, 108, 104, 91, 76, 75, 74, 67, 64, 62, - 39, 35, 32, 29, 16, 13, 9, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 362, 362, 305, 301, 299, 292, 291, 286, 284, 283, + 278, 276, 275, 272, 266, 264, 263, 262, 261, 259, + 249, 247, 246, 238, 237, 236, 235, 230, 226, 221, + 217, 213, 212, 210, 207, 200, 199, 198, 197, 167, + 160, 150, 148, 126, 125, 119, 110, 109, 105, 92, + 77, 76, 75, 67, 65, 62, 39, 35, 32, 29, + 16, 13, 9, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342 + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345 } ; /* The intent behind this definition is that it'll catch @@ -946,14 +948,14 @@ static const flex_int16_t yy_chk[831] = #line 25 "lexer.lpp" #define YY_USER_ACTION ctx->loc.columns(yyleng); -#line 949 "lexer.cpp" - #line 951 "lexer.cpp" + +#line 953 "lexer.cpp" #define INITIAL 0 -#define COMMENT_BLOCK_STATE 1 -#define DEVBLOCK_ON_STATE 2 -#define DEVBLOCK_OFF_STATE 3 +#define COMMENT_STATE 1 +#define DEV_OFF_STATE 2 +#define DEV_ON_STATE 3 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way @@ -1217,7 +1219,7 @@ YY_DECL ctx->loc.step(); -#line 1220 "lexer.cpp" +#line 1222 "lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1244,13 +1246,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 >= 343 ) + if ( yy_current_state >= 346 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 342 ); + while ( yy_current_state != 345 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -1278,567 +1280,586 @@ YY_RULE_SETUP case 2: /* rule 2 can match eol */ YY_RULE_SETUP -#line 52 "lexer.lpp" +#line 51 "lexer.lpp" { ctx->loc.lines(yyleng); ctx->loc.step(); } YY_BREAK case 3: YY_RULE_SETUP -#line 54 "lexer.lpp" +#line 53 "lexer.lpp" YY_BREAK case 4: YY_RULE_SETUP -#line 56 "lexer.lpp" -{ BEGIN(COMMENT_BLOCK_STATE); } +#line 55 "lexer.lpp" +{ BEGIN(COMMENT_STATE); } YY_BREAK case 5: YY_RULE_SETUP -#line 57 "lexer.lpp" +#line 56 "lexer.lpp" YY_BREAK case 6: /* rule 6 can match eol */ YY_RULE_SETUP -#line 58 "lexer.lpp" +#line 57 "lexer.lpp" { ctx->loc.lines(yyleng); ctx->loc.step(); } YY_BREAK case 7: YY_RULE_SETUP -#line 59 "lexer.lpp" +#line 58 "lexer.lpp" { BEGIN(INITIAL); } YY_BREAK +case YY_STATE_EOF(COMMENT_STATE): +#line 59 "lexer.lpp" +{ throw iw8::parser::syntax_error(ctx->loc, "unmatched multiline comment start ('/*')"); } + YY_BREAK case 8: YY_RULE_SETUP -#line 61 "lexer.lpp" -{ BEGIN(ctx->mode == xsk::gsc::build::dev ? DEVBLOCK_ON_STATE : DEVBLOCK_OFF_STATE); } +#line 60 "lexer.lpp" +{ throw iw8::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } YY_BREAK case 9: YY_RULE_SETUP #line 62 "lexer.lpp" - +{ throw iw8::parser::syntax_error(ctx->loc, "cannot recurse devblock ('/#')"); } YY_BREAK case 10: -/* rule 10 can match eol */ YY_RULE_SETUP #line 63 "lexer.lpp" -{ ctx->loc.lines(yyleng); ctx->loc.step(); } +{ BEGIN(INITIAL); return iw8::parser::make_DEVEND(ctx->loc); } + YY_BREAK +case YY_STATE_EOF(DEV_ON_STATE): +#line 64 "lexer.lpp" +{ throw iw8::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } YY_BREAK case 11: YY_RULE_SETUP -#line 64 "lexer.lpp" -{ BEGIN(INITIAL); } +#line 66 "lexer.lpp" +{ BEGIN(ctx->mode == xsk::gsc::build::dev ? DEV_ON_STATE : DEV_OFF_STATE); if(ctx->mode == xsk::gsc::build::dev) return iw8::parser::make_DEVBEGIN(ctx->loc); } YY_BREAK case 12: YY_RULE_SETUP -#line 66 "lexer.lpp" -{ throw iw8::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } +#line 67 "lexer.lpp" + YY_BREAK case 13: +/* rule 13 can match eol */ YY_RULE_SETUP -#line 67 "lexer.lpp" -{ throw iw8::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } +#line 68 "lexer.lpp" +{ ctx->loc.lines(yyleng); ctx->loc.step(); } YY_BREAK case 14: YY_RULE_SETUP #line 69 "lexer.lpp" -{ return iw8::parser::make_INLINE(ctx->loc); } +{ BEGIN(INITIAL); } + YY_BREAK +case YY_STATE_EOF(DEV_OFF_STATE): +#line 70 "lexer.lpp" +{ throw iw8::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } YY_BREAK case 15: YY_RULE_SETUP -#line 70 "lexer.lpp" -{ return iw8::parser::make_INCLUDE(ctx->loc); } +#line 71 "lexer.lpp" +{ throw iw8::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } YY_BREAK case 16: YY_RULE_SETUP -#line 71 "lexer.lpp" -{ return iw8::parser::make_USINGTREE(ctx->loc); } +#line 73 "lexer.lpp" +{ return iw8::parser::make_INLINE(ctx->loc); } YY_BREAK case 17: YY_RULE_SETUP -#line 72 "lexer.lpp" -{ return iw8::parser::make_ANIMTREE(ctx->loc); } +#line 74 "lexer.lpp" +{ return iw8::parser::make_INCLUDE(ctx->loc); } YY_BREAK case 18: YY_RULE_SETUP -#line 73 "lexer.lpp" -{ return iw8::parser::make_ENDON(ctx->loc); } +#line 75 "lexer.lpp" +{ return iw8::parser::make_USINGTREE(ctx->loc); } YY_BREAK case 19: YY_RULE_SETUP -#line 74 "lexer.lpp" -{ return iw8::parser::make_NOTIFY(ctx->loc); } +#line 76 "lexer.lpp" +{ return iw8::parser::make_ANIMTREE(ctx->loc); } YY_BREAK case 20: YY_RULE_SETUP -#line 75 "lexer.lpp" -{ return iw8::parser::make_WAIT(ctx->loc); } +#line 77 "lexer.lpp" +{ return iw8::parser::make_ENDON(ctx->loc); } YY_BREAK case 21: YY_RULE_SETUP -#line 76 "lexer.lpp" -{ return iw8::parser::make_WAITTILL(ctx->loc); } +#line 78 "lexer.lpp" +{ return iw8::parser::make_NOTIFY(ctx->loc); } YY_BREAK case 22: YY_RULE_SETUP -#line 77 "lexer.lpp" -{ return iw8::parser::make_WAITTILLMATCH(ctx->loc); } +#line 79 "lexer.lpp" +{ return iw8::parser::make_WAIT(ctx->loc); } YY_BREAK case 23: YY_RULE_SETUP -#line 78 "lexer.lpp" -{ return iw8::parser::make_WAITTILLFRAMEEND(ctx->loc); } +#line 80 "lexer.lpp" +{ return iw8::parser::make_WAITTILL(ctx->loc); } YY_BREAK case 24: YY_RULE_SETUP -#line 79 "lexer.lpp" -{ return iw8::parser::make_WAITFRAME(ctx->loc); } +#line 81 "lexer.lpp" +{ return iw8::parser::make_WAITTILLMATCH(ctx->loc); } YY_BREAK case 25: YY_RULE_SETUP -#line 80 "lexer.lpp" -{ return iw8::parser::make_IF(ctx->loc); } +#line 82 "lexer.lpp" +{ return iw8::parser::make_WAITTILLFRAMEEND(ctx->loc); } YY_BREAK case 26: YY_RULE_SETUP -#line 81 "lexer.lpp" -{ return iw8::parser::make_ELSE(ctx->loc); } +#line 83 "lexer.lpp" +{ return iw8::parser::make_WAITFRAME(ctx->loc); } YY_BREAK case 27: YY_RULE_SETUP -#line 82 "lexer.lpp" -{ return iw8::parser::make_DO(ctx->loc); } +#line 84 "lexer.lpp" +{ return iw8::parser::make_IF(ctx->loc); } YY_BREAK case 28: YY_RULE_SETUP -#line 83 "lexer.lpp" -{ return iw8::parser::make_WHILE(ctx->loc); } +#line 85 "lexer.lpp" +{ return iw8::parser::make_ELSE(ctx->loc); } YY_BREAK case 29: YY_RULE_SETUP -#line 84 "lexer.lpp" -{ return iw8::parser::make_FOR(ctx->loc); } +#line 86 "lexer.lpp" +{ return iw8::parser::make_DO(ctx->loc); } YY_BREAK case 30: YY_RULE_SETUP -#line 85 "lexer.lpp" -{ return iw8::parser::make_FOREACH(ctx->loc); } +#line 87 "lexer.lpp" +{ return iw8::parser::make_WHILE(ctx->loc); } YY_BREAK case 31: YY_RULE_SETUP -#line 86 "lexer.lpp" -{ return iw8::parser::make_IN(ctx->loc); } +#line 88 "lexer.lpp" +{ return iw8::parser::make_FOR(ctx->loc); } YY_BREAK case 32: YY_RULE_SETUP -#line 87 "lexer.lpp" -{ return iw8::parser::make_SWITCH(ctx->loc); } +#line 89 "lexer.lpp" +{ return iw8::parser::make_FOREACH(ctx->loc); } YY_BREAK case 33: YY_RULE_SETUP -#line 88 "lexer.lpp" -{ return iw8::parser::make_CASE(ctx->loc); } +#line 90 "lexer.lpp" +{ return iw8::parser::make_IN(ctx->loc); } YY_BREAK case 34: YY_RULE_SETUP -#line 89 "lexer.lpp" -{ return iw8::parser::make_DEFAULT(ctx->loc); } +#line 91 "lexer.lpp" +{ return iw8::parser::make_SWITCH(ctx->loc); } YY_BREAK case 35: YY_RULE_SETUP -#line 90 "lexer.lpp" -{ return iw8::parser::make_BREAK(ctx->loc); } +#line 92 "lexer.lpp" +{ return iw8::parser::make_CASE(ctx->loc); } YY_BREAK case 36: YY_RULE_SETUP -#line 91 "lexer.lpp" -{ return iw8::parser::make_CONTINUE(ctx->loc); } +#line 93 "lexer.lpp" +{ return iw8::parser::make_DEFAULT(ctx->loc); } YY_BREAK case 37: YY_RULE_SETUP -#line 92 "lexer.lpp" -{ return iw8::parser::make_RETURN(ctx->loc); } +#line 94 "lexer.lpp" +{ return iw8::parser::make_BREAK(ctx->loc); } YY_BREAK case 38: YY_RULE_SETUP -#line 93 "lexer.lpp" -{ return iw8::parser::make_BREAKPOINT(ctx->loc); } +#line 95 "lexer.lpp" +{ return iw8::parser::make_CONTINUE(ctx->loc); } YY_BREAK case 39: YY_RULE_SETUP -#line 94 "lexer.lpp" -{ return iw8::parser::make_PROFBEGIN(ctx->loc); } +#line 96 "lexer.lpp" +{ return iw8::parser::make_RETURN(ctx->loc); } YY_BREAK case 40: YY_RULE_SETUP -#line 95 "lexer.lpp" -{ return iw8::parser::make_PROFEND(ctx->loc); } +#line 97 "lexer.lpp" +{ return iw8::parser::make_BREAKPOINT(ctx->loc); } YY_BREAK case 41: YY_RULE_SETUP -#line 96 "lexer.lpp" -{ return iw8::parser::make_THREAD(ctx->loc); } +#line 98 "lexer.lpp" +{ return iw8::parser::make_PROFBEGIN(ctx->loc); } YY_BREAK case 42: YY_RULE_SETUP -#line 97 "lexer.lpp" -{ return iw8::parser::make_CHILDTHREAD(ctx->loc); } +#line 99 "lexer.lpp" +{ return iw8::parser::make_PROFEND(ctx->loc); } YY_BREAK case 43: YY_RULE_SETUP -#line 98 "lexer.lpp" -{ return iw8::parser::make_THISTHREAD(ctx->loc); } +#line 100 "lexer.lpp" +{ return iw8::parser::make_THREAD(ctx->loc); } YY_BREAK case 44: YY_RULE_SETUP -#line 99 "lexer.lpp" -{ return iw8::parser::make_CALL(ctx->loc); } +#line 101 "lexer.lpp" +{ return iw8::parser::make_CHILDTHREAD(ctx->loc); } YY_BREAK case 45: YY_RULE_SETUP -#line 100 "lexer.lpp" -{ return iw8::parser::make_TRUE(ctx->loc); } +#line 102 "lexer.lpp" +{ return iw8::parser::make_THISTHREAD(ctx->loc); } YY_BREAK case 46: YY_RULE_SETUP -#line 101 "lexer.lpp" -{ return iw8::parser::make_FALSE(ctx->loc); } +#line 103 "lexer.lpp" +{ return iw8::parser::make_CALL(ctx->loc); } YY_BREAK case 47: YY_RULE_SETUP -#line 102 "lexer.lpp" -{ return iw8::parser::make_UNDEFINED(ctx->loc); } +#line 104 "lexer.lpp" +{ return iw8::parser::make_TRUE(ctx->loc); } YY_BREAK case 48: YY_RULE_SETUP -#line 103 "lexer.lpp" -{ return iw8::parser::make_SIZE(ctx->loc); } +#line 105 "lexer.lpp" +{ return iw8::parser::make_FALSE(ctx->loc); } YY_BREAK case 49: YY_RULE_SETUP -#line 104 "lexer.lpp" -{ return iw8::parser::make_GAME(ctx->loc); } +#line 106 "lexer.lpp" +{ return iw8::parser::make_UNDEFINED(ctx->loc); } YY_BREAK case 50: YY_RULE_SETUP -#line 105 "lexer.lpp" -{ return iw8::parser::make_SELF(ctx->loc); } +#line 107 "lexer.lpp" +{ return iw8::parser::make_SIZE(ctx->loc); } YY_BREAK case 51: YY_RULE_SETUP -#line 106 "lexer.lpp" -{ return iw8::parser::make_ANIM(ctx->loc); } +#line 108 "lexer.lpp" +{ return iw8::parser::make_GAME(ctx->loc); } YY_BREAK case 52: YY_RULE_SETUP -#line 107 "lexer.lpp" -{ return iw8::parser::make_LEVEL(ctx->loc); } +#line 109 "lexer.lpp" +{ return iw8::parser::make_SELF(ctx->loc); } YY_BREAK case 53: YY_RULE_SETUP -#line 108 "lexer.lpp" -{ return iw8::parser::make_ISDEFINED(ctx->loc); } +#line 110 "lexer.lpp" +{ return iw8::parser::make_ANIM(ctx->loc); } YY_BREAK case 54: YY_RULE_SETUP -#line 109 "lexer.lpp" -{ return iw8::parser::make_ISTRUE(ctx->loc); } +#line 111 "lexer.lpp" +{ return iw8::parser::make_LEVEL(ctx->loc); } YY_BREAK case 55: YY_RULE_SETUP -#line 110 "lexer.lpp" -{ return iw8::parser::make_LPAREN(ctx->loc); } +#line 112 "lexer.lpp" +{ return iw8::parser::make_ISDEFINED(ctx->loc); } YY_BREAK case 56: YY_RULE_SETUP -#line 111 "lexer.lpp" -{ return iw8::parser::make_RPAREN(ctx->loc); } +#line 113 "lexer.lpp" +{ return iw8::parser::make_ISTRUE(ctx->loc); } YY_BREAK case 57: YY_RULE_SETUP -#line 112 "lexer.lpp" -{ return iw8::parser::make_LBRACE(ctx->loc); } +#line 114 "lexer.lpp" +{ return iw8::parser::make_LPAREN(ctx->loc); } YY_BREAK case 58: YY_RULE_SETUP -#line 113 "lexer.lpp" -{ return iw8::parser::make_RBRACE(ctx->loc); } +#line 115 "lexer.lpp" +{ return iw8::parser::make_RPAREN(ctx->loc); } YY_BREAK case 59: YY_RULE_SETUP -#line 114 "lexer.lpp" -{ return iw8::parser::make_LBRACKET(ctx->loc); } +#line 116 "lexer.lpp" +{ return iw8::parser::make_LBRACE(ctx->loc); } YY_BREAK case 60: YY_RULE_SETUP -#line 115 "lexer.lpp" -{ return iw8::parser::make_RBRACKET(ctx->loc); } +#line 117 "lexer.lpp" +{ return iw8::parser::make_RBRACE(ctx->loc); } YY_BREAK case 61: YY_RULE_SETUP -#line 116 "lexer.lpp" -{ return iw8::parser::make_COMMA(ctx->loc); } +#line 118 "lexer.lpp" +{ return iw8::parser::make_LBRACKET(ctx->loc); } YY_BREAK case 62: YY_RULE_SETUP -#line 117 "lexer.lpp" -{ return iw8::parser::make_DOT(ctx->loc); } +#line 119 "lexer.lpp" +{ return iw8::parser::make_RBRACKET(ctx->loc); } YY_BREAK case 63: YY_RULE_SETUP -#line 118 "lexer.lpp" -{ return iw8::parser::make_DOUBLECOLON(ctx->loc); } +#line 120 "lexer.lpp" +{ return iw8::parser::make_COMMA(ctx->loc); } YY_BREAK case 64: YY_RULE_SETUP -#line 119 "lexer.lpp" -{ return iw8::parser::make_COLON(ctx->loc); } +#line 121 "lexer.lpp" +{ return iw8::parser::make_DOT(ctx->loc); } YY_BREAK case 65: YY_RULE_SETUP -#line 120 "lexer.lpp" -{ return iw8::parser::make_SEMICOLON(ctx->loc); } +#line 122 "lexer.lpp" +{ return iw8::parser::make_DOUBLECOLON(ctx->loc); } YY_BREAK case 66: YY_RULE_SETUP -#line 121 "lexer.lpp" -{ return iw8::parser::make_QMARK(ctx->loc); } +#line 123 "lexer.lpp" +{ return iw8::parser::make_COLON(ctx->loc); } YY_BREAK case 67: YY_RULE_SETUP -#line 122 "lexer.lpp" -{ return iw8::parser::make_INCREMENT(ctx->loc); } +#line 124 "lexer.lpp" +{ return iw8::parser::make_SEMICOLON(ctx->loc); } YY_BREAK case 68: YY_RULE_SETUP -#line 123 "lexer.lpp" -{ return iw8::parser::make_DECREMENT(ctx->loc); } +#line 125 "lexer.lpp" +{ return iw8::parser::make_QMARK(ctx->loc); } YY_BREAK case 69: YY_RULE_SETUP -#line 124 "lexer.lpp" -{ return iw8::parser::make_ASSIGN_LSHIFT(ctx->loc); } +#line 126 "lexer.lpp" +{ return iw8::parser::make_INCREMENT(ctx->loc); } YY_BREAK case 70: YY_RULE_SETUP -#line 125 "lexer.lpp" -{ return iw8::parser::make_ASSIGN_RSHIFT(ctx->loc); } +#line 127 "lexer.lpp" +{ return iw8::parser::make_DECREMENT(ctx->loc); } YY_BREAK case 71: YY_RULE_SETUP -#line 126 "lexer.lpp" -{ return iw8::parser::make_LSHIFT(ctx->loc); } +#line 128 "lexer.lpp" +{ return iw8::parser::make_ASSIGN_LSHIFT(ctx->loc); } YY_BREAK case 72: YY_RULE_SETUP -#line 127 "lexer.lpp" -{ return iw8::parser::make_RSHIFT(ctx->loc); } +#line 129 "lexer.lpp" +{ return iw8::parser::make_ASSIGN_RSHIFT(ctx->loc); } YY_BREAK case 73: YY_RULE_SETUP -#line 128 "lexer.lpp" -{ return iw8::parser::make_OR(ctx->loc); } +#line 130 "lexer.lpp" +{ return iw8::parser::make_LSHIFT(ctx->loc); } YY_BREAK case 74: YY_RULE_SETUP -#line 129 "lexer.lpp" -{ return iw8::parser::make_AND(ctx->loc); } +#line 131 "lexer.lpp" +{ return iw8::parser::make_RSHIFT(ctx->loc); } YY_BREAK case 75: YY_RULE_SETUP -#line 130 "lexer.lpp" -{ return iw8::parser::make_EQUALITY(ctx->loc); } +#line 132 "lexer.lpp" +{ return iw8::parser::make_OR(ctx->loc); } YY_BREAK case 76: YY_RULE_SETUP -#line 131 "lexer.lpp" -{ return iw8::parser::make_INEQUALITY(ctx->loc); } +#line 133 "lexer.lpp" +{ return iw8::parser::make_AND(ctx->loc); } YY_BREAK case 77: YY_RULE_SETUP -#line 132 "lexer.lpp" -{ return iw8::parser::make_LESS_EQUAL(ctx->loc); } +#line 134 "lexer.lpp" +{ return iw8::parser::make_EQUALITY(ctx->loc); } YY_BREAK case 78: YY_RULE_SETUP -#line 133 "lexer.lpp" -{ return iw8::parser::make_GREATER_EQUAL(ctx->loc); } +#line 135 "lexer.lpp" +{ return iw8::parser::make_INEQUALITY(ctx->loc); } YY_BREAK case 79: YY_RULE_SETUP -#line 134 "lexer.lpp" -{ return iw8::parser::make_LESS(ctx->loc); } +#line 136 "lexer.lpp" +{ return iw8::parser::make_LESS_EQUAL(ctx->loc); } YY_BREAK case 80: YY_RULE_SETUP -#line 135 "lexer.lpp" -{ return iw8::parser::make_GREATER(ctx->loc); } +#line 137 "lexer.lpp" +{ return iw8::parser::make_GREATER_EQUAL(ctx->loc); } YY_BREAK case 81: YY_RULE_SETUP -#line 136 "lexer.lpp" -{ return iw8::parser::make_ASSIGN_ADD(ctx->loc); } +#line 138 "lexer.lpp" +{ return iw8::parser::make_LESS(ctx->loc); } YY_BREAK case 82: YY_RULE_SETUP -#line 137 "lexer.lpp" -{ return iw8::parser::make_ASSIGN_SUB(ctx->loc); } +#line 139 "lexer.lpp" +{ return iw8::parser::make_GREATER(ctx->loc); } YY_BREAK case 83: YY_RULE_SETUP -#line 138 "lexer.lpp" -{ return iw8::parser::make_ASSIGN_MUL(ctx->loc); } +#line 140 "lexer.lpp" +{ return iw8::parser::make_ASSIGN_ADD(ctx->loc); } YY_BREAK case 84: YY_RULE_SETUP -#line 139 "lexer.lpp" -{ return iw8::parser::make_ASSIGN_DIV(ctx->loc); } +#line 141 "lexer.lpp" +{ return iw8::parser::make_ASSIGN_SUB(ctx->loc); } YY_BREAK case 85: YY_RULE_SETUP -#line 140 "lexer.lpp" -{ return iw8::parser::make_ASSIGN_MOD(ctx->loc); } +#line 142 "lexer.lpp" +{ return iw8::parser::make_ASSIGN_MUL(ctx->loc); } YY_BREAK case 86: YY_RULE_SETUP -#line 141 "lexer.lpp" -{ return iw8::parser::make_ASSIGN_BW_OR(ctx->loc); } +#line 143 "lexer.lpp" +{ return iw8::parser::make_ASSIGN_DIV(ctx->loc); } YY_BREAK case 87: YY_RULE_SETUP -#line 142 "lexer.lpp" -{ return iw8::parser::make_ASSIGN_BW_AND(ctx->loc); } +#line 144 "lexer.lpp" +{ return iw8::parser::make_ASSIGN_MOD(ctx->loc); } YY_BREAK case 88: YY_RULE_SETUP -#line 143 "lexer.lpp" -{ return iw8::parser::make_ASSIGN_BW_EXOR(ctx->loc); } +#line 145 "lexer.lpp" +{ return iw8::parser::make_ASSIGN_BW_OR(ctx->loc); } YY_BREAK case 89: YY_RULE_SETUP -#line 144 "lexer.lpp" -{ return iw8::parser::make_ASSIGN(ctx->loc); } +#line 146 "lexer.lpp" +{ return iw8::parser::make_ASSIGN_BW_AND(ctx->loc); } YY_BREAK case 90: YY_RULE_SETUP -#line 145 "lexer.lpp" -{ return iw8::parser::make_ADD(ctx->loc); } +#line 147 "lexer.lpp" +{ return iw8::parser::make_ASSIGN_BW_EXOR(ctx->loc); } YY_BREAK case 91: YY_RULE_SETUP -#line 146 "lexer.lpp" -{ return iw8::parser::make_SUB(ctx->loc); } +#line 148 "lexer.lpp" +{ return iw8::parser::make_ASSIGN(ctx->loc); } YY_BREAK case 92: YY_RULE_SETUP -#line 147 "lexer.lpp" -{ return iw8::parser::make_MUL(ctx->loc); } +#line 149 "lexer.lpp" +{ return iw8::parser::make_ADD(ctx->loc); } YY_BREAK case 93: YY_RULE_SETUP -#line 148 "lexer.lpp" -{ return iw8::parser::make_DIV(ctx->loc); } +#line 150 "lexer.lpp" +{ return iw8::parser::make_SUB(ctx->loc); } YY_BREAK case 94: YY_RULE_SETUP -#line 149 "lexer.lpp" -{ return iw8::parser::make_MOD(ctx->loc); } +#line 151 "lexer.lpp" +{ return iw8::parser::make_MUL(ctx->loc); } YY_BREAK case 95: YY_RULE_SETUP -#line 150 "lexer.lpp" -{ return iw8::parser::make_NOT(ctx->loc); } +#line 152 "lexer.lpp" +{ return iw8::parser::make_DIV(ctx->loc); } YY_BREAK case 96: YY_RULE_SETUP -#line 151 "lexer.lpp" -{ return iw8::parser::make_COMPLEMENT(ctx->loc); } +#line 153 "lexer.lpp" +{ return iw8::parser::make_MOD(ctx->loc); } YY_BREAK case 97: YY_RULE_SETUP -#line 152 "lexer.lpp" -{ return iw8::parser::make_BITWISE_OR(ctx->loc); } +#line 154 "lexer.lpp" +{ return iw8::parser::make_NOT(ctx->loc); } YY_BREAK case 98: YY_RULE_SETUP -#line 153 "lexer.lpp" -{ return iw8::parser::make_BITWISE_AND(ctx->loc); } +#line 155 "lexer.lpp" +{ return iw8::parser::make_COMPLEMENT(ctx->loc); } YY_BREAK case 99: YY_RULE_SETUP -#line 154 "lexer.lpp" -{ return iw8::parser::make_BITWISE_EXOR(ctx->loc); } +#line 156 "lexer.lpp" +{ return iw8::parser::make_BITWISE_OR(ctx->loc); } YY_BREAK case 100: YY_RULE_SETUP -#line 155 "lexer.lpp" -{ return iw8::parser::make_PATH(xsk::utils::string::fordslash(yytext), ctx->loc); } +#line 157 "lexer.lpp" +{ return iw8::parser::make_BITWISE_AND(ctx->loc); } YY_BREAK case 101: YY_RULE_SETUP -#line 156 "lexer.lpp" -{ return iw8::parser::make_IDENTIFIER((std::string(yytext, 3) == "_ID") ? std::string(yytext) : xsk::utils::string::to_lower(yytext), ctx->loc); } +#line 158 "lexer.lpp" +{ return iw8::parser::make_BITWISE_EXOR(ctx->loc); } YY_BREAK case 102: -/* rule 102 can match eol */ -YY_RULE_SETUP -#line 157 "lexer.lpp" -{ return iw8::parser::make_ISTRING(std::string(yytext).substr(1), ctx->loc); } - YY_BREAK -case 103: -/* rule 103 can match eol */ -YY_RULE_SETUP -#line 158 "lexer.lpp" -{ return iw8::parser::make_STRING(std::string(yytext), ctx->loc); } - YY_BREAK -case 104: YY_RULE_SETUP #line 159 "lexer.lpp" -{ return iw8::parser::make_COLOR(std::string(yytext).substr(1), ctx->loc); } +{ return iw8::parser::make_PATH(xsk::utils::string::fordslash(yytext), ctx->loc); } YY_BREAK -case 105: +case 103: YY_RULE_SETUP #line 160 "lexer.lpp" -{ return iw8::parser::make_FLOAT(std::string(yytext), ctx->loc); } +{ return iw8::parser::make_IDENTIFIER((std::string(yytext, 3) == "_ID") ? std::string(yytext) : xsk::utils::string::to_lower(yytext), ctx->loc); } + YY_BREAK +case 104: +/* rule 104 can match eol */ +YY_RULE_SETUP +#line 161 "lexer.lpp" +{ return iw8::parser::make_ISTRING(std::string(yytext).substr(1), ctx->loc); } + YY_BREAK +case 105: +/* rule 105 can match eol */ +YY_RULE_SETUP +#line 162 "lexer.lpp" +{ return iw8::parser::make_STRING(std::string(yytext), ctx->loc); } YY_BREAK case 106: YY_RULE_SETUP -#line 161 "lexer.lpp" -{ return iw8::parser::make_INT_OCT(xsk::utils::string::oct_to_dec(yytext), ctx->loc); } +#line 163 "lexer.lpp" +{ return iw8::parser::make_COLOR(std::string(yytext).substr(1), ctx->loc); } YY_BREAK case 107: YY_RULE_SETUP -#line 162 "lexer.lpp" -{ return iw8::parser::make_INT_BIN(xsk::utils::string::bin_to_dec(yytext), ctx->loc); } +#line 164 "lexer.lpp" +{ return iw8::parser::make_FLOAT(std::string(yytext), ctx->loc); } YY_BREAK case 108: YY_RULE_SETUP -#line 163 "lexer.lpp" -{ return iw8::parser::make_INT_HEX(xsk::utils::string::hex_to_dec(yytext), ctx->loc); } +#line 165 "lexer.lpp" +{ return iw8::parser::make_INT_OCT(xsk::utils::string::oct_to_dec(yytext), ctx->loc); } YY_BREAK case 109: YY_RULE_SETUP -#line 164 "lexer.lpp" -{ return iw8::parser::make_INT_DEC(std::string(yytext), ctx->loc); } - YY_BREAK -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(COMMENT_BLOCK_STATE): -case YY_STATE_EOF(DEVBLOCK_ON_STATE): -case YY_STATE_EOF(DEVBLOCK_OFF_STATE): -#line 165 "lexer.lpp" -{ if(ctx->header_top > 0) iw8_pop_header(ctx); else return iw8::parser::make_IW8EOF(ctx->loc); } +#line 166 "lexer.lpp" +{ return iw8::parser::make_INT_BIN(xsk::utils::string::bin_to_dec(yytext), ctx->loc); } YY_BREAK case 110: -/* rule 110 can match eol */ YY_RULE_SETUP -#line 166 "lexer.lpp" -{ throw iw8::parser::syntax_error(ctx->loc, "bad token: \'" + std::string(yytext) + "\'"); } +#line 167 "lexer.lpp" +{ return iw8::parser::make_INT_HEX(xsk::utils::string::hex_to_dec(yytext), ctx->loc); } YY_BREAK case 111: YY_RULE_SETUP #line 168 "lexer.lpp" +{ return iw8::parser::make_INT_DEC(std::string(yytext), ctx->loc); } + YY_BREAK +case YY_STATE_EOF(INITIAL): +#line 169 "lexer.lpp" +{ if(ctx->header_top > 0) iw8_pop_header(ctx); else return iw8::parser::make_IW8EOF(ctx->loc); } + YY_BREAK +case 112: +/* rule 112 can match eol */ +YY_RULE_SETUP +#line 170 "lexer.lpp" +{ throw iw8::parser::syntax_error(ctx->loc, "bad token: \'" + std::string(yytext) + "\'"); } + YY_BREAK +case 113: +YY_RULE_SETUP +#line 172 "lexer.lpp" ECHO; YY_BREAK -#line 1841 "lexer.cpp" +#line 1862 "lexer.cpp" case YY_END_OF_BUFFER: { @@ -2136,7 +2157,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 >= 343 ) + if ( yy_current_state >= 346 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2165,11 +2186,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 >= 343 ) + if ( yy_current_state >= 346 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 342); + yy_is_jam = (yy_current_state == 345); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -2968,7 +2989,7 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 168 "lexer.lpp" +#line 172 "lexer.lpp" void iw8_push_header(xsk::gsc::context* ctx, const std::string& file) diff --git a/src/iw8/xsk/lexer.hpp b/src/iw8/xsk/lexer.hpp index 8ecfd5d8..28cd4dc7 100644 --- a/src/iw8/xsk/lexer.hpp +++ b/src/iw8/xsk/lexer.hpp @@ -439,9 +439,9 @@ void yyfree ( void * , yyscan_t yyscanner ); #ifdef YY_HEADER_EXPORT_START_CONDITIONS #define INITIAL 0 -#define COMMENT_BLOCK_STATE 1 -#define DEVBLOCK_ON_STATE 2 -#define DEVBLOCK_OFF_STATE 3 +#define COMMENT_STATE 1 +#define DEV_OFF_STATE 2 +#define DEV_ON_STATE 3 #endif @@ -703,7 +703,7 @@ extern int yylex (yyscan_t yyscanner); #undef yyTABLES_NAME #endif -#line 168 "lexer.lpp" +#line 172 "lexer.lpp" #line 709 "lexer.hpp" diff --git a/src/iw8/xsk/parser.cpp b/src/iw8/xsk/parser.cpp index 56dac619..037245f8 100644 --- a/src/iw8/xsk/parser.cpp +++ b/src/iw8/xsk/parser.cpp @@ -450,6 +450,7 @@ namespace xsk { namespace gsc { namespace iw8 { value.YY_MOVE_OR_COPY< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.YY_MOVE_OR_COPY< ast::stmt_list::ptr > (YY_MOVE (that.value)); @@ -761,6 +762,7 @@ namespace xsk { namespace gsc { namespace iw8 { value.move< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (YY_MOVE (that.value)); @@ -1072,6 +1074,7 @@ namespace xsk { namespace gsc { namespace iw8 { value.copy< ast::stmt_ifelse::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.copy< ast::stmt_list::ptr > (that.value); @@ -1382,6 +1385,7 @@ namespace xsk { namespace gsc { namespace iw8 { value.move< ast::stmt_ifelse::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (that.value); @@ -1947,6 +1951,7 @@ namespace xsk { namespace gsc { namespace iw8 { yylhs.value.emplace< ast::stmt_ifelse::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list yylhs.value.emplace< ast::stmt_list::ptr > (); @@ -2030,1315 +2035,1345 @@ namespace xsk { namespace gsc { namespace iw8 { switch (yyn) { case 2: // root: program -#line 255 "parser.ypp" +#line 258 "parser.ypp" { ast = std::move(yystack_[0].value.as < ast::program::ptr > ()); } -#line 2036 "parser.cpp" +#line 2041 "parser.cpp" break; case 3: // root: %empty -#line 256 "parser.ypp" +#line 259 "parser.ypp" { ast = std::make_unique(yylhs.location); } -#line 2042 "parser.cpp" +#line 2047 "parser.cpp" break; case 4: // program: program inline -#line 261 "parser.ypp" +#line 264 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); } -#line 2048 "parser.cpp" +#line 2053 "parser.cpp" break; case 5: // program: program include -#line 263 "parser.ypp" +#line 266 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 2054 "parser.cpp" +#line 2059 "parser.cpp" break; case 6: // program: program declaration -#line 265 "parser.ypp" +#line 268 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2060 "parser.cpp" +#line 2065 "parser.cpp" break; case 7: // program: inline -#line 267 "parser.ypp" +#line 270 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); } -#line 2066 "parser.cpp" +#line 2071 "parser.cpp" break; case 8: // program: include -#line 269 "parser.ypp" +#line 272 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 2072 "parser.cpp" +#line 2077 "parser.cpp" break; case 9: // program: declaration -#line 271 "parser.ypp" +#line 274 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2078 "parser.cpp" +#line 2083 "parser.cpp" break; case 10: // inline: "#inline" expr_path ";" -#line 275 "parser.ypp" +#line 278 "parser.ypp" { iw8_push_header(ctx, yystack_[1].value.as < ast::expr_path::ptr > ()->value); } -#line 2084 "parser.cpp" +#line 2089 "parser.cpp" break; case 11: // include: "#include" expr_path ";" -#line 280 "parser.ypp" +#line 283 "parser.ypp" { yylhs.value.as < ast::include::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_path::ptr > ())); } -#line 2090 "parser.cpp" +#line 2095 "parser.cpp" break; - case 12: // declaration: decl_usingtree -#line 284 "parser.ypp" + case 12: // declaration: "/#" +#line 287 "parser.ypp" + { yylhs.value.as < ast::decl > ().as_dev_begin = std::make_unique(yylhs.location); } +#line 2101 "parser.cpp" + break; + + case 13: // declaration: "#/" +#line 288 "parser.ypp" + { yylhs.value.as < ast::decl > ().as_dev_end = std::make_unique(yylhs.location); } +#line 2107 "parser.cpp" + break; + + case 14: // declaration: decl_usingtree +#line 289 "parser.ypp" { yylhs.value.as < ast::decl > ().as_usingtree = std::move(yystack_[0].value.as < ast::decl_usingtree::ptr > ()); } -#line 2096 "parser.cpp" +#line 2113 "parser.cpp" break; - case 13: // declaration: decl_constant -#line 285 "parser.ypp" + case 15: // declaration: decl_constant +#line 290 "parser.ypp" { yylhs.value.as < ast::decl > ().as_constant = std::move(yystack_[0].value.as < ast::decl_constant::ptr > ()); } -#line 2102 "parser.cpp" +#line 2119 "parser.cpp" break; - case 14: // declaration: decl_thread -#line 286 "parser.ypp" - { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } -#line 2108 "parser.cpp" - break; - - case 15: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" + case 16: // declaration: decl_thread #line 291 "parser.ypp" - { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_usingtree::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_string::ptr > ())); } -#line 2114 "parser.cpp" + { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } +#line 2125 "parser.cpp" break; - case 16: // decl_constant: expr_identifier "=" expr ";" + case 17: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" #line 296 "parser.ypp" - { yylhs.value.as < ast::decl_constant::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2120 "parser.cpp" + { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_usingtree::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_string::ptr > ())); } +#line 2131 "parser.cpp" break; - case 17: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block + case 18: // decl_constant: expr_identifier "=" expr ";" #line 301 "parser.ypp" - { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_thread::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2126 "parser.cpp" + { yylhs.value.as < ast::decl_constant::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } +#line 2137 "parser.cpp" break; - case 18: // stmt: stmt_block -#line 305 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } -#line 2132 "parser.cpp" - break; - - case 19: // stmt: stmt_call + case 19: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block #line 306 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } -#line 2138 "parser.cpp" + { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_thread::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } +#line 2143 "parser.cpp" break; - case 20: // stmt: stmt_assign -#line 307 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } -#line 2144 "parser.cpp" - break; - - case 21: // stmt: stmt_endon -#line 308 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } -#line 2150 "parser.cpp" - break; - - case 22: // stmt: stmt_notify -#line 309 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } -#line 2156 "parser.cpp" - break; - - case 23: // stmt: stmt_wait + case 20: // stmt: stmt_dev #line 310 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } -#line 2162 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } +#line 2149 "parser.cpp" break; - case 24: // stmt: stmt_waittill + case 21: // stmt: stmt_block #line 311 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } -#line 2168 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } +#line 2155 "parser.cpp" break; - case 25: // stmt: stmt_waittillmatch + case 22: // stmt: stmt_call #line 312 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } -#line 2174 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } +#line 2161 "parser.cpp" break; - case 26: // stmt: stmt_waittillframeend + case 23: // stmt: stmt_assign #line 313 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } -#line 2180 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } +#line 2167 "parser.cpp" break; - case 27: // stmt: stmt_waitframe + case 24: // stmt: stmt_endon #line 314 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waitframe = std::move(yystack_[0].value.as < ast::stmt_waitframe::ptr > ()); } -#line 2186 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } +#line 2173 "parser.cpp" break; - case 28: // stmt: stmt_if + case 25: // stmt: stmt_notify #line 315 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } -#line 2192 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } +#line 2179 "parser.cpp" break; - case 29: // stmt: stmt_ifelse + case 26: // stmt: stmt_wait #line 316 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } -#line 2198 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } +#line 2185 "parser.cpp" break; - case 30: // stmt: stmt_while + case 27: // stmt: stmt_waittill #line 317 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } -#line 2204 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } +#line 2191 "parser.cpp" break; - case 31: // stmt: stmt_dowhile + case 28: // stmt: stmt_waittillmatch #line 318 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } -#line 2210 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } +#line 2197 "parser.cpp" break; - case 32: // stmt: stmt_for + case 29: // stmt: stmt_waittillframeend #line 319 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } -#line 2216 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } +#line 2203 "parser.cpp" break; - case 33: // stmt: stmt_foreach + case 30: // stmt: stmt_waitframe #line 320 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } -#line 2222 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waitframe = std::move(yystack_[0].value.as < ast::stmt_waitframe::ptr > ()); } +#line 2209 "parser.cpp" break; - case 34: // stmt: stmt_switch + case 31: // stmt: stmt_if #line 321 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } -#line 2228 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } +#line 2215 "parser.cpp" break; - case 35: // stmt: stmt_case + case 32: // stmt: stmt_ifelse #line 322 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } -#line 2234 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } +#line 2221 "parser.cpp" break; - case 36: // stmt: stmt_default + case 33: // stmt: stmt_while #line 323 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } -#line 2240 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } +#line 2227 "parser.cpp" break; - case 37: // stmt: stmt_break + case 34: // stmt: stmt_dowhile #line 324 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } -#line 2246 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } +#line 2233 "parser.cpp" break; - case 38: // stmt: stmt_continue + case 35: // stmt: stmt_for #line 325 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } -#line 2252 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } +#line 2239 "parser.cpp" break; - case 39: // stmt: stmt_return + case 36: // stmt: stmt_foreach #line 326 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } -#line 2258 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } +#line 2245 "parser.cpp" break; - case 40: // stmt: stmt_breakpoint + case 37: // stmt: stmt_switch #line 327 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } -#line 2264 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } +#line 2251 "parser.cpp" break; - case 41: // stmt: stmt_prof_begin + case 38: // stmt: stmt_case #line 328 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } -#line 2270 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } +#line 2257 "parser.cpp" break; - case 42: // stmt: stmt_prof_end + case 39: // stmt: stmt_default #line 329 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } -#line 2276 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } +#line 2263 "parser.cpp" break; - case 43: // stmt_block: "{" stmt_list "}" + case 40: // stmt: stmt_break +#line 330 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } +#line 2269 "parser.cpp" + break; + + case 41: // stmt: stmt_continue +#line 331 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } +#line 2275 "parser.cpp" + break; + + case 42: // stmt: stmt_return +#line 332 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } +#line 2281 "parser.cpp" + break; + + case 43: // stmt: stmt_breakpoint #line 333 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } -#line 2282 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } +#line 2287 "parser.cpp" break; - case 44: // stmt_block: "{" "}" + case 44: // stmt: stmt_prof_begin #line 334 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } -#line 2288 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } +#line 2293 "parser.cpp" break; - case 45: // stmt_list: stmt_list stmt + case 45: // stmt: stmt_prof_end +#line 335 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } +#line 2299 "parser.cpp" + break; + + case 46: // stmt_dev: "/#" stmt_list "#/" #line 339 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2294 "parser.cpp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } +#line 2305 "parser.cpp" break; - case 46: // stmt_list: stmt -#line 341 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2300 "parser.cpp" + case 47: // stmt_dev: "/#" "#/" +#line 340 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } +#line 2311 "parser.cpp" break; - case 47: // stmt_expr: expr_assign -#line 346 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2306 "parser.cpp" + case 48: // stmt_block: "{" stmt_list "}" +#line 344 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } +#line 2317 "parser.cpp" break; - case 48: // stmt_expr: expr_increment -#line 348 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2312 "parser.cpp" + case 49: // stmt_block: "{" "}" +#line 345 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } +#line 2323 "parser.cpp" break; - case 49: // stmt_expr: expr_decrement + case 50: // stmt_list: stmt_list stmt #line 350 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2318 "parser.cpp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2329 "parser.cpp" break; - case 50: // stmt_expr: %empty + case 51: // stmt_list: stmt #line 352 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2324 "parser.cpp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2335 "parser.cpp" break; - case 51: // stmt_call: expr_call ";" + case 52: // stmt_expr: expr_assign #line 357 "parser.ypp" - { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } -#line 2330 "parser.cpp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2341 "parser.cpp" break; - case 52: // stmt_call: expr_method ";" + case 53: // stmt_expr: expr_increment #line 359 "parser.ypp" - { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_method::ptr > ()))); } -#line 2336 "parser.cpp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2347 "parser.cpp" break; - case 53: // stmt_assign: expr_assign ";" -#line 364 "parser.ypp" - { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2342 "parser.cpp" + case 54: // stmt_expr: expr_decrement +#line 361 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2353 "parser.cpp" break; - case 54: // stmt_assign: expr_increment ";" -#line 366 "parser.ypp" - { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2348 "parser.cpp" + case 55: // stmt_expr: %empty +#line 363 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } +#line 2359 "parser.cpp" break; - case 55: // stmt_assign: expr_decrement ";" + case 56: // stmt_call: expr_call ";" #line 368 "parser.ypp" + { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } +#line 2365 "parser.cpp" + break; + + case 57: // stmt_call: expr_method ";" +#line 370 "parser.ypp" + { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_method::ptr > ()))); } +#line 2371 "parser.cpp" + break; + + case 58: // stmt_assign: expr_assign ";" +#line 375 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2354 "parser.cpp" +#line 2377 "parser.cpp" break; - case 56: // stmt_endon: expr_object "endon" "(" expr ")" ";" -#line 373 "parser.ypp" + case 59: // stmt_assign: expr_increment ";" +#line 377 "parser.ypp" + { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 2383 "parser.cpp" + break; + + case 60: // stmt_assign: expr_decrement ";" +#line 379 "parser.ypp" + { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 2389 "parser.cpp" + break; + + case 61: // stmt_endon: expr_object "endon" "(" expr ")" ";" +#line 384 "parser.ypp" { yylhs.value.as < ast::stmt_endon::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ())); } -#line 2360 "parser.cpp" +#line 2395 "parser.cpp" break; - case 57: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" -#line 378 "parser.ypp" + case 62: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" +#line 389 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2366 "parser.cpp" +#line 2401 "parser.cpp" break; - case 58: // stmt_notify: expr_object "notify" "(" expr ")" ";" -#line 380 "parser.ypp" + case 63: // stmt_notify: expr_object "notify" "(" expr ")" ";" +#line 391 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2372 "parser.cpp" +#line 2407 "parser.cpp" break; - case 59: // stmt_wait: "wait" expr ";" -#line 385 "parser.ypp" + case 64: // stmt_wait: "wait" expr ";" +#line 396 "parser.ypp" { yylhs.value.as < ast::stmt_wait::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2378 "parser.cpp" +#line 2413 "parser.cpp" break; - case 60: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" -#line 390 "parser.ypp" + case 65: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" +#line 401 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2384 "parser.cpp" +#line 2419 "parser.cpp" break; - case 61: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" -#line 392 "parser.ypp" + case 66: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" +#line 403 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2390 "parser.cpp" +#line 2425 "parser.cpp" break; - case 62: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" -#line 397 "parser.ypp" + case 67: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" +#line 408 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2396 "parser.cpp" +#line 2431 "parser.cpp" break; - case 63: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" -#line 399 "parser.ypp" + case 68: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" +#line 410 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2402 "parser.cpp" +#line 2437 "parser.cpp" break; - case 64: // stmt_waittillframeend: "waittillframeend" ";" -#line 404 "parser.ypp" + case 69: // stmt_waittillframeend: "waittillframeend" ";" +#line 415 "parser.ypp" { yylhs.value.as < ast::stmt_waittillframeend::ptr > () = std::make_unique(yylhs.location); } -#line 2408 "parser.cpp" +#line 2443 "parser.cpp" break; - case 65: // stmt_waitframe: "waitframe" ";" -#line 409 "parser.ypp" + case 70: // stmt_waitframe: "waitframe" ";" +#line 420 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } -#line 2414 "parser.cpp" +#line 2449 "parser.cpp" break; - case 66: // stmt_waitframe: "waitframe" "(" ")" ";" -#line 411 "parser.ypp" + case 71: // stmt_waitframe: "waitframe" "(" ")" ";" +#line 422 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } -#line 2420 "parser.cpp" +#line 2455 "parser.cpp" break; - case 67: // stmt_if: "if" "(" expr ")" stmt -#line 416 "parser.ypp" + case 72: // stmt_if: "if" "(" expr ")" stmt +#line 427 "parser.ypp" { yylhs.value.as < ast::stmt_if::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2426 "parser.cpp" +#line 2461 "parser.cpp" break; - case 68: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 421 "parser.ypp" + case 73: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 432 "parser.ypp" { yylhs.value.as < ast::stmt_ifelse::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::stmt > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2432 "parser.cpp" +#line 2467 "parser.cpp" break; - case 69: // stmt_while: "while" "(" expr ")" stmt -#line 426 "parser.ypp" + case 74: // stmt_while: "while" "(" expr ")" stmt +#line 437 "parser.ypp" { yylhs.value.as < ast::stmt_while::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2438 "parser.cpp" +#line 2473 "parser.cpp" break; - case 70: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" -#line 431 "parser.ypp" + case 75: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" +#line 442 "parser.ypp" { yylhs.value.as < ast::stmt_dowhile::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[5].value.as < ast::stmt > ())); } -#line 2444 "parser.cpp" +#line 2479 "parser.cpp" break; - case 71: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt -#line 436 "parser.ypp" + case 76: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt +#line 447 "parser.ypp" { yylhs.value.as < ast::stmt_for::ptr > () = std::make_unique(yylhs.location, ast::stmt(std::move(yystack_[6].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[4].value.as < ast::expr > ()), ast::stmt(std::move(yystack_[2].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2450 "parser.cpp" +#line 2485 "parser.cpp" break; - case 72: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt -#line 441 "parser.ypp" + case 77: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt +#line 452 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2456 "parser.cpp" +#line 2491 "parser.cpp" break; - case 73: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt -#line 443 "parser.ypp" + case 78: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt +#line 454 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[6].value.as < ast::expr_identifier::ptr > ())), ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2462 "parser.cpp" +#line 2497 "parser.cpp" break; - case 74: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 448 "parser.ypp" + case 79: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 459 "parser.ypp" { yylhs.value.as < ast::stmt_switch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2468 "parser.cpp" +#line 2503 "parser.cpp" break; - case 75: // stmt_case: "case" expr_integer ":" -#line 453 "parser.ypp" + case 80: // stmt_case: "case" expr_integer ":" +#line 464 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_integer::ptr > ())), std::make_unique(yylhs.location)); } -#line 2474 "parser.cpp" +#line 2509 "parser.cpp" break; - case 76: // stmt_case: "case" expr_string ":" -#line 455 "parser.ypp" + case 81: // stmt_case: "case" expr_string ":" +#line 466 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_string::ptr > ())), std::make_unique(yylhs.location)); } -#line 2480 "parser.cpp" +#line 2515 "parser.cpp" break; - case 77: // stmt_default: "default" ":" -#line 460 "parser.ypp" + case 82: // stmt_default: "default" ":" +#line 471 "parser.ypp" { yylhs.value.as < ast::stmt_default::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2486 "parser.cpp" +#line 2521 "parser.cpp" break; - case 78: // stmt_break: "break" ";" -#line 465 "parser.ypp" + case 83: // stmt_break: "break" ";" +#line 476 "parser.ypp" { yylhs.value.as < ast::stmt_break::ptr > () = std::make_unique(yylhs.location); } -#line 2492 "parser.cpp" +#line 2527 "parser.cpp" break; - case 79: // stmt_continue: "continue" ";" -#line 470 "parser.ypp" + case 84: // stmt_continue: "continue" ";" +#line 481 "parser.ypp" { yylhs.value.as < ast::stmt_continue::ptr > () = std::make_unique(yylhs.location); } -#line 2498 "parser.cpp" +#line 2533 "parser.cpp" break; - case 80: // stmt_return: "return" expr ";" -#line 475 "parser.ypp" + case 85: // stmt_return: "return" expr ";" +#line 486 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2504 "parser.cpp" +#line 2539 "parser.cpp" break; - case 81: // stmt_return: "return" ";" -#line 477 "parser.ypp" + case 86: // stmt_return: "return" ";" +#line 488 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2510 "parser.cpp" +#line 2545 "parser.cpp" break; - case 82: // stmt_breakpoint: "breakpoint" ";" -#line 482 "parser.ypp" + case 87: // stmt_breakpoint: "breakpoint" ";" +#line 493 "parser.ypp" { yylhs.value.as < ast::stmt_breakpoint::ptr > () = std::make_unique(yylhs.location); } -#line 2516 "parser.cpp" +#line 2551 "parser.cpp" break; - case 83: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 487 "parser.ypp" - { yylhs.value.as < ast::stmt_prof_begin::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2522 "parser.cpp" - break; - - case 84: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 492 "parser.ypp" - { yylhs.value.as < ast::stmt_prof_end::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2528 "parser.cpp" - break; - - case 85: // expr: expr_ternary -#line 496 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2534 "parser.cpp" - break; - - case 86: // expr: expr_binary -#line 497 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2540 "parser.cpp" - break; - - case 87: // expr: expr_primitive + case 88: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" #line 498 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2546 "parser.cpp" + { yylhs.value.as < ast::stmt_prof_begin::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } +#line 2557 "parser.cpp" break; - case 88: // expr_or_empty: expr -#line 502 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2552 "parser.cpp" - break; - - case 89: // expr_or_empty: %empty + case 89: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" #line 503 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } -#line 2558 "parser.cpp" + { yylhs.value.as < ast::stmt_prof_end::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } +#line 2563 "parser.cpp" break; - case 90: // expr_assign: expr_object "=" expr + case 90: // expr: expr_ternary +#line 507 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2569 "parser.cpp" + break; + + case 91: // expr: expr_binary #line 508 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2564 "parser.cpp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2575 "parser.cpp" break; - case 91: // expr_assign: expr_object "|=" expr -#line 510 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2570 "parser.cpp" + case 92: // expr: expr_primitive +#line 509 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2581 "parser.cpp" break; - case 92: // expr_assign: expr_object "&=" expr -#line 512 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2576 "parser.cpp" + case 93: // expr_or_empty: expr +#line 513 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2587 "parser.cpp" break; - case 93: // expr_assign: expr_object "^=" expr + case 94: // expr_or_empty: %empty #line 514 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } +#line 2593 "parser.cpp" + break; + + case 95: // expr_assign: expr_object "=" expr +#line 519 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2599 "parser.cpp" + break; + + case 96: // expr_assign: expr_object "|=" expr +#line 521 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2605 "parser.cpp" + break; + + case 97: // expr_assign: expr_object "&=" expr +#line 523 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2611 "parser.cpp" + break; + + case 98: // expr_assign: expr_object "^=" expr +#line 525 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2582 "parser.cpp" +#line 2617 "parser.cpp" break; - case 94: // expr_assign: expr_object "<<=" expr -#line 516 "parser.ypp" + case 99: // expr_assign: expr_object "<<=" expr +#line 527 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()),std::move( yystack_[0].value.as < ast::expr > ())); } -#line 2588 "parser.cpp" +#line 2623 "parser.cpp" break; - case 95: // expr_assign: expr_object ">>=" expr -#line 518 "parser.ypp" + case 100: // expr_assign: expr_object ">>=" expr +#line 529 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2594 "parser.cpp" +#line 2629 "parser.cpp" break; - case 96: // expr_assign: expr_object "+=" expr -#line 520 "parser.ypp" + case 101: // expr_assign: expr_object "+=" expr +#line 531 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2600 "parser.cpp" +#line 2635 "parser.cpp" break; - case 97: // expr_assign: expr_object "-=" expr -#line 522 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2606 "parser.cpp" - break; - - case 98: // expr_assign: expr_object "*=" expr -#line 524 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2612 "parser.cpp" - break; - - case 99: // expr_assign: expr_object "/=" expr -#line 526 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2618 "parser.cpp" - break; - - case 100: // expr_assign: expr_object "%=" expr -#line 528 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2624 "parser.cpp" - break; - - case 101: // expr_increment: "++" expr_object + case 102: // expr_assign: expr_object "-=" expr #line 533 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2630 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2641 "parser.cpp" break; - case 102: // expr_increment: expr_object "++" + case 103: // expr_assign: expr_object "*=" expr #line 535 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2647 "parser.cpp" + break; + + case 104: // expr_assign: expr_object "/=" expr +#line 537 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2653 "parser.cpp" + break; + + case 105: // expr_assign: expr_object "%=" expr +#line 539 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2659 "parser.cpp" + break; + + case 106: // expr_increment: "++" expr_object +#line 544 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } +#line 2665 "parser.cpp" + break; + + case 107: // expr_increment: expr_object "++" +#line 546 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2636 "parser.cpp" +#line 2671 "parser.cpp" break; - case 103: // expr_decrement: "--" expr_object -#line 540 "parser.ypp" + case 108: // expr_decrement: "--" expr_object +#line 551 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2642 "parser.cpp" +#line 2677 "parser.cpp" break; - case 104: // expr_decrement: expr_object "--" -#line 542 "parser.ypp" + case 109: // expr_decrement: expr_object "--" +#line 553 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2648 "parser.cpp" +#line 2683 "parser.cpp" break; - case 105: // expr_ternary: expr "?" expr ":" expr -#line 547 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2654 "parser.cpp" - break; - - case 106: // expr_binary: expr "||" expr -#line 552 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2660 "parser.cpp" - break; - - case 107: // expr_binary: expr "&&" expr -#line 554 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2666 "parser.cpp" - break; - - case 108: // expr_binary: expr "==" expr -#line 556 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2672 "parser.cpp" - break; - - case 109: // expr_binary: expr "!=" expr + case 110: // expr_ternary: expr "?" expr ":" expr #line 558 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2689 "parser.cpp" + break; + + case 111: // expr_binary: expr "||" expr +#line 563 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2695 "parser.cpp" + break; + + case 112: // expr_binary: expr "&&" expr +#line 565 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2701 "parser.cpp" + break; + + case 113: // expr_binary: expr "==" expr +#line 567 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2707 "parser.cpp" + break; + + case 114: // expr_binary: expr "!=" expr +#line 569 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2678 "parser.cpp" +#line 2713 "parser.cpp" break; - case 110: // expr_binary: expr "<=" expr -#line 560 "parser.ypp" + case 115: // expr_binary: expr "<=" expr +#line 571 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2684 "parser.cpp" +#line 2719 "parser.cpp" break; - case 111: // expr_binary: expr ">=" expr -#line 562 "parser.ypp" + case 116: // expr_binary: expr ">=" expr +#line 573 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2690 "parser.cpp" +#line 2725 "parser.cpp" break; - case 112: // expr_binary: expr "<" expr -#line 564 "parser.ypp" + case 117: // expr_binary: expr "<" expr +#line 575 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2696 "parser.cpp" +#line 2731 "parser.cpp" break; - case 113: // expr_binary: expr ">" expr -#line 566 "parser.ypp" + case 118: // expr_binary: expr ">" expr +#line 577 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2702 "parser.cpp" +#line 2737 "parser.cpp" break; - case 114: // expr_binary: expr "|" expr -#line 568 "parser.ypp" + case 119: // expr_binary: expr "|" expr +#line 579 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2708 "parser.cpp" +#line 2743 "parser.cpp" break; - case 115: // expr_binary: expr "&" expr -#line 570 "parser.ypp" + case 120: // expr_binary: expr "&" expr +#line 581 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2714 "parser.cpp" +#line 2749 "parser.cpp" break; - case 116: // expr_binary: expr "^" expr -#line 572 "parser.ypp" + case 121: // expr_binary: expr "^" expr +#line 583 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2720 "parser.cpp" +#line 2755 "parser.cpp" break; - case 117: // expr_binary: expr "<<" expr -#line 574 "parser.ypp" + case 122: // expr_binary: expr "<<" expr +#line 585 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2726 "parser.cpp" +#line 2761 "parser.cpp" break; - case 118: // expr_binary: expr ">>" expr -#line 576 "parser.ypp" + case 123: // expr_binary: expr ">>" expr +#line 587 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2732 "parser.cpp" +#line 2767 "parser.cpp" break; - case 119: // expr_binary: expr "+" expr -#line 578 "parser.ypp" + case 124: // expr_binary: expr "+" expr +#line 589 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2738 "parser.cpp" +#line 2773 "parser.cpp" break; - case 120: // expr_binary: expr "-" expr -#line 580 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2744 "parser.cpp" - break; - - case 121: // expr_binary: expr "*" expr -#line 582 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2750 "parser.cpp" - break; - - case 122: // expr_binary: expr "/" expr -#line 584 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2756 "parser.cpp" - break; - - case 123: // expr_binary: expr "%" expr -#line 586 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2762 "parser.cpp" - break; - - case 124: // expr_primitive: expr_complement -#line 590 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } -#line 2768 "parser.cpp" - break; - - case 125: // expr_primitive: expr_not + case 125: // expr_binary: expr "-" expr #line 591 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } -#line 2774 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2779 "parser.cpp" break; - case 126: // expr_primitive: expr_call -#line 592 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 2780 "parser.cpp" - break; - - case 127: // expr_primitive: expr_method + case 126: // expr_binary: expr "*" expr #line 593 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 2786 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2785 "parser.cpp" break; - case 128: // expr_primitive: expr_add_array -#line 594 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } -#line 2792 "parser.cpp" - break; - - case 129: // expr_primitive: expr_isdefined + case 127: // expr_binary: expr "/" expr #line 595 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_isdefined::ptr > ()); } -#line 2798 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2791 "parser.cpp" break; - case 130: // expr_primitive: expr_istrue -#line 596 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istrue::ptr > ()); } -#line 2804 "parser.cpp" - break; - - case 131: // expr_primitive: expr_reference + case 128: // expr_binary: expr "%" expr #line 597 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } -#line 2810 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2797 "parser.cpp" break; - case 132: // expr_primitive: expr_array -#line 598 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 2816 "parser.cpp" - break; - - case 133: // expr_primitive: expr_field -#line 599 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 2822 "parser.cpp" - break; - - case 134: // expr_primitive: expr_size -#line 600 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } -#line 2828 "parser.cpp" - break; - - case 135: // expr_primitive: expr_paren + case 129: // expr_primitive: expr_complement #line 601 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } -#line 2834 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } +#line 2803 "parser.cpp" break; - case 136: // expr_primitive: expr_thisthread + case 130: // expr_primitive: expr_not #line 602 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } -#line 2840 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } +#line 2809 "parser.cpp" break; - case 137: // expr_primitive: expr_empty_array + case 131: // expr_primitive: expr_call #line 603 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } -#line 2846 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 2815 "parser.cpp" break; - case 138: // expr_primitive: expr_undefined + case 132: // expr_primitive: expr_method #line 604 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } -#line 2852 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 2821 "parser.cpp" break; - case 139: // expr_primitive: expr_game + case 133: // expr_primitive: expr_add_array #line 605 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 2858 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } +#line 2827 "parser.cpp" break; - case 140: // expr_primitive: expr_self + case 134: // expr_primitive: expr_isdefined #line 606 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 2864 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_isdefined::ptr > ()); } +#line 2833 "parser.cpp" break; - case 141: // expr_primitive: expr_anim + case 135: // expr_primitive: expr_istrue #line 607 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 2870 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istrue::ptr > ()); } +#line 2839 "parser.cpp" break; - case 142: // expr_primitive: expr_level + case 136: // expr_primitive: expr_reference #line 608 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 2876 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } +#line 2845 "parser.cpp" break; - case 143: // expr_primitive: expr_animation + case 137: // expr_primitive: expr_array #line 609 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } -#line 2882 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 2851 "parser.cpp" break; - case 144: // expr_primitive: expr_animtree + case 138: // expr_primitive: expr_field #line 610 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } -#line 2888 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 2857 "parser.cpp" break; - case 145: // expr_primitive: expr_identifier + case 139: // expr_primitive: expr_size #line 611 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 2894 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } +#line 2863 "parser.cpp" break; - case 146: // expr_primitive: expr_istring + case 140: // expr_primitive: expr_paren #line 612 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } -#line 2900 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } +#line 2869 "parser.cpp" break; - case 147: // expr_primitive: expr_string + case 141: // expr_primitive: expr_thisthread #line 613 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } -#line 2906 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } +#line 2875 "parser.cpp" break; - case 148: // expr_primitive: expr_color + case 142: // expr_primitive: expr_empty_array #line 614 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } -#line 2912 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } +#line 2881 "parser.cpp" break; - case 149: // expr_primitive: expr_vector + case 143: // expr_primitive: expr_undefined #line 615 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } -#line 2918 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } +#line 2887 "parser.cpp" break; - case 150: // expr_primitive: expr_float + case 144: // expr_primitive: expr_game #line 616 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } -#line 2924 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 2893 "parser.cpp" break; - case 151: // expr_primitive: expr_integer + case 145: // expr_primitive: expr_self #line 617 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } -#line 2930 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 2899 "parser.cpp" break; - case 152: // expr_primitive: expr_false + case 146: // expr_primitive: expr_anim #line 618 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } -#line 2936 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 2905 "parser.cpp" break; - case 153: // expr_primitive: expr_true + case 147: // expr_primitive: expr_level #line 619 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } -#line 2942 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 2911 "parser.cpp" break; - case 154: // expr_complement: "~" expr + case 148: // expr_primitive: expr_animation +#line 620 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } +#line 2917 "parser.cpp" + break; + + case 149: // expr_primitive: expr_animtree +#line 621 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } +#line 2923 "parser.cpp" + break; + + case 150: // expr_primitive: expr_identifier +#line 622 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 2929 "parser.cpp" + break; + + case 151: // expr_primitive: expr_istring +#line 623 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } +#line 2935 "parser.cpp" + break; + + case 152: // expr_primitive: expr_string #line 624 "parser.ypp" - { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2948 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } +#line 2941 "parser.cpp" break; - case 155: // expr_not: "!" expr + case 153: // expr_primitive: expr_color +#line 625 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } +#line 2947 "parser.cpp" + break; + + case 154: // expr_primitive: expr_vector +#line 626 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } +#line 2953 "parser.cpp" + break; + + case 155: // expr_primitive: expr_float +#line 627 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } +#line 2959 "parser.cpp" + break; + + case 156: // expr_primitive: expr_integer +#line 628 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } +#line 2965 "parser.cpp" + break; + + case 157: // expr_primitive: expr_false #line 629 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } +#line 2971 "parser.cpp" + break; + + case 158: // expr_primitive: expr_true +#line 630 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } +#line 2977 "parser.cpp" + break; + + case 159: // expr_complement: "~" expr +#line 635 "parser.ypp" + { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2983 "parser.cpp" + break; + + case 160: // expr_not: "!" expr +#line 640 "parser.ypp" { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2954 "parser.cpp" +#line 2989 "parser.cpp" break; - case 156: // expr_call: expr_function -#line 633 "parser.ypp" + case 161: // expr_call: expr_function +#line 644 "parser.ypp" { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2960 "parser.cpp" +#line 2995 "parser.cpp" break; - case 157: // expr_call: expr_pointer -#line 634 "parser.ypp" - { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2966 "parser.cpp" - break; - - case 158: // expr_method: expr_object expr_function -#line 637 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2972 "parser.cpp" - break; - - case 159: // expr_method: expr_object expr_pointer -#line 638 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2978 "parser.cpp" - break; - - case 160: // expr_function: expr_identifier "(" expr_arguments ")" -#line 643 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2984 "parser.cpp" - break; - - case 161: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" + case 162: // expr_call: expr_pointer #line 645 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2990 "parser.cpp" + { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } +#line 3001 "parser.cpp" break; - case 162: // expr_function: "thread" expr_identifier "(" expr_arguments ")" -#line 647 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2996 "parser.cpp" + case 163: // expr_method: expr_object expr_function +#line 648 "parser.ypp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 3007 "parser.cpp" break; - case 163: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" + case 164: // expr_method: expr_object expr_pointer #line 649 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 3002 "parser.cpp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 3013 "parser.cpp" break; - case 164: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" -#line 651 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 3008 "parser.cpp" + case 165: // expr_function: expr_identifier "(" expr_arguments ")" +#line 654 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 3019 "parser.cpp" break; - case 165: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 653 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 3014 "parser.cpp" + case 166: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" +#line 656 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 3025 "parser.cpp" break; - case 166: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" + case 167: // expr_function: "thread" expr_identifier "(" expr_arguments ")" #line 658 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 3020 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 3031 "parser.cpp" break; - case 167: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 168: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" #line 660 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 3026 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 3037 "parser.cpp" break; - case 168: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 169: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" #line 662 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 3032 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 3043 "parser.cpp" break; - case 169: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 170: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" #line 664 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::builtin); } -#line 3038 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 3049 "parser.cpp" break; - case 170: // expr_add_array: "[" expr_arguments_no_empty "]" + case 171: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" #line 669 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 3055 "parser.cpp" + break; + + case 172: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 671 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 3061 "parser.cpp" + break; + + case 173: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 673 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 3067 "parser.cpp" + break; + + case 174: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 675 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::builtin); } +#line 3073 "parser.cpp" + break; + + case 175: // expr_add_array: "[" expr_arguments_no_empty "]" +#line 680 "parser.ypp" { yylhs.value.as < ast::expr_add_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ())); } -#line 3044 "parser.cpp" +#line 3079 "parser.cpp" break; - case 171: // expr_parameters: expr_parameters "," expr_identifier -#line 674 "parser.ypp" - { yylhs.value.as < ast::expr_parameters::ptr > () = std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3050 "parser.cpp" - break; - - case 172: // expr_parameters: expr_identifier -#line 676 "parser.ypp" - { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3056 "parser.cpp" - break; - - case 173: // expr_parameters: %empty -#line 678 "parser.ypp" - { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } -#line 3062 "parser.cpp" - break; - - case 174: // expr_arguments: expr_arguments_no_empty -#line 683 "parser.ypp" - { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } -#line 3068 "parser.cpp" - break; - - case 175: // expr_arguments: %empty + case 176: // expr_parameters: expr_parameters "," expr_identifier #line 685 "parser.ypp" + { yylhs.value.as < ast::expr_parameters::ptr > () = std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } +#line 3085 "parser.cpp" + break; + + case 177: // expr_parameters: expr_identifier +#line 687 "parser.ypp" + { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } +#line 3091 "parser.cpp" + break; + + case 178: // expr_parameters: %empty +#line 689 "parser.ypp" + { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } +#line 3097 "parser.cpp" + break; + + case 179: // expr_arguments: expr_arguments_no_empty +#line 694 "parser.ypp" + { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } +#line 3103 "parser.cpp" + break; + + case 180: // expr_arguments: %empty +#line 696 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); } -#line 3074 "parser.cpp" +#line 3109 "parser.cpp" break; - case 176: // expr_arguments_no_empty: expr_arguments "," expr -#line 690 "parser.ypp" + case 181: // expr_arguments_no_empty: expr_arguments "," expr +#line 701 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ()); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 3080 "parser.cpp" +#line 3115 "parser.cpp" break; - case 177: // expr_arguments_no_empty: expr -#line 692 "parser.ypp" + case 182: // expr_arguments_no_empty: expr +#line 703 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 3086 "parser.cpp" +#line 3121 "parser.cpp" break; - case 178: // expr_isdefined: "isdefined" "(" expr ")" -#line 697 "parser.ypp" + case 183: // expr_isdefined: "isdefined" "(" expr ")" +#line 708 "parser.ypp" { yylhs.value.as < ast::expr_isdefined::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3092 "parser.cpp" +#line 3127 "parser.cpp" break; - case 179: // expr_istrue: "istrue" "(" expr ")" -#line 702 "parser.ypp" + case 184: // expr_istrue: "istrue" "(" expr ")" +#line 713 "parser.ypp" { yylhs.value.as < ast::expr_istrue::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3098 "parser.cpp" +#line 3133 "parser.cpp" break; - case 180: // expr_reference: "::" expr_identifier -#line 707 "parser.ypp" + case 185: // expr_reference: "::" expr_identifier +#line 718 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3104 "parser.cpp" +#line 3139 "parser.cpp" break; - case 181: // expr_reference: expr_path "::" expr_identifier -#line 709 "parser.ypp" + case 186: // expr_reference: expr_path "::" expr_identifier +#line 720 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_path::ptr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3110 "parser.cpp" +#line 3145 "parser.cpp" break; - case 182: // expr_array: expr_object "[" expr "]" -#line 714 "parser.ypp" + case 187: // expr_array: expr_object "[" expr "]" +#line 725 "parser.ypp" { yylhs.value.as < ast::expr_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3116 "parser.cpp" +#line 3151 "parser.cpp" break; - case 183: // expr_field: expr_object "." expr_identifier -#line 719 "parser.ypp" + case 188: // expr_field: expr_object "." expr_identifier +#line 730 "parser.ypp" { yylhs.value.as < ast::expr_field::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3122 "parser.cpp" +#line 3157 "parser.cpp" break; - case 184: // expr_size: expr_object ".size" -#line 724 "parser.ypp" - { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3128 "parser.cpp" - break; - - case 185: // expr_paren: "(" expr ")" -#line 729 "parser.ypp" - { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3134 "parser.cpp" - break; - - case 186: // expr_object: expr_call -#line 733 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 3140 "parser.cpp" - break; - - case 187: // expr_object: expr_method -#line 734 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 3146 "parser.cpp" - break; - - case 188: // expr_object: expr_array + case 189: // expr_size: expr_object ".size" #line 735 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 3152 "parser.cpp" + { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3163 "parser.cpp" break; - case 189: // expr_object: expr_field -#line 736 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 3158 "parser.cpp" - break; - - case 190: // expr_object: expr_game -#line 737 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 3164 "parser.cpp" - break; - - case 191: // expr_object: expr_self -#line 738 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 3170 "parser.cpp" - break; - - case 192: // expr_object: expr_anim -#line 739 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 3176 "parser.cpp" - break; - - case 193: // expr_object: expr_level + case 190: // expr_paren: "(" expr ")" #line 740 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 3182 "parser.cpp" + { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3169 "parser.cpp" break; - case 194: // expr_object: expr_identifier -#line 741 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 3188 "parser.cpp" + case 191: // expr_object: expr_call +#line 744 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 3175 "parser.cpp" break; - case 195: // expr_thisthread: "thisthread" + case 192: // expr_object: expr_method +#line 745 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 3181 "parser.cpp" + break; + + case 193: // expr_object: expr_array #line 746 "parser.ypp" - { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } -#line 3194 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 3187 "parser.cpp" break; - case 196: // expr_empty_array: "[" "]" + case 194: // expr_object: expr_field +#line 747 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 3193 "parser.cpp" + break; + + case 195: // expr_object: expr_game +#line 748 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 3199 "parser.cpp" + break; + + case 196: // expr_object: expr_self +#line 749 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 3205 "parser.cpp" + break; + + case 197: // expr_object: expr_anim +#line 750 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 3211 "parser.cpp" + break; + + case 198: // expr_object: expr_level #line 751 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 3217 "parser.cpp" + break; + + case 199: // expr_object: expr_identifier +#line 752 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 3223 "parser.cpp" + break; + + case 200: // expr_thisthread: "thisthread" +#line 757 "parser.ypp" + { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } +#line 3229 "parser.cpp" + break; + + case 201: // expr_empty_array: "[" "]" +#line 762 "parser.ypp" { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } -#line 3200 "parser.cpp" +#line 3235 "parser.cpp" break; - case 197: // expr_undefined: "undefined" -#line 756 "parser.ypp" + case 202: // expr_undefined: "undefined" +#line 767 "parser.ypp" { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } -#line 3206 "parser.cpp" +#line 3241 "parser.cpp" break; - case 198: // expr_game: "game" -#line 761 "parser.ypp" + case 203: // expr_game: "game" +#line 772 "parser.ypp" { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } -#line 3212 "parser.cpp" +#line 3247 "parser.cpp" break; - case 199: // expr_self: "self" -#line 766 "parser.ypp" + case 204: // expr_self: "self" +#line 777 "parser.ypp" { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } -#line 3218 "parser.cpp" +#line 3253 "parser.cpp" break; - case 200: // expr_anim: "anim" -#line 771 "parser.ypp" + case 205: // expr_anim: "anim" +#line 782 "parser.ypp" { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } -#line 3224 "parser.cpp" +#line 3259 "parser.cpp" break; - case 201: // expr_level: "level" -#line 776 "parser.ypp" + case 206: // expr_level: "level" +#line 787 "parser.ypp" { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } -#line 3230 "parser.cpp" +#line 3265 "parser.cpp" break; - case 202: // expr_animation: "%" "identifier" -#line 781 "parser.ypp" + case 207: // expr_animation: "%" "identifier" +#line 792 "parser.ypp" { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3236 "parser.cpp" +#line 3271 "parser.cpp" break; - case 203: // expr_animtree: "#animtree" -#line 786 "parser.ypp" + case 208: // expr_animtree: "#animtree" +#line 797 "parser.ypp" { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } -#line 3242 "parser.cpp" +#line 3277 "parser.cpp" break; - case 204: // expr_identifier: "identifier" -#line 791 "parser.ypp" + case 209: // expr_identifier: "identifier" +#line 802 "parser.ypp" { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3248 "parser.cpp" +#line 3283 "parser.cpp" break; - case 205: // expr_path: "path" -#line 796 "parser.ypp" + case 210: // expr_path: "path" +#line 807 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3254 "parser.cpp" +#line 3289 "parser.cpp" break; - case 206: // expr_path: expr_identifier -#line 798 "parser.ypp" + case 211: // expr_path: expr_identifier +#line 809 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < ast::expr_identifier::ptr > ()->value); } -#line 3260 "parser.cpp" +#line 3295 "parser.cpp" break; - case 207: // expr_istring: "localized string" -#line 803 "parser.ypp" + case 212: // expr_istring: "localized string" +#line 814 "parser.ypp" { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3266 "parser.cpp" +#line 3301 "parser.cpp" break; - case 208: // expr_string: "string literal" -#line 808 "parser.ypp" + case 213: // expr_string: "string literal" +#line 819 "parser.ypp" { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3272 "parser.cpp" +#line 3307 "parser.cpp" break; - case 209: // expr_color: "color" -#line 813 "parser.ypp" + case 214: // expr_color: "color" +#line 824 "parser.ypp" { yylhs.value.as < ast::expr_color::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3278 "parser.cpp" +#line 3313 "parser.cpp" break; - case 210: // expr_vector: "(" expr "," expr "," expr ")" -#line 818 "parser.ypp" + case 215: // expr_vector: "(" expr "," expr "," expr ")" +#line 829 "parser.ypp" { yylhs.value.as < ast::expr_vector::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3284 "parser.cpp" +#line 3319 "parser.cpp" break; - case 211: // expr_float: "-" "float" -#line 823 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3290 "parser.cpp" - break; - - case 212: // expr_float: "float" -#line 825 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3296 "parser.cpp" - break; - - case 213: // expr_integer: "-" "int" -#line 830 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3302 "parser.cpp" - break; - - case 214: // expr_integer: "int" -#line 832 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3308 "parser.cpp" - break; - - case 215: // expr_integer: "octal int" + case 216: // expr_float: "-" "float" #line 834 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3314 "parser.cpp" + { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 3325 "parser.cpp" break; - case 216: // expr_integer: "binary int" + case 217: // expr_float: "float" #line 836 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3320 "parser.cpp" + { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3331 "parser.cpp" break; - case 217: // expr_integer: "hexadecimal int" -#line 838 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3326 "parser.cpp" + case 218: // expr_integer: "-" "int" +#line 841 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 3337 "parser.cpp" break; - case 218: // expr_false: "false" + case 219: // expr_integer: "int" #line 843 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3343 "parser.cpp" + break; + + case 220: // expr_integer: "octal int" +#line 845 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3349 "parser.cpp" + break; + + case 221: // expr_integer: "binary int" +#line 847 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3355 "parser.cpp" + break; + + case 222: // expr_integer: "hexadecimal int" +#line 849 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3361 "parser.cpp" + break; + + case 223: // expr_false: "false" +#line 854 "parser.ypp" { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } -#line 3332 "parser.cpp" +#line 3367 "parser.cpp" break; - case 219: // expr_true: "true" -#line 848 "parser.ypp" + case 224: // expr_true: "true" +#line 859 "parser.ypp" { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } -#line 3338 "parser.cpp" +#line 3373 "parser.cpp" break; -#line 3342 "parser.cpp" +#line 3377 "parser.cpp" default: break; @@ -3522,36 +3557,37 @@ namespace xsk { namespace gsc { namespace iw8 { { static const char *const yy_sname[] = { - "end of file", "error", "invalid token", "#inline", "#include", - "#using_animtree", "#animtree", "endon", "notify", "wait", "waittill", - "waittillmatch", "waittillframeend", "waitframe", "if", "else", "do", - "while", "for", "foreach", "in", "switch", "case", "default", "break", - "continue", "return", "breakpoint", "prof_begin", "prof_end", "thread", - "childthread", "thisthread", "call", "true", "false", "undefined", - ".size", "game", "self", "anim", "level", "isdefined", "istrue", "(", - ")", "{", "}", "[", "]", ",", ".", "::", ":", ";", "?", "++", "--", "<<", - ">>", "||", "&&", "==", "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", - "-=", "*=", "/=", "%=", "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", - "+", "-", "*", "/", "%", "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", - "inline", "include", "declaration", "decl_usingtree", "decl_constant", - "decl_thread", "stmt", "stmt_block", "stmt_list", "stmt_expr", - "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", "stmt_wait", - "stmt_waittill", "stmt_waittillmatch", "stmt_waittillframeend", - "stmt_waitframe", "stmt_if", "stmt_ifelse", "stmt_while", "stmt_dowhile", - "stmt_for", "stmt_foreach", "stmt_switch", "stmt_case", "stmt_default", - "stmt_break", "stmt_continue", "stmt_return", "stmt_breakpoint", - "stmt_prof_begin", "stmt_prof_end", "expr", "expr_or_empty", - "expr_assign", "expr_increment", "expr_decrement", "expr_ternary", - "expr_binary", "expr_primitive", "expr_complement", "expr_not", - "expr_call", "expr_method", "expr_function", "expr_pointer", - "expr_add_array", "expr_parameters", "expr_arguments", - "expr_arguments_no_empty", "expr_isdefined", "expr_istrue", - "expr_reference", "expr_array", "expr_field", "expr_size", "expr_paren", - "expr_object", "expr_thisthread", "expr_empty_array", "expr_undefined", - "expr_game", "expr_self", "expr_anim", "expr_level", "expr_animation", + "end of file", "error", "invalid token", "/#", "#/", "#inline", + "#include", "#using_animtree", "#animtree", "endon", "notify", "wait", + "waittill", "waittillmatch", "waittillframeend", "waitframe", "if", + "else", "do", "while", "for", "foreach", "in", "switch", "case", + "default", "break", "continue", "return", "breakpoint", "prof_begin", + "prof_end", "thread", "childthread", "thisthread", "call", "true", + "false", "undefined", ".size", "game", "self", "anim", "level", + "isdefined", "istrue", "(", ")", "{", "}", "[", "]", ",", ".", "::", ":", + ";", "?", "++", "--", "<<", ">>", "||", "&&", "==", "!=", "<=", ">=", + "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", "|=", "&=", "^=", + ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", "%", "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", "inline", "include", "declaration", + "decl_usingtree", "decl_constant", "decl_thread", "stmt", "stmt_dev", + "stmt_block", "stmt_list", "stmt_expr", "stmt_call", "stmt_assign", + "stmt_endon", "stmt_notify", "stmt_wait", "stmt_waittill", + "stmt_waittillmatch", "stmt_waittillframeend", "stmt_waitframe", + "stmt_if", "stmt_ifelse", "stmt_while", "stmt_dowhile", "stmt_for", + "stmt_foreach", "stmt_switch", "stmt_case", "stmt_default", "stmt_break", + "stmt_continue", "stmt_return", "stmt_breakpoint", "stmt_prof_begin", + "stmt_prof_end", "expr", "expr_or_empty", "expr_assign", + "expr_increment", "expr_decrement", "expr_ternary", "expr_binary", + "expr_primitive", "expr_complement", "expr_not", "expr_call", + "expr_method", "expr_function", "expr_pointer", "expr_add_array", + "expr_parameters", "expr_arguments", "expr_arguments_no_empty", + "expr_isdefined", "expr_istrue", "expr_reference", "expr_array", + "expr_field", "expr_size", "expr_paren", "expr_object", + "expr_thisthread", "expr_empty_array", "expr_undefined", "expr_game", + "expr_self", "expr_anim", "expr_level", "expr_animation", "expr_animtree", "expr_identifier", "expr_path", "expr_istring", "expr_string", "expr_color", "expr_vector", "expr_float", "expr_integer", "expr_false", "expr_true", YY_NULLPTR @@ -3819,664 +3855,723 @@ namespace xsk { namespace gsc { namespace iw8 { } - const short parser::yypact_ninf_ = -270; + const short parser::yypact_ninf_ = -273; - const short parser::yytable_ninf_ = -207; + const short parser::yytable_ninf_ = -212; const short parser::yypact_[] = { - 11, -44, -44, -22, -270, 24, 11, -270, -270, -270, - -270, -270, -270, -27, -270, -270, -23, -13, -33, -270, - -270, -270, -270, -26, 786, -270, -270, -270, 29, 9, - -270, -270, -29, 2, -270, 36, -270, -270, -270, -270, - -270, -270, -270, 59, 60, 786, 648, -26, 786, 786, - -1, 20, -270, -270, -270, -270, -270, -270, -270, 1784, - -270, -270, -270, -270, -270, 65, 489, -270, -270, -270, - -270, -270, -270, 535, 540, -270, -270, 572, -270, -270, - -270, 609, 673, 678, 742, -270, -270, 18, 63, -270, - -270, -270, -270, -270, -270, -270, -270, 78, 89, -26, - 71, 90, 92, 97, 103, 110, 115, 786, 786, 1078, - 648, -270, 1867, 114, 116, -270, -270, -270, -270, -270, - -270, -270, 786, 786, 786, 786, 786, 786, 786, 786, - 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, - 786, -270, 855, -26, -270, -270, 135, 132, 786, -26, - -270, 945, -270, -270, 786, 786, -26, 786, 786, -26, - 786, 1244, 1278, -270, 786, 851, 786, -270, 782, 181, - 181, 1898, 1908, 402, 402, 83, 83, 83, 83, 1939, - 1980, 1949, 88, 88, -270, -270, -270, 1590, -270, -26, - 28, -270, 136, 786, 133, -24, 142, 1037, 147, 150, - 158, 160, 155, 146, 151, 156, 717, 161, 165, 170, - -270, 169, 49, 49, -270, -270, 991, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, 166, 167, 171, 172, 174, -270, -270, 473, -270, - -270, -270, -270, 13, 1630, 31, 179, 1670, 55, 185, - 1710, -270, -270, 1749, 175, 1867, 786, -270, 136, -270, - 786, 1819, -270, 187, -270, 786, 217, 786, -4, -26, - 786, 141, 184, 190, -270, -270, -270, -270, 1854, -270, - 786, 786, 786, -270, -270, 422, 422, -270, -270, -270, - -270, -270, -270, -270, 194, 200, 201, 205, -270, -270, - 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, - 786, 206, -270, 786, 207, -270, 786, 209, 786, 216, - 1867, 61, -270, 210, 1312, 226, 1346, 218, -270, -270, - -270, 1041, -8, 1380, -270, -270, -270, 67, 73, 851, - 786, 786, 786, 786, 1867, 1867, 1867, 1867, 1867, 1867, - 1867, 1867, 1867, 1867, 1867, 227, 76, 231, 77, 236, - 1414, 786, -270, -270, 1037, 786, 1037, 786, 786, -26, - 89, 228, 229, 1448, 1122, 1166, 1210, 786, -270, 786, - -270, 786, -270, 86, 266, 1482, -270, 1867, 240, 1516, - 265, -270, -270, -270, 245, 246, 786, 249, 786, 269, - 786, 108, 127, 128, -270, 1037, 271, -4, 1037, 786, - -270, -270, 281, -270, 283, -270, 288, -270, -270, -270, - -270, -270, 292, -270, 1550, 284, 286, 295, 1037, 1037, - -270, -270, -270, -270, -270 + 15, -273, -273, -40, -40, -33, -273, 27, 15, -273, + -273, -273, -273, -273, -273, -35, -273, -273, -25, -17, + -48, -273, -273, -273, -273, -45, 888, -273, -273, -273, + 19, 43, -273, -273, -21, -8, -273, 17, -273, -273, + -273, -273, -273, -273, -273, 28, 31, 888, 749, -45, + 888, 888, -34, -14, -273, -273, -273, -273, -273, -273, + -273, 2040, -273, -273, -273, -273, -273, 11, 325, -273, + -273, -273, -273, -273, -273, 515, 520, -273, -273, 601, + -273, -273, -273, 623, 775, 849, 913, -273, -273, 408, + 26, -273, -273, -273, -273, -273, -273, -273, -273, 41, + 56, -45, 62, 60, 67, 74, 93, 78, 80, 888, + 888, 1294, 749, -273, 2123, 88, 91, -273, -273, -273, + -273, -273, -273, -273, 888, 888, 888, 888, 888, 888, + 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, + 888, 888, 888, -273, 957, -45, -273, -273, 103, 96, + 888, -45, -273, 1055, -273, -273, 888, 888, -45, 888, + 888, -45, 888, 1460, 1494, -273, 888, 1806, 888, -273, + 953, 97, 97, 2154, 2164, 2246, 2246, 157, 157, 157, + 157, 2195, 2236, 2205, -30, -30, -273, -273, -273, 1846, + -273, -45, 44, -273, 117, 1108, 888, 100, -18, 118, + 1253, 120, 127, 129, 130, -11, 122, 132, 137, 819, + 138, 150, 152, -273, 153, 139, 139, -273, -273, -273, + 1154, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, 151, 154, 155, 158, 163, + -273, -273, 672, -273, -273, -273, -273, -22, 1886, 46, + 162, 1926, 47, 167, 1966, -273, -273, 2005, 172, 2123, + 888, -273, 117, -273, 888, -273, 1207, 2075, -273, 177, + -273, 888, 190, 888, 76, -45, 888, 128, 178, 180, + -273, -273, -273, -273, 2110, -273, 888, 888, 888, -273, + -273, 22, 22, -273, -273, -273, -273, -273, -273, -273, + 186, 191, 196, 202, -273, -273, 888, 888, 888, 888, + 888, 888, 888, 888, 888, 888, 888, 198, -273, 888, + 204, -273, 888, 205, 888, 211, 2123, 53, -273, -273, + 207, 1528, 213, 1562, 208, -273, -273, -273, 1257, 4, + 1596, -273, -273, -273, 63, 73, 1806, 888, 888, 888, + 888, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 214, 75, 220, 84, 222, 1630, 888, -273, + -273, 1253, 888, 1253, 888, 888, -45, 56, 209, 216, + 1664, 1338, 1382, 1426, 888, -273, 888, -273, 888, -273, + 86, 253, 1698, -273, 2123, 217, 1732, 257, -273, -273, + -273, 224, 225, 888, 227, 888, 231, 888, 94, 110, + 113, -273, 1253, 232, 76, 1253, 888, -273, -273, 244, + -273, 245, -273, 246, -273, -273, -273, -273, -273, 247, + -273, 1766, 239, 240, 241, 1253, 1253, -273, -273, -273, + -273, -273 }; const unsigned char parser::yydefact_[] = { - 3, 0, 0, 0, 204, 0, 2, 7, 8, 9, - 12, 13, 14, 0, 205, 206, 0, 0, 0, 1, - 4, 5, 6, 173, 0, 10, 11, 208, 0, 0, - 172, 203, 0, 0, 195, 0, 219, 218, 197, 198, - 199, 200, 201, 0, 0, 0, 175, 0, 0, 0, - 0, 0, 207, 209, 212, 214, 215, 216, 217, 0, - 85, 86, 87, 124, 125, 126, 127, 156, 157, 128, - 129, 130, 131, 132, 133, 134, 135, 0, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 0, 146, - 147, 148, 149, 150, 151, 152, 153, 0, 0, 0, - 0, 206, 0, 0, 206, 0, 0, 0, 0, 0, - 175, 196, 177, 0, 174, 180, 155, 154, 211, 213, - 202, 16, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 12, 13, 0, 0, 0, 209, 0, 2, 7, + 8, 9, 14, 15, 16, 0, 210, 211, 0, 0, + 0, 1, 4, 5, 6, 178, 0, 10, 11, 213, + 0, 0, 177, 208, 0, 0, 200, 0, 224, 223, + 202, 203, 204, 205, 206, 0, 0, 0, 180, 0, + 0, 0, 0, 0, 212, 214, 217, 219, 220, 221, + 222, 0, 90, 91, 92, 129, 130, 131, 132, 161, + 162, 133, 134, 135, 136, 137, 138, 139, 140, 0, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 0, 151, 152, 153, 154, 155, 156, 157, 158, 0, + 0, 0, 0, 211, 0, 0, 211, 0, 0, 0, + 0, 0, 180, 201, 182, 0, 179, 185, 160, 159, + 216, 218, 207, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 184, 0, 0, 158, 159, 206, 0, 175, 0, - 15, 0, 17, 171, 0, 175, 0, 0, 175, 0, - 0, 0, 0, 185, 0, 177, 0, 170, 0, 117, - 118, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 119, 120, 121, 122, 123, 0, 183, 0, - 0, 174, 181, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 189, 0, 0, 163, 164, 211, 0, + 180, 0, 17, 0, 19, 176, 0, 180, 0, 0, + 180, 0, 0, 0, 0, 190, 0, 182, 0, 175, + 0, 122, 123, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 124, 125, 126, 127, 128, 0, + 188, 0, 0, 179, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 44, 0, 0, 0, 46, 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, - 42, 0, 0, 0, 186, 187, 188, 189, 0, 190, - 191, 192, 193, 194, 0, 0, 0, 0, 0, 0, - 0, 178, 179, 0, 0, 176, 0, 182, 0, 160, - 175, 0, 64, 0, 65, 0, 0, 0, 50, 0, - 0, 0, 0, 0, 77, 78, 79, 81, 0, 82, - 175, 175, 0, 186, 187, 101, 103, 43, 45, 53, - 54, 55, 51, 52, 0, 0, 0, 0, 102, 104, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 162, 175, 0, 164, 175, 0, 0, 0, - 105, 0, 59, 0, 0, 0, 0, 0, 47, 48, - 49, 0, 0, 0, 76, 75, 80, 0, 0, 0, - 0, 0, 0, 0, 90, 96, 97, 98, 99, 100, - 91, 92, 93, 95, 94, 0, 0, 0, 0, 0, - 0, 175, 161, 66, 0, 0, 0, 89, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 175, 163, 175, - 165, 175, 210, 0, 67, 0, 69, 88, 0, 0, - 0, 74, 83, 84, 0, 0, 175, 0, 175, 0, - 175, 0, 0, 0, 166, 0, 0, 50, 0, 0, - 56, 58, 174, 61, 174, 63, 174, 167, 168, 169, - 68, 70, 0, 72, 0, 0, 0, 0, 0, 0, - 57, 60, 62, 71, 73 + 0, 0, 0, 49, 0, 0, 0, 51, 20, 21, + 0, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 0, 0, 0, 191, 192, + 193, 194, 0, 195, 196, 197, 198, 199, 0, 0, + 0, 0, 0, 0, 0, 183, 184, 0, 0, 181, + 0, 187, 0, 165, 180, 47, 0, 0, 69, 0, + 70, 0, 0, 0, 55, 0, 0, 0, 0, 0, + 82, 83, 84, 86, 0, 87, 180, 180, 0, 191, + 192, 106, 108, 48, 50, 58, 59, 60, 56, 57, + 0, 0, 0, 0, 107, 109, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 167, 180, + 0, 169, 180, 0, 0, 0, 110, 0, 46, 64, + 0, 0, 0, 0, 0, 52, 53, 54, 0, 0, + 0, 81, 80, 85, 0, 0, 0, 0, 0, 0, + 0, 95, 101, 102, 103, 104, 105, 96, 97, 98, + 100, 99, 0, 0, 0, 0, 0, 0, 180, 166, + 71, 0, 0, 0, 94, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 180, 168, 180, 170, 180, 215, + 0, 72, 0, 74, 93, 0, 0, 0, 79, 88, + 89, 0, 0, 180, 0, 180, 0, 180, 0, 0, + 0, 171, 0, 0, 55, 0, 0, 61, 63, 179, + 66, 179, 68, 179, 172, 173, 174, 73, 75, 0, + 77, 0, 0, 0, 0, 0, 0, 62, 65, 67, + 76, 78 }; const short parser::yypgoto_[] = { - -270, -270, -270, 346, 347, 351, -270, -270, -270, -176, - -93, -270, -59, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, 182, -270, -269, - -267, -265, -270, -270, -270, -270, -270, -141, -88, 106, - 124, -270, -270, -130, -43, -270, -270, -270, -83, -31, - -270, -270, -5, -270, -270, -270, 180, 193, 230, 238, - -270, -270, 0, 6, -270, -14, -270, -270, -270, 157, - -270, -270 + -273, -273, -273, 292, 295, 297, -273, -273, -273, -184, + -273, -98, 109, -118, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, 203, -273, + -272, -270, -269, -273, -273, -273, -273, -273, -147, -72, + -74, -62, -273, -273, -127, -47, -273, -273, -273, 193, + 219, -273, -273, 265, -273, -273, -273, 296, 315, 351, + 452, -273, -273, 0, 6, -273, -13, -273, -273, -273, + 105, -273, -273 }; const short parser::yydefgoto_[] = { - 0, 5, 6, 7, 8, 9, 10, 11, 12, 214, - 215, 216, 337, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 112, 398, 241, - 242, 243, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 29, 113, 191, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96 + 0, 7, 8, 9, 10, 11, 12, 13, 14, 217, + 218, 219, 220, 344, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 114, 405, + 245, 246, 247, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 31, 115, 193, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98 }; const short parser::yytable_[] = { - 13, 15, 15, 114, 28, 152, 13, 16, 17, 338, - 244, 339, 378, 340, 1, 2, 3, 23, 190, 100, - 273, 276, 18, 30, 19, 255, 32, 33, 258, 35, - 274, 25, 101, 104, 39, 40, 41, 42, 102, 105, - 298, 26, 379, 24, 211, 14, 4, 115, -194, -194, - 103, -194, 212, 213, 98, -194, 244, 148, 27, 99, - 14, 4, 148, 245, 4, -206, -194, 114, 246, -194, - -206, 293, 293, 269, 97, 244, 322, 146, 166, 32, - 33, 166, 35, 147, 106, 14, 4, 39, 40, 41, - 42, 14, 4, 118, 119, -186, -186, 211, -186, 153, - 325, 4, -186, 107, 108, 166, 372, -194, -194, 245, - 120, 166, 381, -186, 246, 149, -186, 166, 382, 154, - 247, 388, 390, 166, 294, 294, 166, 166, 245, 246, - 246, 414, 150, 246, 155, 151, 166, 293, 14, 4, - 331, 123, 124, 188, 156, 157, 248, 158, 338, 192, - 339, 253, 340, 427, -186, -186, 256, 147, 166, 259, - 347, 348, 159, 160, 166, 167, 247, 136, 137, 138, - 139, 140, 428, 429, 138, 139, 140, 166, 166, 148, - 270, 247, 247, 144, 189, 247, 275, 272, 282, 268, - 294, 277, 248, 366, 278, 246, 368, 253, 394, 284, - 396, 145, 279, 147, 280, 285, 59, 295, 296, 290, - 286, 248, 253, 253, 291, 289, 253, 292, 147, 147, - 299, 300, 147, 323, 329, 301, 302, 109, 303, 326, - 116, 117, 333, 244, 335, 244, 119, 344, 350, 430, - 281, 393, 433, 345, 351, 352, 27, 247, 146, 353, - 55, 56, 57, 58, 147, 365, 367, 411, 369, 412, - 371, 413, 443, 444, 373, 136, 137, 138, 139, 140, - 375, 387, 377, 341, 244, 389, 293, 244, 253, 342, - 391, 415, 402, 403, 147, 419, 245, 401, 245, 161, - 162, 246, 165, 246, 417, 146, 146, 244, 244, 420, - 421, 147, 147, 423, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 425, 187, 431, 435, 245, 436, 294, - 245, 249, 246, 437, 246, 246, 254, 438, 440, 257, - 441, 146, 260, 247, 250, 247, 263, 147, 265, 442, - 245, 245, 20, 21, 144, 246, 246, 22, 432, 283, - 0, 0, 0, 422, 0, 424, 0, 426, 0, 248, - 0, 248, 145, 0, 253, 271, 253, 249, 0, 400, - 147, 251, 147, 0, 247, 0, 247, 247, 288, 252, - 250, 0, 249, 249, 0, 0, 249, 0, 0, 0, - 0, 144, 144, 0, 0, 250, 250, 247, 247, 250, - 248, 0, 341, 248, 0, 253, 0, 253, 253, 145, - 145, 147, 0, 147, 147, 0, 0, 251, 0, 0, - 0, 0, 0, 248, 248, 252, 0, 0, 253, 253, - 0, 0, 251, 251, 147, 147, 251, 144, 330, 0, - 252, 252, 32, 33, 252, 35, 0, 334, 249, 336, - 123, 124, 343, 0, 0, 145, 129, 130, 131, 132, - 142, 250, 0, 143, 349, 0, 0, 0, 0, 0, - 304, 305, 0, 306, 307, 0, 136, 137, 138, 139, - 140, 0, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 32, 33, 0, 35, 0, 251, 0, - 370, 14, 4, 0, 0, 0, 252, 0, 0, -187, - -187, 142, -187, 0, 143, 0, -187, 0, 0, 308, - 309, 0, 383, 384, 385, 386, 0, -187, 0, 0, - -187, 0, 0, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 249, 0, 249, 395, 0, 397, - 399, 0, 14, 4, 0, -188, -188, 250, -188, 250, - -189, -189, -188, -189, 0, 0, 0, -189, -187, -187, - 0, 0, 0, -188, 0, 0, -188, 0, -189, 0, - 0, -189, 0, 0, 0, 249, 0, 249, 249, 0, - 0, 434, 32, 33, 251, 35, 251, 0, 250, 141, - 250, 250, 252, 0, 252, 0, 0, 0, 249, 249, - 142, 0, 0, 143, -188, -188, 0, 0, 0, -189, - -189, 250, 250, 0, 0, 0, 0, 0, 0, -190, - -190, 0, -190, 0, 0, 251, -190, 251, 251, 0, - 0, 0, 0, 252, 31, 252, 252, -190, 0, 0, - -190, 14, 4, 0, 0, 0, 0, 0, 251, 251, - 0, 0, 0, 0, 0, 0, 252, 252, 32, 33, - 34, 35, 36, 37, 38, 0, 39, 40, 41, 42, - 43, 44, 45, 0, 0, 0, 110, 111, -190, -190, - 47, 0, 0, -191, -191, 0, -191, 0, -192, -192, - -191, -192, 0, 0, 0, -192, 48, 49, 0, 0, - 0, -191, 0, 31, -191, 0, -192, 0, 0, -192, - 0, 0, 0, 50, 0, 0, 51, 14, 4, 27, - 52, 53, 54, 55, 56, 57, 58, 32, 33, 34, - 35, 36, 37, 38, 0, 39, 40, 41, 42, 43, - 44, 45, -191, -191, 0, 46, 0, -192, -192, 47, - 0, 287, -193, -193, 0, -193, 0, 0, 0, -193, - 0, 0, 0, 0, 0, 48, 49, 0, 0, 0, - -193, 0, 31, -193, 0, 0, 0, 0, 0, 0, - 0, 0, 50, 0, 0, 51, 14, 4, 27, 52, - 53, 54, 55, 56, 57, 58, 32, 33, 34, 35, - 36, 37, 38, 0, 39, 40, 41, 42, 43, 44, - 45, -193, -193, 0, 46, 266, 0, 122, 47, 0, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 0, 0, 0, 0, 48, 49, 0, 0, 0, 0, - 0, 31, 0, 133, 134, 135, 136, 137, 138, 139, - 140, 50, 0, 0, 51, 14, 4, 27, 52, 53, - 54, 55, 56, 57, 58, 32, 33, 34, 35, 36, - 37, 38, 0, 39, 40, 41, 42, 43, 44, 45, - 264, 0, 0, 110, 0, 0, 122, 47, 0, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 0, - 0, 0, 0, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, - 50, 0, 0, 51, 14, 4, 27, 52, 53, 54, - 55, 56, 57, 58, 193, 0, 0, 194, 195, 196, - 0, 197, 198, 199, 200, 0, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 32, 33, 0, 35, 0, - 0, 0, 0, 39, 40, 41, 42, 0, 0, 0, - 0, 151, 210, 211, 0, 0, 0, 0, 0, 0, - 193, 212, 213, 194, 195, 196, 0, 197, 198, 199, - 200, 0, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 32, 33, 0, 35, 0, 0, 0, 0, 39, - 40, 41, 42, 0, 14, 4, 0, 151, 297, 211, - 0, 0, 0, 0, 0, 0, 193, 212, 213, 194, - 195, 196, 0, 197, 198, 199, 200, 0, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 32, 33, 0, - 35, 32, 33, 0, 35, 39, 40, 41, 42, 0, - 14, 4, 0, 151, 0, 211, 0, 0, 0, 142, - 0, 0, 143, 212, 213, 0, 0, 308, 309, 0, + 15, 116, 154, 17, 17, 146, 248, 30, 15, 18, + 19, 25, 345, 20, 346, 347, 282, 147, 1, 2, + 3, 4, 5, 192, 150, 32, 385, 21, 279, 102, + 259, 27, -211, 262, 103, 106, 304, 26, 280, 28, + 104, 107, 105, -191, -191, 29, -191, 6, 248, 117, + -191, 16, 6, 248, 34, 35, 386, 37, 140, 141, + 142, -191, 120, 121, -191, 116, 99, 108, 299, 299, + 16, 6, 144, 248, 109, 145, 287, 110, 122, 148, + 151, 249, 29, 16, 6, 149, 57, 58, 59, 60, + 100, 273, 304, 328, 331, 101, 168, 152, 168, 168, + 379, 155, -191, -191, 153, 168, 157, 6, 34, 35, + 388, 37, 156, 16, 6, 168, 41, 42, 43, 44, + 389, 158, 395, 249, 159, 168, 214, 168, 249, 248, + 162, 397, 161, 421, 215, 216, 168, 299, 168, 160, + 168, 434, 169, 300, 300, 190, 168, 337, 249, 150, + 191, 194, 345, 257, 346, 347, 278, 435, 260, 149, + 436, 263, 168, 274, 281, 168, 283, 16, 6, 354, + 355, 34, 35, 284, 37, 285, 286, 290, 146, 41, + 42, 43, 44, 138, 139, 140, 141, 142, 291, 214, + 147, 272, 288, 292, 295, 257, 296, 401, 297, 403, + 257, 149, 373, 298, 249, 375, 149, 305, 329, 342, + 306, 307, 300, 332, 308, 257, 257, 125, 126, 309, + 257, 149, 149, 335, 340, 121, 149, 146, 146, 61, + 16, 6, 357, 351, 248, 352, 248, 358, 437, 147, + 147, 440, 359, 138, 139, 140, 141, 142, 360, 372, + 111, 400, 148, 118, 119, 374, 376, 378, 149, 382, + 394, 450, 451, 380, 384, 409, 396, 418, 398, 419, + 422, 420, 410, 424, 146, 248, 257, 299, 248, 426, + 427, 428, 149, 430, 257, 349, 147, 432, 438, 408, + 149, 442, 443, 444, 445, 447, 448, 449, 248, 248, + 22, 148, 148, 23, 276, 24, 439, 149, 149, 249, + 289, 249, 163, 164, 0, 167, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 250, 189, 148, 0, + 249, 0, 300, 249, 149, 0, 0, -192, -192, 258, + -192, 0, 261, 0, -192, 264, 429, 0, 431, 267, + 433, 269, 251, 249, 249, -192, 0, 0, -192, 0, + 0, 257, 0, 257, 0, 0, 407, 149, 250, 149, + 0, 0, 0, 250, 0, 0, 0, 0, 0, 277, + 0, 0, 0, 0, 0, 0, 0, 0, 250, 250, + 0, 0, 294, 250, 251, 0, -192, -192, 252, 251, + 0, 0, 257, 0, 257, 257, 0, 0, 149, 0, + 149, 149, 0, 0, 251, 251, 0, 0, 0, 251, + -199, -199, 0, -199, 0, 257, 257, -199, 0, 253, + 0, 149, 149, 0, 150, 0, 0, 0, -199, 0, + 252, -199, -211, 0, 0, 252, 0, 0, 254, 250, + 0, 0, 0, 336, 0, 0, 0, 250, 0, 0, + 301, 302, 0, 0, 341, 252, 343, 0, 0, 350, + 0, 253, 0, 0, 0, 251, 253, 0, 0, -199, + -199, 356, 0, 251, 255, 0, 0, 0, 0, 0, + 254, 253, 253, 0, 0, 254, 253, 0, 0, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 254, 254, 0, 0, 0, 254, 0, 377, 0, 0, + 0, 252, 0, 0, 0, 0, 255, -193, -193, 348, + -193, 255, -194, -194, -193, -194, 0, 0, 0, -194, + 390, 391, 392, 393, 0, -193, 255, 255, -193, 0, + -194, 255, 253, -194, 250, 0, 250, 0, 0, 0, + 253, 0, 0, 0, 0, 402, 0, 404, 406, 0, + 0, 254, 0, 0, 0, 0, 0, 0, 0, 254, + 251, 0, 251, 0, 0, 256, -193, -193, 0, 0, + 0, -194, -194, 0, 0, 250, 0, 250, 250, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 0, 441, + 0, 0, 0, 34, 35, 255, 37, 0, 250, 250, + 143, 251, 0, 251, 251, 0, 252, 256, 252, 0, + 0, 144, 256, 0, 145, -195, -195, 0, -195, 0, + 0, 0, -195, 0, 251, 251, 0, 256, 256, 0, + 0, 0, 256, -195, 0, 0, -195, 253, 0, 253, + 0, 310, 311, 0, 312, 313, 0, 252, 0, 348, + 252, 0, 16, 6, 0, 0, 254, 0, 254, 0, + 0, 0, 0, 0, 34, 35, 0, 37, 0, 0, + 252, 252, 0, 0, -195, -195, 0, 0, 253, 0, + 253, 253, 144, 0, 0, 145, 0, 0, 256, 0, + 314, 315, 255, 0, 255, 0, 256, 254, 0, 254, + 254, 253, 253, 0, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 0, 0, 33, 0, 0, + 254, 254, 0, 16, 6, 0, 0, 0, 0, 0, + 0, 0, 0, 255, 0, 255, 255, 0, 0, 0, + 0, 34, 35, 36, 37, 38, 39, 40, 0, 41, + 42, 43, 44, 45, 46, 47, 255, 255, 0, 112, + 113, 0, 0, 49, 0, 0, 0, -196, -196, 0, + -196, 0, 0, 0, -196, 0, 0, 0, 0, 50, + 51, 0, 0, 0, 0, -196, 0, 33, -196, 0, + 0, 0, 0, 256, 0, 256, 52, 0, 0, 53, + 16, 6, 29, 54, 55, 56, 57, 58, 59, 60, + 0, 34, 35, 36, 37, 38, 39, 40, 0, 41, + 42, 43, 44, 45, 46, 47, -196, -196, 0, 48, + 0, 0, 0, 49, 256, 293, 256, 256, 0, 0, + 0, -197, -197, 0, -197, 0, 0, 0, -197, 50, + 51, 0, 0, 0, 0, 0, 33, 256, 256, -197, + 0, 0, -197, 0, 0, 0, 52, 0, 0, 53, + 16, 6, 29, 54, 55, 56, 57, 58, 59, 60, + 34, 35, 36, 37, 38, 39, 40, 0, 41, 42, + 43, 44, 45, 46, 47, 0, 0, 0, 48, 0, + -197, -197, 49, 0, 0, -198, -198, 0, -198, 0, + 0, 0, -198, 0, 0, 0, 0, 0, 50, 51, + 0, 0, 0, -198, 0, 33, -198, 0, 0, 0, + 0, 0, 0, 0, 0, 52, 0, 0, 53, 16, + 6, 29, 54, 55, 56, 57, 58, 59, 60, 34, + 35, 36, 37, 38, 39, 40, 0, 41, 42, 43, + 44, 45, 46, 47, -198, -198, 0, 112, 270, 0, + 124, 49, 0, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 0, 0, 0, 0, 50, 51, 0, + 0, 0, 0, 0, 0, 0, 135, 136, 137, 138, + 139, 140, 141, 142, 52, 0, 0, 53, 16, 6, + 29, 54, 55, 56, 57, 58, 59, 60, 195, 0, + 0, 0, 0, 0, 0, 0, 196, 0, 0, 197, + 198, 199, 0, 200, 201, 202, 203, 0, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 34, 35, 0, + 37, 0, 0, 0, 0, 41, 42, 43, 44, 0, + 0, 0, 0, 153, 213, 214, 0, 0, 0, 0, + 0, 195, 275, 215, 216, 0, 0, 0, 0, 196, + 0, 0, 197, 198, 199, 0, 200, 201, 202, 203, + 0, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 34, 35, 0, 37, 0, 0, 16, 6, 41, 42, + 43, 44, 0, 0, 0, 0, 153, 195, 214, 0, + 0, 0, 0, 0, 0, 196, 215, 216, 197, 198, + 199, 0, 200, 201, 202, 203, 0, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 34, 35, 0, 37, + 0, 0, 0, 0, 41, 42, 43, 44, 0, 16, + 6, 0, 153, 303, 214, 0, 0, 0, 0, 0, + 195, 338, 215, 216, 0, 0, 0, 0, 196, 0, + 0, 197, 198, 199, 0, 200, 201, 202, 203, 0, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 34, + 35, 0, 37, 0, 0, 16, 6, 41, 42, 43, + 44, 0, 0, 0, 0, 153, 195, 214, 0, 0, + 0, 0, 0, 0, 196, 215, 216, 197, 198, 199, + 0, 200, 201, 202, 203, 0, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 34, 35, 0, 37, 34, + 35, 0, 37, 41, 42, 43, 44, 0, 16, 6, + 0, 153, 0, 214, 0, 0, 0, 144, 0, 0, + 145, 215, 216, 0, 0, 314, 315, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 0, 165, 0, 0, 16, 6, 166, 0, 16, 6, + 0, 124, 0, 0, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 135, 136, 137, + 138, 139, 140, 141, 142, 412, 0, 0, 0, 0, + 413, 0, 0, 0, 0, 124, 0, 0, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 0, 163, 0, 0, 14, 4, 164, 0, - 14, 4, 0, 122, 0, 0, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, - 134, 135, 136, 137, 138, 139, 140, 405, 0, 0, - 0, 0, 406, 0, 0, 0, 0, 122, 0, 0, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 0, 135, 136, 137, 138, 139, 140, 141, 142, 414, + 0, 0, 0, 0, 415, 0, 0, 0, 0, 124, + 0, 0, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 135, 136, 137, 138, 139, + 140, 141, 142, 416, 0, 0, 0, 0, 417, 0, + 0, 0, 0, 124, 0, 0, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 265, 0, 135, + 136, 137, 138, 139, 140, 141, 142, 124, 0, 0, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, - 140, 407, 0, 0, 0, 0, 408, 0, 0, 0, - 0, 122, 0, 0, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 133, 134, 135, - 136, 137, 138, 139, 140, 409, 0, 0, 0, 0, - 410, 0, 0, 0, 0, 122, 0, 0, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 261, - 0, 133, 134, 135, 136, 137, 138, 139, 140, 122, - 0, 0, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 262, 0, 133, 134, 135, 136, 137, - 138, 139, 140, 122, 0, 0, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 374, 0, 133, - 134, 135, 136, 137, 138, 139, 140, 122, 0, 0, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 0, 266, 0, 135, 136, 137, 138, 139, 140, 141, + 142, 124, 0, 0, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 381, 0, 135, 136, 137, + 138, 139, 140, 141, 142, 124, 0, 0, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 383, + 0, 135, 136, 137, 138, 139, 140, 141, 142, 124, + 0, 0, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 387, 0, 135, 136, 137, 138, 139, + 140, 141, 142, 124, 0, 0, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 399, 0, 135, + 136, 137, 138, 139, 140, 141, 142, 124, 0, 0, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 376, 0, 133, 134, 135, 136, 137, 138, 139, - 140, 122, 0, 0, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 380, 0, 133, 134, 135, - 136, 137, 138, 139, 140, 122, 0, 0, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, - 0, 133, 134, 135, 136, 137, 138, 139, 140, 122, - 0, 0, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 404, 0, 133, 134, 135, 136, 137, - 138, 139, 140, 122, 0, 0, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 416, 0, 133, - 134, 135, 136, 137, 138, 139, 140, 122, 0, 0, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 0, 411, 0, 135, 136, 137, 138, 139, 140, 141, + 142, 124, 0, 0, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 423, 0, 135, 136, 137, + 138, 139, 140, 141, 142, 124, 0, 0, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 425, + 0, 135, 136, 137, 138, 139, 140, 141, 142, 124, + 0, 0, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 446, 0, 135, 136, 137, 138, 139, + 140, 141, 142, 124, 0, 0, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, + 136, 137, 138, 139, 140, 141, 142, 268, 0, 0, + 0, 0, 0, 124, 0, 0, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, + 136, 137, 138, 139, 140, 141, 142, 271, 0, 0, + 0, 0, 0, 124, 0, 0, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, + 136, 137, 138, 139, 140, 141, 142, 327, 0, 0, + 0, 0, 0, 124, 0, 0, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, + 136, 137, 138, 139, 140, 141, 142, 330, 0, 0, + 0, 0, 0, 124, 0, 0, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, + 136, 137, 138, 139, 140, 141, 142, 333, 0, 0, + 0, 0, 0, 124, 0, 0, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, + 136, 137, 138, 139, 140, 141, 142, 334, 0, 0, + 0, 0, 124, 0, 0, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 135, 136, + 137, 138, 139, 140, 141, 142, 123, 124, 0, 0, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 418, 0, 133, 134, 135, 136, 137, 138, 139, - 140, 122, 0, 0, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 439, 0, 133, 134, 135, - 136, 137, 138, 139, 140, 122, 0, 0, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 133, 134, 135, 136, 137, 138, 139, 140, 267, - 0, 0, 0, 0, 0, 122, 0, 0, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 133, 134, 135, 136, 137, 138, 139, 140, 321, - 0, 0, 0, 0, 0, 122, 0, 0, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 133, 134, 135, 136, 137, 138, 139, 140, 324, - 0, 0, 0, 0, 0, 122, 0, 0, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 133, 134, 135, 136, 137, 138, 139, 140, 327, - 0, 0, 0, 0, 0, 122, 0, 0, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 133, 134, 135, 136, 137, 138, 139, 140, 328, - 0, 0, 0, 0, 122, 0, 0, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 133, 134, 135, 136, 137, 138, 139, 140, 121, 122, - 0, 0, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, - 138, 139, 140, 332, 122, 0, 0, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 133, 134, 135, 136, 137, 138, 139, 140, 346, 122, - 0, 0, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 122, 0, 0, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 0, 0, 0, 0, 0, 133, 134, - 135, 136, 137, 138, 139, 140, 123, 124, 0, 126, - 127, 128, 129, 130, 131, 132, 123, 124, 0, 0, - 127, 128, 129, 130, 131, 132, 0, 0, 0, 133, - 134, 135, 136, 137, 138, 139, 140, 0, 0, 133, - 134, 135, 136, 137, 138, 139, 140, 123, 124, 0, - 0, 127, 128, 129, 130, 131, 132, 123, 124, 0, - 0, 127, 128, 129, 130, 131, 132, 0, 0, 0, - 0, 134, 135, 136, 137, 138, 139, 140, 0, 0, - 0, 134, 0, 136, 137, 138, 139, 140, 123, 124, - 0, 0, 127, 128, 129, 130, 131, 132, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 136, 137, 138, 139, 140 + 0, 0, 0, 135, 136, 137, 138, 139, 140, 141, + 142, 339, 124, 0, 0, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 135, 136, + 137, 138, 139, 140, 141, 142, 353, 124, 0, 0, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 124, 0, 0, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 0, 0, 0, 0, 0, 135, 136, 137, 138, + 139, 140, 141, 142, 125, 126, 0, 128, 129, 130, + 131, 132, 133, 134, 125, 126, 0, 0, 129, 130, + 131, 132, 133, 134, 0, 0, 0, 135, 136, 137, + 138, 139, 140, 141, 142, 0, 0, 135, 136, 137, + 138, 139, 140, 141, 142, 125, 126, 0, 0, 129, + 130, 131, 132, 133, 134, 125, 126, 0, 0, 129, + 130, 131, 132, 133, 134, 0, 0, 0, 0, 136, + 137, 138, 139, 140, 141, 142, 0, 0, 0, 136, + 0, 138, 139, 140, 141, 142, 125, 126, 0, 0, + 129, 130, 131, 132, 133, 134, 125, 126, 0, 0, + 0, 0, 131, 132, 133, 134, 0, 0, 0, 0, + 0, 0, 138, 139, 140, 141, 142, 0, 0, 0, + 0, 0, 138, 139, 140, 141, 142 }; const short parser::yycheck_[] = { - 0, 1, 2, 46, 18, 98, 6, 1, 2, 278, - 151, 278, 20, 278, 3, 4, 5, 44, 148, 48, - 44, 197, 44, 23, 0, 155, 30, 31, 158, 33, - 54, 54, 32, 33, 38, 39, 40, 41, 32, 33, - 216, 54, 50, 70, 48, 89, 90, 47, 30, 31, - 48, 33, 56, 57, 45, 37, 197, 44, 91, 50, - 89, 90, 44, 151, 90, 52, 48, 110, 151, 51, - 52, 212, 213, 45, 45, 216, 45, 77, 50, 30, - 31, 50, 33, 77, 48, 89, 90, 38, 39, 40, - 41, 89, 90, 94, 95, 30, 31, 48, 33, 99, - 45, 90, 37, 44, 44, 50, 45, 89, 90, 197, - 90, 50, 45, 48, 197, 52, 51, 50, 45, 48, - 151, 45, 45, 50, 212, 213, 50, 50, 216, 212, - 213, 45, 54, 216, 44, 46, 50, 278, 89, 90, - 270, 58, 59, 143, 52, 48, 151, 44, 417, 149, - 417, 151, 417, 45, 89, 90, 156, 151, 50, 159, - 290, 291, 52, 48, 50, 49, 197, 84, 85, 86, - 87, 88, 45, 45, 86, 87, 88, 50, 50, 44, - 44, 212, 213, 77, 52, 216, 44, 54, 202, 189, - 278, 44, 197, 323, 44, 278, 326, 197, 374, 53, - 376, 77, 44, 197, 44, 54, 24, 212, 213, 44, - 54, 216, 212, 213, 44, 54, 216, 48, 212, 213, - 54, 54, 216, 44, 49, 54, 54, 45, 54, 44, - 48, 49, 45, 374, 17, 376, 95, 53, 44, 415, - 85, 371, 418, 53, 44, 44, 91, 278, 248, 44, - 95, 96, 97, 98, 248, 49, 49, 387, 49, 389, - 44, 391, 438, 439, 54, 84, 85, 86, 87, 88, - 44, 44, 54, 278, 415, 44, 417, 418, 278, 279, - 44, 15, 54, 54, 278, 20, 374, 380, 376, 107, - 108, 374, 110, 376, 54, 295, 296, 438, 439, 54, - 54, 295, 296, 54, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 54, 142, 54, 45, 415, 45, 417, - 418, 151, 415, 45, 417, 418, 154, 45, 54, 157, - 54, 341, 160, 374, 151, 376, 164, 341, 166, 54, - 438, 439, 6, 6, 248, 438, 439, 6, 417, 202, - -1, -1, -1, 406, -1, 408, -1, 410, -1, 374, - -1, 376, 248, -1, 374, 193, 376, 197, -1, 379, - 374, 151, 376, -1, 415, -1, 417, 418, 206, 151, - 197, -1, 212, 213, -1, -1, 216, -1, -1, -1, - -1, 295, 296, -1, -1, 212, 213, 438, 439, 216, - 415, -1, 417, 418, -1, 415, -1, 417, 418, 295, - 296, 415, -1, 417, 418, -1, -1, 197, -1, -1, - -1, -1, -1, 438, 439, 197, -1, -1, 438, 439, - -1, -1, 212, 213, 438, 439, 216, 341, 266, -1, - 212, 213, 30, 31, 216, 33, -1, 275, 278, 277, - 58, 59, 280, -1, -1, 341, 64, 65, 66, 67, - 48, 278, -1, 51, 292, -1, -1, -1, -1, -1, - 7, 8, -1, 10, 11, -1, 84, 85, 86, 87, - 88, -1, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 30, 31, -1, 33, -1, 278, -1, - 328, 89, 90, -1, -1, -1, 278, -1, -1, 30, - 31, 48, 33, -1, 51, -1, 37, -1, -1, 56, - 57, -1, 350, 351, 352, 353, -1, 48, -1, -1, - 51, -1, -1, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 374, -1, 376, 375, -1, 377, - 378, -1, 89, 90, -1, 30, 31, 374, 33, 376, - 30, 31, 37, 33, -1, -1, -1, 37, 89, 90, - -1, -1, -1, 48, -1, -1, 51, -1, 48, -1, - -1, 51, -1, -1, -1, 415, -1, 417, 418, -1, - -1, 419, 30, 31, 374, 33, 376, -1, 415, 37, - 417, 418, 374, -1, 376, -1, -1, -1, 438, 439, - 48, -1, -1, 51, 89, 90, -1, -1, -1, 89, - 90, 438, 439, -1, -1, -1, -1, -1, -1, 30, - 31, -1, 33, -1, -1, 415, 37, 417, 418, -1, - -1, -1, -1, 415, 6, 417, 418, 48, -1, -1, - 51, 89, 90, -1, -1, -1, -1, -1, 438, 439, - -1, -1, -1, -1, -1, -1, 438, 439, 30, 31, - 32, 33, 34, 35, 36, -1, 38, 39, 40, 41, - 42, 43, 44, -1, -1, -1, 48, 49, 89, 90, - 52, -1, -1, 30, 31, -1, 33, -1, 30, 31, - 37, 33, -1, -1, -1, 37, 68, 69, -1, -1, - -1, 48, -1, 6, 51, -1, 48, -1, -1, 51, - -1, -1, -1, 85, -1, -1, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 30, 31, 32, - 33, 34, 35, 36, -1, 38, 39, 40, 41, 42, - 43, 44, 89, 90, -1, 48, -1, 89, 90, 52, - -1, 54, 30, 31, -1, 33, -1, -1, -1, 37, - -1, -1, -1, -1, -1, 68, 69, -1, -1, -1, - 48, -1, 6, 51, -1, -1, -1, -1, -1, -1, - -1, -1, 85, -1, -1, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 30, 31, 32, 33, - 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, - 44, 89, 90, -1, 48, 53, -1, 55, 52, -1, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - -1, -1, -1, -1, 68, 69, -1, -1, -1, -1, - -1, 6, -1, 81, 82, 83, 84, 85, 86, 87, - 88, 85, -1, -1, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 30, 31, 32, 33, 34, - 35, 36, -1, 38, 39, 40, 41, 42, 43, 44, - 49, -1, -1, 48, -1, -1, 55, 52, -1, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, - -1, -1, -1, 68, 69, -1, -1, -1, -1, -1, - -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, - 85, -1, -1, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 9, -1, -1, 12, 13, 14, - -1, 16, 17, 18, 19, -1, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, -1, 33, -1, - -1, -1, -1, 38, 39, 40, 41, -1, -1, -1, - -1, 46, 47, 48, -1, -1, -1, -1, -1, -1, - 9, 56, 57, 12, 13, 14, -1, 16, 17, 18, - 19, -1, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, -1, 33, -1, -1, -1, -1, 38, - 39, 40, 41, -1, 89, 90, -1, 46, 47, 48, - -1, -1, -1, -1, -1, -1, 9, 56, 57, 12, - 13, 14, -1, 16, 17, 18, 19, -1, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, -1, - 33, 30, 31, -1, 33, 38, 39, 40, 41, -1, - 89, 90, -1, 46, -1, 48, -1, -1, -1, 48, - -1, -1, 51, 56, 57, -1, -1, 56, 57, -1, + 0, 48, 100, 3, 4, 79, 153, 20, 8, 3, + 4, 46, 284, 46, 284, 284, 200, 79, 3, 4, + 5, 6, 7, 150, 46, 25, 22, 0, 46, 50, + 157, 56, 54, 160, 34, 35, 220, 72, 56, 56, + 34, 35, 50, 32, 33, 93, 35, 92, 195, 49, + 39, 91, 92, 200, 32, 33, 52, 35, 88, 89, + 90, 50, 96, 97, 53, 112, 47, 50, 215, 216, + 91, 92, 50, 220, 46, 53, 87, 46, 92, 79, + 54, 153, 93, 91, 92, 79, 97, 98, 99, 100, + 47, 47, 276, 47, 47, 52, 52, 56, 52, 52, + 47, 101, 91, 92, 48, 52, 46, 92, 32, 33, + 47, 35, 50, 91, 92, 52, 40, 41, 42, 43, + 47, 54, 47, 195, 50, 52, 50, 52, 200, 276, + 50, 47, 54, 47, 58, 59, 52, 284, 52, 46, + 52, 47, 51, 215, 216, 145, 52, 274, 220, 46, + 54, 151, 424, 153, 424, 424, 56, 47, 158, 153, + 47, 161, 52, 46, 46, 52, 46, 91, 92, 296, + 297, 32, 33, 46, 35, 46, 46, 55, 252, 40, + 41, 42, 43, 86, 87, 88, 89, 90, 56, 50, + 252, 191, 205, 56, 56, 195, 46, 381, 46, 383, + 200, 195, 329, 50, 276, 332, 200, 56, 46, 19, + 56, 56, 284, 46, 56, 215, 216, 60, 61, 56, + 220, 215, 216, 51, 47, 97, 220, 301, 302, 26, + 91, 92, 46, 55, 381, 55, 383, 46, 422, 301, + 302, 425, 46, 86, 87, 88, 89, 90, 46, 51, + 47, 378, 252, 50, 51, 51, 51, 46, 252, 46, + 46, 445, 446, 56, 56, 56, 46, 394, 46, 396, + 17, 398, 56, 56, 348, 422, 276, 424, 425, 22, + 56, 56, 276, 56, 284, 285, 348, 56, 56, 387, + 284, 47, 47, 47, 47, 56, 56, 56, 445, 446, + 8, 301, 302, 8, 195, 8, 424, 301, 302, 381, + 205, 383, 109, 110, -1, 112, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 153, 144, 348, -1, + 422, -1, 424, 425, 348, -1, -1, 32, 33, 156, + 35, -1, 159, -1, 39, 162, 413, -1, 415, 166, + 417, 168, 153, 445, 446, 50, -1, -1, 53, -1, + -1, 381, -1, 383, -1, -1, 386, 381, 195, 383, + -1, -1, -1, 200, -1, -1, -1, -1, -1, 196, + -1, -1, -1, -1, -1, -1, -1, -1, 215, 216, + -1, -1, 209, 220, 195, -1, 91, 92, 153, 200, + -1, -1, 422, -1, 424, 425, -1, -1, 422, -1, + 424, 425, -1, -1, 215, 216, -1, -1, -1, 220, + 32, 33, -1, 35, -1, 445, 446, 39, -1, 153, + -1, 445, 446, -1, 46, -1, -1, -1, 50, -1, + 195, 53, 54, -1, -1, 200, -1, -1, 153, 276, + -1, -1, -1, 270, -1, -1, -1, 284, -1, -1, + 215, 216, -1, -1, 281, 220, 283, -1, -1, 286, + -1, 195, -1, -1, -1, 276, 200, -1, -1, 91, + 92, 298, -1, 284, 153, -1, -1, -1, -1, -1, + 195, 215, 216, -1, -1, 200, 220, -1, -1, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 215, 216, -1, -1, -1, 220, -1, 334, -1, -1, + -1, 276, -1, -1, -1, -1, 195, 32, 33, 284, + 35, 200, 32, 33, 39, 35, -1, -1, -1, 39, + 357, 358, 359, 360, -1, 50, 215, 216, 53, -1, + 50, 220, 276, 53, 381, -1, 383, -1, -1, -1, + 284, -1, -1, -1, -1, 382, -1, 384, 385, -1, + -1, 276, -1, -1, -1, -1, -1, -1, -1, 284, + 381, -1, 383, -1, -1, 153, 91, 92, -1, -1, + -1, 91, 92, -1, -1, 422, -1, 424, 425, -1, + -1, -1, -1, -1, -1, -1, -1, 276, -1, 426, + -1, -1, -1, 32, 33, 284, 35, -1, 445, 446, + 39, 422, -1, 424, 425, -1, 381, 195, 383, -1, + -1, 50, 200, -1, 53, 32, 33, -1, 35, -1, + -1, -1, 39, -1, 445, 446, -1, 215, 216, -1, + -1, -1, 220, 50, -1, -1, 53, 381, -1, 383, + -1, 9, 10, -1, 12, 13, -1, 422, -1, 424, + 425, -1, 91, 92, -1, -1, 381, -1, 383, -1, + -1, -1, -1, -1, 32, 33, -1, 35, -1, -1, + 445, 446, -1, -1, 91, 92, -1, -1, 422, -1, + 424, 425, 50, -1, -1, 53, -1, -1, 276, -1, + 58, 59, 381, -1, 383, -1, 284, 422, -1, 424, + 425, 445, 446, -1, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, -1, -1, 8, -1, -1, + 445, 446, -1, 91, 92, -1, -1, -1, -1, -1, + -1, -1, -1, 422, -1, 424, 425, -1, -1, -1, + -1, 32, 33, 34, 35, 36, 37, 38, -1, 40, + 41, 42, 43, 44, 45, 46, 445, 446, -1, 50, + 51, -1, -1, 54, -1, -1, -1, 32, 33, -1, + 35, -1, -1, -1, 39, -1, -1, -1, -1, 70, + 71, -1, -1, -1, -1, 50, -1, 8, 53, -1, + -1, -1, -1, 381, -1, 383, 87, -1, -1, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + -1, 32, 33, 34, 35, 36, 37, 38, -1, 40, + 41, 42, 43, 44, 45, 46, 91, 92, -1, 50, + -1, -1, -1, 54, 422, 56, 424, 425, -1, -1, + -1, 32, 33, -1, 35, -1, -1, -1, 39, 70, + 71, -1, -1, -1, -1, -1, 8, 445, 446, 50, + -1, -1, 53, -1, -1, -1, 87, -1, -1, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 32, 33, 34, 35, 36, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, -1, -1, -1, 50, -1, + 91, 92, 54, -1, -1, 32, 33, -1, 35, -1, + -1, -1, 39, -1, -1, -1, -1, -1, 70, 71, + -1, -1, -1, 50, -1, 8, 53, -1, -1, -1, + -1, -1, -1, -1, -1, 87, -1, -1, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 32, + 33, 34, 35, 36, 37, 38, -1, 40, 41, 42, + 43, 44, 45, 46, 91, 92, -1, 50, 55, -1, + 57, 54, -1, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, -1, -1, -1, -1, 70, 71, -1, + -1, -1, -1, -1, -1, -1, 83, 84, 85, 86, + 87, 88, 89, 90, 87, -1, -1, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 3, -1, + -1, -1, -1, -1, -1, -1, 11, -1, -1, 14, + 15, 16, -1, 18, 19, 20, 21, -1, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, + 35, -1, -1, -1, -1, 40, 41, 42, 43, -1, + -1, -1, -1, 48, 49, 50, -1, -1, -1, -1, + -1, 3, 4, 58, 59, -1, -1, -1, -1, 11, + -1, -1, 14, 15, 16, -1, 18, 19, 20, 21, + -1, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, -1, 35, -1, -1, 91, 92, 40, 41, + 42, 43, -1, -1, -1, -1, 48, 3, 50, -1, + -1, -1, -1, -1, -1, 11, 58, 59, 14, 15, + 16, -1, 18, 19, 20, 21, -1, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, -1, 35, + -1, -1, -1, -1, 40, 41, 42, 43, -1, 91, + 92, -1, 48, 49, 50, -1, -1, -1, -1, -1, + 3, 4, 58, 59, -1, -1, -1, -1, 11, -1, + -1, 14, 15, 16, -1, 18, 19, 20, 21, -1, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, -1, 35, -1, -1, 91, 92, 40, 41, 42, + 43, -1, -1, -1, -1, 48, 3, 50, -1, -1, + -1, -1, -1, -1, 11, 58, 59, 14, 15, 16, + -1, 18, 19, 20, 21, -1, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, -1, 35, 32, + 33, -1, 35, 40, 41, 42, 43, -1, 91, 92, + -1, 48, -1, 50, -1, -1, -1, 50, -1, -1, + 53, 58, 59, -1, -1, 58, 59, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + -1, 47, -1, -1, 91, 92, 52, -1, 91, 92, + -1, 57, -1, -1, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 83, 84, 85, + 86, 87, 88, 89, 90, 47, -1, -1, -1, -1, + 52, -1, -1, -1, -1, 57, -1, -1, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, -1, 45, -1, -1, 89, 90, 50, -1, - 89, 90, -1, 55, -1, -1, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, - 82, 83, 84, 85, 86, 87, 88, 45, -1, -1, - -1, -1, 50, -1, -1, -1, -1, 55, -1, -1, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + -1, 83, 84, 85, 86, 87, 88, 89, 90, 47, + -1, -1, -1, -1, 52, -1, -1, -1, -1, 57, + -1, -1, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 83, 84, 85, 86, 87, + 88, 89, 90, 47, -1, -1, -1, -1, 52, -1, + -1, -1, -1, 57, -1, -1, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 47, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 57, -1, -1, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 81, 82, 83, 84, 85, 86, 87, - 88, 45, -1, -1, -1, -1, 50, -1, -1, -1, - -1, 55, -1, -1, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 81, 82, 83, - 84, 85, 86, 87, 88, 45, -1, -1, -1, -1, - 50, -1, -1, -1, -1, 55, -1, -1, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, - -1, 81, 82, 83, 84, 85, 86, 87, 88, 55, - -1, -1, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 45, -1, 81, 82, 83, 84, 85, - 86, 87, 88, 55, -1, -1, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 45, -1, 81, - 82, 83, 84, 85, 86, 87, 88, 55, -1, -1, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + -1, 47, -1, 83, 84, 85, 86, 87, 88, 89, + 90, 57, -1, -1, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 47, -1, 83, 84, 85, + 86, 87, 88, 89, 90, 57, -1, -1, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 47, + -1, 83, 84, 85, 86, 87, 88, 89, 90, 57, + -1, -1, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 47, -1, 83, 84, 85, 86, 87, + 88, 89, 90, 57, -1, -1, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 47, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 57, -1, -1, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 45, -1, 81, 82, 83, 84, 85, 86, 87, - 88, 55, -1, -1, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 45, -1, 81, 82, 83, - 84, 85, 86, 87, 88, 55, -1, -1, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, - -1, 81, 82, 83, 84, 85, 86, 87, 88, 55, - -1, -1, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 45, -1, 81, 82, 83, 84, 85, - 86, 87, 88, 55, -1, -1, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 45, -1, 81, - 82, 83, 84, 85, 86, 87, 88, 55, -1, -1, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + -1, 47, -1, 83, 84, 85, 86, 87, 88, 89, + 90, 57, -1, -1, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 47, -1, 83, 84, 85, + 86, 87, 88, 89, 90, 57, -1, -1, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 47, + -1, 83, 84, 85, 86, 87, 88, 89, 90, 57, + -1, -1, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 47, -1, 83, 84, 85, 86, 87, + 88, 89, 90, 57, -1, -1, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 51, -1, -1, + -1, -1, -1, 57, -1, -1, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 51, -1, -1, + -1, -1, -1, 57, -1, -1, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 51, -1, -1, + -1, -1, -1, 57, -1, -1, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 51, -1, -1, + -1, -1, -1, 57, -1, -1, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 51, -1, -1, + -1, -1, -1, 57, -1, -1, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 52, -1, -1, + -1, -1, 57, -1, -1, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 83, 84, + 85, 86, 87, 88, 89, 90, 56, 57, -1, -1, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 45, -1, 81, 82, 83, 84, 85, 86, 87, - 88, 55, -1, -1, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 45, -1, 81, 82, 83, - 84, 85, 86, 87, 88, 55, -1, -1, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 81, 82, 83, 84, 85, 86, 87, 88, 49, - -1, -1, -1, -1, -1, 55, -1, -1, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 81, 82, 83, 84, 85, 86, 87, 88, 49, - -1, -1, -1, -1, -1, 55, -1, -1, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 81, 82, 83, 84, 85, 86, 87, 88, 49, - -1, -1, -1, -1, -1, 55, -1, -1, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 81, 82, 83, 84, 85, 86, 87, 88, 49, - -1, -1, -1, -1, -1, 55, -1, -1, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 81, 82, 83, 84, 85, 86, 87, 88, 50, - -1, -1, -1, -1, 55, -1, -1, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 81, 82, 83, 84, 85, 86, 87, 88, 54, 55, - -1, -1, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 81, 82, 83, 84, 85, - 86, 87, 88, 54, 55, -1, -1, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 81, 82, 83, 84, 85, 86, 87, 88, 54, 55, - -1, -1, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 55, -1, -1, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 81, 82, 83, 84, 85, - 86, 87, 88, -1, -1, -1, -1, -1, 81, 82, - 83, 84, 85, 86, 87, 88, 58, 59, -1, 61, - 62, 63, 64, 65, 66, 67, 58, 59, -1, -1, - 62, 63, 64, 65, 66, 67, -1, -1, -1, 81, - 82, 83, 84, 85, 86, 87, 88, -1, -1, 81, - 82, 83, 84, 85, 86, 87, 88, 58, 59, -1, - -1, 62, 63, 64, 65, 66, 67, 58, 59, -1, - -1, 62, 63, 64, 65, 66, 67, -1, -1, -1, - -1, 82, 83, 84, 85, 86, 87, 88, -1, -1, - -1, 82, -1, 84, 85, 86, 87, 88, 58, 59, - -1, -1, 62, 63, 64, 65, 66, 67, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 84, 85, 86, 87, 88 + -1, -1, -1, 83, 84, 85, 86, 87, 88, 89, + 90, 56, 57, -1, -1, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 83, 84, + 85, 86, 87, 88, 89, 90, 56, 57, -1, -1, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 57, -1, -1, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 83, 84, 85, 86, 87, 88, 89, + 90, -1, -1, -1, -1, -1, 83, 84, 85, 86, + 87, 88, 89, 90, 60, 61, -1, 63, 64, 65, + 66, 67, 68, 69, 60, 61, -1, -1, 64, 65, + 66, 67, 68, 69, -1, -1, -1, 83, 84, 85, + 86, 87, 88, 89, 90, -1, -1, 83, 84, 85, + 86, 87, 88, 89, 90, 60, 61, -1, -1, 64, + 65, 66, 67, 68, 69, 60, 61, -1, -1, 64, + 65, 66, 67, 68, 69, -1, -1, -1, -1, 84, + 85, 86, 87, 88, 89, 90, -1, -1, -1, 84, + -1, 86, 87, 88, 89, 90, 60, 61, -1, -1, + 64, 65, 66, 67, 68, 69, 60, 61, -1, -1, + -1, -1, 66, 67, 68, 69, -1, -1, -1, -1, + -1, -1, 86, 87, 88, 89, 90, -1, -1, -1, + -1, -1, 86, 87, 88, 89, 90 }; const unsigned char parser::yystos_[] = { - 0, 3, 4, 5, 90, 109, 110, 111, 112, 113, - 114, 115, 116, 180, 89, 180, 181, 181, 44, 0, - 111, 112, 113, 44, 70, 54, 54, 91, 183, 160, - 180, 6, 30, 31, 32, 33, 34, 35, 36, 38, - 39, 40, 41, 42, 43, 44, 48, 52, 68, 69, - 85, 88, 92, 93, 94, 95, 96, 97, 98, 145, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 45, 45, 50, - 48, 180, 181, 48, 180, 181, 48, 44, 44, 145, - 48, 49, 145, 161, 162, 180, 145, 145, 94, 95, - 90, 54, 55, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 81, 82, 83, 84, 85, 86, 87, - 88, 37, 48, 51, 157, 158, 180, 181, 44, 52, - 54, 46, 118, 180, 48, 44, 52, 48, 44, 52, - 48, 145, 145, 45, 50, 145, 50, 49, 145, 145, - 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, - 145, 145, 145, 145, 145, 145, 145, 145, 180, 52, - 161, 162, 180, 9, 12, 13, 14, 16, 17, 18, - 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 47, 48, 56, 57, 117, 118, 119, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 147, 148, 149, 155, 156, 166, 167, 170, 174, - 175, 176, 177, 180, 145, 161, 180, 145, 161, 180, - 145, 45, 45, 145, 49, 145, 53, 49, 180, 45, - 44, 145, 54, 44, 54, 44, 117, 44, 44, 44, - 44, 85, 183, 187, 53, 54, 54, 54, 145, 54, - 44, 44, 48, 155, 156, 170, 170, 47, 117, 54, - 54, 54, 54, 54, 7, 8, 10, 11, 56, 57, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 49, 45, 44, 49, 45, 44, 49, 50, 49, - 145, 161, 54, 45, 145, 17, 145, 120, 147, 148, - 149, 170, 180, 145, 53, 53, 54, 161, 161, 145, - 44, 44, 44, 44, 145, 145, 145, 145, 145, 145, - 145, 145, 145, 145, 145, 49, 161, 49, 161, 49, - 145, 44, 45, 54, 45, 44, 45, 54, 20, 50, - 45, 45, 45, 145, 145, 145, 145, 44, 45, 44, - 45, 44, 45, 161, 117, 145, 117, 145, 146, 145, - 180, 118, 54, 54, 45, 45, 50, 45, 50, 45, - 50, 161, 161, 161, 45, 15, 45, 54, 45, 20, - 54, 54, 162, 54, 162, 54, 162, 45, 45, 45, - 117, 54, 120, 117, 145, 45, 45, 45, 45, 45, - 54, 54, 54, 117, 117 + 0, 3, 4, 5, 6, 7, 92, 111, 112, 113, + 114, 115, 116, 117, 118, 183, 91, 183, 184, 184, + 46, 0, 113, 114, 115, 46, 72, 56, 56, 93, + 186, 163, 183, 8, 32, 33, 34, 35, 36, 37, + 38, 40, 41, 42, 43, 44, 45, 46, 50, 54, + 70, 71, 87, 90, 94, 95, 96, 97, 98, 99, + 100, 148, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 47, + 47, 52, 50, 183, 184, 50, 183, 184, 50, 46, + 46, 148, 50, 51, 148, 164, 165, 183, 148, 148, + 96, 97, 92, 56, 57, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 83, 84, 85, 86, 87, + 88, 89, 90, 39, 50, 53, 160, 161, 183, 184, + 46, 54, 56, 48, 121, 183, 50, 46, 54, 50, + 46, 54, 50, 148, 148, 47, 52, 148, 52, 51, + 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, + 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, + 183, 54, 164, 165, 183, 3, 11, 14, 15, 16, + 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 49, 50, 58, 59, 119, 120, 121, + 122, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 150, 151, 152, 158, 159, + 169, 170, 173, 177, 178, 179, 180, 183, 148, 164, + 183, 148, 164, 183, 148, 47, 47, 148, 51, 148, + 55, 51, 183, 47, 46, 4, 122, 148, 56, 46, + 56, 46, 119, 46, 46, 46, 46, 87, 186, 190, + 55, 56, 56, 56, 148, 56, 46, 46, 50, 158, + 159, 173, 173, 49, 119, 56, 56, 56, 56, 56, + 9, 10, 12, 13, 58, 59, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 51, 47, 46, + 51, 47, 46, 51, 52, 51, 148, 164, 4, 56, + 47, 148, 19, 148, 123, 150, 151, 152, 173, 183, + 148, 55, 55, 56, 164, 164, 148, 46, 46, 46, + 46, 148, 148, 148, 148, 148, 148, 148, 148, 148, + 148, 148, 51, 164, 51, 164, 51, 148, 46, 47, + 56, 47, 46, 47, 56, 22, 52, 47, 47, 47, + 148, 148, 148, 148, 46, 47, 46, 47, 46, 47, + 164, 119, 148, 119, 148, 149, 148, 183, 121, 56, + 56, 47, 47, 52, 47, 52, 47, 52, 164, 164, + 164, 47, 17, 47, 56, 47, 22, 56, 56, 165, + 56, 165, 56, 165, 47, 47, 47, 119, 56, 123, + 119, 148, 47, 47, 47, 47, 47, 56, 56, 56, + 119, 119 }; const unsigned char parser::yyr1_[] = { - 0, 108, 109, 109, 110, 110, 110, 110, 110, 110, - 111, 112, 113, 113, 113, 114, 115, 116, 117, 117, - 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, - 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, - 117, 117, 117, 118, 118, 119, 119, 120, 120, 120, - 120, 121, 121, 122, 122, 122, 123, 124, 124, 125, - 126, 126, 127, 127, 128, 129, 129, 130, 131, 132, - 133, 134, 135, 135, 136, 137, 137, 138, 139, 140, - 141, 141, 142, 143, 144, 145, 145, 145, 146, 146, - 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, - 147, 148, 148, 149, 149, 150, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, - 151, 151, 151, 151, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 153, 154, 155, 155, 156, 156, - 157, 157, 157, 157, 157, 157, 158, 158, 158, 158, - 159, 160, 160, 160, 161, 161, 162, 162, 163, 164, - 165, 165, 166, 167, 168, 169, 170, 170, 170, 170, - 170, 170, 170, 170, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 181, 182, 183, 184, - 185, 186, 186, 187, 187, 187, 187, 187, 188, 189 + 0, 110, 111, 111, 112, 112, 112, 112, 112, 112, + 113, 114, 115, 115, 115, 115, 115, 116, 117, 118, + 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 120, 120, 121, 121, + 122, 122, 123, 123, 123, 123, 124, 124, 125, 125, + 125, 126, 127, 127, 128, 129, 129, 130, 130, 131, + 132, 132, 133, 134, 135, 136, 137, 138, 138, 139, + 140, 140, 141, 142, 143, 144, 144, 145, 146, 147, + 148, 148, 148, 149, 149, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 151, 151, 152, 152, + 153, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 156, + 157, 158, 158, 159, 159, 160, 160, 160, 160, 160, + 160, 161, 161, 161, 161, 162, 163, 163, 163, 164, + 164, 165, 165, 166, 167, 168, 168, 169, 170, 171, + 172, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 184, 185, 186, 187, 188, 189, 189, 190, 190, + 190, 190, 190, 191, 192 }; const signed char parser::yyr2_[] = { 0, 2, 1, 0, 2, 2, 2, 1, 1, 1, - 3, 3, 1, 1, 1, 5, 4, 5, 1, 1, + 3, 3, 1, 1, 1, 1, 1, 5, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 3, 2, 2, 1, 1, 1, 1, - 0, 2, 2, 2, 2, 2, 6, 8, 6, 3, - 8, 6, 8, 6, 2, 2, 4, 5, 7, 5, - 7, 9, 7, 9, 5, 3, 3, 2, 2, 2, - 3, 2, 2, 5, 5, 1, 1, 1, 1, 0, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 2, 2, 2, 2, 5, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 3, 2, 3, 2, + 2, 1, 1, 1, 1, 0, 2, 2, 2, 2, + 2, 6, 8, 6, 3, 8, 6, 8, 6, 2, + 2, 4, 5, 7, 5, 7, 9, 7, 9, 5, + 3, 3, 2, 2, 2, 3, 2, 2, 5, 5, + 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, + 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 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, 1, 1, 2, 2, - 4, 6, 5, 7, 5, 7, 8, 9, 9, 9, - 3, 3, 1, 0, 1, 0, 3, 1, 4, 4, - 2, 3, 4, 3, 2, 3, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, - 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 7, 2, 1, 2, 1, 1, 1, 1, 1, 1 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 2, 1, 1, 2, 2, 4, 6, 5, 7, 5, + 7, 8, 9, 9, 9, 3, 3, 1, 0, 1, + 0, 3, 1, 4, 4, 2, 3, 4, 3, 2, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, + 1, 1, 1, 1, 1, 7, 2, 1, 2, 1, + 1, 1, 1, 1, 1 }; @@ -4486,28 +4581,29 @@ namespace xsk { namespace gsc { namespace iw8 { const short parser::yyrline_[] = { - 0, 255, 255, 256, 260, 262, 264, 266, 268, 270, - 275, 279, 284, 285, 286, 290, 295, 300, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 333, 334, 338, 340, 345, 347, 349, - 352, 356, 358, 363, 365, 367, 372, 377, 379, 384, - 389, 391, 396, 398, 403, 408, 410, 415, 420, 425, - 430, 435, 440, 442, 447, 452, 454, 459, 464, 469, - 474, 476, 481, 486, 491, 496, 497, 498, 502, 503, - 507, 509, 511, 513, 515, 517, 519, 521, 523, 525, - 527, 532, 534, 539, 541, 546, 551, 553, 555, 557, - 559, 561, 563, 565, 567, 569, 571, 573, 575, 577, - 579, 581, 583, 585, 590, 591, 592, 593, 594, 595, - 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, - 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, - 616, 617, 618, 619, 623, 628, 633, 634, 637, 638, - 642, 644, 646, 648, 650, 652, 657, 659, 661, 663, - 668, 673, 675, 678, 682, 685, 689, 691, 696, 701, - 706, 708, 713, 718, 723, 728, 733, 734, 735, 736, - 737, 738, 739, 740, 741, 745, 750, 755, 760, 765, - 770, 775, 780, 785, 790, 795, 797, 802, 807, 812, - 817, 822, 824, 829, 831, 833, 835, 837, 842, 847 + 0, 258, 258, 259, 263, 265, 267, 269, 271, 273, + 278, 282, 287, 288, 289, 290, 291, 295, 300, 305, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 334, 335, 339, 340, 344, 345, + 349, 351, 356, 358, 360, 363, 367, 369, 374, 376, + 378, 383, 388, 390, 395, 400, 402, 407, 409, 414, + 419, 421, 426, 431, 436, 441, 446, 451, 453, 458, + 463, 465, 470, 475, 480, 485, 487, 492, 497, 502, + 507, 508, 509, 513, 514, 518, 520, 522, 524, 526, + 528, 530, 532, 534, 536, 538, 543, 545, 550, 552, + 557, 562, 564, 566, 568, 570, 572, 574, 576, 578, + 580, 582, 584, 586, 588, 590, 592, 594, 596, 601, + 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, + 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, + 622, 623, 624, 625, 626, 627, 628, 629, 630, 634, + 639, 644, 645, 648, 649, 653, 655, 657, 659, 661, + 663, 668, 670, 672, 674, 679, 684, 686, 689, 693, + 696, 700, 702, 707, 712, 717, 719, 724, 729, 734, + 739, 744, 745, 746, 747, 748, 749, 750, 751, 752, + 756, 761, 766, 771, 776, 781, 786, 791, 796, 801, + 806, 808, 813, 818, 823, 828, 833, 835, 840, 842, + 844, 846, 848, 853, 858 }; void @@ -4540,9 +4636,9 @@ namespace xsk { namespace gsc { namespace iw8 { #line 13 "parser.ypp" } } } // xsk::gsc::iw8 -#line 4544 "parser.cpp" +#line 4640 "parser.cpp" -#line 851 "parser.ypp" +#line 862 "parser.ypp" void xsk::gsc::iw8::parser::error(const xsk::gsc::location& loc, const std::string& msg) diff --git a/src/iw8/xsk/parser.hpp b/src/iw8/xsk/parser.hpp index 29f35f13..04a93edb 100644 --- a/src/iw8/xsk/parser.hpp +++ b/src/iw8/xsk/parser.hpp @@ -586,6 +586,7 @@ namespace xsk { namespace gsc { namespace iw8 { // stmt_ifelse char dummy56[sizeof (ast::stmt_ifelse::ptr)]; + // stmt_dev // stmt_block // stmt_list char dummy57[sizeof (ast::stmt_list::ptr)]; @@ -685,111 +686,113 @@ namespace xsk { namespace gsc { namespace iw8 { IW8EOF = 0, // "end of file" IW8error = 1, // error IW8UNDEF = 2, // "invalid token" - INLINE = 3, // "#inline" - INCLUDE = 4, // "#include" - USINGTREE = 5, // "#using_animtree" - ANIMTREE = 6, // "#animtree" - ENDON = 7, // "endon" - NOTIFY = 8, // "notify" - WAIT = 9, // "wait" - WAITTILL = 10, // "waittill" - WAITTILLMATCH = 11, // "waittillmatch" - WAITTILLFRAMEEND = 12, // "waittillframeend" - WAITFRAME = 13, // "waitframe" - IF = 14, // "if" - ELSE = 15, // "else" - DO = 16, // "do" - WHILE = 17, // "while" - FOR = 18, // "for" - FOREACH = 19, // "foreach" - IN = 20, // "in" - SWITCH = 21, // "switch" - CASE = 22, // "case" - DEFAULT = 23, // "default" - BREAK = 24, // "break" - CONTINUE = 25, // "continue" - RETURN = 26, // "return" - BREAKPOINT = 27, // "breakpoint" - PROFBEGIN = 28, // "prof_begin" - PROFEND = 29, // "prof_end" - THREAD = 30, // "thread" - CHILDTHREAD = 31, // "childthread" - THISTHREAD = 32, // "thisthread" - CALL = 33, // "call" - TRUE = 34, // "true" - FALSE = 35, // "false" - UNDEFINED = 36, // "undefined" - SIZE = 37, // ".size" - GAME = 38, // "game" - SELF = 39, // "self" - ANIM = 40, // "anim" - LEVEL = 41, // "level" - ISDEFINED = 42, // "isdefined" - ISTRUE = 43, // "istrue" - LPAREN = 44, // "(" - RPAREN = 45, // ")" - LBRACE = 46, // "{" - RBRACE = 47, // "}" - LBRACKET = 48, // "[" - RBRACKET = 49, // "]" - COMMA = 50, // "," - DOT = 51, // "." - DOUBLECOLON = 52, // "::" - COLON = 53, // ":" - SEMICOLON = 54, // ";" - QMARK = 55, // "?" - INCREMENT = 56, // "++" - DECREMENT = 57, // "--" - LSHIFT = 58, // "<<" - RSHIFT = 59, // ">>" - OR = 60, // "||" - AND = 61, // "&&" - EQUALITY = 62, // "==" - INEQUALITY = 63, // "!=" - LESS_EQUAL = 64, // "<=" - GREATER_EQUAL = 65, // ">=" - LESS = 66, // "<" - GREATER = 67, // ">" - NOT = 68, // "!" - COMPLEMENT = 69, // "~" - ASSIGN = 70, // "=" - ASSIGN_ADD = 71, // "+=" - ASSIGN_SUB = 72, // "-=" - ASSIGN_MUL = 73, // "*=" - ASSIGN_DIV = 74, // "/=" - ASSIGN_MOD = 75, // "%=" - ASSIGN_BW_OR = 76, // "|=" - ASSIGN_BW_AND = 77, // "&=" - ASSIGN_BW_EXOR = 78, // "^=" - ASSIGN_RSHIFT = 79, // ">>=" - ASSIGN_LSHIFT = 80, // "<<=" - BITWISE_OR = 81, // "|" - BITWISE_AND = 82, // "&" - BITWISE_EXOR = 83, // "^" - ADD = 84, // "+" - SUB = 85, // "-" - MUL = 86, // "*" - DIV = 87, // "/" - MOD = 88, // "%" - PATH = 89, // "path" - IDENTIFIER = 90, // "identifier" - STRING = 91, // "string literal" - ISTRING = 92, // "localized string" - COLOR = 93, // "color" - FLOAT = 94, // "float" - INT_DEC = 95, // "int" - INT_OCT = 96, // "octal int" - INT_BIN = 97, // "binary int" - INT_HEX = 98, // "hexadecimal int" - ADD_ARRAY = 99, // ADD_ARRAY - THEN = 100, // THEN - TERN = 101, // TERN - NEG = 102, // NEG - ANIMREF = 103, // ANIMREF - PREINC = 104, // PREINC - PREDEC = 105, // PREDEC - POSTINC = 106, // POSTINC - POSTDEC = 107 // POSTDEC + DEVBEGIN = 3, // "/#" + DEVEND = 4, // "#/" + INLINE = 5, // "#inline" + INCLUDE = 6, // "#include" + USINGTREE = 7, // "#using_animtree" + ANIMTREE = 8, // "#animtree" + ENDON = 9, // "endon" + NOTIFY = 10, // "notify" + WAIT = 11, // "wait" + WAITTILL = 12, // "waittill" + WAITTILLMATCH = 13, // "waittillmatch" + WAITTILLFRAMEEND = 14, // "waittillframeend" + WAITFRAME = 15, // "waitframe" + IF = 16, // "if" + ELSE = 17, // "else" + DO = 18, // "do" + WHILE = 19, // "while" + FOR = 20, // "for" + FOREACH = 21, // "foreach" + IN = 22, // "in" + SWITCH = 23, // "switch" + CASE = 24, // "case" + DEFAULT = 25, // "default" + BREAK = 26, // "break" + CONTINUE = 27, // "continue" + RETURN = 28, // "return" + BREAKPOINT = 29, // "breakpoint" + PROFBEGIN = 30, // "prof_begin" + PROFEND = 31, // "prof_end" + THREAD = 32, // "thread" + CHILDTHREAD = 33, // "childthread" + THISTHREAD = 34, // "thisthread" + CALL = 35, // "call" + TRUE = 36, // "true" + FALSE = 37, // "false" + UNDEFINED = 38, // "undefined" + SIZE = 39, // ".size" + GAME = 40, // "game" + SELF = 41, // "self" + ANIM = 42, // "anim" + LEVEL = 43, // "level" + ISDEFINED = 44, // "isdefined" + ISTRUE = 45, // "istrue" + LPAREN = 46, // "(" + RPAREN = 47, // ")" + LBRACE = 48, // "{" + RBRACE = 49, // "}" + LBRACKET = 50, // "[" + RBRACKET = 51, // "]" + COMMA = 52, // "," + DOT = 53, // "." + DOUBLECOLON = 54, // "::" + COLON = 55, // ":" + SEMICOLON = 56, // ";" + QMARK = 57, // "?" + INCREMENT = 58, // "++" + DECREMENT = 59, // "--" + LSHIFT = 60, // "<<" + RSHIFT = 61, // ">>" + OR = 62, // "||" + AND = 63, // "&&" + EQUALITY = 64, // "==" + INEQUALITY = 65, // "!=" + LESS_EQUAL = 66, // "<=" + GREATER_EQUAL = 67, // ">=" + LESS = 68, // "<" + GREATER = 69, // ">" + NOT = 70, // "!" + COMPLEMENT = 71, // "~" + ASSIGN = 72, // "=" + ASSIGN_ADD = 73, // "+=" + ASSIGN_SUB = 74, // "-=" + ASSIGN_MUL = 75, // "*=" + ASSIGN_DIV = 76, // "/=" + ASSIGN_MOD = 77, // "%=" + ASSIGN_BW_OR = 78, // "|=" + ASSIGN_BW_AND = 79, // "&=" + ASSIGN_BW_EXOR = 80, // "^=" + ASSIGN_RSHIFT = 81, // ">>=" + ASSIGN_LSHIFT = 82, // "<<=" + BITWISE_OR = 83, // "|" + BITWISE_AND = 84, // "&" + BITWISE_EXOR = 85, // "^" + ADD = 86, // "+" + SUB = 87, // "-" + MUL = 88, // "*" + DIV = 89, // "/" + MOD = 90, // "%" + PATH = 91, // "path" + IDENTIFIER = 92, // "identifier" + STRING = 93, // "string literal" + ISTRING = 94, // "localized string" + COLOR = 95, // "color" + FLOAT = 96, // "float" + INT_DEC = 97, // "int" + INT_OCT = 98, // "octal int" + INT_BIN = 99, // "binary int" + INT_HEX = 100, // "hexadecimal int" + ADD_ARRAY = 101, // ADD_ARRAY + THEN = 102, // THEN + TERN = 103, // TERN + NEG = 104, // NEG + ANIMREF = 105, // ANIMREF + PREINC = 106, // PREINC + PREDEC = 107, // PREDEC + POSTINC = 108, // POSTINC + POSTDEC = 109 // POSTDEC }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; @@ -806,198 +809,201 @@ namespace xsk { namespace gsc { namespace iw8 { { enum symbol_kind_type { - YYNTOKENS = 108, ///< Number of tokens. + YYNTOKENS = 110, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error S_YYUNDEF = 2, // "invalid token" - S_INLINE = 3, // "#inline" - S_INCLUDE = 4, // "#include" - S_USINGTREE = 5, // "#using_animtree" - S_ANIMTREE = 6, // "#animtree" - S_ENDON = 7, // "endon" - S_NOTIFY = 8, // "notify" - S_WAIT = 9, // "wait" - S_WAITTILL = 10, // "waittill" - S_WAITTILLMATCH = 11, // "waittillmatch" - S_WAITTILLFRAMEEND = 12, // "waittillframeend" - S_WAITFRAME = 13, // "waitframe" - S_IF = 14, // "if" - S_ELSE = 15, // "else" - S_DO = 16, // "do" - S_WHILE = 17, // "while" - S_FOR = 18, // "for" - S_FOREACH = 19, // "foreach" - S_IN = 20, // "in" - S_SWITCH = 21, // "switch" - S_CASE = 22, // "case" - S_DEFAULT = 23, // "default" - S_BREAK = 24, // "break" - S_CONTINUE = 25, // "continue" - S_RETURN = 26, // "return" - S_BREAKPOINT = 27, // "breakpoint" - S_PROFBEGIN = 28, // "prof_begin" - S_PROFEND = 29, // "prof_end" - S_THREAD = 30, // "thread" - S_CHILDTHREAD = 31, // "childthread" - S_THISTHREAD = 32, // "thisthread" - S_CALL = 33, // "call" - S_TRUE = 34, // "true" - S_FALSE = 35, // "false" - S_UNDEFINED = 36, // "undefined" - S_SIZE = 37, // ".size" - S_GAME = 38, // "game" - S_SELF = 39, // "self" - S_ANIM = 40, // "anim" - S_LEVEL = 41, // "level" - S_ISDEFINED = 42, // "isdefined" - S_ISTRUE = 43, // "istrue" - S_LPAREN = 44, // "(" - S_RPAREN = 45, // ")" - S_LBRACE = 46, // "{" - S_RBRACE = 47, // "}" - S_LBRACKET = 48, // "[" - S_RBRACKET = 49, // "]" - S_COMMA = 50, // "," - S_DOT = 51, // "." - S_DOUBLECOLON = 52, // "::" - S_COLON = 53, // ":" - S_SEMICOLON = 54, // ";" - S_QMARK = 55, // "?" - S_INCREMENT = 56, // "++" - S_DECREMENT = 57, // "--" - S_LSHIFT = 58, // "<<" - S_RSHIFT = 59, // ">>" - S_OR = 60, // "||" - S_AND = 61, // "&&" - S_EQUALITY = 62, // "==" - S_INEQUALITY = 63, // "!=" - S_LESS_EQUAL = 64, // "<=" - S_GREATER_EQUAL = 65, // ">=" - S_LESS = 66, // "<" - S_GREATER = 67, // ">" - S_NOT = 68, // "!" - S_COMPLEMENT = 69, // "~" - S_ASSIGN = 70, // "=" - S_ASSIGN_ADD = 71, // "+=" - S_ASSIGN_SUB = 72, // "-=" - S_ASSIGN_MUL = 73, // "*=" - S_ASSIGN_DIV = 74, // "/=" - S_ASSIGN_MOD = 75, // "%=" - S_ASSIGN_BW_OR = 76, // "|=" - S_ASSIGN_BW_AND = 77, // "&=" - S_ASSIGN_BW_EXOR = 78, // "^=" - S_ASSIGN_RSHIFT = 79, // ">>=" - S_ASSIGN_LSHIFT = 80, // "<<=" - S_BITWISE_OR = 81, // "|" - S_BITWISE_AND = 82, // "&" - S_BITWISE_EXOR = 83, // "^" - S_ADD = 84, // "+" - S_SUB = 85, // "-" - S_MUL = 86, // "*" - S_DIV = 87, // "/" - S_MOD = 88, // "%" - S_PATH = 89, // "path" - S_IDENTIFIER = 90, // "identifier" - S_STRING = 91, // "string literal" - S_ISTRING = 92, // "localized string" - S_COLOR = 93, // "color" - S_FLOAT = 94, // "float" - S_INT_DEC = 95, // "int" - S_INT_OCT = 96, // "octal int" - S_INT_BIN = 97, // "binary int" - S_INT_HEX = 98, // "hexadecimal int" - S_ADD_ARRAY = 99, // ADD_ARRAY - S_THEN = 100, // THEN - S_TERN = 101, // TERN - S_NEG = 102, // NEG - S_ANIMREF = 103, // ANIMREF - S_PREINC = 104, // PREINC - S_PREDEC = 105, // PREDEC - S_POSTINC = 106, // POSTINC - S_POSTDEC = 107, // POSTDEC - S_YYACCEPT = 108, // $accept - S_root = 109, // root - S_program = 110, // program - S_inline = 111, // inline - S_include = 112, // include - S_declaration = 113, // declaration - S_decl_usingtree = 114, // decl_usingtree - S_decl_constant = 115, // decl_constant - S_decl_thread = 116, // decl_thread - S_stmt = 117, // stmt - S_stmt_block = 118, // stmt_block - S_stmt_list = 119, // stmt_list - S_stmt_expr = 120, // stmt_expr - S_stmt_call = 121, // stmt_call - S_stmt_assign = 122, // stmt_assign - S_stmt_endon = 123, // stmt_endon - S_stmt_notify = 124, // stmt_notify - S_stmt_wait = 125, // stmt_wait - S_stmt_waittill = 126, // stmt_waittill - S_stmt_waittillmatch = 127, // stmt_waittillmatch - S_stmt_waittillframeend = 128, // stmt_waittillframeend - S_stmt_waitframe = 129, // stmt_waitframe - S_stmt_if = 130, // stmt_if - S_stmt_ifelse = 131, // stmt_ifelse - S_stmt_while = 132, // stmt_while - S_stmt_dowhile = 133, // stmt_dowhile - S_stmt_for = 134, // stmt_for - S_stmt_foreach = 135, // stmt_foreach - S_stmt_switch = 136, // stmt_switch - S_stmt_case = 137, // stmt_case - S_stmt_default = 138, // stmt_default - S_stmt_break = 139, // stmt_break - S_stmt_continue = 140, // stmt_continue - S_stmt_return = 141, // stmt_return - S_stmt_breakpoint = 142, // stmt_breakpoint - S_stmt_prof_begin = 143, // stmt_prof_begin - S_stmt_prof_end = 144, // stmt_prof_end - S_expr = 145, // expr - S_expr_or_empty = 146, // expr_or_empty - S_expr_assign = 147, // expr_assign - S_expr_increment = 148, // expr_increment - S_expr_decrement = 149, // expr_decrement - S_expr_ternary = 150, // expr_ternary - S_expr_binary = 151, // expr_binary - S_expr_primitive = 152, // expr_primitive - S_expr_complement = 153, // expr_complement - S_expr_not = 154, // expr_not - S_expr_call = 155, // expr_call - S_expr_method = 156, // expr_method - S_expr_function = 157, // expr_function - S_expr_pointer = 158, // expr_pointer - S_expr_add_array = 159, // expr_add_array - S_expr_parameters = 160, // expr_parameters - S_expr_arguments = 161, // expr_arguments - S_expr_arguments_no_empty = 162, // expr_arguments_no_empty - S_expr_isdefined = 163, // expr_isdefined - S_expr_istrue = 164, // expr_istrue - S_expr_reference = 165, // expr_reference - S_expr_array = 166, // expr_array - S_expr_field = 167, // expr_field - S_expr_size = 168, // expr_size - S_expr_paren = 169, // expr_paren - S_expr_object = 170, // expr_object - S_expr_thisthread = 171, // expr_thisthread - S_expr_empty_array = 172, // expr_empty_array - S_expr_undefined = 173, // expr_undefined - S_expr_game = 174, // expr_game - S_expr_self = 175, // expr_self - S_expr_anim = 176, // expr_anim - S_expr_level = 177, // expr_level - S_expr_animation = 178, // expr_animation - S_expr_animtree = 179, // expr_animtree - S_expr_identifier = 180, // expr_identifier - S_expr_path = 181, // expr_path - S_expr_istring = 182, // expr_istring - S_expr_string = 183, // expr_string - S_expr_color = 184, // expr_color - S_expr_vector = 185, // expr_vector - S_expr_float = 186, // expr_float - S_expr_integer = 187, // expr_integer - S_expr_false = 188, // expr_false - S_expr_true = 189 // expr_true + S_DEVBEGIN = 3, // "/#" + S_DEVEND = 4, // "#/" + S_INLINE = 5, // "#inline" + S_INCLUDE = 6, // "#include" + S_USINGTREE = 7, // "#using_animtree" + S_ANIMTREE = 8, // "#animtree" + S_ENDON = 9, // "endon" + S_NOTIFY = 10, // "notify" + S_WAIT = 11, // "wait" + S_WAITTILL = 12, // "waittill" + S_WAITTILLMATCH = 13, // "waittillmatch" + S_WAITTILLFRAMEEND = 14, // "waittillframeend" + S_WAITFRAME = 15, // "waitframe" + S_IF = 16, // "if" + S_ELSE = 17, // "else" + S_DO = 18, // "do" + S_WHILE = 19, // "while" + S_FOR = 20, // "for" + S_FOREACH = 21, // "foreach" + S_IN = 22, // "in" + S_SWITCH = 23, // "switch" + S_CASE = 24, // "case" + S_DEFAULT = 25, // "default" + S_BREAK = 26, // "break" + S_CONTINUE = 27, // "continue" + S_RETURN = 28, // "return" + S_BREAKPOINT = 29, // "breakpoint" + S_PROFBEGIN = 30, // "prof_begin" + S_PROFEND = 31, // "prof_end" + S_THREAD = 32, // "thread" + S_CHILDTHREAD = 33, // "childthread" + S_THISTHREAD = 34, // "thisthread" + S_CALL = 35, // "call" + S_TRUE = 36, // "true" + S_FALSE = 37, // "false" + S_UNDEFINED = 38, // "undefined" + S_SIZE = 39, // ".size" + S_GAME = 40, // "game" + S_SELF = 41, // "self" + S_ANIM = 42, // "anim" + S_LEVEL = 43, // "level" + S_ISDEFINED = 44, // "isdefined" + S_ISTRUE = 45, // "istrue" + S_LPAREN = 46, // "(" + S_RPAREN = 47, // ")" + S_LBRACE = 48, // "{" + S_RBRACE = 49, // "}" + S_LBRACKET = 50, // "[" + S_RBRACKET = 51, // "]" + S_COMMA = 52, // "," + S_DOT = 53, // "." + S_DOUBLECOLON = 54, // "::" + S_COLON = 55, // ":" + S_SEMICOLON = 56, // ";" + S_QMARK = 57, // "?" + S_INCREMENT = 58, // "++" + S_DECREMENT = 59, // "--" + S_LSHIFT = 60, // "<<" + S_RSHIFT = 61, // ">>" + S_OR = 62, // "||" + S_AND = 63, // "&&" + S_EQUALITY = 64, // "==" + S_INEQUALITY = 65, // "!=" + S_LESS_EQUAL = 66, // "<=" + S_GREATER_EQUAL = 67, // ">=" + S_LESS = 68, // "<" + S_GREATER = 69, // ">" + S_NOT = 70, // "!" + S_COMPLEMENT = 71, // "~" + S_ASSIGN = 72, // "=" + S_ASSIGN_ADD = 73, // "+=" + S_ASSIGN_SUB = 74, // "-=" + S_ASSIGN_MUL = 75, // "*=" + S_ASSIGN_DIV = 76, // "/=" + S_ASSIGN_MOD = 77, // "%=" + S_ASSIGN_BW_OR = 78, // "|=" + S_ASSIGN_BW_AND = 79, // "&=" + S_ASSIGN_BW_EXOR = 80, // "^=" + S_ASSIGN_RSHIFT = 81, // ">>=" + S_ASSIGN_LSHIFT = 82, // "<<=" + S_BITWISE_OR = 83, // "|" + S_BITWISE_AND = 84, // "&" + S_BITWISE_EXOR = 85, // "^" + S_ADD = 86, // "+" + S_SUB = 87, // "-" + S_MUL = 88, // "*" + S_DIV = 89, // "/" + S_MOD = 90, // "%" + S_PATH = 91, // "path" + S_IDENTIFIER = 92, // "identifier" + S_STRING = 93, // "string literal" + S_ISTRING = 94, // "localized string" + S_COLOR = 95, // "color" + S_FLOAT = 96, // "float" + S_INT_DEC = 97, // "int" + S_INT_OCT = 98, // "octal int" + S_INT_BIN = 99, // "binary int" + S_INT_HEX = 100, // "hexadecimal int" + S_ADD_ARRAY = 101, // ADD_ARRAY + S_THEN = 102, // THEN + S_TERN = 103, // TERN + S_NEG = 104, // NEG + S_ANIMREF = 105, // ANIMREF + S_PREINC = 106, // PREINC + S_PREDEC = 107, // PREDEC + S_POSTINC = 108, // POSTINC + S_POSTDEC = 109, // POSTDEC + S_YYACCEPT = 110, // $accept + S_root = 111, // root + S_program = 112, // program + S_inline = 113, // inline + S_include = 114, // include + S_declaration = 115, // declaration + S_decl_usingtree = 116, // decl_usingtree + S_decl_constant = 117, // decl_constant + S_decl_thread = 118, // decl_thread + S_stmt = 119, // stmt + S_stmt_dev = 120, // stmt_dev + S_stmt_block = 121, // stmt_block + S_stmt_list = 122, // stmt_list + S_stmt_expr = 123, // stmt_expr + S_stmt_call = 124, // stmt_call + S_stmt_assign = 125, // stmt_assign + S_stmt_endon = 126, // stmt_endon + S_stmt_notify = 127, // stmt_notify + S_stmt_wait = 128, // stmt_wait + S_stmt_waittill = 129, // stmt_waittill + S_stmt_waittillmatch = 130, // stmt_waittillmatch + S_stmt_waittillframeend = 131, // stmt_waittillframeend + S_stmt_waitframe = 132, // stmt_waitframe + S_stmt_if = 133, // stmt_if + S_stmt_ifelse = 134, // stmt_ifelse + S_stmt_while = 135, // stmt_while + S_stmt_dowhile = 136, // stmt_dowhile + S_stmt_for = 137, // stmt_for + S_stmt_foreach = 138, // stmt_foreach + S_stmt_switch = 139, // stmt_switch + S_stmt_case = 140, // stmt_case + S_stmt_default = 141, // stmt_default + S_stmt_break = 142, // stmt_break + S_stmt_continue = 143, // stmt_continue + S_stmt_return = 144, // stmt_return + S_stmt_breakpoint = 145, // stmt_breakpoint + S_stmt_prof_begin = 146, // stmt_prof_begin + S_stmt_prof_end = 147, // stmt_prof_end + S_expr = 148, // expr + S_expr_or_empty = 149, // expr_or_empty + S_expr_assign = 150, // expr_assign + S_expr_increment = 151, // expr_increment + S_expr_decrement = 152, // expr_decrement + S_expr_ternary = 153, // expr_ternary + S_expr_binary = 154, // expr_binary + S_expr_primitive = 155, // expr_primitive + S_expr_complement = 156, // expr_complement + S_expr_not = 157, // expr_not + S_expr_call = 158, // expr_call + S_expr_method = 159, // expr_method + S_expr_function = 160, // expr_function + S_expr_pointer = 161, // expr_pointer + S_expr_add_array = 162, // expr_add_array + S_expr_parameters = 163, // expr_parameters + S_expr_arguments = 164, // expr_arguments + S_expr_arguments_no_empty = 165, // expr_arguments_no_empty + S_expr_isdefined = 166, // expr_isdefined + S_expr_istrue = 167, // expr_istrue + S_expr_reference = 168, // expr_reference + S_expr_array = 169, // expr_array + S_expr_field = 170, // expr_field + S_expr_size = 171, // expr_size + S_expr_paren = 172, // expr_paren + S_expr_object = 173, // expr_object + S_expr_thisthread = 174, // expr_thisthread + S_expr_empty_array = 175, // expr_empty_array + S_expr_undefined = 176, // expr_undefined + S_expr_game = 177, // expr_game + S_expr_self = 178, // expr_self + S_expr_anim = 179, // expr_anim + S_expr_level = 180, // expr_level + S_expr_animation = 181, // expr_animation + S_expr_animtree = 182, // expr_animtree + S_expr_identifier = 183, // expr_identifier + S_expr_path = 184, // expr_path + S_expr_istring = 185, // expr_istring + S_expr_string = 186, // expr_string + S_expr_color = 187, // expr_color + S_expr_vector = 188, // expr_vector + S_expr_float = 189, // expr_float + S_expr_integer = 190, // expr_integer + S_expr_false = 191, // expr_false + S_expr_true = 192 // expr_true }; }; @@ -1268,6 +1274,7 @@ namespace xsk { namespace gsc { namespace iw8 { value.move< ast::stmt_ifelse::ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (std::move (that.value)); @@ -2575,6 +2582,7 @@ switch (yykind) value.template destroy< ast::stmt_ifelse::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.template destroy< ast::stmt_list::ptr > (); @@ -2838,6 +2846,36 @@ switch (yykind) return symbol_type (token::IW8UNDEF, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_DEVBEGIN (location_type l) + { + return symbol_type (token::DEVBEGIN, std::move (l)); + } +#else + static + symbol_type + make_DEVBEGIN (const location_type& l) + { + return symbol_type (token::DEVBEGIN, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_DEVEND (location_type l) + { + return symbol_type (token::DEVEND, std::move (l)); + } +#else + static + symbol_type + make_DEVEND (const location_type& l) + { + return symbol_type (token::DEVEND, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4757,9 +4795,9 @@ switch (yykind) /// Constants. enum { - yylast_ = 2068, ///< Last index in yytable_. - yynnts_ = 82, ///< Number of nonterminal symbols. - yyfinal_ = 19 ///< Termination state number. + yylast_ = 2336, ///< Last index in yytable_. + yynnts_ = 83, ///< Number of nonterminal symbols. + yyfinal_ = 21 ///< Termination state number. }; @@ -5020,6 +5058,7 @@ switch (yykind) value.copy< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.copy< ast::stmt_list::ptr > (YY_MOVE (that.value)); @@ -5345,6 +5384,7 @@ switch (yykind) value.move< ast::stmt_ifelse::ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (YY_MOVE (s.value)); @@ -5470,7 +5510,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::iw8 -#line 5474 "parser.hpp" +#line 5514 "parser.hpp" diff --git a/src/s1/xsk/compiler.cpp b/src/s1/xsk/compiler.cpp index 75ff26bf..172cd17a 100644 --- a/src/s1/xsk/compiler.cpp +++ b/src/s1/xsk/compiler.cpp @@ -85,6 +85,7 @@ void compiler::compile_program(const ast::program::ptr& program) constants_.clear(); local_functions_.clear(); index_ = 1; + developer_thread_ = false; for (const auto& entry : program->declarations) { @@ -150,6 +151,12 @@ void compiler::emit_declaration(const ast::decl& decl) { switch (decl.kind()) { + case ast::kind::decl_dev_begin: + developer_thread_ = true; + break; + case ast::kind::decl_dev_end: + developer_thread_ = false; + break; case ast::kind::decl_usingtree: emit_decl_usingtree(decl.as_usingtree); break; @@ -166,6 +173,9 @@ void compiler::emit_declaration(const ast::decl& decl) void compiler::emit_decl_usingtree(const ast::decl_usingtree::ptr& animtree) { + if(developer_thread_) + throw comp_error(animtree->loc(), "cannot put #using_animtree inside /# ... #/ comment"); + animtrees_.push_back({ animtree->name->value, false }); } diff --git a/src/s1/xsk/lexer.cpp b/src/s1/xsk/lexer.cpp index 2a5c1d0c..98f03b5e 100644 --- a/src/s1/xsk/lexer.cpp +++ b/src/s1/xsk/lexer.cpp @@ -555,8 +555,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 109 -#define YY_END_OF_BUFFER 110 +#define YY_NUM_RULES 111 +#define YY_END_OF_BUFFER 112 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -564,44 +564,45 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[330] = +static const flex_int16_t yy_accept[333] = { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 110, 108, - 1, 2, 93, 108, 108, 92, 96, 108, 53, 54, - 90, 88, 59, 89, 60, 91, 107, 107, 62, 63, - 77, 87, 78, 64, 99, 57, 58, 97, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 55, 95, 56, 94, 5, 6, - 5, 108, 90, 9, 10, 9, 74, 0, 101, 0, - 13, 0, 0, 0, 0, 83, 0, 72, 0, 85, - 0, 0, 12, 81, 65, 79, 66, 80, 103, 0, - 8, 4, 3, 82, 103, 107, 104, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 112, 110, + 1, 2, 95, 110, 110, 94, 98, 110, 55, 56, + 92, 90, 61, 91, 62, 93, 109, 109, 64, 65, + 79, 89, 80, 66, 101, 59, 60, 99, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 57, 97, 58, 96, 5, 6, + 5, 12, 13, 12, 110, 92, 93, 76, 0, 103, + 0, 15, 0, 0, 0, 0, 85, 0, 74, 0, + 87, 0, 0, 8, 83, 67, 81, 68, 82, 105, + 0, 11, 4, 3, 84, 105, 109, 106, 0, 0, - 0, 61, 69, 75, 73, 76, 70, 99, 86, 99, - 99, 99, 99, 99, 99, 27, 99, 99, 99, 99, - 99, 25, 31, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 84, 71, 7, 11, 0, 101, - 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, - 0, 101, 0, 103, 0, 3, 103, 103, 104, 105, - 106, 98, 67, 68, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 29, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, 102, 0, - 0, 0, 0, 0, 100, 0, 0, 100, 0, 0, + 0, 0, 63, 71, 77, 75, 78, 72, 101, 88, + 101, 101, 101, 101, 101, 101, 29, 101, 101, 101, + 101, 101, 27, 33, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 86, 73, 7, 14, 10, + 9, 0, 103, 0, 0, 0, 0, 0, 0, 102, + 0, 0, 0, 0, 103, 0, 105, 0, 3, 105, + 105, 106, 107, 108, 100, 69, 70, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 31, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 104, 0, 0, 0, 0, 0, 102, 0, 0, - 51, 99, 44, 33, 99, 99, 99, 26, 99, 99, - 99, 49, 99, 99, 99, 99, 50, 99, 99, 99, - 45, 99, 20, 99, 0, 0, 0, 0, 0, 48, - 35, 99, 99, 99, 18, 46, 99, 52, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 28, 0, 0, - 0, 0, 0, 99, 99, 99, 99, 99, 19, 99, - 99, 37, 32, 99, 41, 99, 99, 99, 102, 0, - 0, 14, 0, 99, 99, 99, 34, 30, 99, 99, - 99, 99, 99, 99, 0, 15, 0, 99, 99, 36, - 99, 40, 99, 99, 99, 21, 17, 0, 99, 99, + 102, 0, 0, 53, 101, 46, 35, 101, 101, 101, + 28, 101, 101, 101, 51, 101, 101, 101, 101, 52, + 101, 101, 101, 47, 101, 22, 101, 0, 0, 0, + 0, 0, 50, 37, 101, 101, 101, 20, 48, 101, + 54, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 30, 0, 0, 0, 0, 0, 101, 101, 101, 101, + 101, 21, 101, 101, 39, 34, 101, 43, 101, 101, + 101, 104, 0, 0, 16, 0, 101, 101, 101, 36, + 32, 101, 101, 101, 101, 101, 101, 0, 17, 0, + 101, 101, 38, 101, 42, 101, 101, 101, 23, 19, - 99, 99, 47, 24, 99, 99, 0, 38, 99, 39, - 43, 99, 99, 0, 42, 99, 99, 0, 99, 99, - 0, 99, 22, 0, 99, 16, 99, 23, 0 + 0, 101, 101, 101, 101, 49, 26, 101, 101, 0, + 40, 101, 41, 45, 101, 101, 0, 44, 101, 101, + 0, 101, 101, 0, 101, 24, 0, 101, 18, 101, + 25, 0 } ; static const YY_CHAR yy_ec[256] = @@ -647,91 +648,93 @@ static const YY_CHAR yy_meta[64] = 1, 1, 1 } ; -static const flex_int16_t yy_base[350] = +static const flex_int16_t yy_base[353] = { 0, - 0, 0, 61, 62, 60, 63, 64, 65, 706, 707, - 707, 707, 680, 71, 60, 679, 73, 70, 707, 707, - 63, 70, 707, 69, 71, 94, 102, 109, 681, 707, - 61, 677, 76, 707, 668, 707, 707, 675, 60, 74, - 99, 104, 63, 101, 80, 106, 75, 108, 111, 119, - 120, 113, 117, 131, 707, 122, 707, 707, 707, 707, - 682, 139, 673, 707, 707, 680, 707, 154, 707, 164, - 707, 0, 647, 646, 641, 707, 157, 707, 162, 707, - 163, 170, 707, 707, 707, 707, 707, 707, 180, 648, - 707, 707, 0, 707, 186, 192, 198, 158, 205, 223, + 0, 0, 61, 62, 63, 64, 65, 66, 712, 713, + 713, 713, 686, 63, 58, 685, 76, 67, 713, 713, + 62, 67, 713, 73, 86, 85, 96, 102, 687, 713, + 65, 683, 68, 713, 674, 713, 713, 681, 75, 76, + 93, 99, 98, 105, 111, 108, 78, 103, 100, 113, + 118, 125, 123, 127, 713, 136, 713, 713, 713, 713, + 688, 713, 713, 687, 145, 678, 161, 713, 158, 713, + 163, 713, 0, 653, 652, 647, 713, 160, 713, 161, + 713, 165, 176, 713, 713, 713, 713, 713, 713, 183, + 654, 713, 713, 0, 713, 187, 194, 200, 195, 216, - 0, 707, 667, 707, 707, 707, 666, 657, 707, 54, - 137, 182, 147, 153, 194, 656, 156, 148, 187, 193, - 199, 655, 654, 197, 200, 207, 204, 222, 226, 233, - 213, 234, 237, 239, 707, 707, 707, 707, 243, 244, - 270, 0, 641, 146, 640, 274, 707, 278, 271, 283, - 279, 280, 284, 707, 625, 0, 276, 707, 303, 282, - 0, 650, 707, 707, 257, 269, 281, 258, 287, 275, - 293, 292, 277, 298, 299, 302, 304, 305, 306, 308, - 311, 313, 309, 314, 316, 319, 321, 323, 0, 634, - 634, 635, 630, 353, 354, 361, 352, 356, 365, 637, + 234, 0, 713, 673, 713, 713, 713, 672, 663, 713, + 143, 148, 184, 147, 150, 197, 662, 189, 203, 191, + 193, 208, 661, 660, 190, 207, 214, 211, 233, 215, + 225, 224, 245, 236, 249, 713, 713, 713, 713, 713, + 713, 254, 263, 281, 0, 647, 148, 646, 278, 713, + 285, 280, 288, 283, 284, 292, 713, 631, 0, 284, + 713, 311, 290, 0, 656, 713, 713, 267, 287, 265, + 266, 286, 289, 301, 295, 302, 304, 306, 307, 308, + 309, 313, 312, 317, 318, 320, 323, 325, 327, 328, + 329, 0, 640, 640, 641, 636, 358, 360, 366, 361, - 644, 336, 643, 642, 338, 339, 340, 641, 343, 347, - 344, 640, 346, 357, 364, 350, 639, 368, 358, 371, - 638, 363, 373, 370, 0, 616, 614, 619, 624, 707, - 377, 376, 380, 384, 633, 632, 381, 631, 383, 385, - 386, 388, 389, 403, 392, 401, 405, 630, 0, 610, - 621, 619, 623, 406, 407, 391, 409, 411, 625, 416, - 412, 624, 623, 414, 622, 415, 421, 426, 707, 613, - 612, 707, 615, 427, 419, 429, 618, 617, 432, 434, - 435, 436, 445, 447, 608, 707, 599, 446, 448, 614, - 451, 613, 449, 450, 458, 455, 707, 600, 452, 465, + 365, 372, 643, 650, 53, 649, 648, 344, 345, 346, + 647, 347, 354, 352, 646, 350, 367, 370, 355, 645, + 353, 369, 371, 644, 377, 378, 380, 0, 622, 620, + 625, 630, 713, 379, 381, 382, 389, 639, 638, 385, + 637, 383, 396, 384, 394, 395, 407, 409, 392, 410, + 636, 0, 616, 627, 625, 629, 412, 413, 393, 416, + 417, 631, 418, 419, 630, 629, 420, 628, 425, 423, + 430, 713, 619, 618, 713, 621, 431, 432, 434, 624, + 623, 436, 433, 445, 447, 448, 438, 614, 713, 605, + 449, 450, 620, 454, 619, 456, 457, 459, 461, 713, - 459, 467, 611, 610, 468, 472, 577, 583, 471, 541, - 530, 477, 479, 508, 501, 480, 482, 480, 483, 485, - 490, 484, 494, 485, 486, 707, 490, 489, 707, 535, - 543, 551, 556, 564, 570, 574, 582, 482, 590, 598, - 606, 614, 618, 304, 626, 634, 245, 177, 109 + 606, 462, 468, 469, 471, 617, 616, 473, 475, 600, + 597, 474, 588, 546, 480, 477, 514, 534, 482, 487, + 487, 486, 488, 496, 495, 502, 493, 489, 713, 500, + 496, 713, 540, 548, 556, 561, 569, 575, 579, 587, + 519, 595, 603, 611, 619, 623, 518, 631, 639, 305, + 246, 179 } ; -static const flex_int16_t yy_def[350] = +static const flex_int16_t yy_def[353] = { 0, - 329, 1, 330, 330, 1, 1, 331, 331, 329, 329, - 329, 329, 329, 332, 333, 329, 329, 334, 329, 329, - 329, 329, 329, 329, 329, 329, 335, 335, 329, 329, - 329, 329, 329, 329, 336, 329, 329, 329, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 329, 329, 329, 329, 329, 329, - 329, 333, 329, 329, 329, 329, 329, 332, 329, 337, - 329, 338, 338, 329, 329, 329, 339, 329, 340, 329, - 334, 341, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 342, 329, 329, 335, 335, 335, 335, 335, + 332, 1, 333, 333, 334, 334, 1, 1, 332, 332, + 332, 332, 332, 335, 336, 332, 332, 337, 332, 332, + 332, 332, 332, 332, 332, 332, 338, 338, 332, 332, + 332, 332, 332, 332, 339, 332, 332, 332, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 336, 332, 332, 332, 335, 332, + 340, 332, 341, 341, 332, 332, 332, 342, 332, 343, + 332, 337, 344, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 345, 332, 332, 338, 338, 338, 338, - 343, 329, 329, 329, 329, 329, 329, 336, 329, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 329, 329, 329, 329, 332, 332, - 337, 344, 329, 329, 329, 339, 329, 345, 340, 346, - 334, 334, 341, 329, 329, 342, 329, 329, 335, 335, - 100, 343, 329, 329, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 347, 329, - 329, 329, 329, 339, 339, 345, 340, 340, 346, 329, + 338, 346, 332, 332, 332, 332, 332, 332, 339, 332, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 332, 332, 332, 332, 332, + 332, 335, 335, 340, 347, 332, 332, 332, 342, 332, + 348, 343, 349, 337, 337, 344, 332, 332, 345, 332, + 332, 338, 338, 101, 346, 332, 332, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 350, 332, 332, 332, 332, 342, 342, 348, 343, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 348, 329, 329, 329, 329, 329, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 349, 329, - 329, 329, 329, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 329, 329, - 329, 329, 329, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 329, 329, 329, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 329, 329, 336, 336, + 343, 349, 332, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 351, 332, 332, + 332, 332, 332, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 352, 332, 332, 332, 332, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 332, 332, 332, 332, 332, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 332, 332, 332, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 332, - 336, 336, 336, 336, 336, 336, 329, 336, 336, 336, - 336, 336, 336, 329, 336, 336, 336, 329, 336, 336, - 329, 336, 336, 329, 336, 329, 336, 336, 0, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329 + 332, 339, 339, 339, 339, 339, 339, 339, 339, 332, + 339, 339, 339, 339, 339, 339, 332, 339, 339, 339, + 332, 339, 339, 332, 339, 339, 332, 339, 332, 339, + 339, 0, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332 } ; -static const flex_int16_t yy_nxt[771] = +static const flex_int16_t yy_nxt[777] = { 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 28, @@ -739,87 +742,88 @@ static const flex_int16_t yy_nxt[771] = 35, 36, 10, 37, 38, 35, 39, 40, 41, 42, 43, 44, 45, 35, 46, 35, 47, 35, 48, 35, 49, 50, 51, 52, 53, 35, 54, 35, 35, 55, - 56, 57, 58, 60, 60, 62, 65, 65, 62, 66, - 66, 63, 61, 61, 63, 69, 71, 77, 69, 83, - 78, 79, 85, 87, 103, 104, 101, 84, 89, 89, - 89, 89, 101, 88, 86, 101, 73, 80, 165, 91, + 56, 57, 58, 60, 60, 63, 63, 70, 64, 64, + 65, 65, 61, 61, 72, 70, 66, 66, 84, 86, + 78, 67, 67, 79, 80, 102, 85, 88, 104, 105, + 92, 87, 107, 108, 74, 71, 93, 89, 234, 83, - 106, 107, 82, 70, 74, 92, 101, 101, 110, 117, - 93, 118, 101, 269, 75, 124, 121, 95, 94, 96, - 97, 97, 96, 90, 95, 111, 96, 96, 96, 96, - 99, 101, 100, 101, 101, 112, 101, 119, 101, 99, - 101, 101, 113, 101, 115, 101, 135, 122, 114, 101, - 120, 101, 101, 116, 123, 138, 130, 125, 69, 127, - 128, 147, 126, 101, 131, 132, 68, 133, 140, 101, - 147, 69, 81, 329, 134, 73, 129, 166, 152, 101, - 101, 249, 136, 74, 191, 101, 70, 173, 101, 148, - 101, 169, 192, 75, 150, 82, 141, 89, 89, 89, + 81, 94, 75, 90, 90, 90, 90, 102, 102, 95, + 102, 96, 76, 97, 98, 98, 97, 96, 125, 97, + 97, 97, 97, 111, 100, 102, 101, 112, 102, 113, + 102, 102, 102, 100, 102, 102, 114, 102, 91, 116, + 102, 120, 115, 102, 118, 102, 119, 122, 117, 123, + 102, 127, 126, 128, 121, 102, 124, 102, 129, 102, + 136, 140, 70, 134, 150, 69, 141, 143, 131, 150, + 135, 133, 93, 70, 130, 102, 132, 94, 82, 102, + 102, 74, 102, 272, 155, 95, 194, 168, 169, 75, + 71, 172, 151, 153, 195, 144, 137, 83, 173, 76, - 89, 170, 153, 157, 157, 157, 157, 95, 172, 96, - 96, 96, 96, 95, 101, 159, 159, 159, 96, 101, - 329, 154, 160, 160, 101, 101, 101, 158, 167, 101, - 101, 101, 101, 174, 168, 171, 101, 101, 329, 101, - 161, 161, 161, 161, 175, 101, 176, 69, 69, 225, - 161, 161, 177, 178, 101, 101, 179, 180, 101, 161, - 161, 161, 161, 161, 161, 101, 101, 185, 181, 101, - 182, 101, 68, 186, 140, 70, 70, 183, 147, 147, - 146, 187, 195, 188, 184, 149, 81, 69, 69, 101, - 101, 198, 152, 157, 157, 157, 157, 329, 204, 160, + 90, 90, 90, 90, 160, 160, 160, 160, 156, 96, + 332, 97, 97, 97, 97, 96, 102, 162, 162, 162, + 97, 102, 102, 102, 157, 102, 102, 102, 161, 102, + 170, 332, 102, 163, 163, 102, 171, 177, 174, 102, + 102, 175, 176, 102, 178, 180, 102, 102, 102, 332, + 252, 164, 164, 164, 164, 179, 102, 102, 70, 185, + 181, 164, 164, 182, 183, 102, 102, 70, 102, 186, + 164, 164, 164, 164, 164, 164, 187, 102, 188, 184, + 190, 102, 150, 69, 189, 143, 71, 149, 150, 198, + 152, 70, 70, 191, 82, 71, 201, 102, 102, 102, - 160, 101, 141, 150, 201, 202, 148, 101, 189, 101, - 196, 82, 82, 101, 101, 199, 153, 158, 95, 101, - 159, 159, 159, 96, 101, 101, 209, 203, 206, 207, - 101, 101, 208, 205, 101, 101, 101, 101, 101, 211, - 101, 101, 212, 101, 213, 101, 101, 215, 101, 214, - 210, 101, 217, 101, 220, 101, 221, 147, 147, 222, - 147, 219, 216, 146, 147, 195, 218, 149, 101, 224, - 101, 101, 101, 198, 223, 101, 101, 232, 101, 101, - 237, 231, 101, 233, 150, 148, 148, 236, 150, 101, - 101, 235, 238, 196, 234, 101, 101, 199, 239, 240, + 155, 160, 160, 160, 160, 332, 207, 163, 163, 228, + 151, 206, 153, 144, 204, 83, 83, 199, 102, 102, + 202, 102, 102, 205, 156, 161, 96, 102, 162, 162, + 162, 97, 208, 102, 102, 211, 102, 210, 102, 102, + 102, 102, 209, 102, 102, 102, 214, 215, 216, 102, + 102, 212, 102, 217, 218, 102, 213, 102, 220, 102, + 102, 102, 150, 223, 150, 224, 219, 225, 149, 150, + 198, 221, 222, 150, 152, 227, 102, 102, 102, 102, + 201, 226, 102, 235, 102, 102, 102, 102, 240, 236, + 151, 245, 151, 153, 239, 238, 241, 153, 199, 102, - 101, 241, 101, 101, 245, 101, 242, 244, 101, 101, - 248, 243, 101, 101, 246, 101, 101, 101, 101, 258, - 101, 101, 260, 101, 101, 261, 247, 254, 256, 255, - 257, 263, 264, 101, 262, 101, 266, 101, 101, 101, - 259, 101, 265, 101, 101, 276, 101, 101, 101, 268, - 275, 101, 267, 101, 278, 274, 279, 283, 101, 101, - 280, 101, 277, 282, 101, 281, 101, 101, 101, 290, - 289, 288, 284, 292, 291, 293, 294, 101, 101, 101, - 101, 101, 101, 101, 101, 302, 142, 101, 300, 303, - 101, 101, 295, 296, 299, 301, 305, 101, 304, 101, + 237, 102, 102, 102, 202, 243, 244, 247, 242, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 248, 249, + 251, 102, 246, 261, 102, 102, 102, 102, 102, 257, + 259, 250, 265, 263, 258, 260, 264, 266, 267, 102, + 262, 102, 102, 270, 102, 102, 268, 279, 102, 102, + 102, 102, 102, 269, 271, 102, 278, 102, 282, 286, + 281, 277, 102, 102, 102, 102, 102, 283, 102, 280, + 102, 284, 295, 285, 293, 291, 287, 102, 294, 102, + 102, 102, 102, 292, 299, 296, 102, 297, 102, 102, + 303, 102, 305, 102, 102, 298, 306, 302, 304, 307, - 101, 309, 306, 101, 101, 308, 311, 310, 313, 101, - 315, 101, 101, 316, 101, 101, 101, 101, 101, 312, - 320, 101, 101, 322, 325, 326, 101, 319, 323, 328, - 324, 321, 317, 101, 327, 59, 59, 59, 59, 59, - 59, 59, 59, 64, 64, 64, 64, 64, 64, 64, - 64, 68, 68, 68, 68, 68, 68, 68, 68, 72, - 72, 318, 101, 72, 81, 81, 81, 81, 81, 81, - 81, 81, 98, 101, 98, 98, 98, 98, 108, 108, - 108, 108, 139, 139, 139, 139, 139, 139, 139, 139, - 146, 146, 146, 146, 146, 146, 146, 146, 149, 149, + 102, 102, 308, 102, 312, 102, 102, 102, 309, 102, + 314, 316, 102, 318, 102, 311, 319, 313, 102, 102, + 102, 102, 192, 145, 315, 323, 325, 102, 102, 322, + 320, 326, 102, 329, 102, 328, 327, 330, 324, 331, + 59, 59, 59, 59, 59, 59, 59, 59, 62, 62, + 62, 62, 62, 62, 62, 62, 69, 69, 69, 69, + 69, 69, 69, 69, 73, 73, 102, 321, 73, 82, + 82, 82, 82, 82, 82, 82, 82, 99, 102, 99, + 99, 99, 99, 109, 109, 109, 109, 142, 142, 142, + 142, 142, 142, 142, 142, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 151, 151, 151, 151, - 151, 151, 151, 151, 156, 101, 156, 156, 156, 156, - 156, 156, 162, 162, 314, 162, 194, 194, 194, 194, - 194, 194, 194, 194, 197, 197, 197, 197, 197, 197, - 197, 197, 101, 101, 307, 101, 101, 298, 297, 101, - 101, 287, 286, 285, 101, 101, 101, 101, 273, 272, - 271, 270, 101, 101, 101, 101, 253, 252, 251, 250, - 101, 101, 101, 101, 101, 101, 101, 230, 229, 228, - 227, 226, 101, 200, 193, 190, 101, 101, 101, 101, - 164, 163, 155, 145, 144, 143, 138, 84, 137, 109, + 149, 149, 149, 152, 152, 152, 152, 152, 152, 152, + 152, 154, 154, 154, 154, 154, 154, 154, 154, 159, + 102, 159, 159, 159, 159, 159, 159, 165, 165, 102, + 165, 197, 197, 197, 197, 197, 197, 197, 197, 200, + 200, 200, 200, 200, 200, 200, 200, 317, 102, 102, + 310, 102, 102, 301, 300, 102, 102, 290, 289, 288, + 102, 102, 102, 102, 276, 275, 274, 273, 102, 102, + 102, 102, 256, 255, 254, 253, 102, 102, 102, 102, + 102, 102, 102, 233, 232, 231, 230, 229, 102, 203, + 196, 193, 102, 102, 102, 102, 167, 166, 158, 148, - 101, 105, 102, 76, 67, 329, 9, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329 + 147, 146, 85, 139, 138, 110, 102, 106, 103, 77, + 68, 332, 9, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332 } ; -static const flex_int16_t yy_chk[771] = +static const flex_int16_t yy_chk[777] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -827,84 +831,85 @@ static const flex_int16_t yy_chk[771] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 7, 8, 6, 7, - 8, 5, 3, 4, 6, 14, 15, 17, 18, 21, - 17, 17, 22, 24, 31, 31, 110, 21, 25, 25, - 25, 25, 39, 24, 22, 43, 15, 17, 110, 26, + 1, 1, 1, 3, 4, 5, 6, 14, 5, 6, + 7, 8, 3, 4, 15, 18, 7, 8, 21, 22, + 17, 7, 8, 17, 17, 205, 21, 24, 31, 31, + 26, 22, 33, 33, 15, 14, 26, 24, 205, 18, - 33, 33, 18, 14, 15, 26, 40, 47, 39, 43, - 26, 43, 45, 349, 15, 47, 45, 27, 26, 27, - 27, 27, 27, 25, 28, 40, 28, 28, 28, 28, - 27, 41, 27, 44, 27, 41, 42, 44, 46, 27, - 48, 28, 41, 49, 42, 52, 56, 46, 41, 53, - 44, 50, 51, 42, 46, 62, 52, 48, 68, 50, - 51, 77, 49, 54, 52, 53, 70, 54, 70, 111, - 79, 81, 82, 98, 54, 62, 51, 111, 82, 113, - 118, 348, 56, 62, 144, 114, 68, 118, 117, 77, - 98, 113, 144, 62, 79, 81, 70, 89, 89, 89, + 17, 26, 15, 25, 25, 25, 25, 39, 40, 26, + 47, 27, 15, 27, 27, 27, 27, 28, 47, 28, + 28, 28, 28, 39, 27, 41, 27, 40, 27, 41, + 43, 42, 49, 27, 28, 48, 41, 44, 25, 42, + 46, 44, 41, 45, 43, 50, 43, 45, 42, 46, + 51, 49, 48, 50, 44, 53, 46, 52, 51, 54, + 56, 65, 69, 54, 78, 71, 67, 71, 52, 80, + 54, 53, 67, 82, 51, 111, 52, 67, 83, 114, + 112, 65, 115, 352, 83, 67, 147, 111, 112, 65, + 69, 114, 78, 80, 147, 71, 56, 82, 115, 65, - 89, 114, 82, 95, 95, 95, 95, 96, 117, 96, - 96, 96, 96, 97, 112, 97, 97, 97, 97, 119, - 99, 89, 99, 99, 96, 120, 115, 95, 112, 124, - 97, 121, 125, 119, 112, 115, 127, 99, 100, 126, - 100, 100, 100, 100, 120, 131, 121, 139, 140, 347, - 100, 100, 124, 125, 128, 100, 126, 127, 129, 100, - 100, 100, 100, 100, 100, 130, 132, 131, 128, 133, - 129, 134, 141, 132, 141, 139, 140, 130, 146, 149, - 148, 133, 148, 134, 130, 150, 153, 151, 152, 165, - 168, 150, 153, 157, 157, 157, 157, 160, 168, 160, + 90, 90, 90, 90, 96, 96, 96, 96, 83, 97, + 99, 97, 97, 97, 97, 98, 113, 98, 98, 98, + 98, 118, 125, 120, 90, 121, 97, 99, 96, 116, + 113, 100, 98, 100, 100, 119, 113, 120, 116, 126, + 122, 118, 119, 128, 121, 125, 127, 130, 100, 101, + 351, 101, 101, 101, 101, 122, 132, 131, 142, 130, + 126, 101, 101, 127, 128, 129, 101, 143, 134, 131, + 101, 101, 101, 101, 101, 101, 131, 133, 132, 129, + 134, 135, 149, 144, 133, 144, 142, 151, 152, 151, + 153, 154, 155, 135, 156, 143, 153, 170, 171, 168, - 160, 166, 141, 149, 165, 166, 146, 170, 344, 173, - 148, 151, 152, 167, 160, 150, 153, 157, 159, 169, - 159, 159, 159, 159, 172, 171, 173, 167, 170, 171, - 174, 175, 172, 169, 176, 159, 177, 178, 179, 175, - 180, 183, 176, 181, 177, 182, 184, 179, 185, 178, - 174, 186, 181, 187, 184, 188, 185, 194, 195, 186, - 197, 183, 180, 196, 198, 196, 182, 199, 202, 188, - 205, 206, 207, 199, 187, 209, 211, 205, 213, 210, - 211, 202, 216, 206, 197, 194, 195, 210, 198, 214, - 219, 209, 213, 196, 207, 222, 215, 199, 214, 215, + 156, 160, 160, 160, 160, 163, 171, 163, 163, 350, + 149, 170, 152, 144, 168, 154, 155, 151, 172, 169, + 153, 173, 163, 169, 156, 160, 162, 175, 162, 162, + 162, 162, 172, 174, 176, 175, 177, 174, 178, 179, + 180, 181, 173, 162, 183, 182, 178, 179, 180, 184, + 185, 176, 186, 181, 182, 187, 177, 188, 184, 189, + 190, 191, 197, 187, 198, 188, 183, 189, 199, 200, + 199, 185, 186, 201, 202, 191, 208, 209, 210, 212, + 202, 190, 216, 208, 214, 221, 213, 219, 214, 209, + 197, 221, 198, 200, 213, 212, 216, 201, 199, 217, - 218, 216, 224, 220, 222, 223, 218, 220, 232, 231, - 224, 219, 233, 237, 223, 239, 234, 240, 241, 237, - 242, 243, 240, 256, 245, 240, 223, 231, 233, 232, - 234, 242, 243, 246, 241, 244, 245, 247, 254, 255, - 239, 257, 244, 258, 261, 256, 264, 266, 260, 247, - 255, 275, 246, 267, 258, 254, 260, 267, 268, 274, - 261, 276, 257, 266, 279, 264, 280, 281, 282, 276, - 275, 274, 268, 280, 279, 281, 282, 283, 288, 284, - 289, 293, 294, 291, 299, 293, 338, 296, 289, 294, - 295, 301, 283, 284, 288, 291, 296, 300, 295, 302, + 210, 222, 218, 223, 202, 218, 219, 223, 217, 225, + 226, 234, 227, 235, 236, 242, 244, 240, 225, 226, + 227, 237, 222, 240, 249, 259, 245, 246, 243, 234, + 236, 226, 244, 243, 235, 237, 243, 245, 246, 247, + 242, 248, 250, 249, 257, 258, 247, 259, 260, 261, + 263, 264, 267, 248, 250, 270, 258, 269, 263, 270, + 261, 257, 271, 277, 278, 283, 279, 264, 282, 260, + 287, 267, 283, 269, 279, 277, 271, 284, 282, 285, + 286, 291, 292, 278, 287, 284, 294, 285, 296, 297, + 292, 298, 296, 299, 302, 286, 297, 291, 294, 298, - 305, 300, 296, 309, 306, 299, 302, 301, 306, 312, - 309, 313, 316, 312, 317, 319, 322, 320, 325, 305, - 317, 328, 327, 319, 322, 324, 323, 316, 320, 327, - 321, 318, 313, 315, 325, 330, 330, 330, 330, 330, - 330, 330, 330, 331, 331, 331, 331, 331, 331, 331, - 331, 332, 332, 332, 332, 332, 332, 332, 332, 333, - 333, 314, 311, 333, 334, 334, 334, 334, 334, 334, - 334, 334, 335, 310, 335, 335, 335, 335, 336, 336, - 336, 336, 337, 337, 337, 337, 337, 337, 337, 337, - 339, 339, 339, 339, 339, 339, 339, 339, 340, 340, + 303, 304, 299, 305, 303, 308, 312, 309, 299, 316, + 305, 309, 315, 312, 319, 302, 315, 304, 322, 320, + 323, 328, 347, 341, 308, 320, 322, 325, 331, 319, + 316, 323, 330, 327, 326, 325, 324, 328, 321, 330, + 333, 333, 333, 333, 333, 333, 333, 333, 334, 334, + 334, 334, 334, 334, 334, 334, 335, 335, 335, 335, + 335, 335, 335, 335, 336, 336, 318, 317, 336, 337, + 337, 337, 337, 337, 337, 337, 337, 338, 314, 338, + 338, 338, 338, 339, 339, 339, 339, 340, 340, 340, + 340, 340, 340, 340, 340, 342, 342, 342, 342, 342, - 340, 340, 340, 340, 340, 340, 341, 341, 341, 341, - 341, 341, 341, 341, 342, 308, 342, 342, 342, 342, - 342, 342, 343, 343, 307, 343, 345, 345, 345, 345, - 345, 345, 345, 345, 346, 346, 346, 346, 346, 346, - 346, 346, 304, 303, 298, 292, 290, 287, 285, 278, - 277, 273, 271, 270, 265, 263, 262, 259, 253, 252, - 251, 250, 248, 238, 236, 235, 229, 228, 227, 226, - 221, 217, 212, 208, 204, 203, 201, 200, 193, 192, - 191, 190, 162, 155, 145, 143, 123, 122, 116, 108, - 107, 103, 90, 75, 74, 73, 66, 63, 61, 38, + 342, 342, 342, 343, 343, 343, 343, 343, 343, 343, + 343, 344, 344, 344, 344, 344, 344, 344, 344, 345, + 313, 345, 345, 345, 345, 345, 345, 346, 346, 311, + 346, 348, 348, 348, 348, 348, 348, 348, 348, 349, + 349, 349, 349, 349, 349, 349, 349, 310, 307, 306, + 301, 295, 293, 290, 288, 281, 280, 276, 274, 273, + 268, 266, 265, 262, 256, 255, 254, 253, 251, 241, + 239, 238, 232, 231, 230, 229, 224, 220, 215, 211, + 207, 206, 204, 203, 196, 195, 194, 193, 165, 158, + 148, 146, 124, 123, 117, 109, 108, 104, 91, 76, - 35, 32, 29, 16, 13, 9, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329 + 75, 74, 66, 64, 61, 38, 35, 32, 29, 16, + 13, 9, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332 } ; /* The intent behind this definition is that it'll catch @@ -925,14 +930,14 @@ static const flex_int16_t yy_chk[771] = #line 25 "lexer.lpp" #define YY_USER_ACTION ctx->loc.columns(yyleng); -#line 928 "lexer.cpp" +#line 933 "lexer.cpp" -#line 930 "lexer.cpp" +#line 935 "lexer.cpp" #define INITIAL 0 -#define COMMENT_BLOCK_STATE 1 -#define DEVBLOCK_ON_STATE 2 -#define DEVBLOCK_OFF_STATE 3 +#define COMMENT_STATE 1 +#define DEV_OFF_STATE 2 +#define DEV_ON_STATE 3 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way @@ -1196,7 +1201,7 @@ YY_DECL ctx->loc.step(); -#line 1199 "lexer.cpp" +#line 1204 "lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1223,13 +1228,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 >= 330 ) + if ( yy_current_state >= 333 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 329 ); + while ( yy_current_state != 332 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -1257,557 +1262,576 @@ YY_RULE_SETUP case 2: /* rule 2 can match eol */ YY_RULE_SETUP -#line 52 "lexer.lpp" +#line 51 "lexer.lpp" { ctx->loc.lines(yyleng); ctx->loc.step(); } YY_BREAK case 3: YY_RULE_SETUP -#line 54 "lexer.lpp" +#line 53 "lexer.lpp" YY_BREAK case 4: YY_RULE_SETUP -#line 56 "lexer.lpp" -{ BEGIN(COMMENT_BLOCK_STATE); } +#line 55 "lexer.lpp" +{ BEGIN(COMMENT_STATE); } YY_BREAK case 5: YY_RULE_SETUP -#line 57 "lexer.lpp" +#line 56 "lexer.lpp" YY_BREAK case 6: /* rule 6 can match eol */ YY_RULE_SETUP -#line 58 "lexer.lpp" +#line 57 "lexer.lpp" { ctx->loc.lines(yyleng); ctx->loc.step(); } YY_BREAK case 7: YY_RULE_SETUP -#line 59 "lexer.lpp" +#line 58 "lexer.lpp" { BEGIN(INITIAL); } YY_BREAK +case YY_STATE_EOF(COMMENT_STATE): +#line 59 "lexer.lpp" +{ throw s1::parser::syntax_error(ctx->loc, "unmatched multiline comment start ('/*')"); } + YY_BREAK case 8: YY_RULE_SETUP -#line 61 "lexer.lpp" -{ BEGIN(ctx->mode == xsk::gsc::build::dev ? DEVBLOCK_ON_STATE : DEVBLOCK_OFF_STATE); } +#line 60 "lexer.lpp" +{ throw s1::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } YY_BREAK case 9: YY_RULE_SETUP #line 62 "lexer.lpp" - +{ throw s1::parser::syntax_error(ctx->loc, "cannot recurse devblock ('/#')"); } YY_BREAK case 10: -/* rule 10 can match eol */ YY_RULE_SETUP #line 63 "lexer.lpp" -{ ctx->loc.lines(yyleng); ctx->loc.step(); } +{ BEGIN(INITIAL); return s1::parser::make_DEVEND(ctx->loc); } + YY_BREAK +case YY_STATE_EOF(DEV_ON_STATE): +#line 64 "lexer.lpp" +{ throw s1::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } YY_BREAK case 11: YY_RULE_SETUP -#line 64 "lexer.lpp" -{ BEGIN(INITIAL); } +#line 66 "lexer.lpp" +{ BEGIN(ctx->mode == xsk::gsc::build::dev ? DEV_ON_STATE : DEV_OFF_STATE); if(ctx->mode == xsk::gsc::build::dev) return s1::parser::make_DEVBEGIN(ctx->loc); } YY_BREAK case 12: YY_RULE_SETUP -#line 66 "lexer.lpp" -{ throw s1::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } +#line 67 "lexer.lpp" + YY_BREAK case 13: +/* rule 13 can match eol */ YY_RULE_SETUP -#line 67 "lexer.lpp" -{ throw s1::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } +#line 68 "lexer.lpp" +{ ctx->loc.lines(yyleng); ctx->loc.step(); } YY_BREAK case 14: YY_RULE_SETUP #line 69 "lexer.lpp" -{ return s1::parser::make_INLINE(ctx->loc); } +{ BEGIN(INITIAL); } + YY_BREAK +case YY_STATE_EOF(DEV_OFF_STATE): +#line 70 "lexer.lpp" +{ throw s1::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } YY_BREAK case 15: YY_RULE_SETUP -#line 70 "lexer.lpp" -{ return s1::parser::make_INCLUDE(ctx->loc); } +#line 71 "lexer.lpp" +{ throw s1::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } YY_BREAK case 16: YY_RULE_SETUP -#line 71 "lexer.lpp" -{ return s1::parser::make_USINGTREE(ctx->loc); } +#line 73 "lexer.lpp" +{ return s1::parser::make_INLINE(ctx->loc); } YY_BREAK case 17: YY_RULE_SETUP -#line 72 "lexer.lpp" -{ return s1::parser::make_ANIMTREE(ctx->loc); } +#line 74 "lexer.lpp" +{ return s1::parser::make_INCLUDE(ctx->loc); } YY_BREAK case 18: YY_RULE_SETUP -#line 73 "lexer.lpp" -{ return s1::parser::make_ENDON(ctx->loc); } +#line 75 "lexer.lpp" +{ return s1::parser::make_USINGTREE(ctx->loc); } YY_BREAK case 19: YY_RULE_SETUP -#line 74 "lexer.lpp" -{ return s1::parser::make_NOTIFY(ctx->loc); } +#line 76 "lexer.lpp" +{ return s1::parser::make_ANIMTREE(ctx->loc); } YY_BREAK case 20: YY_RULE_SETUP -#line 75 "lexer.lpp" -{ return s1::parser::make_WAIT(ctx->loc); } +#line 77 "lexer.lpp" +{ return s1::parser::make_ENDON(ctx->loc); } YY_BREAK case 21: YY_RULE_SETUP -#line 76 "lexer.lpp" -{ return s1::parser::make_WAITTILL(ctx->loc); } +#line 78 "lexer.lpp" +{ return s1::parser::make_NOTIFY(ctx->loc); } YY_BREAK case 22: YY_RULE_SETUP -#line 77 "lexer.lpp" -{ return s1::parser::make_WAITTILLMATCH(ctx->loc); } +#line 79 "lexer.lpp" +{ return s1::parser::make_WAIT(ctx->loc); } YY_BREAK case 23: YY_RULE_SETUP -#line 78 "lexer.lpp" -{ return s1::parser::make_WAITTILLFRAMEEND(ctx->loc); } +#line 80 "lexer.lpp" +{ return s1::parser::make_WAITTILL(ctx->loc); } YY_BREAK case 24: YY_RULE_SETUP -#line 79 "lexer.lpp" -{ return s1::parser::make_WAITFRAME(ctx->loc); } +#line 81 "lexer.lpp" +{ return s1::parser::make_WAITTILLMATCH(ctx->loc); } YY_BREAK case 25: YY_RULE_SETUP -#line 80 "lexer.lpp" -{ return s1::parser::make_IF(ctx->loc); } +#line 82 "lexer.lpp" +{ return s1::parser::make_WAITTILLFRAMEEND(ctx->loc); } YY_BREAK case 26: YY_RULE_SETUP -#line 81 "lexer.lpp" -{ return s1::parser::make_ELSE(ctx->loc); } +#line 83 "lexer.lpp" +{ return s1::parser::make_WAITFRAME(ctx->loc); } YY_BREAK case 27: YY_RULE_SETUP -#line 82 "lexer.lpp" -{ return s1::parser::make_DO(ctx->loc); } +#line 84 "lexer.lpp" +{ return s1::parser::make_IF(ctx->loc); } YY_BREAK case 28: YY_RULE_SETUP -#line 83 "lexer.lpp" -{ return s1::parser::make_WHILE(ctx->loc); } +#line 85 "lexer.lpp" +{ return s1::parser::make_ELSE(ctx->loc); } YY_BREAK case 29: YY_RULE_SETUP -#line 84 "lexer.lpp" -{ return s1::parser::make_FOR(ctx->loc); } +#line 86 "lexer.lpp" +{ return s1::parser::make_DO(ctx->loc); } YY_BREAK case 30: YY_RULE_SETUP -#line 85 "lexer.lpp" -{ return s1::parser::make_FOREACH(ctx->loc); } +#line 87 "lexer.lpp" +{ return s1::parser::make_WHILE(ctx->loc); } YY_BREAK case 31: YY_RULE_SETUP -#line 86 "lexer.lpp" -{ return s1::parser::make_IN(ctx->loc); } +#line 88 "lexer.lpp" +{ return s1::parser::make_FOR(ctx->loc); } YY_BREAK case 32: YY_RULE_SETUP -#line 87 "lexer.lpp" -{ return s1::parser::make_SWITCH(ctx->loc); } +#line 89 "lexer.lpp" +{ return s1::parser::make_FOREACH(ctx->loc); } YY_BREAK case 33: YY_RULE_SETUP -#line 88 "lexer.lpp" -{ return s1::parser::make_CASE(ctx->loc); } +#line 90 "lexer.lpp" +{ return s1::parser::make_IN(ctx->loc); } YY_BREAK case 34: YY_RULE_SETUP -#line 89 "lexer.lpp" -{ return s1::parser::make_DEFAULT(ctx->loc); } +#line 91 "lexer.lpp" +{ return s1::parser::make_SWITCH(ctx->loc); } YY_BREAK case 35: YY_RULE_SETUP -#line 90 "lexer.lpp" -{ return s1::parser::make_BREAK(ctx->loc); } +#line 92 "lexer.lpp" +{ return s1::parser::make_CASE(ctx->loc); } YY_BREAK case 36: YY_RULE_SETUP -#line 91 "lexer.lpp" -{ return s1::parser::make_CONTINUE(ctx->loc); } +#line 93 "lexer.lpp" +{ return s1::parser::make_DEFAULT(ctx->loc); } YY_BREAK case 37: YY_RULE_SETUP -#line 92 "lexer.lpp" -{ return s1::parser::make_RETURN(ctx->loc); } +#line 94 "lexer.lpp" +{ return s1::parser::make_BREAK(ctx->loc); } YY_BREAK case 38: YY_RULE_SETUP -#line 93 "lexer.lpp" -{ return s1::parser::make_BREAKPOINT(ctx->loc); } +#line 95 "lexer.lpp" +{ return s1::parser::make_CONTINUE(ctx->loc); } YY_BREAK case 39: YY_RULE_SETUP -#line 94 "lexer.lpp" -{ return s1::parser::make_PROFBEGIN(ctx->loc); } +#line 96 "lexer.lpp" +{ return s1::parser::make_RETURN(ctx->loc); } YY_BREAK case 40: YY_RULE_SETUP -#line 95 "lexer.lpp" -{ return s1::parser::make_PROFEND(ctx->loc); } +#line 97 "lexer.lpp" +{ return s1::parser::make_BREAKPOINT(ctx->loc); } YY_BREAK case 41: YY_RULE_SETUP -#line 96 "lexer.lpp" -{ return s1::parser::make_THREAD(ctx->loc); } +#line 98 "lexer.lpp" +{ return s1::parser::make_PROFBEGIN(ctx->loc); } YY_BREAK case 42: YY_RULE_SETUP -#line 97 "lexer.lpp" -{ return s1::parser::make_CHILDTHREAD(ctx->loc); } +#line 99 "lexer.lpp" +{ return s1::parser::make_PROFEND(ctx->loc); } YY_BREAK case 43: YY_RULE_SETUP -#line 98 "lexer.lpp" -{ return s1::parser::make_THISTHREAD(ctx->loc); } +#line 100 "lexer.lpp" +{ return s1::parser::make_THREAD(ctx->loc); } YY_BREAK case 44: YY_RULE_SETUP -#line 99 "lexer.lpp" -{ return s1::parser::make_CALL(ctx->loc); } +#line 101 "lexer.lpp" +{ return s1::parser::make_CHILDTHREAD(ctx->loc); } YY_BREAK case 45: YY_RULE_SETUP -#line 100 "lexer.lpp" -{ return s1::parser::make_TRUE(ctx->loc); } +#line 102 "lexer.lpp" +{ return s1::parser::make_THISTHREAD(ctx->loc); } YY_BREAK case 46: YY_RULE_SETUP -#line 101 "lexer.lpp" -{ return s1::parser::make_FALSE(ctx->loc); } +#line 103 "lexer.lpp" +{ return s1::parser::make_CALL(ctx->loc); } YY_BREAK case 47: YY_RULE_SETUP -#line 102 "lexer.lpp" -{ return s1::parser::make_UNDEFINED(ctx->loc); } +#line 104 "lexer.lpp" +{ return s1::parser::make_TRUE(ctx->loc); } YY_BREAK case 48: YY_RULE_SETUP -#line 103 "lexer.lpp" -{ return s1::parser::make_SIZE(ctx->loc); } +#line 105 "lexer.lpp" +{ return s1::parser::make_FALSE(ctx->loc); } YY_BREAK case 49: YY_RULE_SETUP -#line 104 "lexer.lpp" -{ return s1::parser::make_GAME(ctx->loc); } +#line 106 "lexer.lpp" +{ return s1::parser::make_UNDEFINED(ctx->loc); } YY_BREAK case 50: YY_RULE_SETUP -#line 105 "lexer.lpp" -{ return s1::parser::make_SELF(ctx->loc); } +#line 107 "lexer.lpp" +{ return s1::parser::make_SIZE(ctx->loc); } YY_BREAK case 51: YY_RULE_SETUP -#line 106 "lexer.lpp" -{ return s1::parser::make_ANIM(ctx->loc); } +#line 108 "lexer.lpp" +{ return s1::parser::make_GAME(ctx->loc); } YY_BREAK case 52: YY_RULE_SETUP -#line 107 "lexer.lpp" -{ return s1::parser::make_LEVEL(ctx->loc); } +#line 109 "lexer.lpp" +{ return s1::parser::make_SELF(ctx->loc); } YY_BREAK case 53: YY_RULE_SETUP -#line 108 "lexer.lpp" -{ return s1::parser::make_LPAREN(ctx->loc); } +#line 110 "lexer.lpp" +{ return s1::parser::make_ANIM(ctx->loc); } YY_BREAK case 54: YY_RULE_SETUP -#line 109 "lexer.lpp" -{ return s1::parser::make_RPAREN(ctx->loc); } +#line 111 "lexer.lpp" +{ return s1::parser::make_LEVEL(ctx->loc); } YY_BREAK case 55: YY_RULE_SETUP -#line 110 "lexer.lpp" -{ return s1::parser::make_LBRACE(ctx->loc); } +#line 112 "lexer.lpp" +{ return s1::parser::make_LPAREN(ctx->loc); } YY_BREAK case 56: YY_RULE_SETUP -#line 111 "lexer.lpp" -{ return s1::parser::make_RBRACE(ctx->loc); } +#line 113 "lexer.lpp" +{ return s1::parser::make_RPAREN(ctx->loc); } YY_BREAK case 57: YY_RULE_SETUP -#line 112 "lexer.lpp" -{ return s1::parser::make_LBRACKET(ctx->loc); } +#line 114 "lexer.lpp" +{ return s1::parser::make_LBRACE(ctx->loc); } YY_BREAK case 58: YY_RULE_SETUP -#line 113 "lexer.lpp" -{ return s1::parser::make_RBRACKET(ctx->loc); } +#line 115 "lexer.lpp" +{ return s1::parser::make_RBRACE(ctx->loc); } YY_BREAK case 59: YY_RULE_SETUP -#line 114 "lexer.lpp" -{ return s1::parser::make_COMMA(ctx->loc); } +#line 116 "lexer.lpp" +{ return s1::parser::make_LBRACKET(ctx->loc); } YY_BREAK case 60: YY_RULE_SETUP -#line 115 "lexer.lpp" -{ return s1::parser::make_DOT(ctx->loc); } +#line 117 "lexer.lpp" +{ return s1::parser::make_RBRACKET(ctx->loc); } YY_BREAK case 61: YY_RULE_SETUP -#line 116 "lexer.lpp" -{ return s1::parser::make_DOUBLECOLON(ctx->loc); } +#line 118 "lexer.lpp" +{ return s1::parser::make_COMMA(ctx->loc); } YY_BREAK case 62: YY_RULE_SETUP -#line 117 "lexer.lpp" -{ return s1::parser::make_COLON(ctx->loc); } +#line 119 "lexer.lpp" +{ return s1::parser::make_DOT(ctx->loc); } YY_BREAK case 63: YY_RULE_SETUP -#line 118 "lexer.lpp" -{ return s1::parser::make_SEMICOLON(ctx->loc); } +#line 120 "lexer.lpp" +{ return s1::parser::make_DOUBLECOLON(ctx->loc); } YY_BREAK case 64: YY_RULE_SETUP -#line 119 "lexer.lpp" -{ return s1::parser::make_QMARK(ctx->loc); } +#line 121 "lexer.lpp" +{ return s1::parser::make_COLON(ctx->loc); } YY_BREAK case 65: YY_RULE_SETUP -#line 120 "lexer.lpp" -{ return s1::parser::make_INCREMENT(ctx->loc); } +#line 122 "lexer.lpp" +{ return s1::parser::make_SEMICOLON(ctx->loc); } YY_BREAK case 66: YY_RULE_SETUP -#line 121 "lexer.lpp" -{ return s1::parser::make_DECREMENT(ctx->loc); } +#line 123 "lexer.lpp" +{ return s1::parser::make_QMARK(ctx->loc); } YY_BREAK case 67: YY_RULE_SETUP -#line 122 "lexer.lpp" -{ return s1::parser::make_ASSIGN_LSHIFT(ctx->loc); } +#line 124 "lexer.lpp" +{ return s1::parser::make_INCREMENT(ctx->loc); } YY_BREAK case 68: YY_RULE_SETUP -#line 123 "lexer.lpp" -{ return s1::parser::make_ASSIGN_RSHIFT(ctx->loc); } +#line 125 "lexer.lpp" +{ return s1::parser::make_DECREMENT(ctx->loc); } YY_BREAK case 69: YY_RULE_SETUP -#line 124 "lexer.lpp" -{ return s1::parser::make_LSHIFT(ctx->loc); } +#line 126 "lexer.lpp" +{ return s1::parser::make_ASSIGN_LSHIFT(ctx->loc); } YY_BREAK case 70: YY_RULE_SETUP -#line 125 "lexer.lpp" -{ return s1::parser::make_RSHIFT(ctx->loc); } +#line 127 "lexer.lpp" +{ return s1::parser::make_ASSIGN_RSHIFT(ctx->loc); } YY_BREAK case 71: YY_RULE_SETUP -#line 126 "lexer.lpp" -{ return s1::parser::make_OR(ctx->loc); } +#line 128 "lexer.lpp" +{ return s1::parser::make_LSHIFT(ctx->loc); } YY_BREAK case 72: YY_RULE_SETUP -#line 127 "lexer.lpp" -{ return s1::parser::make_AND(ctx->loc); } +#line 129 "lexer.lpp" +{ return s1::parser::make_RSHIFT(ctx->loc); } YY_BREAK case 73: YY_RULE_SETUP -#line 128 "lexer.lpp" -{ return s1::parser::make_EQUALITY(ctx->loc); } +#line 130 "lexer.lpp" +{ return s1::parser::make_OR(ctx->loc); } YY_BREAK case 74: YY_RULE_SETUP -#line 129 "lexer.lpp" -{ return s1::parser::make_INEQUALITY(ctx->loc); } +#line 131 "lexer.lpp" +{ return s1::parser::make_AND(ctx->loc); } YY_BREAK case 75: YY_RULE_SETUP -#line 130 "lexer.lpp" -{ return s1::parser::make_LESS_EQUAL(ctx->loc); } +#line 132 "lexer.lpp" +{ return s1::parser::make_EQUALITY(ctx->loc); } YY_BREAK case 76: YY_RULE_SETUP -#line 131 "lexer.lpp" -{ return s1::parser::make_GREATER_EQUAL(ctx->loc); } +#line 133 "lexer.lpp" +{ return s1::parser::make_INEQUALITY(ctx->loc); } YY_BREAK case 77: YY_RULE_SETUP -#line 132 "lexer.lpp" -{ return s1::parser::make_LESS(ctx->loc); } +#line 134 "lexer.lpp" +{ return s1::parser::make_LESS_EQUAL(ctx->loc); } YY_BREAK case 78: YY_RULE_SETUP -#line 133 "lexer.lpp" -{ return s1::parser::make_GREATER(ctx->loc); } +#line 135 "lexer.lpp" +{ return s1::parser::make_GREATER_EQUAL(ctx->loc); } YY_BREAK case 79: YY_RULE_SETUP -#line 134 "lexer.lpp" -{ return s1::parser::make_ASSIGN_ADD(ctx->loc); } +#line 136 "lexer.lpp" +{ return s1::parser::make_LESS(ctx->loc); } YY_BREAK case 80: YY_RULE_SETUP -#line 135 "lexer.lpp" -{ return s1::parser::make_ASSIGN_SUB(ctx->loc); } +#line 137 "lexer.lpp" +{ return s1::parser::make_GREATER(ctx->loc); } YY_BREAK case 81: YY_RULE_SETUP -#line 136 "lexer.lpp" -{ return s1::parser::make_ASSIGN_MUL(ctx->loc); } +#line 138 "lexer.lpp" +{ return s1::parser::make_ASSIGN_ADD(ctx->loc); } YY_BREAK case 82: YY_RULE_SETUP -#line 137 "lexer.lpp" -{ return s1::parser::make_ASSIGN_DIV(ctx->loc); } +#line 139 "lexer.lpp" +{ return s1::parser::make_ASSIGN_SUB(ctx->loc); } YY_BREAK case 83: YY_RULE_SETUP -#line 138 "lexer.lpp" -{ return s1::parser::make_ASSIGN_MOD(ctx->loc); } +#line 140 "lexer.lpp" +{ return s1::parser::make_ASSIGN_MUL(ctx->loc); } YY_BREAK case 84: YY_RULE_SETUP -#line 139 "lexer.lpp" -{ return s1::parser::make_ASSIGN_BW_OR(ctx->loc); } +#line 141 "lexer.lpp" +{ return s1::parser::make_ASSIGN_DIV(ctx->loc); } YY_BREAK case 85: YY_RULE_SETUP -#line 140 "lexer.lpp" -{ return s1::parser::make_ASSIGN_BW_AND(ctx->loc); } +#line 142 "lexer.lpp" +{ return s1::parser::make_ASSIGN_MOD(ctx->loc); } YY_BREAK case 86: YY_RULE_SETUP -#line 141 "lexer.lpp" -{ return s1::parser::make_ASSIGN_BW_EXOR(ctx->loc); } +#line 143 "lexer.lpp" +{ return s1::parser::make_ASSIGN_BW_OR(ctx->loc); } YY_BREAK case 87: YY_RULE_SETUP -#line 142 "lexer.lpp" -{ return s1::parser::make_ASSIGN(ctx->loc); } +#line 144 "lexer.lpp" +{ return s1::parser::make_ASSIGN_BW_AND(ctx->loc); } YY_BREAK case 88: YY_RULE_SETUP -#line 143 "lexer.lpp" -{ return s1::parser::make_ADD(ctx->loc); } +#line 145 "lexer.lpp" +{ return s1::parser::make_ASSIGN_BW_EXOR(ctx->loc); } YY_BREAK case 89: YY_RULE_SETUP -#line 144 "lexer.lpp" -{ return s1::parser::make_SUB(ctx->loc); } +#line 146 "lexer.lpp" +{ return s1::parser::make_ASSIGN(ctx->loc); } YY_BREAK case 90: YY_RULE_SETUP -#line 145 "lexer.lpp" -{ return s1::parser::make_MUL(ctx->loc); } +#line 147 "lexer.lpp" +{ return s1::parser::make_ADD(ctx->loc); } YY_BREAK case 91: YY_RULE_SETUP -#line 146 "lexer.lpp" -{ return s1::parser::make_DIV(ctx->loc); } +#line 148 "lexer.lpp" +{ return s1::parser::make_SUB(ctx->loc); } YY_BREAK case 92: YY_RULE_SETUP -#line 147 "lexer.lpp" -{ return s1::parser::make_MOD(ctx->loc); } +#line 149 "lexer.lpp" +{ return s1::parser::make_MUL(ctx->loc); } YY_BREAK case 93: YY_RULE_SETUP -#line 148 "lexer.lpp" -{ return s1::parser::make_NOT(ctx->loc); } +#line 150 "lexer.lpp" +{ return s1::parser::make_DIV(ctx->loc); } YY_BREAK case 94: YY_RULE_SETUP -#line 149 "lexer.lpp" -{ return s1::parser::make_COMPLEMENT(ctx->loc); } +#line 151 "lexer.lpp" +{ return s1::parser::make_MOD(ctx->loc); } YY_BREAK case 95: YY_RULE_SETUP -#line 150 "lexer.lpp" -{ return s1::parser::make_BITWISE_OR(ctx->loc); } +#line 152 "lexer.lpp" +{ return s1::parser::make_NOT(ctx->loc); } YY_BREAK case 96: YY_RULE_SETUP -#line 151 "lexer.lpp" -{ return s1::parser::make_BITWISE_AND(ctx->loc); } +#line 153 "lexer.lpp" +{ return s1::parser::make_COMPLEMENT(ctx->loc); } YY_BREAK case 97: YY_RULE_SETUP -#line 152 "lexer.lpp" -{ return s1::parser::make_BITWISE_EXOR(ctx->loc); } +#line 154 "lexer.lpp" +{ return s1::parser::make_BITWISE_OR(ctx->loc); } YY_BREAK case 98: YY_RULE_SETUP -#line 153 "lexer.lpp" -{ return s1::parser::make_PATH(xsk::utils::string::fordslash(yytext), ctx->loc); } +#line 155 "lexer.lpp" +{ return s1::parser::make_BITWISE_AND(ctx->loc); } YY_BREAK case 99: YY_RULE_SETUP -#line 154 "lexer.lpp" -{ return s1::parser::make_IDENTIFIER((std::string(yytext, 3) == "_ID") ? std::string(yytext) : xsk::utils::string::to_lower(yytext), ctx->loc); } +#line 156 "lexer.lpp" +{ return s1::parser::make_BITWISE_EXOR(ctx->loc); } YY_BREAK case 100: -/* rule 100 can match eol */ -YY_RULE_SETUP -#line 155 "lexer.lpp" -{ return s1::parser::make_ISTRING(std::string(yytext).substr(1), ctx->loc); } - YY_BREAK -case 101: -/* rule 101 can match eol */ -YY_RULE_SETUP -#line 156 "lexer.lpp" -{ return s1::parser::make_STRING(std::string(yytext), ctx->loc); } - YY_BREAK -case 102: YY_RULE_SETUP #line 157 "lexer.lpp" -{ return s1::parser::make_COLOR(std::string(yytext).substr(1), ctx->loc); } +{ return s1::parser::make_PATH(xsk::utils::string::fordslash(yytext), ctx->loc); } YY_BREAK -case 103: +case 101: YY_RULE_SETUP #line 158 "lexer.lpp" -{ return s1::parser::make_FLOAT(std::string(yytext), ctx->loc); } +{ return s1::parser::make_IDENTIFIER((std::string(yytext, 3) == "_ID") ? std::string(yytext) : xsk::utils::string::to_lower(yytext), ctx->loc); } + YY_BREAK +case 102: +/* rule 102 can match eol */ +YY_RULE_SETUP +#line 159 "lexer.lpp" +{ return s1::parser::make_ISTRING(std::string(yytext).substr(1), ctx->loc); } + YY_BREAK +case 103: +/* rule 103 can match eol */ +YY_RULE_SETUP +#line 160 "lexer.lpp" +{ return s1::parser::make_STRING(std::string(yytext), ctx->loc); } YY_BREAK case 104: YY_RULE_SETUP -#line 159 "lexer.lpp" -{ return s1::parser::make_INT_OCT(xsk::utils::string::oct_to_dec(yytext), ctx->loc); } +#line 161 "lexer.lpp" +{ return s1::parser::make_COLOR(std::string(yytext).substr(1), ctx->loc); } YY_BREAK case 105: YY_RULE_SETUP -#line 160 "lexer.lpp" -{ return s1::parser::make_INT_BIN(xsk::utils::string::bin_to_dec(yytext), ctx->loc); } +#line 162 "lexer.lpp" +{ return s1::parser::make_FLOAT(std::string(yytext), ctx->loc); } YY_BREAK case 106: YY_RULE_SETUP -#line 161 "lexer.lpp" -{ return s1::parser::make_INT_HEX(xsk::utils::string::hex_to_dec(yytext), ctx->loc); } +#line 163 "lexer.lpp" +{ return s1::parser::make_INT_OCT(xsk::utils::string::oct_to_dec(yytext), ctx->loc); } YY_BREAK case 107: YY_RULE_SETUP -#line 162 "lexer.lpp" -{ return s1::parser::make_INT_DEC(std::string(yytext), ctx->loc); } - YY_BREAK -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(COMMENT_BLOCK_STATE): -case YY_STATE_EOF(DEVBLOCK_ON_STATE): -case YY_STATE_EOF(DEVBLOCK_OFF_STATE): -#line 163 "lexer.lpp" -{ if(ctx->header_top > 0) s1_pop_header(ctx); else return s1::parser::make_S1EOF(ctx->loc); } +#line 164 "lexer.lpp" +{ return s1::parser::make_INT_BIN(xsk::utils::string::bin_to_dec(yytext), ctx->loc); } YY_BREAK case 108: -/* rule 108 can match eol */ YY_RULE_SETUP -#line 164 "lexer.lpp" -{ throw s1::parser::syntax_error(ctx->loc, "bad token: \'" + std::string(yytext) + "\'"); } +#line 165 "lexer.lpp" +{ return s1::parser::make_INT_HEX(xsk::utils::string::hex_to_dec(yytext), ctx->loc); } YY_BREAK case 109: YY_RULE_SETUP #line 166 "lexer.lpp" +{ return s1::parser::make_INT_DEC(std::string(yytext), ctx->loc); } + YY_BREAK +case YY_STATE_EOF(INITIAL): +#line 167 "lexer.lpp" +{ if(ctx->header_top > 0) s1_pop_header(ctx); else return s1::parser::make_S1EOF(ctx->loc); } + YY_BREAK +case 110: +/* rule 110 can match eol */ +YY_RULE_SETUP +#line 168 "lexer.lpp" +{ throw s1::parser::syntax_error(ctx->loc, "bad token: \'" + std::string(yytext) + "\'"); } + YY_BREAK +case 111: +YY_RULE_SETUP +#line 170 "lexer.lpp" ECHO; YY_BREAK -#line 1810 "lexer.cpp" +#line 1834 "lexer.cpp" case YY_END_OF_BUFFER: { @@ -2105,7 +2129,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 >= 330 ) + if ( yy_current_state >= 333 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2134,11 +2158,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 >= 330 ) + if ( yy_current_state >= 333 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 329); + yy_is_jam = (yy_current_state == 332); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -2937,7 +2961,7 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 166 "lexer.lpp" +#line 170 "lexer.lpp" void s1_push_header(xsk::gsc::context* ctx, const std::string& file) diff --git a/src/s1/xsk/lexer.hpp b/src/s1/xsk/lexer.hpp index 57aa5c70..ac2bc6fb 100644 --- a/src/s1/xsk/lexer.hpp +++ b/src/s1/xsk/lexer.hpp @@ -439,9 +439,9 @@ void yyfree ( void * , yyscan_t yyscanner ); #ifdef YY_HEADER_EXPORT_START_CONDITIONS #define INITIAL 0 -#define COMMENT_BLOCK_STATE 1 -#define DEVBLOCK_ON_STATE 2 -#define DEVBLOCK_OFF_STATE 3 +#define COMMENT_STATE 1 +#define DEV_OFF_STATE 2 +#define DEV_ON_STATE 3 #endif @@ -703,7 +703,7 @@ extern int yylex (yyscan_t yyscanner); #undef yyTABLES_NAME #endif -#line 166 "lexer.lpp" +#line 170 "lexer.lpp" #line 709 "lexer.hpp" diff --git a/src/s1/xsk/parser.cpp b/src/s1/xsk/parser.cpp index 372f85cc..b496aa86 100644 --- a/src/s1/xsk/parser.cpp +++ b/src/s1/xsk/parser.cpp @@ -442,6 +442,7 @@ namespace xsk { namespace gsc { namespace s1 { value.YY_MOVE_OR_COPY< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.YY_MOVE_OR_COPY< ast::stmt_list::ptr > (YY_MOVE (that.value)); @@ -745,6 +746,7 @@ namespace xsk { namespace gsc { namespace s1 { value.move< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (YY_MOVE (that.value)); @@ -1048,6 +1050,7 @@ namespace xsk { namespace gsc { namespace s1 { value.copy< ast::stmt_ifelse::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.copy< ast::stmt_list::ptr > (that.value); @@ -1350,6 +1353,7 @@ namespace xsk { namespace gsc { namespace s1 { value.move< ast::stmt_ifelse::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (that.value); @@ -1907,6 +1911,7 @@ namespace xsk { namespace gsc { namespace s1 { yylhs.value.emplace< ast::stmt_ifelse::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list yylhs.value.emplace< ast::stmt_list::ptr > (); @@ -1990,1291 +1995,1321 @@ namespace xsk { namespace gsc { namespace s1 { switch (yyn) { case 2: // root: program -#line 251 "parser.ypp" +#line 254 "parser.ypp" { ast = std::move(yystack_[0].value.as < ast::program::ptr > ()); } -#line 1996 "parser.cpp" +#line 2001 "parser.cpp" break; case 3: // root: %empty -#line 252 "parser.ypp" +#line 255 "parser.ypp" { ast = std::make_unique(yylhs.location); } -#line 2002 "parser.cpp" +#line 2007 "parser.cpp" break; case 4: // program: program inline -#line 257 "parser.ypp" +#line 260 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); } -#line 2008 "parser.cpp" +#line 2013 "parser.cpp" break; case 5: // program: program include -#line 259 "parser.ypp" +#line 262 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 2014 "parser.cpp" +#line 2019 "parser.cpp" break; case 6: // program: program declaration -#line 261 "parser.ypp" +#line 264 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2020 "parser.cpp" +#line 2025 "parser.cpp" break; case 7: // program: inline -#line 263 "parser.ypp" +#line 266 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); } -#line 2026 "parser.cpp" +#line 2031 "parser.cpp" break; case 8: // program: include -#line 265 "parser.ypp" +#line 268 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 2032 "parser.cpp" +#line 2037 "parser.cpp" break; case 9: // program: declaration -#line 267 "parser.ypp" +#line 270 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2038 "parser.cpp" +#line 2043 "parser.cpp" break; case 10: // inline: "#inline" expr_path ";" -#line 271 "parser.ypp" +#line 274 "parser.ypp" { s1_push_header(ctx, yystack_[1].value.as < ast::expr_path::ptr > ()->value); } -#line 2044 "parser.cpp" +#line 2049 "parser.cpp" break; case 11: // include: "#include" expr_path ";" -#line 276 "parser.ypp" +#line 279 "parser.ypp" { yylhs.value.as < ast::include::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_path::ptr > ())); } -#line 2050 "parser.cpp" +#line 2055 "parser.cpp" break; - case 12: // declaration: decl_usingtree -#line 280 "parser.ypp" + case 12: // declaration: "/#" +#line 283 "parser.ypp" + { yylhs.value.as < ast::decl > ().as_dev_begin = std::make_unique(yylhs.location); } +#line 2061 "parser.cpp" + break; + + case 13: // declaration: "#/" +#line 284 "parser.ypp" + { yylhs.value.as < ast::decl > ().as_dev_end = std::make_unique(yylhs.location); } +#line 2067 "parser.cpp" + break; + + case 14: // declaration: decl_usingtree +#line 285 "parser.ypp" { yylhs.value.as < ast::decl > ().as_usingtree = std::move(yystack_[0].value.as < ast::decl_usingtree::ptr > ()); } -#line 2056 "parser.cpp" +#line 2073 "parser.cpp" break; - case 13: // declaration: decl_constant -#line 281 "parser.ypp" + case 15: // declaration: decl_constant +#line 286 "parser.ypp" { yylhs.value.as < ast::decl > ().as_constant = std::move(yystack_[0].value.as < ast::decl_constant::ptr > ()); } -#line 2062 "parser.cpp" +#line 2079 "parser.cpp" break; - case 14: // declaration: decl_thread -#line 282 "parser.ypp" - { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } -#line 2068 "parser.cpp" - break; - - case 15: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" + case 16: // declaration: decl_thread #line 287 "parser.ypp" - { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_usingtree::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_string::ptr > ())); } -#line 2074 "parser.cpp" + { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } +#line 2085 "parser.cpp" break; - case 16: // decl_constant: expr_identifier "=" expr ";" + case 17: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" #line 292 "parser.ypp" - { yylhs.value.as < ast::decl_constant::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2080 "parser.cpp" + { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_usingtree::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_string::ptr > ())); } +#line 2091 "parser.cpp" break; - case 17: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block + case 18: // decl_constant: expr_identifier "=" expr ";" #line 297 "parser.ypp" - { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_thread::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2086 "parser.cpp" + { yylhs.value.as < ast::decl_constant::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } +#line 2097 "parser.cpp" break; - case 18: // stmt: stmt_block -#line 301 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } -#line 2092 "parser.cpp" - break; - - case 19: // stmt: stmt_call + case 19: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block #line 302 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } -#line 2098 "parser.cpp" + { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_thread::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } +#line 2103 "parser.cpp" break; - case 20: // stmt: stmt_assign -#line 303 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } -#line 2104 "parser.cpp" - break; - - case 21: // stmt: stmt_endon -#line 304 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } -#line 2110 "parser.cpp" - break; - - case 22: // stmt: stmt_notify -#line 305 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } -#line 2116 "parser.cpp" - break; - - case 23: // stmt: stmt_wait + case 20: // stmt: stmt_dev #line 306 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } -#line 2122 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } +#line 2109 "parser.cpp" break; - case 24: // stmt: stmt_waittill + case 21: // stmt: stmt_block #line 307 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } -#line 2128 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } +#line 2115 "parser.cpp" break; - case 25: // stmt: stmt_waittillmatch + case 22: // stmt: stmt_call #line 308 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } -#line 2134 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } +#line 2121 "parser.cpp" break; - case 26: // stmt: stmt_waittillframeend + case 23: // stmt: stmt_assign #line 309 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } -#line 2140 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } +#line 2127 "parser.cpp" break; - case 27: // stmt: stmt_waitframe + case 24: // stmt: stmt_endon #line 310 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waitframe = std::move(yystack_[0].value.as < ast::stmt_waitframe::ptr > ()); } -#line 2146 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } +#line 2133 "parser.cpp" break; - case 28: // stmt: stmt_if + case 25: // stmt: stmt_notify #line 311 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } -#line 2152 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } +#line 2139 "parser.cpp" break; - case 29: // stmt: stmt_ifelse + case 26: // stmt: stmt_wait #line 312 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } -#line 2158 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } +#line 2145 "parser.cpp" break; - case 30: // stmt: stmt_while + case 27: // stmt: stmt_waittill #line 313 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } -#line 2164 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } +#line 2151 "parser.cpp" break; - case 31: // stmt: stmt_dowhile + case 28: // stmt: stmt_waittillmatch #line 314 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } -#line 2170 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } +#line 2157 "parser.cpp" break; - case 32: // stmt: stmt_for + case 29: // stmt: stmt_waittillframeend #line 315 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } -#line 2176 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } +#line 2163 "parser.cpp" break; - case 33: // stmt: stmt_foreach + case 30: // stmt: stmt_waitframe #line 316 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } -#line 2182 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waitframe = std::move(yystack_[0].value.as < ast::stmt_waitframe::ptr > ()); } +#line 2169 "parser.cpp" break; - case 34: // stmt: stmt_switch + case 31: // stmt: stmt_if #line 317 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } -#line 2188 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } +#line 2175 "parser.cpp" break; - case 35: // stmt: stmt_case + case 32: // stmt: stmt_ifelse #line 318 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } -#line 2194 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } +#line 2181 "parser.cpp" break; - case 36: // stmt: stmt_default + case 33: // stmt: stmt_while #line 319 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } -#line 2200 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } +#line 2187 "parser.cpp" break; - case 37: // stmt: stmt_break + case 34: // stmt: stmt_dowhile #line 320 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } -#line 2206 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } +#line 2193 "parser.cpp" break; - case 38: // stmt: stmt_continue + case 35: // stmt: stmt_for #line 321 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } -#line 2212 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } +#line 2199 "parser.cpp" break; - case 39: // stmt: stmt_return + case 36: // stmt: stmt_foreach #line 322 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } -#line 2218 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } +#line 2205 "parser.cpp" break; - case 40: // stmt: stmt_breakpoint + case 37: // stmt: stmt_switch #line 323 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } -#line 2224 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } +#line 2211 "parser.cpp" break; - case 41: // stmt: stmt_prof_begin + case 38: // stmt: stmt_case #line 324 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } -#line 2230 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } +#line 2217 "parser.cpp" break; - case 42: // stmt: stmt_prof_end + case 39: // stmt: stmt_default #line 325 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } -#line 2236 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } +#line 2223 "parser.cpp" break; - case 43: // stmt_block: "{" stmt_list "}" + case 40: // stmt: stmt_break +#line 326 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } +#line 2229 "parser.cpp" + break; + + case 41: // stmt: stmt_continue +#line 327 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } +#line 2235 "parser.cpp" + break; + + case 42: // stmt: stmt_return +#line 328 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } +#line 2241 "parser.cpp" + break; + + case 43: // stmt: stmt_breakpoint #line 329 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } -#line 2242 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } +#line 2247 "parser.cpp" break; - case 44: // stmt_block: "{" "}" + case 44: // stmt: stmt_prof_begin #line 330 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } -#line 2248 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } +#line 2253 "parser.cpp" break; - case 45: // stmt_list: stmt_list stmt + case 45: // stmt: stmt_prof_end +#line 331 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } +#line 2259 "parser.cpp" + break; + + case 46: // stmt_dev: "/#" stmt_list "#/" #line 335 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2254 "parser.cpp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } +#line 2265 "parser.cpp" break; - case 46: // stmt_list: stmt -#line 337 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2260 "parser.cpp" + case 47: // stmt_dev: "/#" "#/" +#line 336 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } +#line 2271 "parser.cpp" break; - case 47: // stmt_expr: expr_assign -#line 342 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2266 "parser.cpp" + case 48: // stmt_block: "{" stmt_list "}" +#line 340 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } +#line 2277 "parser.cpp" break; - case 48: // stmt_expr: expr_increment -#line 344 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2272 "parser.cpp" + case 49: // stmt_block: "{" "}" +#line 341 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } +#line 2283 "parser.cpp" break; - case 49: // stmt_expr: expr_decrement + case 50: // stmt_list: stmt_list stmt #line 346 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2278 "parser.cpp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2289 "parser.cpp" break; - case 50: // stmt_expr: %empty + case 51: // stmt_list: stmt #line 348 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2284 "parser.cpp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2295 "parser.cpp" break; - case 51: // stmt_call: expr_call ";" + case 52: // stmt_expr: expr_assign #line 353 "parser.ypp" - { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } -#line 2290 "parser.cpp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2301 "parser.cpp" break; - case 52: // stmt_call: expr_method ";" + case 53: // stmt_expr: expr_increment #line 355 "parser.ypp" - { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_method::ptr > ()))); } -#line 2296 "parser.cpp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2307 "parser.cpp" break; - case 53: // stmt_assign: expr_assign ";" -#line 360 "parser.ypp" - { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2302 "parser.cpp" + case 54: // stmt_expr: expr_decrement +#line 357 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2313 "parser.cpp" break; - case 54: // stmt_assign: expr_increment ";" -#line 362 "parser.ypp" - { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2308 "parser.cpp" + case 55: // stmt_expr: %empty +#line 359 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } +#line 2319 "parser.cpp" break; - case 55: // stmt_assign: expr_decrement ";" + case 56: // stmt_call: expr_call ";" #line 364 "parser.ypp" + { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } +#line 2325 "parser.cpp" + break; + + case 57: // stmt_call: expr_method ";" +#line 366 "parser.ypp" + { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_method::ptr > ()))); } +#line 2331 "parser.cpp" + break; + + case 58: // stmt_assign: expr_assign ";" +#line 371 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2314 "parser.cpp" +#line 2337 "parser.cpp" break; - case 56: // stmt_endon: expr_object "endon" "(" expr ")" ";" -#line 369 "parser.ypp" + case 59: // stmt_assign: expr_increment ";" +#line 373 "parser.ypp" + { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 2343 "parser.cpp" + break; + + case 60: // stmt_assign: expr_decrement ";" +#line 375 "parser.ypp" + { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 2349 "parser.cpp" + break; + + case 61: // stmt_endon: expr_object "endon" "(" expr ")" ";" +#line 380 "parser.ypp" { yylhs.value.as < ast::stmt_endon::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ())); } -#line 2320 "parser.cpp" +#line 2355 "parser.cpp" break; - case 57: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" -#line 374 "parser.ypp" + case 62: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" +#line 385 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2326 "parser.cpp" +#line 2361 "parser.cpp" break; - case 58: // stmt_notify: expr_object "notify" "(" expr ")" ";" -#line 376 "parser.ypp" + case 63: // stmt_notify: expr_object "notify" "(" expr ")" ";" +#line 387 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2332 "parser.cpp" +#line 2367 "parser.cpp" break; - case 59: // stmt_wait: "wait" expr ";" -#line 381 "parser.ypp" + case 64: // stmt_wait: "wait" expr ";" +#line 392 "parser.ypp" { yylhs.value.as < ast::stmt_wait::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2338 "parser.cpp" +#line 2373 "parser.cpp" break; - case 60: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" -#line 386 "parser.ypp" + case 65: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" +#line 397 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2344 "parser.cpp" +#line 2379 "parser.cpp" break; - case 61: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" -#line 388 "parser.ypp" + case 66: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" +#line 399 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2350 "parser.cpp" +#line 2385 "parser.cpp" break; - case 62: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" -#line 393 "parser.ypp" + case 67: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" +#line 404 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2356 "parser.cpp" +#line 2391 "parser.cpp" break; - case 63: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" -#line 395 "parser.ypp" + case 68: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" +#line 406 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2362 "parser.cpp" +#line 2397 "parser.cpp" break; - case 64: // stmt_waittillframeend: "waittillframeend" ";" -#line 400 "parser.ypp" + case 69: // stmt_waittillframeend: "waittillframeend" ";" +#line 411 "parser.ypp" { yylhs.value.as < ast::stmt_waittillframeend::ptr > () = std::make_unique(yylhs.location); } -#line 2368 "parser.cpp" +#line 2403 "parser.cpp" break; - case 65: // stmt_waitframe: "waitframe" ";" -#line 405 "parser.ypp" + case 70: // stmt_waitframe: "waitframe" ";" +#line 416 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } -#line 2374 "parser.cpp" +#line 2409 "parser.cpp" break; - case 66: // stmt_waitframe: "waitframe" "(" ")" ";" -#line 407 "parser.ypp" + case 71: // stmt_waitframe: "waitframe" "(" ")" ";" +#line 418 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } -#line 2380 "parser.cpp" +#line 2415 "parser.cpp" break; - case 67: // stmt_if: "if" "(" expr ")" stmt -#line 412 "parser.ypp" + case 72: // stmt_if: "if" "(" expr ")" stmt +#line 423 "parser.ypp" { yylhs.value.as < ast::stmt_if::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2386 "parser.cpp" +#line 2421 "parser.cpp" break; - case 68: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 417 "parser.ypp" + case 73: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 428 "parser.ypp" { yylhs.value.as < ast::stmt_ifelse::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::stmt > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2392 "parser.cpp" +#line 2427 "parser.cpp" break; - case 69: // stmt_while: "while" "(" expr ")" stmt -#line 422 "parser.ypp" + case 74: // stmt_while: "while" "(" expr ")" stmt +#line 433 "parser.ypp" { yylhs.value.as < ast::stmt_while::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2398 "parser.cpp" +#line 2433 "parser.cpp" break; - case 70: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" -#line 427 "parser.ypp" + case 75: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" +#line 438 "parser.ypp" { yylhs.value.as < ast::stmt_dowhile::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[5].value.as < ast::stmt > ())); } -#line 2404 "parser.cpp" +#line 2439 "parser.cpp" break; - case 71: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt -#line 432 "parser.ypp" + case 76: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt +#line 443 "parser.ypp" { yylhs.value.as < ast::stmt_for::ptr > () = std::make_unique(yylhs.location, ast::stmt(std::move(yystack_[6].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[4].value.as < ast::expr > ()), ast::stmt(std::move(yystack_[2].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2410 "parser.cpp" +#line 2445 "parser.cpp" break; - case 72: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt -#line 437 "parser.ypp" + case 77: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt +#line 448 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2416 "parser.cpp" +#line 2451 "parser.cpp" break; - case 73: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt -#line 439 "parser.ypp" + case 78: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt +#line 450 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[6].value.as < ast::expr_identifier::ptr > ())), ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2422 "parser.cpp" +#line 2457 "parser.cpp" break; - case 74: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 444 "parser.ypp" + case 79: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 455 "parser.ypp" { yylhs.value.as < ast::stmt_switch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2428 "parser.cpp" +#line 2463 "parser.cpp" break; - case 75: // stmt_case: "case" expr_integer ":" -#line 449 "parser.ypp" + case 80: // stmt_case: "case" expr_integer ":" +#line 460 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_integer::ptr > ())), std::make_unique(yylhs.location)); } -#line 2434 "parser.cpp" +#line 2469 "parser.cpp" break; - case 76: // stmt_case: "case" expr_string ":" -#line 451 "parser.ypp" + case 81: // stmt_case: "case" expr_string ":" +#line 462 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_string::ptr > ())), std::make_unique(yylhs.location)); } -#line 2440 "parser.cpp" +#line 2475 "parser.cpp" break; - case 77: // stmt_default: "default" ":" -#line 456 "parser.ypp" + case 82: // stmt_default: "default" ":" +#line 467 "parser.ypp" { yylhs.value.as < ast::stmt_default::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2446 "parser.cpp" +#line 2481 "parser.cpp" break; - case 78: // stmt_break: "break" ";" -#line 461 "parser.ypp" + case 83: // stmt_break: "break" ";" +#line 472 "parser.ypp" { yylhs.value.as < ast::stmt_break::ptr > () = std::make_unique(yylhs.location); } -#line 2452 "parser.cpp" +#line 2487 "parser.cpp" break; - case 79: // stmt_continue: "continue" ";" -#line 466 "parser.ypp" + case 84: // stmt_continue: "continue" ";" +#line 477 "parser.ypp" { yylhs.value.as < ast::stmt_continue::ptr > () = std::make_unique(yylhs.location); } -#line 2458 "parser.cpp" +#line 2493 "parser.cpp" break; - case 80: // stmt_return: "return" expr ";" -#line 471 "parser.ypp" + case 85: // stmt_return: "return" expr ";" +#line 482 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2464 "parser.cpp" +#line 2499 "parser.cpp" break; - case 81: // stmt_return: "return" ";" -#line 473 "parser.ypp" + case 86: // stmt_return: "return" ";" +#line 484 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2470 "parser.cpp" +#line 2505 "parser.cpp" break; - case 82: // stmt_breakpoint: "breakpoint" ";" -#line 478 "parser.ypp" + case 87: // stmt_breakpoint: "breakpoint" ";" +#line 489 "parser.ypp" { yylhs.value.as < ast::stmt_breakpoint::ptr > () = std::make_unique(yylhs.location); } -#line 2476 "parser.cpp" +#line 2511 "parser.cpp" break; - case 83: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 483 "parser.ypp" - { yylhs.value.as < ast::stmt_prof_begin::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2482 "parser.cpp" - break; - - case 84: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 488 "parser.ypp" - { yylhs.value.as < ast::stmt_prof_end::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2488 "parser.cpp" - break; - - case 85: // expr: expr_ternary -#line 492 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2494 "parser.cpp" - break; - - case 86: // expr: expr_binary -#line 493 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2500 "parser.cpp" - break; - - case 87: // expr: expr_primitive + case 88: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" #line 494 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2506 "parser.cpp" + { yylhs.value.as < ast::stmt_prof_begin::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } +#line 2517 "parser.cpp" break; - case 88: // expr_or_empty: expr -#line 498 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2512 "parser.cpp" - break; - - case 89: // expr_or_empty: %empty + case 89: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" #line 499 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } -#line 2518 "parser.cpp" + { yylhs.value.as < ast::stmt_prof_end::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } +#line 2523 "parser.cpp" break; - case 90: // expr_assign: expr_object "=" expr + case 90: // expr: expr_ternary +#line 503 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2529 "parser.cpp" + break; + + case 91: // expr: expr_binary #line 504 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2524 "parser.cpp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2535 "parser.cpp" break; - case 91: // expr_assign: expr_object "|=" expr -#line 506 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2530 "parser.cpp" + case 92: // expr: expr_primitive +#line 505 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2541 "parser.cpp" break; - case 92: // expr_assign: expr_object "&=" expr -#line 508 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2536 "parser.cpp" + case 93: // expr_or_empty: expr +#line 509 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2547 "parser.cpp" break; - case 93: // expr_assign: expr_object "^=" expr + case 94: // expr_or_empty: %empty #line 510 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } +#line 2553 "parser.cpp" + break; + + case 95: // expr_assign: expr_object "=" expr +#line 515 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2559 "parser.cpp" + break; + + case 96: // expr_assign: expr_object "|=" expr +#line 517 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2565 "parser.cpp" + break; + + case 97: // expr_assign: expr_object "&=" expr +#line 519 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2571 "parser.cpp" + break; + + case 98: // expr_assign: expr_object "^=" expr +#line 521 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2542 "parser.cpp" +#line 2577 "parser.cpp" break; - case 94: // expr_assign: expr_object "<<=" expr -#line 512 "parser.ypp" + case 99: // expr_assign: expr_object "<<=" expr +#line 523 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()),std::move( yystack_[0].value.as < ast::expr > ())); } -#line 2548 "parser.cpp" +#line 2583 "parser.cpp" break; - case 95: // expr_assign: expr_object ">>=" expr -#line 514 "parser.ypp" + case 100: // expr_assign: expr_object ">>=" expr +#line 525 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2554 "parser.cpp" +#line 2589 "parser.cpp" break; - case 96: // expr_assign: expr_object "+=" expr -#line 516 "parser.ypp" + case 101: // expr_assign: expr_object "+=" expr +#line 527 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2560 "parser.cpp" +#line 2595 "parser.cpp" break; - case 97: // expr_assign: expr_object "-=" expr -#line 518 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2566 "parser.cpp" - break; - - case 98: // expr_assign: expr_object "*=" expr -#line 520 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2572 "parser.cpp" - break; - - case 99: // expr_assign: expr_object "/=" expr -#line 522 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2578 "parser.cpp" - break; - - case 100: // expr_assign: expr_object "%=" expr -#line 524 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2584 "parser.cpp" - break; - - case 101: // expr_increment: "++" expr_object + case 102: // expr_assign: expr_object "-=" expr #line 529 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2590 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2601 "parser.cpp" break; - case 102: // expr_increment: expr_object "++" + case 103: // expr_assign: expr_object "*=" expr #line 531 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2607 "parser.cpp" + break; + + case 104: // expr_assign: expr_object "/=" expr +#line 533 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2613 "parser.cpp" + break; + + case 105: // expr_assign: expr_object "%=" expr +#line 535 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2619 "parser.cpp" + break; + + case 106: // expr_increment: "++" expr_object +#line 540 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } +#line 2625 "parser.cpp" + break; + + case 107: // expr_increment: expr_object "++" +#line 542 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2596 "parser.cpp" +#line 2631 "parser.cpp" break; - case 103: // expr_decrement: "--" expr_object -#line 536 "parser.ypp" + case 108: // expr_decrement: "--" expr_object +#line 547 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2602 "parser.cpp" +#line 2637 "parser.cpp" break; - case 104: // expr_decrement: expr_object "--" -#line 538 "parser.ypp" + case 109: // expr_decrement: expr_object "--" +#line 549 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2608 "parser.cpp" +#line 2643 "parser.cpp" break; - case 105: // expr_ternary: expr "?" expr ":" expr -#line 543 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2614 "parser.cpp" - break; - - case 106: // expr_binary: expr "||" expr -#line 548 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2620 "parser.cpp" - break; - - case 107: // expr_binary: expr "&&" expr -#line 550 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2626 "parser.cpp" - break; - - case 108: // expr_binary: expr "==" expr -#line 552 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2632 "parser.cpp" - break; - - case 109: // expr_binary: expr "!=" expr + case 110: // expr_ternary: expr "?" expr ":" expr #line 554 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2649 "parser.cpp" + break; + + case 111: // expr_binary: expr "||" expr +#line 559 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2655 "parser.cpp" + break; + + case 112: // expr_binary: expr "&&" expr +#line 561 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2661 "parser.cpp" + break; + + case 113: // expr_binary: expr "==" expr +#line 563 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2667 "parser.cpp" + break; + + case 114: // expr_binary: expr "!=" expr +#line 565 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2638 "parser.cpp" +#line 2673 "parser.cpp" break; - case 110: // expr_binary: expr "<=" expr -#line 556 "parser.ypp" + case 115: // expr_binary: expr "<=" expr +#line 567 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2644 "parser.cpp" +#line 2679 "parser.cpp" break; - case 111: // expr_binary: expr ">=" expr -#line 558 "parser.ypp" + case 116: // expr_binary: expr ">=" expr +#line 569 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2650 "parser.cpp" +#line 2685 "parser.cpp" break; - case 112: // expr_binary: expr "<" expr -#line 560 "parser.ypp" + case 117: // expr_binary: expr "<" expr +#line 571 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2656 "parser.cpp" +#line 2691 "parser.cpp" break; - case 113: // expr_binary: expr ">" expr -#line 562 "parser.ypp" + case 118: // expr_binary: expr ">" expr +#line 573 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2662 "parser.cpp" +#line 2697 "parser.cpp" break; - case 114: // expr_binary: expr "|" expr -#line 564 "parser.ypp" + case 119: // expr_binary: expr "|" expr +#line 575 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2668 "parser.cpp" +#line 2703 "parser.cpp" break; - case 115: // expr_binary: expr "&" expr -#line 566 "parser.ypp" + case 120: // expr_binary: expr "&" expr +#line 577 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2674 "parser.cpp" +#line 2709 "parser.cpp" break; - case 116: // expr_binary: expr "^" expr -#line 568 "parser.ypp" + case 121: // expr_binary: expr "^" expr +#line 579 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2680 "parser.cpp" +#line 2715 "parser.cpp" break; - case 117: // expr_binary: expr "<<" expr -#line 570 "parser.ypp" + case 122: // expr_binary: expr "<<" expr +#line 581 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2686 "parser.cpp" +#line 2721 "parser.cpp" break; - case 118: // expr_binary: expr ">>" expr -#line 572 "parser.ypp" + case 123: // expr_binary: expr ">>" expr +#line 583 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2692 "parser.cpp" +#line 2727 "parser.cpp" break; - case 119: // expr_binary: expr "+" expr -#line 574 "parser.ypp" + case 124: // expr_binary: expr "+" expr +#line 585 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2698 "parser.cpp" +#line 2733 "parser.cpp" break; - case 120: // expr_binary: expr "-" expr -#line 576 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2704 "parser.cpp" - break; - - case 121: // expr_binary: expr "*" expr -#line 578 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2710 "parser.cpp" - break; - - case 122: // expr_binary: expr "/" expr -#line 580 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2716 "parser.cpp" - break; - - case 123: // expr_binary: expr "%" expr -#line 582 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2722 "parser.cpp" - break; - - case 124: // expr_primitive: expr_complement -#line 586 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } -#line 2728 "parser.cpp" - break; - - case 125: // expr_primitive: expr_not + case 125: // expr_binary: expr "-" expr #line 587 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } -#line 2734 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2739 "parser.cpp" break; - case 126: // expr_primitive: expr_call -#line 588 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 2740 "parser.cpp" - break; - - case 127: // expr_primitive: expr_method + case 126: // expr_binary: expr "*" expr #line 589 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 2746 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2745 "parser.cpp" break; - case 128: // expr_primitive: expr_add_array -#line 590 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } -#line 2752 "parser.cpp" - break; - - case 129: // expr_primitive: expr_reference + case 127: // expr_binary: expr "/" expr #line 591 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } -#line 2758 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2751 "parser.cpp" break; - case 130: // expr_primitive: expr_array -#line 592 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 2764 "parser.cpp" - break; - - case 131: // expr_primitive: expr_field + case 128: // expr_binary: expr "%" expr #line 593 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 2770 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2757 "parser.cpp" break; - case 132: // expr_primitive: expr_size -#line 594 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } -#line 2776 "parser.cpp" - break; - - case 133: // expr_primitive: expr_paren -#line 595 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } -#line 2782 "parser.cpp" - break; - - case 134: // expr_primitive: expr_thisthread -#line 596 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } -#line 2788 "parser.cpp" - break; - - case 135: // expr_primitive: expr_empty_array + case 129: // expr_primitive: expr_complement #line 597 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } -#line 2794 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } +#line 2763 "parser.cpp" break; - case 136: // expr_primitive: expr_undefined + case 130: // expr_primitive: expr_not #line 598 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } -#line 2800 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } +#line 2769 "parser.cpp" break; - case 137: // expr_primitive: expr_game + case 131: // expr_primitive: expr_call #line 599 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 2806 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 2775 "parser.cpp" break; - case 138: // expr_primitive: expr_self + case 132: // expr_primitive: expr_method #line 600 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 2812 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 2781 "parser.cpp" break; - case 139: // expr_primitive: expr_anim + case 133: // expr_primitive: expr_add_array #line 601 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 2818 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } +#line 2787 "parser.cpp" break; - case 140: // expr_primitive: expr_level + case 134: // expr_primitive: expr_reference #line 602 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 2824 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } +#line 2793 "parser.cpp" break; - case 141: // expr_primitive: expr_animation + case 135: // expr_primitive: expr_array #line 603 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } -#line 2830 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 2799 "parser.cpp" break; - case 142: // expr_primitive: expr_animtree + case 136: // expr_primitive: expr_field #line 604 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } -#line 2836 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 2805 "parser.cpp" break; - case 143: // expr_primitive: expr_identifier + case 137: // expr_primitive: expr_size #line 605 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 2842 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } +#line 2811 "parser.cpp" break; - case 144: // expr_primitive: expr_istring + case 138: // expr_primitive: expr_paren #line 606 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } -#line 2848 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } +#line 2817 "parser.cpp" break; - case 145: // expr_primitive: expr_string + case 139: // expr_primitive: expr_thisthread #line 607 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } -#line 2854 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } +#line 2823 "parser.cpp" break; - case 146: // expr_primitive: expr_color + case 140: // expr_primitive: expr_empty_array #line 608 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } -#line 2860 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } +#line 2829 "parser.cpp" break; - case 147: // expr_primitive: expr_vector + case 141: // expr_primitive: expr_undefined #line 609 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } -#line 2866 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } +#line 2835 "parser.cpp" break; - case 148: // expr_primitive: expr_float + case 142: // expr_primitive: expr_game #line 610 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } -#line 2872 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 2841 "parser.cpp" break; - case 149: // expr_primitive: expr_integer + case 143: // expr_primitive: expr_self #line 611 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } -#line 2878 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 2847 "parser.cpp" break; - case 150: // expr_primitive: expr_false + case 144: // expr_primitive: expr_anim #line 612 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } -#line 2884 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 2853 "parser.cpp" break; - case 151: // expr_primitive: expr_true + case 145: // expr_primitive: expr_level #line 613 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } -#line 2890 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 2859 "parser.cpp" break; - case 152: // expr_complement: "~" expr + case 146: // expr_primitive: expr_animation +#line 614 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } +#line 2865 "parser.cpp" + break; + + case 147: // expr_primitive: expr_animtree +#line 615 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } +#line 2871 "parser.cpp" + break; + + case 148: // expr_primitive: expr_identifier +#line 616 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 2877 "parser.cpp" + break; + + case 149: // expr_primitive: expr_istring +#line 617 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } +#line 2883 "parser.cpp" + break; + + case 150: // expr_primitive: expr_string #line 618 "parser.ypp" - { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2896 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } +#line 2889 "parser.cpp" break; - case 153: // expr_not: "!" expr + case 151: // expr_primitive: expr_color +#line 619 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } +#line 2895 "parser.cpp" + break; + + case 152: // expr_primitive: expr_vector +#line 620 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } +#line 2901 "parser.cpp" + break; + + case 153: // expr_primitive: expr_float +#line 621 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } +#line 2907 "parser.cpp" + break; + + case 154: // expr_primitive: expr_integer +#line 622 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } +#line 2913 "parser.cpp" + break; + + case 155: // expr_primitive: expr_false #line 623 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } +#line 2919 "parser.cpp" + break; + + case 156: // expr_primitive: expr_true +#line 624 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } +#line 2925 "parser.cpp" + break; + + case 157: // expr_complement: "~" expr +#line 629 "parser.ypp" + { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2931 "parser.cpp" + break; + + case 158: // expr_not: "!" expr +#line 634 "parser.ypp" { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2902 "parser.cpp" +#line 2937 "parser.cpp" break; - case 154: // expr_call: expr_function -#line 627 "parser.ypp" + case 159: // expr_call: expr_function +#line 638 "parser.ypp" { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2908 "parser.cpp" +#line 2943 "parser.cpp" break; - case 155: // expr_call: expr_pointer -#line 628 "parser.ypp" - { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2914 "parser.cpp" - break; - - case 156: // expr_method: expr_object expr_function -#line 631 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2920 "parser.cpp" - break; - - case 157: // expr_method: expr_object expr_pointer -#line 632 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2926 "parser.cpp" - break; - - case 158: // expr_function: expr_identifier "(" expr_arguments ")" -#line 637 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2932 "parser.cpp" - break; - - case 159: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" + case 160: // expr_call: expr_pointer #line 639 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2938 "parser.cpp" + { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } +#line 2949 "parser.cpp" break; - case 160: // expr_function: "thread" expr_identifier "(" expr_arguments ")" -#line 641 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2944 "parser.cpp" + case 161: // expr_method: expr_object expr_function +#line 642 "parser.ypp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 2955 "parser.cpp" break; - case 161: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" + case 162: // expr_method: expr_object expr_pointer #line 643 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2950 "parser.cpp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 2961 "parser.cpp" break; - case 162: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" -#line 645 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2956 "parser.cpp" + case 163: // expr_function: expr_identifier "(" expr_arguments ")" +#line 648 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 2967 "parser.cpp" break; - case 163: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 647 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2962 "parser.cpp" + case 164: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" +#line 650 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 2973 "parser.cpp" break; - case 164: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" + case 165: // expr_function: "thread" expr_identifier "(" expr_arguments ")" #line 652 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2968 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 2979 "parser.cpp" break; - case 165: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 166: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" #line 654 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2974 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 2985 "parser.cpp" break; - case 166: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 167: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" #line 656 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2980 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 2991 "parser.cpp" break; - case 167: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 168: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" #line 658 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::builtin); } -#line 2986 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 2997 "parser.cpp" break; - case 168: // expr_add_array: "[" expr_arguments_no_empty "]" + case 169: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" #line 663 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 3003 "parser.cpp" + break; + + case 170: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 665 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 3009 "parser.cpp" + break; + + case 171: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 667 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 3015 "parser.cpp" + break; + + case 172: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 669 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::builtin); } +#line 3021 "parser.cpp" + break; + + case 173: // expr_add_array: "[" expr_arguments_no_empty "]" +#line 674 "parser.ypp" { yylhs.value.as < ast::expr_add_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ())); } -#line 2992 "parser.cpp" +#line 3027 "parser.cpp" break; - case 169: // expr_parameters: expr_parameters "," expr_identifier -#line 668 "parser.ypp" - { yylhs.value.as < ast::expr_parameters::ptr > () = std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 2998 "parser.cpp" - break; - - case 170: // expr_parameters: expr_identifier -#line 670 "parser.ypp" - { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3004 "parser.cpp" - break; - - case 171: // expr_parameters: %empty -#line 672 "parser.ypp" - { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } -#line 3010 "parser.cpp" - break; - - case 172: // expr_arguments: expr_arguments_no_empty -#line 677 "parser.ypp" - { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } -#line 3016 "parser.cpp" - break; - - case 173: // expr_arguments: %empty + case 174: // expr_parameters: expr_parameters "," expr_identifier #line 679 "parser.ypp" + { yylhs.value.as < ast::expr_parameters::ptr > () = std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } +#line 3033 "parser.cpp" + break; + + case 175: // expr_parameters: expr_identifier +#line 681 "parser.ypp" + { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } +#line 3039 "parser.cpp" + break; + + case 176: // expr_parameters: %empty +#line 683 "parser.ypp" + { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } +#line 3045 "parser.cpp" + break; + + case 177: // expr_arguments: expr_arguments_no_empty +#line 688 "parser.ypp" + { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } +#line 3051 "parser.cpp" + break; + + case 178: // expr_arguments: %empty +#line 690 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); } -#line 3022 "parser.cpp" +#line 3057 "parser.cpp" break; - case 174: // expr_arguments_no_empty: expr_arguments "," expr -#line 684 "parser.ypp" + case 179: // expr_arguments_no_empty: expr_arguments "," expr +#line 695 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ()); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 3028 "parser.cpp" +#line 3063 "parser.cpp" break; - case 175: // expr_arguments_no_empty: expr -#line 686 "parser.ypp" + case 180: // expr_arguments_no_empty: expr +#line 697 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 3034 "parser.cpp" +#line 3069 "parser.cpp" break; - case 176: // expr_reference: "::" expr_identifier -#line 691 "parser.ypp" + case 181: // expr_reference: "::" expr_identifier +#line 702 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3040 "parser.cpp" +#line 3075 "parser.cpp" break; - case 177: // expr_reference: expr_path "::" expr_identifier -#line 693 "parser.ypp" + case 182: // expr_reference: expr_path "::" expr_identifier +#line 704 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_path::ptr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3046 "parser.cpp" +#line 3081 "parser.cpp" break; - case 178: // expr_array: expr_object "[" expr "]" -#line 698 "parser.ypp" + case 183: // expr_array: expr_object "[" expr "]" +#line 709 "parser.ypp" { yylhs.value.as < ast::expr_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3052 "parser.cpp" +#line 3087 "parser.cpp" break; - case 179: // expr_field: expr_object "." expr_identifier -#line 703 "parser.ypp" + case 184: // expr_field: expr_object "." expr_identifier +#line 714 "parser.ypp" { yylhs.value.as < ast::expr_field::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3058 "parser.cpp" +#line 3093 "parser.cpp" break; - case 180: // expr_size: expr_object ".size" -#line 708 "parser.ypp" - { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3064 "parser.cpp" - break; - - case 181: // expr_paren: "(" expr ")" -#line 713 "parser.ypp" - { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3070 "parser.cpp" - break; - - case 182: // expr_object: expr_call -#line 717 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 3076 "parser.cpp" - break; - - case 183: // expr_object: expr_method -#line 718 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 3082 "parser.cpp" - break; - - case 184: // expr_object: expr_array + case 185: // expr_size: expr_object ".size" #line 719 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 3088 "parser.cpp" + { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3099 "parser.cpp" break; - case 185: // expr_object: expr_field -#line 720 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 3094 "parser.cpp" - break; - - case 186: // expr_object: expr_game -#line 721 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 3100 "parser.cpp" - break; - - case 187: // expr_object: expr_self -#line 722 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 3106 "parser.cpp" - break; - - case 188: // expr_object: expr_anim -#line 723 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 3112 "parser.cpp" - break; - - case 189: // expr_object: expr_level + case 186: // expr_paren: "(" expr ")" #line 724 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 3118 "parser.cpp" + { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3105 "parser.cpp" break; - case 190: // expr_object: expr_identifier -#line 725 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 3124 "parser.cpp" + case 187: // expr_object: expr_call +#line 728 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 3111 "parser.cpp" break; - case 191: // expr_thisthread: "thisthread" + case 188: // expr_object: expr_method +#line 729 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 3117 "parser.cpp" + break; + + case 189: // expr_object: expr_array #line 730 "parser.ypp" - { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } -#line 3130 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 3123 "parser.cpp" break; - case 192: // expr_empty_array: "[" "]" + case 190: // expr_object: expr_field +#line 731 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 3129 "parser.cpp" + break; + + case 191: // expr_object: expr_game +#line 732 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 3135 "parser.cpp" + break; + + case 192: // expr_object: expr_self +#line 733 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 3141 "parser.cpp" + break; + + case 193: // expr_object: expr_anim +#line 734 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 3147 "parser.cpp" + break; + + case 194: // expr_object: expr_level #line 735 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 3153 "parser.cpp" + break; + + case 195: // expr_object: expr_identifier +#line 736 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 3159 "parser.cpp" + break; + + case 196: // expr_thisthread: "thisthread" +#line 741 "parser.ypp" + { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } +#line 3165 "parser.cpp" + break; + + case 197: // expr_empty_array: "[" "]" +#line 746 "parser.ypp" { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } -#line 3136 "parser.cpp" +#line 3171 "parser.cpp" break; - case 193: // expr_undefined: "undefined" -#line 740 "parser.ypp" + case 198: // expr_undefined: "undefined" +#line 751 "parser.ypp" { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } -#line 3142 "parser.cpp" +#line 3177 "parser.cpp" break; - case 194: // expr_game: "game" -#line 745 "parser.ypp" + case 199: // expr_game: "game" +#line 756 "parser.ypp" { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } -#line 3148 "parser.cpp" +#line 3183 "parser.cpp" break; - case 195: // expr_self: "self" -#line 750 "parser.ypp" + case 200: // expr_self: "self" +#line 761 "parser.ypp" { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } -#line 3154 "parser.cpp" +#line 3189 "parser.cpp" break; - case 196: // expr_anim: "anim" -#line 755 "parser.ypp" + case 201: // expr_anim: "anim" +#line 766 "parser.ypp" { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } -#line 3160 "parser.cpp" +#line 3195 "parser.cpp" break; - case 197: // expr_level: "level" -#line 760 "parser.ypp" + case 202: // expr_level: "level" +#line 771 "parser.ypp" { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } -#line 3166 "parser.cpp" +#line 3201 "parser.cpp" break; - case 198: // expr_animation: "%" "identifier" -#line 765 "parser.ypp" + case 203: // expr_animation: "%" "identifier" +#line 776 "parser.ypp" { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3172 "parser.cpp" +#line 3207 "parser.cpp" break; - case 199: // expr_animtree: "#animtree" -#line 770 "parser.ypp" + case 204: // expr_animtree: "#animtree" +#line 781 "parser.ypp" { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } -#line 3178 "parser.cpp" +#line 3213 "parser.cpp" break; - case 200: // expr_identifier: "identifier" -#line 775 "parser.ypp" + case 205: // expr_identifier: "identifier" +#line 786 "parser.ypp" { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3184 "parser.cpp" +#line 3219 "parser.cpp" break; - case 201: // expr_path: "path" -#line 780 "parser.ypp" + case 206: // expr_path: "path" +#line 791 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3190 "parser.cpp" +#line 3225 "parser.cpp" break; - case 202: // expr_path: expr_identifier -#line 782 "parser.ypp" + case 207: // expr_path: expr_identifier +#line 793 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < ast::expr_identifier::ptr > ()->value); } -#line 3196 "parser.cpp" +#line 3231 "parser.cpp" break; - case 203: // expr_istring: "localized string" -#line 787 "parser.ypp" + case 208: // expr_istring: "localized string" +#line 798 "parser.ypp" { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3202 "parser.cpp" +#line 3237 "parser.cpp" break; - case 204: // expr_string: "string literal" -#line 792 "parser.ypp" + case 209: // expr_string: "string literal" +#line 803 "parser.ypp" { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3208 "parser.cpp" +#line 3243 "parser.cpp" break; - case 205: // expr_color: "color" -#line 797 "parser.ypp" + case 210: // expr_color: "color" +#line 808 "parser.ypp" { yylhs.value.as < ast::expr_color::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3214 "parser.cpp" +#line 3249 "parser.cpp" break; - case 206: // expr_vector: "(" expr "," expr "," expr ")" -#line 802 "parser.ypp" + case 211: // expr_vector: "(" expr "," expr "," expr ")" +#line 813 "parser.ypp" { yylhs.value.as < ast::expr_vector::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3220 "parser.cpp" +#line 3255 "parser.cpp" break; - case 207: // expr_float: "-" "float" -#line 807 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3226 "parser.cpp" - break; - - case 208: // expr_float: "float" -#line 809 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3232 "parser.cpp" - break; - - case 209: // expr_integer: "-" "int" -#line 814 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3238 "parser.cpp" - break; - - case 210: // expr_integer: "int" -#line 816 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3244 "parser.cpp" - break; - - case 211: // expr_integer: "octal int" + case 212: // expr_float: "-" "float" #line 818 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3250 "parser.cpp" + { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 3261 "parser.cpp" break; - case 212: // expr_integer: "binary int" + case 213: // expr_float: "float" #line 820 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3256 "parser.cpp" + { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3267 "parser.cpp" break; - case 213: // expr_integer: "hexadecimal int" -#line 822 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3262 "parser.cpp" + case 214: // expr_integer: "-" "int" +#line 825 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 3273 "parser.cpp" break; - case 214: // expr_false: "false" + case 215: // expr_integer: "int" #line 827 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3279 "parser.cpp" + break; + + case 216: // expr_integer: "octal int" +#line 829 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3285 "parser.cpp" + break; + + case 217: // expr_integer: "binary int" +#line 831 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3291 "parser.cpp" + break; + + case 218: // expr_integer: "hexadecimal int" +#line 833 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3297 "parser.cpp" + break; + + case 219: // expr_false: "false" +#line 838 "parser.ypp" { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } -#line 3268 "parser.cpp" +#line 3303 "parser.cpp" break; - case 215: // expr_true: "true" -#line 832 "parser.ypp" + case 220: // expr_true: "true" +#line 843 "parser.ypp" { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } -#line 3274 "parser.cpp" +#line 3309 "parser.cpp" break; -#line 3278 "parser.cpp" +#line 3313 "parser.cpp" default: break; @@ -3458,35 +3493,36 @@ namespace xsk { namespace gsc { namespace s1 { { static const char *const yy_sname[] = { - "end of file", "error", "invalid token", "#inline", "#include", - "#using_animtree", "#animtree", "endon", "notify", "wait", "waittill", - "waittillmatch", "waittillframeend", "waitframe", "if", "else", "do", - "while", "for", "foreach", "in", "switch", "case", "default", "break", - "continue", "return", "breakpoint", "prof_begin", "prof_end", "thread", - "childthread", "thisthread", "call", "true", "false", "undefined", - ".size", "game", "self", "anim", "level", "(", ")", "{", "}", "[", "]", - ",", ".", "::", ":", ";", "?", "++", "--", "<<", ">>", "||", "&&", "==", - "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", - "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", "%", - "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", "inline", "include", - "declaration", "decl_usingtree", "decl_constant", "decl_thread", "stmt", - "stmt_block", "stmt_list", "stmt_expr", "stmt_call", "stmt_assign", - "stmt_endon", "stmt_notify", "stmt_wait", "stmt_waittill", - "stmt_waittillmatch", "stmt_waittillframeend", "stmt_waitframe", - "stmt_if", "stmt_ifelse", "stmt_while", "stmt_dowhile", "stmt_for", - "stmt_foreach", "stmt_switch", "stmt_case", "stmt_default", "stmt_break", - "stmt_continue", "stmt_return", "stmt_breakpoint", "stmt_prof_begin", - "stmt_prof_end", "expr", "expr_or_empty", "expr_assign", - "expr_increment", "expr_decrement", "expr_ternary", "expr_binary", - "expr_primitive", "expr_complement", "expr_not", "expr_call", - "expr_method", "expr_function", "expr_pointer", "expr_add_array", - "expr_parameters", "expr_arguments", "expr_arguments_no_empty", - "expr_reference", "expr_array", "expr_field", "expr_size", "expr_paren", - "expr_object", "expr_thisthread", "expr_empty_array", "expr_undefined", - "expr_game", "expr_self", "expr_anim", "expr_level", "expr_animation", + "end of file", "error", "invalid token", "/#", "#/", "#inline", + "#include", "#using_animtree", "#animtree", "endon", "notify", "wait", + "waittill", "waittillmatch", "waittillframeend", "waitframe", "if", + "else", "do", "while", "for", "foreach", "in", "switch", "case", + "default", "break", "continue", "return", "breakpoint", "prof_begin", + "prof_end", "thread", "childthread", "thisthread", "call", "true", + "false", "undefined", ".size", "game", "self", "anim", "level", "(", ")", + "{", "}", "[", "]", ",", ".", "::", ":", ";", "?", "++", "--", "<<", + ">>", "||", "&&", "==", "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", + "-=", "*=", "/=", "%=", "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", + "+", "-", "*", "/", "%", "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", + "inline", "include", "declaration", "decl_usingtree", "decl_constant", + "decl_thread", "stmt", "stmt_dev", "stmt_block", "stmt_list", + "stmt_expr", "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", + "stmt_wait", "stmt_waittill", "stmt_waittillmatch", + "stmt_waittillframeend", "stmt_waitframe", "stmt_if", "stmt_ifelse", + "stmt_while", "stmt_dowhile", "stmt_for", "stmt_foreach", "stmt_switch", + "stmt_case", "stmt_default", "stmt_break", "stmt_continue", + "stmt_return", "stmt_breakpoint", "stmt_prof_begin", "stmt_prof_end", + "expr", "expr_or_empty", "expr_assign", "expr_increment", + "expr_decrement", "expr_ternary", "expr_binary", "expr_primitive", + "expr_complement", "expr_not", "expr_call", "expr_method", + "expr_function", "expr_pointer", "expr_add_array", "expr_parameters", + "expr_arguments", "expr_arguments_no_empty", "expr_reference", + "expr_array", "expr_field", "expr_size", "expr_paren", "expr_object", + "expr_thisthread", "expr_empty_array", "expr_undefined", "expr_game", + "expr_self", "expr_anim", "expr_level", "expr_animation", "expr_animtree", "expr_identifier", "expr_path", "expr_istring", "expr_string", "expr_color", "expr_vector", "expr_float", "expr_integer", "expr_false", "expr_true", YY_NULLPTR @@ -3754,661 +3790,704 @@ namespace xsk { namespace gsc { namespace s1 { } - const short parser::yypact_ninf_ = -259; + const short parser::yypact_ninf_ = -269; - const short parser::yytable_ninf_ = -203; + const short parser::yytable_ninf_ = -208; const short parser::yypact_[] = { - 15, -53, -53, -14, -259, 44, 15, -259, -259, -259, - -259, -259, -259, -25, -259, -259, 20, 28, -43, -259, - -259, -259, -259, -33, 745, -259, -259, -259, 38, -7, - -259, -259, -17, 1, -259, 41, -259, -259, -259, -259, - -259, -259, -259, 745, 18, -33, 745, 745, -31, 5, - -259, -259, -259, -259, -259, -259, -259, 1793, -259, -259, - -259, -259, -259, 111, 400, -259, -259, -259, -259, 584, - 768, -259, -259, 773, -259, -259, -259, 1014, 1022, 1036, - 1046, -259, -259, 85, 50, -259, -259, -259, -259, -259, - -259, -259, -259, 42, 58, -33, 71, 86, 79, 84, - 90, 96, 94, 1079, 18, -259, 1876, 88, 115, -259, - -259, -259, -259, -259, -259, -259, 745, 745, 745, 745, - 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, - 745, 745, 745, 745, 745, -259, 812, -33, -259, -259, - 116, 133, 745, -33, -259, 900, -259, -259, 745, 745, - -33, 745, 745, -33, 745, -259, 745, 1523, 745, -259, - 1758, 175, 175, 807, 1907, 1989, 1989, 82, 82, 82, - 82, 1917, 1958, 1948, -59, -59, -259, -259, -259, 1563, - -259, -33, -6, -259, 134, 745, 132, -21, 145, 1002, - 148, 149, 152, 167, 3, 162, 169, 172, 678, 177, - 189, 190, -259, 187, 702, 702, -259, -259, 951, -259, - -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, - -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, - -259, -259, -259, 183, 184, 192, 193, 195, -259, -259, - 573, -259, -259, -259, -259, -28, 1603, 35, 197, 1643, - 77, 199, 1683, 1722, 153, 1876, 745, -259, 134, -259, - 745, 1828, -259, 200, -259, 745, 231, 745, 36, -33, - 745, 156, 201, 202, -259, -259, -259, -259, 1863, -259, - 745, 745, 745, -259, -259, 480, 480, -259, -259, -259, - -259, -259, -259, -259, 212, 213, 221, 223, -259, -259, - 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, - 745, 219, -259, 745, 220, -259, 745, 225, 745, 228, - 1876, 78, -259, 224, 1245, 233, 1279, 226, -259, -259, - -259, 520, -8, 1313, -259, -259, -259, 104, 113, 1523, - 745, 745, 745, 745, 1876, 1876, 1876, 1876, 1876, 1876, - 1876, 1876, 1876, 1876, 1876, 235, 126, 242, 127, 245, - 1347, 745, -259, -259, 1002, 745, 1002, 745, 745, -33, - 58, 236, 237, 1381, 1123, 1167, 1211, 745, -259, 745, - -259, 745, -259, 154, 258, 1415, -259, 1876, 238, 1449, - 274, -259, -259, -259, 241, 244, 745, 246, 745, 248, - 745, 158, 164, 180, -259, 1002, 249, 36, 1002, 745, - -259, -259, 254, -259, 256, -259, 260, -259, -259, -259, - -259, -259, 261, -259, 1483, 253, 276, 277, 1002, 1002, - -259, -259, -259, -259, -259 + 15, -269, -269, 10, 10, -32, -269, 26, 15, -269, + -269, -269, -269, -269, -269, -20, -269, -269, -24, -21, + -49, -269, -269, -269, -269, -30, 858, -269, -269, -269, + 25, -18, -269, -269, -35, -25, -269, 28, -269, -269, + -269, -269, -269, -269, -269, 858, 724, -30, 858, 858, + 55, -17, -269, -269, -269, -269, -269, -269, -269, 2001, + -269, -269, -269, -269, -269, 198, 435, -269, -269, -269, + -269, 589, 690, -269, -269, 814, -269, -269, -269, 819, + 881, 886, 1084, -269, -269, 552, 67, -269, -269, -269, + -269, -269, -269, -269, -269, 80, 34, -30, 75, 107, + 105, 112, 120, 115, 121, 1287, 724, -269, 2084, 118, + 128, -269, -269, -269, -269, -269, -269, -269, 858, 858, + 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, + 858, 858, 858, 858, 858, 858, 858, -269, 925, -30, + -269, -269, 135, 132, 858, -30, -269, 1021, -269, -269, + 858, 858, -30, 858, 858, -30, 858, -269, 858, 1731, + 858, -269, 1966, 117, 117, 920, 2115, 2166, 2166, 309, + 309, 309, 309, 2125, 632, 2156, 54, 54, -269, -269, + -269, 1771, -269, -30, 13, -269, 141, 1072, 858, 136, + 12, 145, 1225, 147, 150, 153, 155, 33, 156, 152, + 157, 791, 161, 166, 173, -269, 177, 130, 130, -269, + -269, -269, 1123, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, 172, 174, 175, + 178, 180, -269, -269, 36, -269, -269, -269, -269, 7, + 1811, 22, 183, 1851, 29, 192, 1891, 1930, 193, 2084, + 858, -269, 141, -269, 858, -269, 1174, 2036, -269, 200, + -269, 858, 228, 858, -4, -30, 858, 158, 199, 202, + -269, -269, -269, -269, 2071, -269, 858, 858, 858, -269, + -269, 69, 69, -269, -269, -269, -269, -269, -269, -269, + 207, 212, 213, 214, -269, -269, 858, 858, 858, 858, + 858, 858, 858, 858, 858, 858, 858, 210, -269, 858, + 211, -269, 858, 215, 858, 217, 2084, 38, -269, -269, + 209, 1453, 221, 1487, 222, -269, -269, -269, 1251, -7, + 1521, -269, -269, -269, 44, 45, 1731, 858, 858, 858, + 858, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, + 2084, 2084, 223, 46, 225, 53, 227, 1555, 858, -269, + -269, 1225, 858, 1225, 858, 858, -30, 34, 224, 232, + 1589, 1331, 1375, 1419, 858, -269, 858, -269, 858, -269, + 77, 256, 1623, -269, 2084, 235, 1657, 255, -269, -269, + -269, 236, 239, 858, 240, 858, 241, 858, 87, 88, + 98, -269, 1225, 246, -4, 1225, 858, -269, -269, 234, + -269, 254, -269, 257, -269, -269, -269, -269, -269, 258, + -269, 1691, 247, 250, 253, 1225, 1225, -269, -269, -269, + -269, -269 }; const unsigned char parser::yydefact_[] = { - 3, 0, 0, 0, 200, 0, 2, 7, 8, 9, - 12, 13, 14, 0, 201, 202, 0, 0, 0, 1, - 4, 5, 6, 171, 0, 10, 11, 204, 0, 0, - 170, 199, 0, 0, 191, 0, 215, 214, 193, 194, - 195, 196, 197, 0, 173, 0, 0, 0, 0, 0, - 203, 205, 208, 210, 211, 212, 213, 0, 85, 86, - 87, 124, 125, 126, 127, 154, 155, 128, 129, 130, - 131, 132, 133, 0, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 0, 144, 145, 146, 147, 148, - 149, 150, 151, 0, 0, 0, 0, 202, 0, 0, - 202, 0, 0, 0, 173, 192, 175, 0, 172, 176, - 153, 152, 207, 209, 198, 16, 0, 0, 0, 0, + 3, 12, 13, 0, 0, 0, 205, 0, 2, 7, + 8, 9, 14, 15, 16, 0, 206, 207, 0, 0, + 0, 1, 4, 5, 6, 176, 0, 10, 11, 209, + 0, 0, 175, 204, 0, 0, 196, 0, 220, 219, + 198, 199, 200, 201, 202, 0, 178, 0, 0, 0, + 0, 0, 208, 210, 213, 215, 216, 217, 218, 0, + 90, 91, 92, 129, 130, 131, 132, 159, 160, 133, + 134, 135, 136, 137, 138, 0, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 0, 149, 150, 151, + 152, 153, 154, 155, 156, 0, 0, 0, 0, 207, + 0, 0, 207, 0, 0, 0, 178, 197, 180, 0, + 177, 181, 158, 157, 212, 214, 203, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 180, 0, 0, 156, 157, - 202, 0, 173, 0, 15, 0, 17, 169, 0, 173, - 0, 0, 173, 0, 0, 181, 0, 175, 0, 168, - 0, 117, 118, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 119, 120, 121, 122, 123, 0, - 179, 0, 0, 172, 177, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 185, 0, 0, + 161, 162, 207, 0, 178, 0, 17, 0, 19, 174, + 0, 178, 0, 0, 178, 0, 0, 186, 0, 180, + 0, 173, 0, 122, 123, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 124, 125, 126, 127, + 128, 0, 184, 0, 0, 177, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 44, 0, 0, 0, 46, 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, 42, 0, 0, 0, 182, 183, 184, 185, - 0, 186, 187, 188, 189, 190, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 174, 0, 178, 0, 158, - 173, 0, 64, 0, 65, 0, 0, 0, 50, 0, - 0, 0, 0, 0, 77, 78, 79, 81, 0, 82, - 173, 173, 0, 182, 183, 101, 103, 43, 45, 53, - 54, 55, 51, 52, 0, 0, 0, 0, 102, 104, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 160, 173, 0, 162, 173, 0, 0, 0, - 105, 0, 59, 0, 0, 0, 0, 0, 47, 48, - 49, 0, 0, 0, 76, 75, 80, 0, 0, 0, - 0, 0, 0, 0, 90, 96, 97, 98, 99, 100, - 91, 92, 93, 95, 94, 0, 0, 0, 0, 0, - 0, 173, 159, 66, 0, 0, 0, 89, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 173, 161, 173, - 163, 173, 206, 0, 67, 0, 69, 88, 0, 0, - 0, 74, 83, 84, 0, 0, 173, 0, 173, 0, - 173, 0, 0, 0, 164, 0, 0, 50, 0, 0, - 56, 58, 172, 61, 172, 63, 172, 165, 166, 167, - 68, 70, 0, 72, 0, 0, 0, 0, 0, 0, - 57, 60, 62, 71, 73 + 0, 0, 0, 0, 0, 49, 0, 0, 0, 51, + 20, 21, 0, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 0, 0, 0, + 187, 188, 189, 190, 0, 191, 192, 193, 194, 195, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, + 0, 183, 0, 163, 178, 47, 0, 0, 69, 0, + 70, 0, 0, 0, 55, 0, 0, 0, 0, 0, + 82, 83, 84, 86, 0, 87, 178, 178, 0, 187, + 188, 106, 108, 48, 50, 58, 59, 60, 56, 57, + 0, 0, 0, 0, 107, 109, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 165, 178, + 0, 167, 178, 0, 0, 0, 110, 0, 46, 64, + 0, 0, 0, 0, 0, 52, 53, 54, 0, 0, + 0, 81, 80, 85, 0, 0, 0, 0, 0, 0, + 0, 95, 101, 102, 103, 104, 105, 96, 97, 98, + 100, 99, 0, 0, 0, 0, 0, 0, 178, 164, + 71, 0, 0, 0, 94, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 178, 166, 178, 168, 178, 211, + 0, 72, 0, 74, 93, 0, 0, 0, 79, 88, + 89, 0, 0, 178, 0, 178, 0, 178, 0, 0, + 0, 169, 0, 0, 55, 0, 0, 61, 63, 177, + 66, 177, 68, 177, 170, 171, 172, 73, 75, 0, + 77, 0, 0, 0, 0, 0, 0, 62, 65, 67, + 76, 78 }; const short parser::yypgoto_[] = { - -259, -259, -259, 300, 320, 324, -259, -259, -259, -178, - -89, -259, -75, -259, -259, -259, -259, -259, -259, -259, - -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, - -259, -259, -259, -259, -259, -259, -259, 191, -259, -258, - -253, -252, -259, -259, -259, -259, -259, -26, -12, -69, - -60, -259, -259, 257, -41, -259, 14, 75, -259, -259, - 157, -259, -259, -259, 247, 259, 273, 331, -259, -259, - 0, 6, -259, -9, -259, -259, -259, 139, -259, -259 + -269, -269, -269, 273, 319, 321, -269, -269, -269, 163, + -269, -94, 143, -83, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, 190, -269, + -268, -260, -258, -269, -269, -269, -269, -269, -130, -26, + -70, -68, -269, -269, 325, -45, -269, -12, 219, -269, + -269, 245, -269, -269, -269, 252, 300, 335, 369, -269, + -269, 0, 6, -269, -9, -269, -269, -269, 137, -269, + -269 }; const short parser::yydefgoto_[] = { - 0, 5, 6, 7, 8, 9, 10, 11, 12, 206, - 207, 208, 327, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 106, 388, 233, - 234, 235, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 29, 107, 183, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92 + 0, 7, 8, 9, 10, 11, 12, 13, 14, 209, + 210, 211, 212, 334, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 108, 395, + 237, 238, 239, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 31, 109, 185, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94 }; const short parser::yytable_[] = { - 13, 15, 15, 108, 138, 146, 13, 16, 17, 28, - 328, 266, 368, 139, 142, 329, 330, 23, 1, 2, - 3, 263, -202, 30, 31, 132, 133, 134, 18, 96, - 288, 264, 97, 100, 14, 4, 94, 259, 98, 101, - 369, 95, 158, 24, 19, 109, 27, 99, 32, 33, - 34, 35, 36, 37, 38, 4, 39, 40, 41, 42, - 43, 112, 113, 108, 104, 105, 32, 33, 45, 35, - 14, 4, 25, 140, 39, 40, 41, 42, 312, 141, - 26, 93, 203, 158, 46, 47, 271, 102, 14, 4, - 204, 205, 27, 114, 144, 147, 53, 54, 55, 56, - 143, 48, 145, 4, 49, 14, 4, 27, 50, 51, - 52, 53, 54, 55, 56, -190, -190, 148, -190, 236, - 315, 362, -190, 14, 4, 158, 158, 142, 149, 150, - 151, -190, 152, 237, -190, -202, 158, 180, 117, 118, - 154, -182, -182, 184, -182, 245, 153, 371, -182, 328, - 248, 141, 158, 251, 329, 330, 372, -182, 142, 238, - -182, 158, 159, 236, 130, 131, 132, 133, 134, 378, - 380, 138, -190, -190, 158, 158, 260, 237, 283, 283, - 139, 258, 236, 181, 262, 272, 384, 265, 386, 245, - 267, 268, 284, 284, 269, 141, 237, 404, -182, -182, - 319, 417, 158, 238, 245, 245, 158, 418, 245, 270, - 141, 141, 158, 274, 141, 57, 138, 138, 238, 238, - 239, 275, 238, 419, 276, 139, 139, 420, 158, 279, - 423, 280, 281, 282, 103, 289, 290, 110, 111, 313, - 140, 316, 283, 323, 291, 292, 141, 293, 325, 113, - 433, 434, 334, 335, 340, 341, 284, 130, 131, 132, - 133, 134, 138, 342, 239, 343, 355, 357, 245, 332, - 361, 139, 359, 405, 141, 365, 363, 377, 367, 239, - 239, 391, 238, 239, 379, 140, 140, 381, 392, 393, - 407, 141, 141, 410, 409, 157, 411, 425, 413, 426, - 415, 421, 240, 427, 428, 430, 20, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 21, 179, 431, 432, - 22, 140, 422, 273, 0, 0, 0, 141, 236, 246, - 236, 0, 249, 239, 0, 252, 240, 253, 0, 255, - 0, 0, 237, 0, 237, 412, 0, 414, 0, 416, - 0, 285, 286, 0, 245, 240, 245, 0, 0, 390, - 141, 0, 141, 0, 0, 0, 261, 0, 238, 236, - 238, 283, 236, 0, 0, 0, 0, 0, 0, 278, - 0, 0, 241, 237, 0, 284, 237, 0, 0, 182, - 0, 0, 236, 236, 242, 245, 247, 245, 245, 250, - 0, 141, 0, 141, 141, 0, 237, 237, 243, 238, - 0, 238, 238, 0, 0, 331, 0, 0, 245, 245, - -183, -183, 0, -183, 141, 141, 241, -183, 0, 239, - 0, 239, 238, 238, 0, 0, -183, 320, 242, -183, - 0, 241, 241, 0, 0, 241, 324, 0, 326, 0, - 0, 333, 243, 242, 242, 0, 0, 242, 0, 0, - 0, 0, 0, 339, 0, 0, 244, 243, 243, 0, - 239, 243, 239, 239, 0, 0, 0, -183, -183, 0, - 0, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 0, 239, 239, 0, 0, 0, 0, 360, - 32, 33, 0, 35, 0, 241, 0, 321, 0, 0, - 244, 240, 0, 240, 0, 0, 136, 242, 0, 137, - 0, 373, 374, 375, 376, 244, 244, 337, 338, 244, - 0, 243, 0, 0, 0, 0, 0, 0, 0, 0, - 32, 33, 0, 35, 0, 0, 385, 0, 387, 389, - 0, 0, 240, 0, 331, 240, 136, 14, 4, 137, - 356, 0, 0, 358, 298, 299, 0, 0, 0, 0, - 294, 295, 0, 296, 297, 240, 240, 0, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 244, - 424, 0, 0, 32, 33, 0, 35, 14, 4, 0, - 0, 241, 0, 241, -184, -184, 0, -184, 383, 136, - 0, -184, 137, 242, 0, 242, 0, 298, 299, 0, - -184, 0, 0, -184, 401, 0, 402, 243, 403, 243, - 0, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 241, 0, 241, 241, 0, 0, 0, 0, - 14, 4, 0, 0, 242, 0, 242, 242, 0, 0, - 0, -184, -184, 0, 0, 241, 241, 0, 243, 0, - 243, 243, 0, 0, 31, 0, 0, 242, 242, 0, - 0, 0, 0, 0, 0, 244, 0, 244, 0, 0, - 0, 243, 243, 0, 0, 0, 0, 0, 32, 33, - 34, 35, 36, 37, 38, 0, 39, 40, 41, 42, - 43, 0, 0, 0, 44, 0, 0, 0, 45, 0, - 277, 0, 32, 33, 0, 35, 244, 0, 244, 244, - 39, 40, 41, 42, 46, 47, 0, 0, 203, 0, - 0, 31, 0, 0, 0, 0, 0, 0, 0, 244, - 244, 48, 0, 0, 49, 14, 4, 27, 50, 51, - 52, 53, 54, 55, 56, 32, 33, 34, 35, 36, - 37, 38, 0, 39, 40, 41, 42, 43, 0, 14, - 4, 44, 0, 0, 0, 45, 0, 0, -185, -185, - 0, -185, 0, 32, 33, -185, 35, 0, 0, 0, - 135, 46, 47, 0, -185, 0, 0, -185, 31, 136, - 0, 0, 137, 0, 0, 0, 0, 0, 48, 0, - 0, 49, 14, 4, 27, 50, 51, 52, 53, 54, - 55, 56, 32, 33, 34, 35, 36, 37, 38, 0, - 39, 40, 41, 42, 43, -185, -185, 0, 104, 0, - 14, 4, 45, 117, 118, 0, 120, 121, 122, 123, - 124, 125, 126, 0, 0, 0, 0, 0, 46, 47, - 0, 0, 0, 0, 0, 0, 127, 128, 129, 130, - 131, 132, 133, 134, 0, 48, 0, 0, 49, 14, - 4, 27, 50, 51, 52, 53, 54, 55, 56, 185, - 0, 0, 186, 187, 188, 0, 189, 190, 191, 192, - 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 32, 33, 0, 35, 0, 0, 0, 0, 39, 40, - 41, 42, 0, 0, 145, 202, 203, 0, 0, 0, - 0, 0, 0, 0, 204, 205, 0, 0, 0, 0, - 185, 0, 0, 186, 187, 188, 0, 189, 190, 191, - 192, 0, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 32, 33, 0, 35, 0, 0, 14, 4, 39, - 40, 41, 42, 0, 0, 145, 287, 203, 0, 0, - 0, 0, 0, 0, 0, 204, 205, 0, 0, 0, - 0, 185, 0, 0, 186, 187, 188, 0, 189, 190, - 191, 192, 0, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 32, 33, 0, 35, 0, 0, 14, 4, - 39, 40, 41, 42, -186, -186, 145, -186, 203, 0, - 0, -186, -187, -187, 0, -187, 204, 205, 0, -187, - -186, 0, 0, -186, 0, 0, -188, -188, -187, -188, - 0, -187, 0, -188, 0, 0, -189, -189, 0, -189, - 0, 0, -188, -189, 0, -188, 0, 0, 0, 14, - 4, 0, -189, 0, 0, -189, 0, 0, 0, 0, - 0, -186, -186, 0, 0, 0, 0, 0, 0, -187, - -187, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 155, -188, -188, 0, 0, 156, 0, 0, - 0, 0, 116, -189, -189, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 395, 0, 0, 0, - 0, 396, 0, 0, 0, 0, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 15, 110, 148, 17, 17, 140, 335, 141, 15, 18, + 19, 30, 20, 98, 336, 375, 337, 240, 1, 2, + 3, 4, 5, 101, 25, 32, 21, 96, 34, 35, + 27, 37, 97, 28, 99, 102, 41, 42, 43, 44, + 100, 103, 29, 376, 206, 300, 301, 111, 302, 303, + 26, 144, 207, 208, 16, 6, 269, 240, 263, -207, + 6, 110, 240, 160, 16, 6, 270, 318, 34, 35, + 95, 37, 160, 116, 321, 142, 104, 289, 289, 160, + 147, 143, 240, 369, 138, 16, 6, 139, 160, 378, + 379, 385, 304, 305, 160, 160, 160, 149, 387, 16, + 6, 34, 35, 160, 37, 6, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 138, 277, 145, + 139, 241, 411, 150, 29, 16, 6, 160, 55, 56, + 57, 58, 424, 425, 146, 242, 240, 160, 160, 182, + 134, 135, 136, 426, 289, 186, 335, 249, 160, 114, + 115, 151, 252, 143, 336, 255, 337, 152, 16, 6, + 153, 241, 34, 35, 154, 37, 241, 155, 160, 156, + 41, 42, 43, 44, 140, 242, 141, 161, 206, 144, + 242, 290, 290, 262, 183, 264, 241, 249, 278, 271, + 268, 273, 249, 143, 274, 242, 242, 275, 143, 276, + 242, 132, 133, 134, 135, 136, 281, 249, 249, 280, + 286, 282, 249, 143, 143, 285, 59, 287, 143, 16, + 6, 140, 140, 141, 141, 288, 295, 319, 296, 297, + -187, -187, 298, -187, 299, 105, 322, -187, 112, 113, + 241, 240, 325, 240, 142, 330, -187, 332, 290, -187, + 143, 347, 341, 115, 242, 342, 348, 349, 350, 362, + 364, 368, 242, 370, 366, 372, 249, 384, 140, 386, + 141, 388, 143, 412, 249, 339, 374, 416, 399, 432, + 143, 22, 240, 398, 289, 240, 400, -187, -187, 414, + 417, 142, 142, 418, 420, 422, 159, 143, 143, 433, + 428, 437, 434, 435, 438, 240, 240, 439, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 23, 181, 24, + 266, 429, 0, 0, 279, 0, 0, 0, 142, 0, + 250, 0, 0, 253, 143, 241, 256, 241, 257, 0, + 259, 0, 0, 0, 0, 272, 0, 0, 419, 242, + 421, 242, 423, 0, 0, 0, 243, 119, 120, 0, + 0, 249, 0, 249, 0, 294, 397, 143, 267, 143, + 0, 0, 0, 0, 0, 0, 241, 0, 290, 241, + 0, 284, 244, 132, 133, 134, 135, 136, 0, 245, + 242, 0, 242, 242, 0, 0, 243, 0, 0, 241, + 241, 243, 249, 0, 249, 249, 0, 0, 143, 0, + 143, 143, 0, 242, 242, 0, 243, 243, 0, 294, + 0, 243, 244, 0, 0, 249, 249, 244, 0, 245, + 0, 143, 143, 0, 245, 0, 0, 246, 0, 0, + 326, 0, 291, 292, 0, 0, 0, 244, 0, 245, + 245, 331, 0, 333, 245, 0, 340, -188, -188, 184, + -188, 0, 0, 0, -188, 0, 251, 0, 346, 254, + 0, 0, 247, -188, 0, 243, -188, 246, 0, 0, + 0, 0, 246, 243, 0, 0, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 246, 246, 0, + 0, 244, 246, 0, 367, 0, 248, 0, 245, 338, + 0, 0, 247, 0, -188, -188, 245, 247, 0, 0, + 0, 0, 0, 0, 391, 0, 393, 380, 381, 382, + 383, 0, 247, 247, 0, 0, 0, 247, 0, 0, + 0, 0, 0, 0, 0, 0, 248, 0, 0, 0, + 0, 248, 392, 0, 394, 396, 246, 0, 0, 0, + 0, 0, 0, 0, 246, 427, 248, 248, 430, 0, + 0, 248, 0, 0, -195, -195, 0, -195, 0, 327, + 243, -195, 243, 0, 0, 0, 144, 0, 440, 441, + -195, 247, 0, -195, -207, 0, 431, 0, 0, 247, + 0, 344, 345, 0, 0, 0, 244, 0, 244, 0, + 0, -189, -189, 245, -189, 245, 0, 0, -189, 0, + 0, 243, 0, 243, 243, 248, 0, -189, 0, 0, + -189, -195, -195, 248, 363, 0, 0, 365, 0, 0, + 0, 0, 0, 0, 243, 243, 0, 244, 0, 338, + 244, 0, 0, 0, 245, 0, 245, 245, 0, 0, + 0, 246, 0, 246, 0, 0, 0, 0, -189, -189, + 244, 244, 0, 0, 0, 0, 0, 245, 245, 0, + 119, 120, 0, 390, 123, 124, 125, 126, 127, 128, + 0, 0, 0, 0, 0, 0, 247, 0, 247, 408, + 0, 409, 246, 410, 246, 246, 132, 133, 134, 135, + 136, 0, -190, -190, 0, -190, 0, 0, 0, -190, + 0, 0, 33, 0, 0, 246, 246, 0, -190, 0, + 248, -190, 248, 0, 0, 0, 0, 247, 0, 247, + 247, 0, 0, 0, 0, 0, 34, 35, 36, 37, + 38, 39, 40, 0, 41, 42, 43, 44, 45, 0, + 247, 247, 106, 107, 0, 0, 47, 0, 0, -190, + -190, 248, 0, 248, 248, 0, 0, 0, 0, 0, + 0, 0, 48, 49, 0, 0, 0, 0, 0, 33, + 0, 0, 0, 0, 248, 248, 0, 0, 0, 50, + 0, 0, 51, 16, 6, 29, 52, 53, 54, 55, + 56, 57, 58, 34, 35, 36, 37, 38, 39, 40, + 0, 41, 42, 43, 44, 45, 0, 0, 0, 46, + 0, 0, 0, 47, 0, 283, 34, 35, 0, 37, + 0, -191, -191, 137, -191, 0, 0, 0, -191, 48, + 49, 0, 138, 0, 0, 139, 33, -191, 0, 0, + -191, 0, 0, 0, 0, 0, 50, 0, 0, 51, + 16, 6, 29, 52, 53, 54, 55, 56, 57, 58, + 34, 35, 36, 37, 38, 39, 40, 0, 41, 42, + 43, 44, 45, 16, 6, 0, 46, 0, -191, -191, + 47, 0, 0, -192, -192, 0, -192, 0, -193, -193, + -192, -193, 0, 0, 0, -193, 48, 49, 0, -192, + 0, 0, -192, 33, -193, 0, 0, -193, 0, 0, + 0, 0, 0, 50, 0, 0, 51, 16, 6, 29, + 52, 53, 54, 55, 56, 57, 58, 34, 35, 36, + 37, 38, 39, 40, 0, 41, 42, 43, 44, 45, + -192, -192, 0, 106, 0, -193, -193, 47, 119, 120, + 0, 122, 123, 124, 125, 126, 127, 128, 0, 0, + 0, 0, 0, 48, 49, 0, 0, 0, 0, 0, + 0, 129, 130, 131, 132, 133, 134, 135, 136, 0, + 50, 0, 0, 51, 16, 6, 29, 52, 53, 54, + 55, 56, 57, 58, 187, 0, 0, 0, 0, 0, + 0, 0, 188, 0, 0, 189, 190, 191, 0, 192, + 193, 194, 195, 0, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 34, 35, 0, 37, 0, 0, 0, + 0, 41, 42, 43, 44, 0, 0, 147, 205, 206, + 0, 0, 0, 0, 0, 187, 265, 207, 208, 0, + 0, 0, 0, 188, 0, 0, 189, 190, 191, 0, + 192, 193, 194, 195, 0, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 34, 35, 0, 37, 0, 0, + 16, 6, 41, 42, 43, 44, -194, -194, 147, -194, + 206, 0, 0, -194, 0, 0, 187, 0, 207, 208, + 0, 0, -194, 0, 188, -194, 0, 189, 190, 191, + 0, 192, 193, 194, 195, 0, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 34, 35, 0, 37, 0, + 0, 16, 6, 41, 42, 43, 44, 0, 0, 147, + 293, 206, 0, -194, -194, 0, 0, 187, 328, 207, + 208, 0, 0, 0, 0, 188, 0, 0, 189, 190, + 191, 0, 192, 193, 194, 195, 0, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 34, 35, 0, 37, + 0, 0, 16, 6, 41, 42, 43, 44, 0, 0, + 147, 0, 206, 0, 0, 0, 0, 0, 187, 0, + 207, 208, 0, 0, 0, 0, 188, 0, 0, 189, + 190, 191, 0, 192, 193, 194, 195, 0, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 34, 35, 0, + 37, 0, 0, 16, 6, 41, 42, 43, 44, 0, + 0, 147, 0, 206, 0, 0, 0, 0, 0, 0, + 0, 207, 208, 34, 35, 0, 37, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, + 0, 0, 139, 0, 0, 0, 0, 304, 305, 0, + 0, 0, 0, 0, 16, 6, 0, 0, 0, 0, + 0, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 157, 0, 0, 0, 0, 158, 0, 0, + 16, 6, 118, 0, 0, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, + 131, 132, 133, 134, 135, 136, 402, 0, 0, 0, + 0, 403, 0, 0, 0, 0, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 397, 0, 0, 0, 0, 398, 0, 0, 0, 0, - 116, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 127, 128, 129, 130, - 131, 132, 133, 134, 399, 0, 0, 0, 0, 400, - 0, 0, 0, 0, 116, 0, 0, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 364, 0, - 127, 128, 129, 130, 131, 132, 133, 134, 116, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 366, 0, 127, 128, 129, 130, 131, 132, - 133, 134, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 370, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 404, 0, 0, 0, 0, 405, 0, 0, 0, 0, + 118, 0, 0, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 129, 130, 131, 132, + 133, 134, 135, 136, 406, 0, 0, 0, 0, 407, + 0, 0, 0, 0, 118, 0, 0, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 371, 0, + 129, 130, 131, 132, 133, 134, 135, 136, 118, 0, + 0, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 373, 0, 129, 130, 131, 132, 133, 134, + 135, 136, 118, 0, 0, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 377, 0, 129, 130, + 131, 132, 133, 134, 135, 136, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 382, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 116, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 394, 0, 127, 128, 129, 130, - 131, 132, 133, 134, 116, 0, 0, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 406, 0, - 127, 128, 129, 130, 131, 132, 133, 134, 116, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 408, 0, 127, 128, 129, 130, 131, 132, - 133, 134, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 429, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 389, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 118, 0, 0, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 401, 0, 129, 130, 131, 132, + 133, 134, 135, 136, 118, 0, 0, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 413, 0, + 129, 130, 131, 132, 133, 134, 135, 136, 118, 0, + 0, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 415, 0, 129, 130, 131, 132, 133, 134, + 135, 136, 118, 0, 0, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 436, 0, 129, 130, + 131, 132, 133, 134, 135, 136, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 254, 0, 0, 0, 0, 0, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 258, 0, 0, 0, 0, 0, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 257, 0, 0, 0, 0, 0, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 261, 0, 0, 0, 0, 0, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 311, 0, 0, 0, 0, 0, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 317, 0, 0, 0, 0, 0, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 314, 0, 0, 0, 0, 0, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 320, 0, 0, 0, 0, 0, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 317, 0, 0, 0, 0, 0, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 323, 0, 0, 0, 0, 0, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 318, 0, 0, 0, 0, 116, 0, 0, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 0, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 324, 0, 0, 0, 0, 118, 0, 0, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 127, 128, 129, 130, 131, 132, 133, 134, 256, - 0, 116, 0, 0, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 127, 128, 129, - 130, 131, 132, 133, 134, 115, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 129, 130, 131, 132, 133, 134, 135, 136, 260, + 0, 118, 0, 0, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 129, 130, 131, + 132, 133, 134, 135, 136, 117, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 322, 116, 0, 0, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 127, 128, 129, - 130, 131, 132, 133, 134, 336, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 116, - 0, 0, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 0, 0, 0, 0, 0, 127, 128, 129, 130, 131, - 132, 133, 134, 117, 118, 0, 0, 121, 122, 123, - 124, 125, 126, 117, 118, 0, 0, 121, 122, 123, - 124, 125, 126, 0, 0, 0, 127, 128, 129, 130, - 131, 132, 133, 134, 0, 0, 0, 128, 129, 130, - 131, 132, 133, 134, 117, 118, 0, 0, 121, 122, - 123, 124, 125, 126, 117, 118, 0, 0, 121, 122, - 123, 124, 125, 126, 0, 0, 0, 0, 128, 0, - 130, 131, 132, 133, 134, 0, 0, 0, 0, 0, - 130, 131, 132, 133, 134, 117, 118, 0, 0, 0, - 0, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 130, 131, 132, 133, 134 + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 329, 118, 0, 0, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 129, 130, 131, + 132, 133, 134, 135, 136, 343, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 118, + 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 0, 0, 0, 0, 0, 129, 130, 131, 132, 133, + 134, 135, 136, 119, 120, 0, 0, 123, 124, 125, + 126, 127, 128, 119, 120, 0, 0, 123, 124, 125, + 126, 127, 128, 0, 0, 0, 129, 130, 131, 132, + 133, 134, 135, 136, 0, 0, 0, 130, 131, 132, + 133, 134, 135, 136, 119, 120, 0, 0, 123, 124, + 125, 126, 127, 128, 119, 120, 0, 0, 0, 0, + 125, 126, 127, 128, 0, 0, 0, 0, 130, 0, + 132, 133, 134, 135, 136, 0, 0, 0, 0, 0, + 132, 133, 134, 135, 136 }; const short parser::yycheck_[] = { - 0, 1, 2, 44, 73, 94, 6, 1, 2, 18, - 268, 189, 20, 73, 42, 268, 268, 42, 3, 4, - 5, 42, 50, 23, 6, 84, 85, 86, 42, 46, - 208, 52, 32, 33, 87, 88, 43, 43, 32, 33, - 48, 48, 48, 68, 0, 45, 89, 46, 30, 31, - 32, 33, 34, 35, 36, 88, 38, 39, 40, 41, - 42, 92, 93, 104, 46, 47, 30, 31, 50, 33, - 87, 88, 52, 73, 38, 39, 40, 41, 43, 73, - 52, 43, 46, 48, 66, 67, 83, 46, 87, 88, - 54, 55, 89, 88, 52, 95, 93, 94, 95, 96, - 50, 83, 44, 88, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 30, 31, 46, 33, 145, - 43, 43, 37, 87, 88, 48, 48, 42, 42, 50, - 46, 46, 42, 145, 49, 50, 48, 137, 56, 57, - 46, 30, 31, 143, 33, 145, 50, 43, 37, 407, - 150, 145, 48, 153, 407, 407, 43, 46, 42, 145, - 49, 48, 47, 189, 82, 83, 84, 85, 86, 43, - 43, 240, 87, 88, 48, 48, 42, 189, 204, 205, - 240, 181, 208, 50, 52, 194, 364, 42, 366, 189, - 42, 42, 204, 205, 42, 189, 208, 43, 87, 88, - 47, 43, 48, 189, 204, 205, 48, 43, 208, 42, - 204, 205, 48, 51, 208, 24, 285, 286, 204, 205, - 145, 52, 208, 43, 52, 285, 286, 405, 48, 52, - 408, 42, 42, 46, 43, 52, 52, 46, 47, 42, - 240, 42, 268, 43, 52, 52, 240, 52, 17, 93, - 428, 429, 51, 51, 42, 42, 268, 82, 83, 84, - 85, 86, 331, 42, 189, 42, 47, 47, 268, 269, - 42, 331, 47, 15, 268, 42, 52, 42, 52, 204, - 205, 370, 268, 208, 42, 285, 286, 42, 52, 52, - 52, 285, 286, 52, 20, 104, 52, 43, 52, 43, - 52, 52, 145, 43, 43, 52, 6, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 6, 136, 52, 52, - 6, 331, 407, 194, -1, -1, -1, 331, 364, 148, - 366, -1, 151, 268, -1, 154, 189, 156, -1, 158, - -1, -1, 364, -1, 366, 396, -1, 398, -1, 400, - -1, 204, 205, -1, 364, 208, 366, -1, -1, 369, - 364, -1, 366, -1, -1, -1, 185, -1, 364, 405, - 366, 407, 408, -1, -1, -1, -1, -1, -1, 198, - -1, -1, 145, 405, -1, 407, 408, -1, -1, 142, - -1, -1, 428, 429, 145, 405, 149, 407, 408, 152, - -1, 405, -1, 407, 408, -1, 428, 429, 145, 405, - -1, 407, 408, -1, -1, 268, -1, -1, 428, 429, - 30, 31, -1, 33, 428, 429, 189, 37, -1, 364, - -1, 366, 428, 429, -1, -1, 46, 256, 189, 49, - -1, 204, 205, -1, -1, 208, 265, -1, 267, -1, - -1, 270, 189, 204, 205, -1, -1, 208, -1, -1, - -1, -1, -1, 282, -1, -1, 145, 204, 205, -1, - 405, 208, 407, 408, -1, -1, -1, 87, 88, -1, - -1, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, -1, 428, 429, -1, -1, -1, -1, 318, - 30, 31, -1, 33, -1, 268, -1, 260, -1, -1, - 189, 364, -1, 366, -1, -1, 46, 268, -1, 49, - -1, 340, 341, 342, 343, 204, 205, 280, 281, 208, - -1, 268, -1, -1, -1, -1, -1, -1, -1, -1, - 30, 31, -1, 33, -1, -1, 365, -1, 367, 368, - -1, -1, 405, -1, 407, 408, 46, 87, 88, 49, - 313, -1, -1, 316, 54, 55, -1, -1, -1, -1, - 7, 8, -1, 10, 11, 428, 429, -1, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 268, - 409, -1, -1, 30, 31, -1, 33, 87, 88, -1, - -1, 364, -1, 366, 30, 31, -1, 33, 361, 46, - -1, 37, 49, 364, -1, 366, -1, 54, 55, -1, - 46, -1, -1, 49, 377, -1, 379, 364, 381, 366, - -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 405, -1, 407, 408, -1, -1, -1, -1, - 87, 88, -1, -1, 405, -1, 407, 408, -1, -1, - -1, 87, 88, -1, -1, 428, 429, -1, 405, -1, - 407, 408, -1, -1, 6, -1, -1, 428, 429, -1, - -1, -1, -1, -1, -1, 364, -1, 366, -1, -1, - -1, 428, 429, -1, -1, -1, -1, -1, 30, 31, - 32, 33, 34, 35, 36, -1, 38, 39, 40, 41, - 42, -1, -1, -1, 46, -1, -1, -1, 50, -1, - 52, -1, 30, 31, -1, 33, 405, -1, 407, 408, - 38, 39, 40, 41, 66, 67, -1, -1, 46, -1, - -1, 6, -1, -1, -1, -1, -1, -1, -1, 428, - 429, 83, -1, -1, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 30, 31, 32, 33, 34, - 35, 36, -1, 38, 39, 40, 41, 42, -1, 87, - 88, 46, -1, -1, -1, 50, -1, -1, 30, 31, - -1, 33, -1, 30, 31, 37, 33, -1, -1, -1, - 37, 66, 67, -1, 46, -1, -1, 49, 6, 46, - -1, -1, 49, -1, -1, -1, -1, -1, 83, -1, - -1, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 30, 31, 32, 33, 34, 35, 36, -1, - 38, 39, 40, 41, 42, 87, 88, -1, 46, -1, - 87, 88, 50, 56, 57, -1, 59, 60, 61, 62, - 63, 64, 65, -1, -1, -1, -1, -1, 66, 67, - -1, -1, -1, -1, -1, -1, 79, 80, 81, 82, - 83, 84, 85, 86, -1, 83, -1, -1, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 9, - -1, -1, 12, 13, 14, -1, 16, 17, 18, 19, - -1, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, -1, 33, -1, -1, -1, -1, 38, 39, - 40, 41, -1, -1, 44, 45, 46, -1, -1, -1, - -1, -1, -1, -1, 54, 55, -1, -1, -1, -1, - 9, -1, -1, 12, 13, 14, -1, 16, 17, 18, - 19, -1, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, -1, 33, -1, -1, 87, 88, 38, - 39, 40, 41, -1, -1, 44, 45, 46, -1, -1, - -1, -1, -1, -1, -1, 54, 55, -1, -1, -1, - -1, 9, -1, -1, 12, 13, 14, -1, 16, 17, - 18, 19, -1, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, -1, 33, -1, -1, 87, 88, - 38, 39, 40, 41, 30, 31, 44, 33, 46, -1, - -1, 37, 30, 31, -1, 33, 54, 55, -1, 37, - 46, -1, -1, 49, -1, -1, 30, 31, 46, 33, - -1, 49, -1, 37, -1, -1, 30, 31, -1, 33, - -1, -1, 46, 37, -1, 49, -1, -1, -1, 87, - 88, -1, 46, -1, -1, 49, -1, -1, -1, -1, - -1, 87, 88, -1, -1, -1, -1, -1, -1, 87, - 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 43, 87, 88, -1, -1, 48, -1, -1, - -1, -1, 53, 87, 88, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 79, 80, - 81, 82, 83, 84, 85, 86, 43, -1, -1, -1, - -1, 48, -1, -1, -1, -1, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + 0, 46, 96, 3, 4, 75, 274, 75, 8, 3, + 4, 20, 44, 48, 274, 22, 274, 147, 3, 4, + 5, 6, 7, 48, 44, 25, 0, 45, 32, 33, + 54, 35, 50, 54, 34, 35, 40, 41, 42, 43, + 34, 35, 91, 50, 48, 9, 10, 47, 12, 13, + 70, 44, 56, 57, 89, 90, 44, 187, 45, 52, + 90, 106, 192, 50, 89, 90, 54, 45, 32, 33, + 45, 35, 50, 90, 45, 75, 48, 207, 208, 50, + 46, 75, 212, 45, 48, 89, 90, 51, 50, 45, + 45, 45, 56, 57, 50, 50, 50, 97, 45, 89, + 90, 32, 33, 50, 35, 90, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 48, 85, 52, + 51, 147, 45, 48, 91, 89, 90, 50, 95, 96, + 97, 98, 45, 45, 54, 147, 266, 50, 50, 139, + 86, 87, 88, 45, 274, 145, 414, 147, 50, 94, + 95, 44, 152, 147, 414, 155, 414, 52, 89, 90, + 48, 187, 32, 33, 44, 35, 192, 52, 50, 48, + 40, 41, 42, 43, 244, 187, 244, 49, 48, 44, + 192, 207, 208, 183, 52, 44, 212, 187, 197, 44, + 54, 44, 192, 187, 44, 207, 208, 44, 192, 44, + 212, 84, 85, 86, 87, 88, 54, 207, 208, 53, + 44, 54, 212, 207, 208, 54, 26, 44, 212, 89, + 90, 291, 292, 291, 292, 48, 54, 44, 54, 54, + 32, 33, 54, 35, 54, 45, 44, 39, 48, 49, + 266, 371, 49, 373, 244, 45, 48, 19, 274, 51, + 244, 44, 53, 95, 266, 53, 44, 44, 44, 49, + 49, 44, 274, 54, 49, 44, 266, 44, 338, 44, + 338, 44, 266, 17, 274, 275, 54, 22, 54, 45, + 274, 8, 412, 377, 414, 415, 54, 89, 90, 54, + 54, 291, 292, 54, 54, 54, 106, 291, 292, 45, + 54, 54, 45, 45, 54, 435, 436, 54, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 8, 138, 8, + 187, 414, -1, -1, 197, -1, -1, -1, 338, -1, + 150, -1, -1, 153, 338, 371, 156, 373, 158, -1, + 160, -1, -1, -1, -1, 192, -1, -1, 403, 371, + 405, 373, 407, -1, -1, -1, 147, 58, 59, -1, + -1, 371, -1, 373, -1, 212, 376, 371, 188, 373, + -1, -1, -1, -1, -1, -1, 412, -1, 414, 415, + -1, 201, 147, 84, 85, 86, 87, 88, -1, 147, + 412, -1, 414, 415, -1, -1, 187, -1, -1, 435, + 436, 192, 412, -1, 414, 415, -1, -1, 412, -1, + 414, 415, -1, 435, 436, -1, 207, 208, -1, 266, + -1, 212, 187, -1, -1, 435, 436, 192, -1, 187, + -1, 435, 436, -1, 192, -1, -1, 147, -1, -1, + 260, -1, 207, 208, -1, -1, -1, 212, -1, 207, + 208, 271, -1, 273, 212, -1, 276, 32, 33, 144, + 35, -1, -1, -1, 39, -1, 151, -1, 288, 154, + -1, -1, 147, 48, -1, 266, 51, 187, -1, -1, + -1, -1, 192, 274, -1, -1, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 207, 208, -1, + -1, 266, 212, -1, 324, -1, 147, -1, 266, 274, + -1, -1, 187, -1, 89, 90, 274, 192, -1, -1, + -1, -1, -1, -1, 371, -1, 373, 347, 348, 349, + 350, -1, 207, 208, -1, -1, -1, 212, -1, -1, + -1, -1, -1, -1, -1, -1, 187, -1, -1, -1, + -1, 192, 372, -1, 374, 375, 266, -1, -1, -1, + -1, -1, -1, -1, 274, 412, 207, 208, 415, -1, + -1, 212, -1, -1, 32, 33, -1, 35, -1, 264, + 371, 39, 373, -1, -1, -1, 44, -1, 435, 436, + 48, 266, -1, 51, 52, -1, 416, -1, -1, 274, + -1, 286, 287, -1, -1, -1, 371, -1, 373, -1, + -1, 32, 33, 371, 35, 373, -1, -1, 39, -1, + -1, 412, -1, 414, 415, 266, -1, 48, -1, -1, + 51, 89, 90, 274, 319, -1, -1, 322, -1, -1, + -1, -1, -1, -1, 435, 436, -1, 412, -1, 414, + 415, -1, -1, -1, 412, -1, 414, 415, -1, -1, + -1, 371, -1, 373, -1, -1, -1, -1, 89, 90, + 435, 436, -1, -1, -1, -1, -1, 435, 436, -1, + 58, 59, -1, 368, 62, 63, 64, 65, 66, 67, + -1, -1, -1, -1, -1, -1, 371, -1, 373, 384, + -1, 386, 412, 388, 414, 415, 84, 85, 86, 87, + 88, -1, 32, 33, -1, 35, -1, -1, -1, 39, + -1, -1, 8, -1, -1, 435, 436, -1, 48, -1, + 371, 51, 373, -1, -1, -1, -1, 412, -1, 414, + 415, -1, -1, -1, -1, -1, 32, 33, 34, 35, + 36, 37, 38, -1, 40, 41, 42, 43, 44, -1, + 435, 436, 48, 49, -1, -1, 52, -1, -1, 89, + 90, 412, -1, 414, 415, -1, -1, -1, -1, -1, + -1, -1, 68, 69, -1, -1, -1, -1, -1, 8, + -1, -1, -1, -1, 435, 436, -1, -1, -1, 85, + -1, -1, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 32, 33, 34, 35, 36, 37, 38, + -1, 40, 41, 42, 43, 44, -1, -1, -1, 48, + -1, -1, -1, 52, -1, 54, 32, 33, -1, 35, + -1, 32, 33, 39, 35, -1, -1, -1, 39, 68, + 69, -1, 48, -1, -1, 51, 8, 48, -1, -1, + 51, -1, -1, -1, -1, -1, 85, -1, -1, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 32, 33, 34, 35, 36, 37, 38, -1, 40, 41, + 42, 43, 44, 89, 90, -1, 48, -1, 89, 90, + 52, -1, -1, 32, 33, -1, 35, -1, 32, 33, + 39, 35, -1, -1, -1, 39, 68, 69, -1, 48, + -1, -1, 51, 8, 48, -1, -1, 51, -1, -1, + -1, -1, -1, 85, -1, -1, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 32, 33, 34, + 35, 36, 37, 38, -1, 40, 41, 42, 43, 44, + 89, 90, -1, 48, -1, 89, 90, 52, 58, 59, + -1, 61, 62, 63, 64, 65, 66, 67, -1, -1, + -1, -1, -1, 68, 69, -1, -1, -1, -1, -1, + -1, 81, 82, 83, 84, 85, 86, 87, 88, -1, + 85, -1, -1, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 3, -1, -1, -1, -1, -1, + -1, -1, 11, -1, -1, 14, 15, 16, -1, 18, + 19, 20, 21, -1, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, -1, 35, -1, -1, -1, + -1, 40, 41, 42, 43, -1, -1, 46, 47, 48, + -1, -1, -1, -1, -1, 3, 4, 56, 57, -1, + -1, -1, -1, 11, -1, -1, 14, 15, 16, -1, + 18, 19, 20, 21, -1, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, -1, 35, -1, -1, + 89, 90, 40, 41, 42, 43, 32, 33, 46, 35, + 48, -1, -1, 39, -1, -1, 3, -1, 56, 57, + -1, -1, 48, -1, 11, 51, -1, 14, 15, 16, + -1, 18, 19, 20, 21, -1, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, -1, 35, -1, + -1, 89, 90, 40, 41, 42, 43, -1, -1, 46, + 47, 48, -1, 89, 90, -1, -1, 3, 4, 56, + 57, -1, -1, -1, -1, 11, -1, -1, 14, 15, + 16, -1, 18, 19, 20, 21, -1, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, -1, 35, + -1, -1, 89, 90, 40, 41, 42, 43, -1, -1, + 46, -1, 48, -1, -1, -1, -1, -1, 3, -1, + 56, 57, -1, -1, -1, -1, 11, -1, -1, 14, + 15, 16, -1, 18, 19, 20, 21, -1, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, + 35, -1, -1, 89, 90, 40, 41, 42, 43, -1, + -1, 46, -1, 48, -1, -1, -1, -1, -1, -1, + -1, 56, 57, 32, 33, -1, 35, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 48, + -1, -1, 51, -1, -1, -1, -1, 56, 57, -1, + -1, -1, -1, -1, 89, 90, -1, -1, -1, -1, + -1, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 45, -1, -1, -1, -1, 50, -1, -1, + 89, 90, 55, -1, -1, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 81, 82, + 83, 84, 85, 86, 87, 88, 45, -1, -1, -1, + -1, 50, -1, -1, -1, -1, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 43, -1, -1, -1, -1, 48, -1, -1, -1, -1, - 53, -1, -1, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 79, 80, 81, 82, - 83, 84, 85, 86, 43, -1, -1, -1, -1, 48, - -1, -1, -1, -1, 53, -1, -1, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 43, -1, - 79, 80, 81, 82, 83, 84, 85, 86, 53, -1, - -1, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 43, -1, 79, 80, 81, 82, 83, 84, - 85, 86, 53, -1, -1, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 43, -1, 79, 80, - 81, 82, 83, 84, 85, 86, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 45, -1, -1, -1, -1, 50, -1, -1, -1, -1, + 55, -1, -1, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 81, 82, 83, 84, + 85, 86, 87, 88, 45, -1, -1, -1, -1, 50, + -1, -1, -1, -1, 55, -1, -1, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 45, -1, + 81, 82, 83, 84, 85, 86, 87, 88, 55, -1, + -1, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 45, -1, 81, 82, 83, 84, 85, 86, + 87, 88, 55, -1, -1, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 45, -1, 81, 82, + 83, 84, 85, 86, 87, 88, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 43, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 53, -1, -1, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 43, -1, 79, 80, 81, 82, - 83, 84, 85, 86, 53, -1, -1, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 43, -1, - 79, 80, 81, 82, 83, 84, 85, 86, 53, -1, - -1, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 43, -1, 79, 80, 81, 82, 83, 84, - 85, 86, 53, -1, -1, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 43, -1, 79, 80, - 81, 82, 83, 84, 85, 86, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + 45, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 55, -1, -1, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 45, -1, 81, 82, 83, 84, + 85, 86, 87, 88, 55, -1, -1, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 45, -1, + 81, 82, 83, 84, 85, 86, 87, 88, 55, -1, + -1, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 45, -1, 81, 82, 83, 84, 85, 86, + 87, 88, 55, -1, -1, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 45, -1, 81, 82, + 83, 84, 85, 86, 87, 88, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 47, -1, -1, -1, -1, -1, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 49, -1, -1, -1, -1, -1, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 47, -1, -1, -1, -1, -1, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 49, -1, -1, -1, -1, -1, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 47, -1, -1, -1, -1, -1, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 49, -1, -1, -1, -1, -1, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 47, -1, -1, -1, -1, -1, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 49, -1, -1, -1, -1, -1, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 47, -1, -1, -1, -1, -1, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 49, -1, -1, -1, -1, -1, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 48, -1, -1, -1, -1, 53, -1, -1, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, -1, -1, + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 50, -1, -1, -1, -1, 55, -1, -1, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 79, 80, 81, 82, 83, 84, 85, 86, 51, - -1, 53, -1, -1, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, - 82, 83, 84, 85, 86, 52, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + -1, 81, 82, 83, 84, 85, 86, 87, 88, 53, + -1, 55, -1, -1, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 81, 82, 83, + 84, 85, 86, 87, 88, 54, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 52, 53, -1, -1, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, - 82, 83, 84, 85, 86, 52, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 53, - -1, -1, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 79, 80, 81, 82, 83, 84, 85, 86, - -1, -1, -1, -1, -1, 79, 80, 81, 82, 83, - 84, 85, 86, 56, 57, -1, -1, 60, 61, 62, - 63, 64, 65, 56, 57, -1, -1, 60, 61, 62, - 63, 64, 65, -1, -1, -1, 79, 80, 81, 82, - 83, 84, 85, 86, -1, -1, -1, 80, 81, 82, - 83, 84, 85, 86, 56, 57, -1, -1, 60, 61, - 62, 63, 64, 65, 56, 57, -1, -1, 60, 61, - 62, 63, 64, 65, -1, -1, -1, -1, 80, -1, - 82, 83, 84, 85, 86, -1, -1, -1, -1, -1, - 82, 83, 84, 85, 86, 56, 57, -1, -1, -1, - -1, 62, 63, 64, 65, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 82, 83, 84, 85, 86 + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 54, 55, -1, -1, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 81, 82, 83, + 84, 85, 86, 87, 88, 54, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 55, + -1, -1, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 81, 82, 83, 84, 85, 86, 87, 88, + -1, -1, -1, -1, -1, 81, 82, 83, 84, 85, + 86, 87, 88, 58, 59, -1, -1, 62, 63, 64, + 65, 66, 67, 58, 59, -1, -1, 62, 63, 64, + 65, 66, 67, -1, -1, -1, 81, 82, 83, 84, + 85, 86, 87, 88, -1, -1, -1, 82, 83, 84, + 85, 86, 87, 88, 58, 59, -1, -1, 62, 63, + 64, 65, 66, 67, 58, 59, -1, -1, -1, -1, + 64, 65, 66, 67, -1, -1, -1, -1, 82, -1, + 84, 85, 86, 87, 88, -1, -1, -1, -1, -1, + 84, 85, 86, 87, 88 }; const unsigned char parser::yystos_[] = { - 0, 3, 4, 5, 88, 107, 108, 109, 110, 111, - 112, 113, 114, 176, 87, 176, 177, 177, 42, 0, - 109, 110, 111, 42, 68, 52, 52, 89, 179, 158, - 176, 6, 30, 31, 32, 33, 34, 35, 36, 38, - 39, 40, 41, 42, 46, 50, 66, 67, 83, 86, - 90, 91, 92, 93, 94, 95, 96, 143, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 43, 43, 48, 46, 176, 177, 46, - 176, 177, 46, 143, 46, 47, 143, 159, 160, 176, - 143, 143, 92, 93, 88, 52, 53, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 79, 80, 81, - 82, 83, 84, 85, 86, 37, 46, 49, 155, 156, - 176, 177, 42, 50, 52, 44, 116, 176, 46, 42, - 50, 46, 42, 50, 46, 43, 48, 143, 48, 47, - 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, - 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, - 176, 50, 159, 160, 176, 9, 12, 13, 14, 16, - 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 45, 46, 54, 55, 115, 116, 117, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 145, 146, 147, 153, 154, 162, 163, - 166, 170, 171, 172, 173, 176, 143, 159, 176, 143, - 159, 176, 143, 143, 47, 143, 51, 47, 176, 43, - 42, 143, 52, 42, 52, 42, 115, 42, 42, 42, - 42, 83, 179, 183, 51, 52, 52, 52, 143, 52, - 42, 42, 46, 153, 154, 166, 166, 45, 115, 52, - 52, 52, 52, 52, 7, 8, 10, 11, 54, 55, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 47, 43, 42, 47, 43, 42, 47, 48, 47, - 143, 159, 52, 43, 143, 17, 143, 118, 145, 146, - 147, 166, 176, 143, 51, 51, 52, 159, 159, 143, - 42, 42, 42, 42, 143, 143, 143, 143, 143, 143, - 143, 143, 143, 143, 143, 47, 159, 47, 159, 47, - 143, 42, 43, 52, 43, 42, 43, 52, 20, 48, - 43, 43, 43, 143, 143, 143, 143, 42, 43, 42, - 43, 42, 43, 159, 115, 143, 115, 143, 144, 143, - 176, 116, 52, 52, 43, 43, 48, 43, 48, 43, - 48, 159, 159, 159, 43, 15, 43, 52, 43, 20, - 52, 52, 160, 52, 160, 52, 160, 43, 43, 43, - 115, 52, 118, 115, 143, 43, 43, 43, 43, 43, - 52, 52, 52, 115, 115 + 0, 3, 4, 5, 6, 7, 90, 109, 110, 111, + 112, 113, 114, 115, 116, 179, 89, 179, 180, 180, + 44, 0, 111, 112, 113, 44, 70, 54, 54, 91, + 182, 161, 179, 8, 32, 33, 34, 35, 36, 37, + 38, 40, 41, 42, 43, 44, 48, 52, 68, 69, + 85, 88, 92, 93, 94, 95, 96, 97, 98, 146, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 45, 45, 50, 48, 179, + 180, 48, 179, 180, 48, 146, 48, 49, 146, 162, + 163, 179, 146, 146, 94, 95, 90, 54, 55, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 81, + 82, 83, 84, 85, 86, 87, 88, 39, 48, 51, + 158, 159, 179, 180, 44, 52, 54, 46, 119, 179, + 48, 44, 52, 48, 44, 52, 48, 45, 50, 146, + 50, 49, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 179, 52, 162, 163, 179, 3, 11, 14, + 15, 16, 18, 19, 20, 21, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 47, 48, 56, 57, 117, + 118, 119, 120, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 148, 149, 150, + 156, 157, 165, 166, 169, 173, 174, 175, 176, 179, + 146, 162, 179, 146, 162, 179, 146, 146, 49, 146, + 53, 49, 179, 45, 44, 4, 120, 146, 54, 44, + 54, 44, 117, 44, 44, 44, 44, 85, 182, 186, + 53, 54, 54, 54, 146, 54, 44, 44, 48, 156, + 157, 169, 169, 47, 117, 54, 54, 54, 54, 54, + 9, 10, 12, 13, 56, 57, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 49, 45, 44, + 49, 45, 44, 49, 50, 49, 146, 162, 4, 54, + 45, 146, 19, 146, 121, 148, 149, 150, 169, 179, + 146, 53, 53, 54, 162, 162, 146, 44, 44, 44, + 44, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 49, 162, 49, 162, 49, 146, 44, 45, + 54, 45, 44, 45, 54, 22, 50, 45, 45, 45, + 146, 146, 146, 146, 44, 45, 44, 45, 44, 45, + 162, 117, 146, 117, 146, 147, 146, 179, 119, 54, + 54, 45, 45, 50, 45, 50, 45, 50, 162, 162, + 162, 45, 17, 45, 54, 45, 22, 54, 54, 163, + 54, 163, 54, 163, 45, 45, 45, 117, 54, 121, + 117, 146, 45, 45, 45, 45, 45, 54, 54, 54, + 117, 117 }; const unsigned char parser::yyr1_[] = { - 0, 106, 107, 107, 108, 108, 108, 108, 108, 108, - 109, 110, 111, 111, 111, 112, 113, 114, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 116, 116, 117, 117, 118, 118, 118, - 118, 119, 119, 120, 120, 120, 121, 122, 122, 123, - 124, 124, 125, 125, 126, 127, 127, 128, 129, 130, - 131, 132, 133, 133, 134, 135, 135, 136, 137, 138, - 139, 139, 140, 141, 142, 143, 143, 143, 144, 144, - 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, - 145, 146, 146, 147, 147, 148, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 151, 152, 153, 153, 154, 154, 155, 155, - 155, 155, 155, 155, 156, 156, 156, 156, 157, 158, - 158, 158, 159, 159, 160, 160, 161, 161, 162, 163, - 164, 165, 166, 166, 166, 166, 166, 166, 166, 166, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 177, 178, 179, 180, 181, 182, 182, 183, - 183, 183, 183, 183, 184, 185 + 0, 108, 109, 109, 110, 110, 110, 110, 110, 110, + 111, 112, 113, 113, 113, 113, 113, 114, 115, 116, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 118, 118, 119, 119, + 120, 120, 121, 121, 121, 121, 122, 122, 123, 123, + 123, 124, 125, 125, 126, 127, 127, 128, 128, 129, + 130, 130, 131, 132, 133, 134, 135, 136, 136, 137, + 138, 138, 139, 140, 141, 142, 142, 143, 144, 145, + 146, 146, 146, 147, 147, 148, 148, 148, 148, 148, + 148, 148, 148, 148, 148, 148, 149, 149, 150, 150, + 151, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 154, 155, 156, + 156, 157, 157, 158, 158, 158, 158, 158, 158, 159, + 159, 159, 159, 160, 161, 161, 161, 162, 162, 163, + 163, 164, 164, 165, 166, 167, 168, 169, 169, 169, + 169, 169, 169, 169, 169, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 180, 181, 182, + 183, 184, 185, 185, 186, 186, 186, 186, 186, 187, + 188 }; const signed char parser::yyr2_[] = { 0, 2, 1, 0, 2, 2, 2, 1, 1, 1, - 3, 3, 1, 1, 1, 5, 4, 5, 1, 1, + 3, 3, 1, 1, 1, 1, 1, 5, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 3, 2, 2, 1, 1, 1, 1, - 0, 2, 2, 2, 2, 2, 6, 8, 6, 3, - 8, 6, 8, 6, 2, 2, 4, 5, 7, 5, - 7, 9, 7, 9, 5, 3, 3, 2, 2, 2, - 3, 2, 2, 5, 5, 1, 1, 1, 1, 0, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 2, 2, 2, 2, 5, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 3, 2, 3, 2, + 2, 1, 1, 1, 1, 0, 2, 2, 2, 2, + 2, 6, 8, 6, 3, 8, 6, 8, 6, 2, + 2, 4, 5, 7, 5, 7, 9, 7, 9, 5, + 3, 3, 2, 2, 2, 3, 2, 2, 5, 5, + 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, + 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 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, 1, 1, 2, 2, 4, 6, - 5, 7, 5, 7, 8, 9, 9, 9, 3, 3, - 1, 0, 1, 0, 3, 1, 2, 3, 4, 3, - 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, - 1, 1, 1, 1, 1, 1, 7, 2, 1, 2, - 1, 1, 1, 1, 1, 1 + 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, + 1, 2, 2, 4, 6, 5, 7, 5, 7, 8, + 9, 9, 9, 3, 3, 1, 0, 1, 0, 3, + 1, 2, 3, 4, 3, 2, 3, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, + 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, + 1, 7, 2, 1, 2, 1, 1, 1, 1, 1, + 1 }; @@ -4418,28 +4497,29 @@ namespace xsk { namespace gsc { namespace s1 { const short parser::yyrline_[] = { - 0, 251, 251, 252, 256, 258, 260, 262, 264, 266, - 271, 275, 280, 281, 282, 286, 291, 296, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 329, 330, 334, 336, 341, 343, 345, - 348, 352, 354, 359, 361, 363, 368, 373, 375, 380, - 385, 387, 392, 394, 399, 404, 406, 411, 416, 421, - 426, 431, 436, 438, 443, 448, 450, 455, 460, 465, - 470, 472, 477, 482, 487, 492, 493, 494, 498, 499, - 503, 505, 507, 509, 511, 513, 515, 517, 519, 521, - 523, 528, 530, 535, 537, 542, 547, 549, 551, 553, - 555, 557, 559, 561, 563, 565, 567, 569, 571, 573, - 575, 577, 579, 581, 586, 587, 588, 589, 590, 591, - 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, - 612, 613, 617, 622, 627, 628, 631, 632, 636, 638, - 640, 642, 644, 646, 651, 653, 655, 657, 662, 667, - 669, 672, 676, 679, 683, 685, 690, 692, 697, 702, - 707, 712, 717, 718, 719, 720, 721, 722, 723, 724, - 725, 729, 734, 739, 744, 749, 754, 759, 764, 769, - 774, 779, 781, 786, 791, 796, 801, 806, 808, 813, - 815, 817, 819, 821, 826, 831 + 0, 254, 254, 255, 259, 261, 263, 265, 267, 269, + 274, 278, 283, 284, 285, 286, 287, 291, 296, 301, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 335, 336, 340, 341, + 345, 347, 352, 354, 356, 359, 363, 365, 370, 372, + 374, 379, 384, 386, 391, 396, 398, 403, 405, 410, + 415, 417, 422, 427, 432, 437, 442, 447, 449, 454, + 459, 461, 466, 471, 476, 481, 483, 488, 493, 498, + 503, 504, 505, 509, 510, 514, 516, 518, 520, 522, + 524, 526, 528, 530, 532, 534, 539, 541, 546, 548, + 553, 558, 560, 562, 564, 566, 568, 570, 572, 574, + 576, 578, 580, 582, 584, 586, 588, 590, 592, 597, + 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, + 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, + 618, 619, 620, 621, 622, 623, 624, 628, 633, 638, + 639, 642, 643, 647, 649, 651, 653, 655, 657, 662, + 664, 666, 668, 673, 678, 680, 683, 687, 690, 694, + 696, 701, 703, 708, 713, 718, 723, 728, 729, 730, + 731, 732, 733, 734, 735, 736, 740, 745, 750, 755, + 760, 765, 770, 775, 780, 785, 790, 792, 797, 802, + 807, 812, 817, 819, 824, 826, 828, 830, 832, 837, + 842 }; void @@ -4472,9 +4552,9 @@ namespace xsk { namespace gsc { namespace s1 { #line 13 "parser.ypp" } } } // xsk::gsc::s1 -#line 4476 "parser.cpp" +#line 4556 "parser.cpp" -#line 835 "parser.ypp" +#line 846 "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 e98cca55..8a69b082 100644 --- a/src/s1/xsk/parser.hpp +++ b/src/s1/xsk/parser.hpp @@ -580,6 +580,7 @@ namespace xsk { namespace gsc { namespace s1 { // stmt_ifelse char dummy54[sizeof (ast::stmt_ifelse::ptr)]; + // stmt_dev // stmt_block // stmt_list char dummy55[sizeof (ast::stmt_list::ptr)]; @@ -679,109 +680,111 @@ namespace xsk { namespace gsc { namespace s1 { S1EOF = 0, // "end of file" S1error = 1, // error S1UNDEF = 2, // "invalid token" - INLINE = 3, // "#inline" - INCLUDE = 4, // "#include" - USINGTREE = 5, // "#using_animtree" - ANIMTREE = 6, // "#animtree" - ENDON = 7, // "endon" - NOTIFY = 8, // "notify" - WAIT = 9, // "wait" - WAITTILL = 10, // "waittill" - WAITTILLMATCH = 11, // "waittillmatch" - WAITTILLFRAMEEND = 12, // "waittillframeend" - WAITFRAME = 13, // "waitframe" - IF = 14, // "if" - ELSE = 15, // "else" - DO = 16, // "do" - WHILE = 17, // "while" - FOR = 18, // "for" - FOREACH = 19, // "foreach" - IN = 20, // "in" - SWITCH = 21, // "switch" - CASE = 22, // "case" - DEFAULT = 23, // "default" - BREAK = 24, // "break" - CONTINUE = 25, // "continue" - RETURN = 26, // "return" - BREAKPOINT = 27, // "breakpoint" - PROFBEGIN = 28, // "prof_begin" - PROFEND = 29, // "prof_end" - THREAD = 30, // "thread" - CHILDTHREAD = 31, // "childthread" - THISTHREAD = 32, // "thisthread" - CALL = 33, // "call" - TRUE = 34, // "true" - FALSE = 35, // "false" - UNDEFINED = 36, // "undefined" - SIZE = 37, // ".size" - GAME = 38, // "game" - SELF = 39, // "self" - ANIM = 40, // "anim" - LEVEL = 41, // "level" - LPAREN = 42, // "(" - RPAREN = 43, // ")" - LBRACE = 44, // "{" - RBRACE = 45, // "}" - LBRACKET = 46, // "[" - RBRACKET = 47, // "]" - COMMA = 48, // "," - DOT = 49, // "." - DOUBLECOLON = 50, // "::" - COLON = 51, // ":" - SEMICOLON = 52, // ";" - QMARK = 53, // "?" - INCREMENT = 54, // "++" - DECREMENT = 55, // "--" - LSHIFT = 56, // "<<" - RSHIFT = 57, // ">>" - OR = 58, // "||" - AND = 59, // "&&" - EQUALITY = 60, // "==" - INEQUALITY = 61, // "!=" - LESS_EQUAL = 62, // "<=" - GREATER_EQUAL = 63, // ">=" - LESS = 64, // "<" - GREATER = 65, // ">" - NOT = 66, // "!" - COMPLEMENT = 67, // "~" - ASSIGN = 68, // "=" - ASSIGN_ADD = 69, // "+=" - ASSIGN_SUB = 70, // "-=" - ASSIGN_MUL = 71, // "*=" - ASSIGN_DIV = 72, // "/=" - ASSIGN_MOD = 73, // "%=" - ASSIGN_BW_OR = 74, // "|=" - ASSIGN_BW_AND = 75, // "&=" - ASSIGN_BW_EXOR = 76, // "^=" - ASSIGN_RSHIFT = 77, // ">>=" - ASSIGN_LSHIFT = 78, // "<<=" - BITWISE_OR = 79, // "|" - BITWISE_AND = 80, // "&" - BITWISE_EXOR = 81, // "^" - ADD = 82, // "+" - SUB = 83, // "-" - MUL = 84, // "*" - DIV = 85, // "/" - MOD = 86, // "%" - PATH = 87, // "path" - IDENTIFIER = 88, // "identifier" - STRING = 89, // "string literal" - ISTRING = 90, // "localized string" - COLOR = 91, // "color" - FLOAT = 92, // "float" - INT_DEC = 93, // "int" - INT_OCT = 94, // "octal int" - INT_BIN = 95, // "binary int" - INT_HEX = 96, // "hexadecimal int" - ADD_ARRAY = 97, // ADD_ARRAY - THEN = 98, // THEN - TERN = 99, // TERN - NEG = 100, // NEG - ANIMREF = 101, // ANIMREF - PREINC = 102, // PREINC - PREDEC = 103, // PREDEC - POSTINC = 104, // POSTINC - POSTDEC = 105 // POSTDEC + DEVBEGIN = 3, // "/#" + DEVEND = 4, // "#/" + INLINE = 5, // "#inline" + INCLUDE = 6, // "#include" + USINGTREE = 7, // "#using_animtree" + ANIMTREE = 8, // "#animtree" + ENDON = 9, // "endon" + NOTIFY = 10, // "notify" + WAIT = 11, // "wait" + WAITTILL = 12, // "waittill" + WAITTILLMATCH = 13, // "waittillmatch" + WAITTILLFRAMEEND = 14, // "waittillframeend" + WAITFRAME = 15, // "waitframe" + IF = 16, // "if" + ELSE = 17, // "else" + DO = 18, // "do" + WHILE = 19, // "while" + FOR = 20, // "for" + FOREACH = 21, // "foreach" + IN = 22, // "in" + SWITCH = 23, // "switch" + CASE = 24, // "case" + DEFAULT = 25, // "default" + BREAK = 26, // "break" + CONTINUE = 27, // "continue" + RETURN = 28, // "return" + BREAKPOINT = 29, // "breakpoint" + PROFBEGIN = 30, // "prof_begin" + PROFEND = 31, // "prof_end" + THREAD = 32, // "thread" + CHILDTHREAD = 33, // "childthread" + THISTHREAD = 34, // "thisthread" + CALL = 35, // "call" + TRUE = 36, // "true" + FALSE = 37, // "false" + UNDEFINED = 38, // "undefined" + SIZE = 39, // ".size" + GAME = 40, // "game" + SELF = 41, // "self" + ANIM = 42, // "anim" + LEVEL = 43, // "level" + LPAREN = 44, // "(" + RPAREN = 45, // ")" + LBRACE = 46, // "{" + RBRACE = 47, // "}" + LBRACKET = 48, // "[" + RBRACKET = 49, // "]" + COMMA = 50, // "," + DOT = 51, // "." + DOUBLECOLON = 52, // "::" + COLON = 53, // ":" + SEMICOLON = 54, // ";" + QMARK = 55, // "?" + INCREMENT = 56, // "++" + DECREMENT = 57, // "--" + LSHIFT = 58, // "<<" + RSHIFT = 59, // ">>" + OR = 60, // "||" + AND = 61, // "&&" + EQUALITY = 62, // "==" + INEQUALITY = 63, // "!=" + LESS_EQUAL = 64, // "<=" + GREATER_EQUAL = 65, // ">=" + LESS = 66, // "<" + GREATER = 67, // ">" + NOT = 68, // "!" + COMPLEMENT = 69, // "~" + ASSIGN = 70, // "=" + ASSIGN_ADD = 71, // "+=" + ASSIGN_SUB = 72, // "-=" + ASSIGN_MUL = 73, // "*=" + ASSIGN_DIV = 74, // "/=" + ASSIGN_MOD = 75, // "%=" + ASSIGN_BW_OR = 76, // "|=" + ASSIGN_BW_AND = 77, // "&=" + ASSIGN_BW_EXOR = 78, // "^=" + ASSIGN_RSHIFT = 79, // ">>=" + ASSIGN_LSHIFT = 80, // "<<=" + BITWISE_OR = 81, // "|" + BITWISE_AND = 82, // "&" + BITWISE_EXOR = 83, // "^" + ADD = 84, // "+" + SUB = 85, // "-" + MUL = 86, // "*" + DIV = 87, // "/" + MOD = 88, // "%" + PATH = 89, // "path" + IDENTIFIER = 90, // "identifier" + STRING = 91, // "string literal" + ISTRING = 92, // "localized string" + COLOR = 93, // "color" + FLOAT = 94, // "float" + INT_DEC = 95, // "int" + INT_OCT = 96, // "octal int" + INT_BIN = 97, // "binary int" + INT_HEX = 98, // "hexadecimal int" + ADD_ARRAY = 99, // ADD_ARRAY + THEN = 100, // THEN + TERN = 101, // TERN + NEG = 102, // NEG + ANIMREF = 103, // ANIMREF + PREINC = 104, // PREINC + PREDEC = 105, // PREDEC + POSTINC = 106, // POSTINC + POSTDEC = 107 // POSTDEC }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; @@ -798,194 +801,197 @@ namespace xsk { namespace gsc { namespace s1 { { enum symbol_kind_type { - YYNTOKENS = 106, ///< Number of tokens. + YYNTOKENS = 108, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error S_YYUNDEF = 2, // "invalid token" - S_INLINE = 3, // "#inline" - S_INCLUDE = 4, // "#include" - S_USINGTREE = 5, // "#using_animtree" - S_ANIMTREE = 6, // "#animtree" - S_ENDON = 7, // "endon" - S_NOTIFY = 8, // "notify" - S_WAIT = 9, // "wait" - S_WAITTILL = 10, // "waittill" - S_WAITTILLMATCH = 11, // "waittillmatch" - S_WAITTILLFRAMEEND = 12, // "waittillframeend" - S_WAITFRAME = 13, // "waitframe" - S_IF = 14, // "if" - S_ELSE = 15, // "else" - S_DO = 16, // "do" - S_WHILE = 17, // "while" - S_FOR = 18, // "for" - S_FOREACH = 19, // "foreach" - S_IN = 20, // "in" - S_SWITCH = 21, // "switch" - S_CASE = 22, // "case" - S_DEFAULT = 23, // "default" - S_BREAK = 24, // "break" - S_CONTINUE = 25, // "continue" - S_RETURN = 26, // "return" - S_BREAKPOINT = 27, // "breakpoint" - S_PROFBEGIN = 28, // "prof_begin" - S_PROFEND = 29, // "prof_end" - S_THREAD = 30, // "thread" - S_CHILDTHREAD = 31, // "childthread" - S_THISTHREAD = 32, // "thisthread" - S_CALL = 33, // "call" - S_TRUE = 34, // "true" - S_FALSE = 35, // "false" - S_UNDEFINED = 36, // "undefined" - S_SIZE = 37, // ".size" - S_GAME = 38, // "game" - S_SELF = 39, // "self" - S_ANIM = 40, // "anim" - S_LEVEL = 41, // "level" - S_LPAREN = 42, // "(" - S_RPAREN = 43, // ")" - S_LBRACE = 44, // "{" - S_RBRACE = 45, // "}" - S_LBRACKET = 46, // "[" - S_RBRACKET = 47, // "]" - S_COMMA = 48, // "," - S_DOT = 49, // "." - S_DOUBLECOLON = 50, // "::" - S_COLON = 51, // ":" - S_SEMICOLON = 52, // ";" - S_QMARK = 53, // "?" - S_INCREMENT = 54, // "++" - S_DECREMENT = 55, // "--" - S_LSHIFT = 56, // "<<" - S_RSHIFT = 57, // ">>" - S_OR = 58, // "||" - S_AND = 59, // "&&" - S_EQUALITY = 60, // "==" - S_INEQUALITY = 61, // "!=" - S_LESS_EQUAL = 62, // "<=" - S_GREATER_EQUAL = 63, // ">=" - S_LESS = 64, // "<" - S_GREATER = 65, // ">" - S_NOT = 66, // "!" - S_COMPLEMENT = 67, // "~" - S_ASSIGN = 68, // "=" - S_ASSIGN_ADD = 69, // "+=" - S_ASSIGN_SUB = 70, // "-=" - S_ASSIGN_MUL = 71, // "*=" - S_ASSIGN_DIV = 72, // "/=" - S_ASSIGN_MOD = 73, // "%=" - S_ASSIGN_BW_OR = 74, // "|=" - S_ASSIGN_BW_AND = 75, // "&=" - S_ASSIGN_BW_EXOR = 76, // "^=" - S_ASSIGN_RSHIFT = 77, // ">>=" - S_ASSIGN_LSHIFT = 78, // "<<=" - S_BITWISE_OR = 79, // "|" - S_BITWISE_AND = 80, // "&" - S_BITWISE_EXOR = 81, // "^" - S_ADD = 82, // "+" - S_SUB = 83, // "-" - S_MUL = 84, // "*" - S_DIV = 85, // "/" - S_MOD = 86, // "%" - S_PATH = 87, // "path" - S_IDENTIFIER = 88, // "identifier" - S_STRING = 89, // "string literal" - S_ISTRING = 90, // "localized string" - S_COLOR = 91, // "color" - S_FLOAT = 92, // "float" - S_INT_DEC = 93, // "int" - S_INT_OCT = 94, // "octal int" - S_INT_BIN = 95, // "binary int" - S_INT_HEX = 96, // "hexadecimal int" - S_ADD_ARRAY = 97, // ADD_ARRAY - S_THEN = 98, // THEN - S_TERN = 99, // TERN - S_NEG = 100, // NEG - S_ANIMREF = 101, // ANIMREF - S_PREINC = 102, // PREINC - S_PREDEC = 103, // PREDEC - S_POSTINC = 104, // POSTINC - S_POSTDEC = 105, // POSTDEC - S_YYACCEPT = 106, // $accept - S_root = 107, // root - S_program = 108, // program - S_inline = 109, // inline - S_include = 110, // include - S_declaration = 111, // declaration - S_decl_usingtree = 112, // decl_usingtree - S_decl_constant = 113, // decl_constant - S_decl_thread = 114, // decl_thread - S_stmt = 115, // stmt - S_stmt_block = 116, // stmt_block - S_stmt_list = 117, // stmt_list - S_stmt_expr = 118, // stmt_expr - S_stmt_call = 119, // stmt_call - S_stmt_assign = 120, // stmt_assign - S_stmt_endon = 121, // stmt_endon - S_stmt_notify = 122, // stmt_notify - S_stmt_wait = 123, // stmt_wait - S_stmt_waittill = 124, // stmt_waittill - S_stmt_waittillmatch = 125, // stmt_waittillmatch - S_stmt_waittillframeend = 126, // stmt_waittillframeend - S_stmt_waitframe = 127, // stmt_waitframe - S_stmt_if = 128, // stmt_if - S_stmt_ifelse = 129, // stmt_ifelse - S_stmt_while = 130, // stmt_while - S_stmt_dowhile = 131, // stmt_dowhile - S_stmt_for = 132, // stmt_for - S_stmt_foreach = 133, // stmt_foreach - S_stmt_switch = 134, // stmt_switch - S_stmt_case = 135, // stmt_case - S_stmt_default = 136, // stmt_default - S_stmt_break = 137, // stmt_break - S_stmt_continue = 138, // stmt_continue - S_stmt_return = 139, // stmt_return - S_stmt_breakpoint = 140, // stmt_breakpoint - S_stmt_prof_begin = 141, // stmt_prof_begin - S_stmt_prof_end = 142, // stmt_prof_end - S_expr = 143, // expr - S_expr_or_empty = 144, // expr_or_empty - S_expr_assign = 145, // expr_assign - S_expr_increment = 146, // expr_increment - S_expr_decrement = 147, // expr_decrement - S_expr_ternary = 148, // expr_ternary - S_expr_binary = 149, // expr_binary - S_expr_primitive = 150, // expr_primitive - S_expr_complement = 151, // expr_complement - S_expr_not = 152, // expr_not - S_expr_call = 153, // expr_call - S_expr_method = 154, // expr_method - S_expr_function = 155, // expr_function - S_expr_pointer = 156, // expr_pointer - S_expr_add_array = 157, // expr_add_array - S_expr_parameters = 158, // expr_parameters - S_expr_arguments = 159, // expr_arguments - S_expr_arguments_no_empty = 160, // expr_arguments_no_empty - S_expr_reference = 161, // expr_reference - S_expr_array = 162, // expr_array - S_expr_field = 163, // expr_field - S_expr_size = 164, // expr_size - S_expr_paren = 165, // expr_paren - S_expr_object = 166, // expr_object - S_expr_thisthread = 167, // expr_thisthread - S_expr_empty_array = 168, // expr_empty_array - S_expr_undefined = 169, // expr_undefined - S_expr_game = 170, // expr_game - S_expr_self = 171, // expr_self - S_expr_anim = 172, // expr_anim - S_expr_level = 173, // expr_level - S_expr_animation = 174, // expr_animation - S_expr_animtree = 175, // expr_animtree - S_expr_identifier = 176, // expr_identifier - S_expr_path = 177, // expr_path - S_expr_istring = 178, // expr_istring - S_expr_string = 179, // expr_string - S_expr_color = 180, // expr_color - S_expr_vector = 181, // expr_vector - S_expr_float = 182, // expr_float - S_expr_integer = 183, // expr_integer - S_expr_false = 184, // expr_false - S_expr_true = 185 // expr_true + S_DEVBEGIN = 3, // "/#" + S_DEVEND = 4, // "#/" + S_INLINE = 5, // "#inline" + S_INCLUDE = 6, // "#include" + S_USINGTREE = 7, // "#using_animtree" + S_ANIMTREE = 8, // "#animtree" + S_ENDON = 9, // "endon" + S_NOTIFY = 10, // "notify" + S_WAIT = 11, // "wait" + S_WAITTILL = 12, // "waittill" + S_WAITTILLMATCH = 13, // "waittillmatch" + S_WAITTILLFRAMEEND = 14, // "waittillframeend" + S_WAITFRAME = 15, // "waitframe" + S_IF = 16, // "if" + S_ELSE = 17, // "else" + S_DO = 18, // "do" + S_WHILE = 19, // "while" + S_FOR = 20, // "for" + S_FOREACH = 21, // "foreach" + S_IN = 22, // "in" + S_SWITCH = 23, // "switch" + S_CASE = 24, // "case" + S_DEFAULT = 25, // "default" + S_BREAK = 26, // "break" + S_CONTINUE = 27, // "continue" + S_RETURN = 28, // "return" + S_BREAKPOINT = 29, // "breakpoint" + S_PROFBEGIN = 30, // "prof_begin" + S_PROFEND = 31, // "prof_end" + S_THREAD = 32, // "thread" + S_CHILDTHREAD = 33, // "childthread" + S_THISTHREAD = 34, // "thisthread" + S_CALL = 35, // "call" + S_TRUE = 36, // "true" + S_FALSE = 37, // "false" + S_UNDEFINED = 38, // "undefined" + S_SIZE = 39, // ".size" + S_GAME = 40, // "game" + S_SELF = 41, // "self" + S_ANIM = 42, // "anim" + S_LEVEL = 43, // "level" + S_LPAREN = 44, // "(" + S_RPAREN = 45, // ")" + S_LBRACE = 46, // "{" + S_RBRACE = 47, // "}" + S_LBRACKET = 48, // "[" + S_RBRACKET = 49, // "]" + S_COMMA = 50, // "," + S_DOT = 51, // "." + S_DOUBLECOLON = 52, // "::" + S_COLON = 53, // ":" + S_SEMICOLON = 54, // ";" + S_QMARK = 55, // "?" + S_INCREMENT = 56, // "++" + S_DECREMENT = 57, // "--" + S_LSHIFT = 58, // "<<" + S_RSHIFT = 59, // ">>" + S_OR = 60, // "||" + S_AND = 61, // "&&" + S_EQUALITY = 62, // "==" + S_INEQUALITY = 63, // "!=" + S_LESS_EQUAL = 64, // "<=" + S_GREATER_EQUAL = 65, // ">=" + S_LESS = 66, // "<" + S_GREATER = 67, // ">" + S_NOT = 68, // "!" + S_COMPLEMENT = 69, // "~" + S_ASSIGN = 70, // "=" + S_ASSIGN_ADD = 71, // "+=" + S_ASSIGN_SUB = 72, // "-=" + S_ASSIGN_MUL = 73, // "*=" + S_ASSIGN_DIV = 74, // "/=" + S_ASSIGN_MOD = 75, // "%=" + S_ASSIGN_BW_OR = 76, // "|=" + S_ASSIGN_BW_AND = 77, // "&=" + S_ASSIGN_BW_EXOR = 78, // "^=" + S_ASSIGN_RSHIFT = 79, // ">>=" + S_ASSIGN_LSHIFT = 80, // "<<=" + S_BITWISE_OR = 81, // "|" + S_BITWISE_AND = 82, // "&" + S_BITWISE_EXOR = 83, // "^" + S_ADD = 84, // "+" + S_SUB = 85, // "-" + S_MUL = 86, // "*" + S_DIV = 87, // "/" + S_MOD = 88, // "%" + S_PATH = 89, // "path" + S_IDENTIFIER = 90, // "identifier" + S_STRING = 91, // "string literal" + S_ISTRING = 92, // "localized string" + S_COLOR = 93, // "color" + S_FLOAT = 94, // "float" + S_INT_DEC = 95, // "int" + S_INT_OCT = 96, // "octal int" + S_INT_BIN = 97, // "binary int" + S_INT_HEX = 98, // "hexadecimal int" + S_ADD_ARRAY = 99, // ADD_ARRAY + S_THEN = 100, // THEN + S_TERN = 101, // TERN + S_NEG = 102, // NEG + S_ANIMREF = 103, // ANIMREF + S_PREINC = 104, // PREINC + S_PREDEC = 105, // PREDEC + S_POSTINC = 106, // POSTINC + S_POSTDEC = 107, // POSTDEC + S_YYACCEPT = 108, // $accept + S_root = 109, // root + S_program = 110, // program + S_inline = 111, // inline + S_include = 112, // include + S_declaration = 113, // declaration + S_decl_usingtree = 114, // decl_usingtree + S_decl_constant = 115, // decl_constant + S_decl_thread = 116, // decl_thread + S_stmt = 117, // stmt + S_stmt_dev = 118, // stmt_dev + S_stmt_block = 119, // stmt_block + S_stmt_list = 120, // stmt_list + S_stmt_expr = 121, // stmt_expr + S_stmt_call = 122, // stmt_call + S_stmt_assign = 123, // stmt_assign + S_stmt_endon = 124, // stmt_endon + S_stmt_notify = 125, // stmt_notify + S_stmt_wait = 126, // stmt_wait + S_stmt_waittill = 127, // stmt_waittill + S_stmt_waittillmatch = 128, // stmt_waittillmatch + S_stmt_waittillframeend = 129, // stmt_waittillframeend + S_stmt_waitframe = 130, // stmt_waitframe + S_stmt_if = 131, // stmt_if + S_stmt_ifelse = 132, // stmt_ifelse + S_stmt_while = 133, // stmt_while + S_stmt_dowhile = 134, // stmt_dowhile + S_stmt_for = 135, // stmt_for + S_stmt_foreach = 136, // stmt_foreach + S_stmt_switch = 137, // stmt_switch + S_stmt_case = 138, // stmt_case + S_stmt_default = 139, // stmt_default + S_stmt_break = 140, // stmt_break + S_stmt_continue = 141, // stmt_continue + S_stmt_return = 142, // stmt_return + S_stmt_breakpoint = 143, // stmt_breakpoint + S_stmt_prof_begin = 144, // stmt_prof_begin + S_stmt_prof_end = 145, // stmt_prof_end + S_expr = 146, // expr + S_expr_or_empty = 147, // expr_or_empty + S_expr_assign = 148, // expr_assign + S_expr_increment = 149, // expr_increment + S_expr_decrement = 150, // expr_decrement + S_expr_ternary = 151, // expr_ternary + S_expr_binary = 152, // expr_binary + S_expr_primitive = 153, // expr_primitive + S_expr_complement = 154, // expr_complement + S_expr_not = 155, // expr_not + S_expr_call = 156, // expr_call + S_expr_method = 157, // expr_method + S_expr_function = 158, // expr_function + S_expr_pointer = 159, // expr_pointer + S_expr_add_array = 160, // expr_add_array + S_expr_parameters = 161, // expr_parameters + S_expr_arguments = 162, // expr_arguments + S_expr_arguments_no_empty = 163, // expr_arguments_no_empty + S_expr_reference = 164, // expr_reference + S_expr_array = 165, // expr_array + S_expr_field = 166, // expr_field + S_expr_size = 167, // expr_size + S_expr_paren = 168, // expr_paren + S_expr_object = 169, // expr_object + S_expr_thisthread = 170, // expr_thisthread + S_expr_empty_array = 171, // expr_empty_array + S_expr_undefined = 172, // expr_undefined + S_expr_game = 173, // expr_game + S_expr_self = 174, // expr_self + S_expr_anim = 175, // expr_anim + S_expr_level = 176, // expr_level + S_expr_animation = 177, // expr_animation + S_expr_animtree = 178, // expr_animtree + S_expr_identifier = 179, // expr_identifier + S_expr_path = 180, // expr_path + S_expr_istring = 181, // expr_istring + S_expr_string = 182, // expr_string + S_expr_color = 183, // expr_color + S_expr_vector = 184, // expr_vector + S_expr_float = 185, // expr_float + S_expr_integer = 186, // expr_integer + S_expr_false = 187, // expr_false + S_expr_true = 188 // expr_true }; }; @@ -1248,6 +1254,7 @@ namespace xsk { namespace gsc { namespace s1 { value.move< ast::stmt_ifelse::ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (std::move (that.value)); @@ -2519,6 +2526,7 @@ switch (yykind) value.template destroy< ast::stmt_ifelse::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.template destroy< ast::stmt_list::ptr > (); @@ -2782,6 +2790,36 @@ switch (yykind) return symbol_type (token::S1UNDEF, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_DEVBEGIN (location_type l) + { + return symbol_type (token::DEVBEGIN, std::move (l)); + } +#else + static + symbol_type + make_DEVBEGIN (const location_type& l) + { + return symbol_type (token::DEVBEGIN, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_DEVEND (location_type l) + { + return symbol_type (token::DEVEND, std::move (l)); + } +#else + static + symbol_type + make_DEVEND (const location_type& l) + { + return symbol_type (token::DEVEND, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4671,9 +4709,9 @@ switch (yykind) /// Constants. enum { - yylast_ = 2075, ///< Last index in yytable_. - yynnts_ = 80, ///< Number of nonterminal symbols. - yyfinal_ = 19 ///< Termination state number. + yylast_ = 2254, ///< Last index in yytable_. + yynnts_ = 81, ///< Number of nonterminal symbols. + yyfinal_ = 21 ///< Termination state number. }; @@ -4926,6 +4964,7 @@ switch (yykind) value.copy< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.copy< ast::stmt_list::ptr > (YY_MOVE (that.value)); @@ -5243,6 +5282,7 @@ switch (yykind) value.move< ast::stmt_ifelse::ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (YY_MOVE (s.value)); @@ -5368,7 +5408,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::s1 -#line 5372 "parser.hpp" +#line 5412 "parser.hpp" diff --git a/src/s2/xsk/compiler.cpp b/src/s2/xsk/compiler.cpp index 7f7e76b6..5a81ef82 100644 --- a/src/s2/xsk/compiler.cpp +++ b/src/s2/xsk/compiler.cpp @@ -85,6 +85,7 @@ void compiler::compile_program(const ast::program::ptr& program) constants_.clear(); local_functions_.clear(); index_ = 1; + developer_thread_ = false; for (const auto& entry : program->declarations) { @@ -150,6 +151,12 @@ void compiler::emit_declaration(const ast::decl& decl) { switch (decl.kind()) { + case ast::kind::decl_dev_begin: + developer_thread_ = true; + break; + case ast::kind::decl_dev_end: + developer_thread_ = false; + break; case ast::kind::decl_usingtree: emit_decl_usingtree(decl.as_usingtree); break; @@ -166,6 +173,9 @@ void compiler::emit_declaration(const ast::decl& decl) void compiler::emit_decl_usingtree(const ast::decl_usingtree::ptr& animtree) { + if(developer_thread_) + throw comp_error(animtree->loc(), "cannot put #using_animtree inside /# ... #/ comment"); + animtrees_.push_back({ animtree->name->value, false }); } diff --git a/src/s2/xsk/lexer.cpp b/src/s2/xsk/lexer.cpp index c2ff52c7..226e81c6 100644 --- a/src/s2/xsk/lexer.cpp +++ b/src/s2/xsk/lexer.cpp @@ -555,8 +555,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 109 -#define YY_END_OF_BUFFER 110 +#define YY_NUM_RULES 111 +#define YY_END_OF_BUFFER 112 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -564,44 +564,45 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[330] = +static const flex_int16_t yy_accept[333] = { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 110, 108, - 1, 2, 93, 108, 108, 92, 96, 108, 53, 54, - 90, 88, 59, 89, 60, 91, 107, 107, 62, 63, - 77, 87, 78, 64, 99, 57, 58, 97, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 55, 95, 56, 94, 5, 6, - 5, 108, 90, 9, 10, 9, 74, 0, 101, 0, - 13, 0, 0, 0, 0, 83, 0, 72, 0, 85, - 0, 0, 12, 81, 65, 79, 66, 80, 103, 0, - 8, 4, 3, 82, 103, 107, 104, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 112, 110, + 1, 2, 95, 110, 110, 94, 98, 110, 55, 56, + 92, 90, 61, 91, 62, 93, 109, 109, 64, 65, + 79, 89, 80, 66, 101, 59, 60, 99, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 57, 97, 58, 96, 5, 6, + 5, 12, 13, 12, 110, 92, 93, 76, 0, 103, + 0, 15, 0, 0, 0, 0, 85, 0, 74, 0, + 87, 0, 0, 8, 83, 67, 81, 68, 82, 105, + 0, 11, 4, 3, 84, 105, 109, 106, 0, 0, - 0, 61, 69, 75, 73, 76, 70, 99, 86, 99, - 99, 99, 99, 99, 99, 27, 99, 99, 99, 99, - 99, 25, 31, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 84, 71, 7, 11, 0, 101, - 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, - 0, 101, 0, 103, 0, 3, 103, 103, 104, 105, - 106, 98, 67, 68, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 29, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, 102, 0, - 0, 0, 0, 0, 100, 0, 0, 100, 0, 0, + 0, 0, 63, 71, 77, 75, 78, 72, 101, 88, + 101, 101, 101, 101, 101, 101, 29, 101, 101, 101, + 101, 101, 27, 33, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 86, 73, 7, 14, 10, + 9, 0, 103, 0, 0, 0, 0, 0, 0, 102, + 0, 0, 0, 0, 103, 0, 105, 0, 3, 105, + 105, 106, 107, 108, 100, 69, 70, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 31, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 104, 0, 0, 0, 0, 0, 102, 0, 0, - 51, 99, 44, 33, 99, 99, 99, 26, 99, 99, - 99, 49, 99, 99, 99, 99, 50, 99, 99, 99, - 45, 99, 20, 99, 0, 0, 0, 0, 0, 48, - 35, 99, 99, 99, 18, 46, 99, 52, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 28, 0, 0, - 0, 0, 0, 99, 99, 99, 99, 99, 19, 99, - 99, 37, 32, 99, 41, 99, 99, 99, 102, 0, - 0, 14, 0, 99, 99, 99, 34, 30, 99, 99, - 99, 99, 99, 99, 0, 15, 0, 99, 99, 36, - 99, 40, 99, 99, 99, 21, 17, 0, 99, 99, + 102, 0, 0, 53, 101, 46, 35, 101, 101, 101, + 28, 101, 101, 101, 51, 101, 101, 101, 101, 52, + 101, 101, 101, 47, 101, 22, 101, 0, 0, 0, + 0, 0, 50, 37, 101, 101, 101, 20, 48, 101, + 54, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 30, 0, 0, 0, 0, 0, 101, 101, 101, 101, + 101, 21, 101, 101, 39, 34, 101, 43, 101, 101, + 101, 104, 0, 0, 16, 0, 101, 101, 101, 36, + 32, 101, 101, 101, 101, 101, 101, 0, 17, 0, + 101, 101, 38, 101, 42, 101, 101, 101, 23, 19, - 99, 99, 47, 24, 99, 99, 0, 38, 99, 39, - 43, 99, 99, 0, 42, 99, 99, 0, 99, 99, - 0, 99, 22, 0, 99, 16, 99, 23, 0 + 0, 101, 101, 101, 101, 49, 26, 101, 101, 0, + 40, 101, 41, 45, 101, 101, 0, 44, 101, 101, + 0, 101, 101, 0, 101, 24, 0, 101, 18, 101, + 25, 0 } ; static const YY_CHAR yy_ec[256] = @@ -647,91 +648,93 @@ static const YY_CHAR yy_meta[64] = 1, 1, 1 } ; -static const flex_int16_t yy_base[350] = +static const flex_int16_t yy_base[353] = { 0, - 0, 0, 61, 62, 60, 63, 64, 65, 706, 707, - 707, 707, 680, 71, 60, 679, 73, 70, 707, 707, - 63, 70, 707, 69, 71, 94, 102, 109, 681, 707, - 61, 677, 76, 707, 668, 707, 707, 675, 60, 74, - 99, 104, 63, 101, 80, 106, 75, 108, 111, 119, - 120, 113, 117, 131, 707, 122, 707, 707, 707, 707, - 682, 139, 673, 707, 707, 680, 707, 154, 707, 164, - 707, 0, 647, 646, 641, 707, 157, 707, 162, 707, - 163, 170, 707, 707, 707, 707, 707, 707, 180, 648, - 707, 707, 0, 707, 186, 192, 198, 158, 205, 223, + 0, 0, 61, 62, 63, 64, 65, 66, 712, 713, + 713, 713, 686, 63, 58, 685, 76, 67, 713, 713, + 62, 67, 713, 73, 86, 85, 96, 102, 687, 713, + 65, 683, 68, 713, 674, 713, 713, 681, 75, 76, + 93, 99, 98, 105, 111, 108, 78, 103, 100, 113, + 118, 125, 123, 127, 713, 136, 713, 713, 713, 713, + 688, 713, 713, 687, 145, 678, 161, 713, 158, 713, + 163, 713, 0, 653, 652, 647, 713, 160, 713, 161, + 713, 165, 176, 713, 713, 713, 713, 713, 713, 183, + 654, 713, 713, 0, 713, 187, 194, 200, 195, 216, - 0, 707, 667, 707, 707, 707, 666, 657, 707, 54, - 137, 182, 147, 153, 194, 656, 156, 148, 187, 193, - 199, 655, 654, 197, 200, 207, 204, 222, 226, 233, - 213, 234, 237, 239, 707, 707, 707, 707, 243, 244, - 270, 0, 641, 146, 640, 274, 707, 278, 271, 283, - 279, 280, 284, 707, 625, 0, 276, 707, 303, 282, - 0, 650, 707, 707, 257, 269, 281, 258, 287, 275, - 293, 292, 277, 298, 299, 302, 304, 305, 306, 308, - 311, 313, 309, 314, 316, 319, 321, 323, 0, 634, - 634, 635, 630, 353, 354, 361, 352, 356, 365, 637, + 234, 0, 713, 673, 713, 713, 713, 672, 663, 713, + 143, 148, 184, 147, 150, 197, 662, 189, 203, 191, + 193, 208, 661, 660, 190, 207, 214, 211, 233, 215, + 225, 224, 245, 236, 249, 713, 713, 713, 713, 713, + 713, 254, 263, 281, 0, 647, 148, 646, 278, 713, + 285, 280, 288, 283, 284, 292, 713, 631, 0, 284, + 713, 311, 290, 0, 656, 713, 713, 267, 287, 265, + 266, 286, 289, 301, 295, 302, 304, 306, 307, 308, + 309, 313, 312, 317, 318, 320, 323, 325, 327, 328, + 329, 0, 640, 640, 641, 636, 358, 360, 366, 361, - 644, 336, 643, 642, 338, 339, 340, 641, 343, 347, - 344, 640, 346, 357, 364, 350, 639, 368, 358, 371, - 638, 363, 373, 370, 0, 616, 614, 619, 624, 707, - 377, 376, 380, 384, 633, 632, 381, 631, 383, 385, - 386, 388, 389, 403, 392, 401, 405, 630, 0, 610, - 621, 619, 623, 406, 407, 391, 409, 411, 625, 416, - 412, 624, 623, 414, 622, 415, 421, 426, 707, 613, - 612, 707, 615, 427, 419, 429, 618, 617, 432, 434, - 435, 436, 445, 447, 608, 707, 599, 446, 448, 614, - 451, 613, 449, 450, 458, 455, 707, 600, 452, 465, + 365, 372, 643, 650, 53, 649, 648, 344, 345, 346, + 647, 347, 354, 352, 646, 350, 367, 370, 355, 645, + 353, 369, 371, 644, 377, 378, 380, 0, 622, 620, + 625, 630, 713, 379, 381, 382, 389, 639, 638, 385, + 637, 383, 396, 384, 394, 395, 407, 409, 392, 410, + 636, 0, 616, 627, 625, 629, 412, 413, 393, 416, + 417, 631, 418, 419, 630, 629, 420, 628, 425, 423, + 430, 713, 619, 618, 713, 621, 431, 432, 434, 624, + 623, 436, 433, 445, 447, 448, 438, 614, 713, 605, + 449, 450, 620, 454, 619, 456, 457, 459, 461, 713, - 459, 467, 611, 610, 468, 472, 577, 583, 471, 541, - 530, 477, 479, 508, 501, 480, 482, 480, 483, 485, - 490, 484, 494, 485, 486, 707, 490, 489, 707, 535, - 543, 551, 556, 564, 570, 574, 582, 482, 590, 598, - 606, 614, 618, 304, 626, 634, 245, 177, 109 + 606, 462, 468, 469, 471, 617, 616, 473, 475, 600, + 597, 474, 588, 546, 480, 477, 514, 534, 482, 487, + 487, 486, 488, 496, 495, 502, 493, 489, 713, 500, + 496, 713, 540, 548, 556, 561, 569, 575, 579, 587, + 519, 595, 603, 611, 619, 623, 518, 631, 639, 305, + 246, 179 } ; -static const flex_int16_t yy_def[350] = +static const flex_int16_t yy_def[353] = { 0, - 329, 1, 330, 330, 1, 1, 331, 331, 329, 329, - 329, 329, 329, 332, 333, 329, 329, 334, 329, 329, - 329, 329, 329, 329, 329, 329, 335, 335, 329, 329, - 329, 329, 329, 329, 336, 329, 329, 329, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 329, 329, 329, 329, 329, 329, - 329, 333, 329, 329, 329, 329, 329, 332, 329, 337, - 329, 338, 338, 329, 329, 329, 339, 329, 340, 329, - 334, 341, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 342, 329, 329, 335, 335, 335, 335, 335, + 332, 1, 333, 333, 334, 334, 1, 1, 332, 332, + 332, 332, 332, 335, 336, 332, 332, 337, 332, 332, + 332, 332, 332, 332, 332, 332, 338, 338, 332, 332, + 332, 332, 332, 332, 339, 332, 332, 332, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 336, 332, 332, 332, 335, 332, + 340, 332, 341, 341, 332, 332, 332, 342, 332, 343, + 332, 337, 344, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 345, 332, 332, 338, 338, 338, 338, - 343, 329, 329, 329, 329, 329, 329, 336, 329, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 329, 329, 329, 329, 332, 332, - 337, 344, 329, 329, 329, 339, 329, 345, 340, 346, - 334, 334, 341, 329, 329, 342, 329, 329, 335, 335, - 100, 343, 329, 329, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 347, 329, - 329, 329, 329, 339, 339, 345, 340, 340, 346, 329, + 338, 346, 332, 332, 332, 332, 332, 332, 339, 332, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 332, 332, 332, 332, 332, + 332, 335, 335, 340, 347, 332, 332, 332, 342, 332, + 348, 343, 349, 337, 337, 344, 332, 332, 345, 332, + 332, 338, 338, 101, 346, 332, 332, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 350, 332, 332, 332, 332, 342, 342, 348, 343, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 348, 329, 329, 329, 329, 329, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 349, 329, - 329, 329, 329, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 329, 329, - 329, 329, 329, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 329, 329, 329, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 329, 329, 336, 336, + 343, 349, 332, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 351, 332, 332, + 332, 332, 332, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 352, 332, 332, 332, 332, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 332, 332, 332, 332, 332, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 332, 332, 332, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 332, - 336, 336, 336, 336, 336, 336, 329, 336, 336, 336, - 336, 336, 336, 329, 336, 336, 336, 329, 336, 336, - 329, 336, 336, 329, 336, 329, 336, 336, 0, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329 + 332, 339, 339, 339, 339, 339, 339, 339, 339, 332, + 339, 339, 339, 339, 339, 339, 332, 339, 339, 339, + 332, 339, 339, 332, 339, 339, 332, 339, 332, 339, + 339, 0, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332 } ; -static const flex_int16_t yy_nxt[771] = +static const flex_int16_t yy_nxt[777] = { 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 28, @@ -739,87 +742,88 @@ static const flex_int16_t yy_nxt[771] = 35, 36, 10, 37, 38, 35, 39, 40, 41, 42, 43, 44, 45, 35, 46, 35, 47, 35, 48, 35, 49, 50, 51, 52, 53, 35, 54, 35, 35, 55, - 56, 57, 58, 60, 60, 62, 65, 65, 62, 66, - 66, 63, 61, 61, 63, 69, 71, 77, 69, 83, - 78, 79, 85, 87, 103, 104, 101, 84, 89, 89, - 89, 89, 101, 88, 86, 101, 73, 80, 165, 91, + 56, 57, 58, 60, 60, 63, 63, 70, 64, 64, + 65, 65, 61, 61, 72, 70, 66, 66, 84, 86, + 78, 67, 67, 79, 80, 102, 85, 88, 104, 105, + 92, 87, 107, 108, 74, 71, 93, 89, 234, 83, - 106, 107, 82, 70, 74, 92, 101, 101, 110, 117, - 93, 118, 101, 269, 75, 124, 121, 95, 94, 96, - 97, 97, 96, 90, 95, 111, 96, 96, 96, 96, - 99, 101, 100, 101, 101, 112, 101, 119, 101, 99, - 101, 101, 113, 101, 115, 101, 135, 122, 114, 101, - 120, 101, 101, 116, 123, 138, 130, 125, 69, 127, - 128, 147, 126, 101, 131, 132, 68, 133, 140, 101, - 147, 69, 81, 329, 134, 73, 129, 166, 152, 101, - 101, 249, 136, 74, 191, 101, 70, 173, 101, 148, - 101, 169, 192, 75, 150, 82, 141, 89, 89, 89, + 81, 94, 75, 90, 90, 90, 90, 102, 102, 95, + 102, 96, 76, 97, 98, 98, 97, 96, 125, 97, + 97, 97, 97, 111, 100, 102, 101, 112, 102, 113, + 102, 102, 102, 100, 102, 102, 114, 102, 91, 116, + 102, 120, 115, 102, 118, 102, 119, 122, 117, 123, + 102, 127, 126, 128, 121, 102, 124, 102, 129, 102, + 136, 140, 70, 134, 150, 69, 141, 143, 131, 150, + 135, 133, 93, 70, 130, 102, 132, 94, 82, 102, + 102, 74, 102, 272, 155, 95, 194, 168, 169, 75, + 71, 172, 151, 153, 195, 144, 137, 83, 173, 76, - 89, 170, 153, 157, 157, 157, 157, 95, 172, 96, - 96, 96, 96, 95, 101, 159, 159, 159, 96, 101, - 329, 154, 160, 160, 101, 101, 101, 158, 167, 101, - 101, 101, 101, 174, 168, 171, 101, 101, 329, 101, - 161, 161, 161, 161, 175, 101, 176, 69, 69, 225, - 161, 161, 177, 178, 101, 101, 179, 180, 101, 161, - 161, 161, 161, 161, 161, 101, 101, 185, 181, 101, - 182, 101, 68, 186, 140, 70, 70, 183, 147, 147, - 146, 187, 195, 188, 184, 149, 81, 69, 69, 101, - 101, 198, 152, 157, 157, 157, 157, 329, 204, 160, + 90, 90, 90, 90, 160, 160, 160, 160, 156, 96, + 332, 97, 97, 97, 97, 96, 102, 162, 162, 162, + 97, 102, 102, 102, 157, 102, 102, 102, 161, 102, + 170, 332, 102, 163, 163, 102, 171, 177, 174, 102, + 102, 175, 176, 102, 178, 180, 102, 102, 102, 332, + 252, 164, 164, 164, 164, 179, 102, 102, 70, 185, + 181, 164, 164, 182, 183, 102, 102, 70, 102, 186, + 164, 164, 164, 164, 164, 164, 187, 102, 188, 184, + 190, 102, 150, 69, 189, 143, 71, 149, 150, 198, + 152, 70, 70, 191, 82, 71, 201, 102, 102, 102, - 160, 101, 141, 150, 201, 202, 148, 101, 189, 101, - 196, 82, 82, 101, 101, 199, 153, 158, 95, 101, - 159, 159, 159, 96, 101, 101, 209, 203, 206, 207, - 101, 101, 208, 205, 101, 101, 101, 101, 101, 211, - 101, 101, 212, 101, 213, 101, 101, 215, 101, 214, - 210, 101, 217, 101, 220, 101, 221, 147, 147, 222, - 147, 219, 216, 146, 147, 195, 218, 149, 101, 224, - 101, 101, 101, 198, 223, 101, 101, 232, 101, 101, - 237, 231, 101, 233, 150, 148, 148, 236, 150, 101, - 101, 235, 238, 196, 234, 101, 101, 199, 239, 240, + 155, 160, 160, 160, 160, 332, 207, 163, 163, 228, + 151, 206, 153, 144, 204, 83, 83, 199, 102, 102, + 202, 102, 102, 205, 156, 161, 96, 102, 162, 162, + 162, 97, 208, 102, 102, 211, 102, 210, 102, 102, + 102, 102, 209, 102, 102, 102, 214, 215, 216, 102, + 102, 212, 102, 217, 218, 102, 213, 102, 220, 102, + 102, 102, 150, 223, 150, 224, 219, 225, 149, 150, + 198, 221, 222, 150, 152, 227, 102, 102, 102, 102, + 201, 226, 102, 235, 102, 102, 102, 102, 240, 236, + 151, 245, 151, 153, 239, 238, 241, 153, 199, 102, - 101, 241, 101, 101, 245, 101, 242, 244, 101, 101, - 248, 243, 101, 101, 246, 101, 101, 101, 101, 258, - 101, 101, 260, 101, 101, 261, 247, 254, 256, 255, - 257, 263, 264, 101, 262, 101, 266, 101, 101, 101, - 259, 101, 265, 101, 101, 276, 101, 101, 101, 268, - 275, 101, 267, 101, 278, 274, 279, 283, 101, 101, - 280, 101, 277, 282, 101, 281, 101, 101, 101, 290, - 289, 288, 284, 292, 291, 293, 294, 101, 101, 101, - 101, 101, 101, 101, 101, 302, 142, 101, 300, 303, - 101, 101, 295, 296, 299, 301, 305, 101, 304, 101, + 237, 102, 102, 102, 202, 243, 244, 247, 242, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 248, 249, + 251, 102, 246, 261, 102, 102, 102, 102, 102, 257, + 259, 250, 265, 263, 258, 260, 264, 266, 267, 102, + 262, 102, 102, 270, 102, 102, 268, 279, 102, 102, + 102, 102, 102, 269, 271, 102, 278, 102, 282, 286, + 281, 277, 102, 102, 102, 102, 102, 283, 102, 280, + 102, 284, 295, 285, 293, 291, 287, 102, 294, 102, + 102, 102, 102, 292, 299, 296, 102, 297, 102, 102, + 303, 102, 305, 102, 102, 298, 306, 302, 304, 307, - 101, 309, 306, 101, 101, 308, 311, 310, 313, 101, - 315, 101, 101, 316, 101, 101, 101, 101, 101, 312, - 320, 101, 101, 322, 325, 326, 101, 319, 323, 328, - 324, 321, 317, 101, 327, 59, 59, 59, 59, 59, - 59, 59, 59, 64, 64, 64, 64, 64, 64, 64, - 64, 68, 68, 68, 68, 68, 68, 68, 68, 72, - 72, 318, 101, 72, 81, 81, 81, 81, 81, 81, - 81, 81, 98, 101, 98, 98, 98, 98, 108, 108, - 108, 108, 139, 139, 139, 139, 139, 139, 139, 139, - 146, 146, 146, 146, 146, 146, 146, 146, 149, 149, + 102, 102, 308, 102, 312, 102, 102, 102, 309, 102, + 314, 316, 102, 318, 102, 311, 319, 313, 102, 102, + 102, 102, 192, 145, 315, 323, 325, 102, 102, 322, + 320, 326, 102, 329, 102, 328, 327, 330, 324, 331, + 59, 59, 59, 59, 59, 59, 59, 59, 62, 62, + 62, 62, 62, 62, 62, 62, 69, 69, 69, 69, + 69, 69, 69, 69, 73, 73, 102, 321, 73, 82, + 82, 82, 82, 82, 82, 82, 82, 99, 102, 99, + 99, 99, 99, 109, 109, 109, 109, 142, 142, 142, + 142, 142, 142, 142, 142, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 151, 151, 151, 151, - 151, 151, 151, 151, 156, 101, 156, 156, 156, 156, - 156, 156, 162, 162, 314, 162, 194, 194, 194, 194, - 194, 194, 194, 194, 197, 197, 197, 197, 197, 197, - 197, 197, 101, 101, 307, 101, 101, 298, 297, 101, - 101, 287, 286, 285, 101, 101, 101, 101, 273, 272, - 271, 270, 101, 101, 101, 101, 253, 252, 251, 250, - 101, 101, 101, 101, 101, 101, 101, 230, 229, 228, - 227, 226, 101, 200, 193, 190, 101, 101, 101, 101, - 164, 163, 155, 145, 144, 143, 138, 84, 137, 109, + 149, 149, 149, 152, 152, 152, 152, 152, 152, 152, + 152, 154, 154, 154, 154, 154, 154, 154, 154, 159, + 102, 159, 159, 159, 159, 159, 159, 165, 165, 102, + 165, 197, 197, 197, 197, 197, 197, 197, 197, 200, + 200, 200, 200, 200, 200, 200, 200, 317, 102, 102, + 310, 102, 102, 301, 300, 102, 102, 290, 289, 288, + 102, 102, 102, 102, 276, 275, 274, 273, 102, 102, + 102, 102, 256, 255, 254, 253, 102, 102, 102, 102, + 102, 102, 102, 233, 232, 231, 230, 229, 102, 203, + 196, 193, 102, 102, 102, 102, 167, 166, 158, 148, - 101, 105, 102, 76, 67, 329, 9, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329 + 147, 146, 85, 139, 138, 110, 102, 106, 103, 77, + 68, 332, 9, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332 } ; -static const flex_int16_t yy_chk[771] = +static const flex_int16_t yy_chk[777] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -827,84 +831,85 @@ static const flex_int16_t yy_chk[771] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 7, 8, 6, 7, - 8, 5, 3, 4, 6, 14, 15, 17, 18, 21, - 17, 17, 22, 24, 31, 31, 110, 21, 25, 25, - 25, 25, 39, 24, 22, 43, 15, 17, 110, 26, + 1, 1, 1, 3, 4, 5, 6, 14, 5, 6, + 7, 8, 3, 4, 15, 18, 7, 8, 21, 22, + 17, 7, 8, 17, 17, 205, 21, 24, 31, 31, + 26, 22, 33, 33, 15, 14, 26, 24, 205, 18, - 33, 33, 18, 14, 15, 26, 40, 47, 39, 43, - 26, 43, 45, 349, 15, 47, 45, 27, 26, 27, - 27, 27, 27, 25, 28, 40, 28, 28, 28, 28, - 27, 41, 27, 44, 27, 41, 42, 44, 46, 27, - 48, 28, 41, 49, 42, 52, 56, 46, 41, 53, - 44, 50, 51, 42, 46, 62, 52, 48, 68, 50, - 51, 77, 49, 54, 52, 53, 70, 54, 70, 111, - 79, 81, 82, 98, 54, 62, 51, 111, 82, 113, - 118, 348, 56, 62, 144, 114, 68, 118, 117, 77, - 98, 113, 144, 62, 79, 81, 70, 89, 89, 89, + 17, 26, 15, 25, 25, 25, 25, 39, 40, 26, + 47, 27, 15, 27, 27, 27, 27, 28, 47, 28, + 28, 28, 28, 39, 27, 41, 27, 40, 27, 41, + 43, 42, 49, 27, 28, 48, 41, 44, 25, 42, + 46, 44, 41, 45, 43, 50, 43, 45, 42, 46, + 51, 49, 48, 50, 44, 53, 46, 52, 51, 54, + 56, 65, 69, 54, 78, 71, 67, 71, 52, 80, + 54, 53, 67, 82, 51, 111, 52, 67, 83, 114, + 112, 65, 115, 352, 83, 67, 147, 111, 112, 65, + 69, 114, 78, 80, 147, 71, 56, 82, 115, 65, - 89, 114, 82, 95, 95, 95, 95, 96, 117, 96, - 96, 96, 96, 97, 112, 97, 97, 97, 97, 119, - 99, 89, 99, 99, 96, 120, 115, 95, 112, 124, - 97, 121, 125, 119, 112, 115, 127, 99, 100, 126, - 100, 100, 100, 100, 120, 131, 121, 139, 140, 347, - 100, 100, 124, 125, 128, 100, 126, 127, 129, 100, - 100, 100, 100, 100, 100, 130, 132, 131, 128, 133, - 129, 134, 141, 132, 141, 139, 140, 130, 146, 149, - 148, 133, 148, 134, 130, 150, 153, 151, 152, 165, - 168, 150, 153, 157, 157, 157, 157, 160, 168, 160, + 90, 90, 90, 90, 96, 96, 96, 96, 83, 97, + 99, 97, 97, 97, 97, 98, 113, 98, 98, 98, + 98, 118, 125, 120, 90, 121, 97, 99, 96, 116, + 113, 100, 98, 100, 100, 119, 113, 120, 116, 126, + 122, 118, 119, 128, 121, 125, 127, 130, 100, 101, + 351, 101, 101, 101, 101, 122, 132, 131, 142, 130, + 126, 101, 101, 127, 128, 129, 101, 143, 134, 131, + 101, 101, 101, 101, 101, 101, 131, 133, 132, 129, + 134, 135, 149, 144, 133, 144, 142, 151, 152, 151, + 153, 154, 155, 135, 156, 143, 153, 170, 171, 168, - 160, 166, 141, 149, 165, 166, 146, 170, 344, 173, - 148, 151, 152, 167, 160, 150, 153, 157, 159, 169, - 159, 159, 159, 159, 172, 171, 173, 167, 170, 171, - 174, 175, 172, 169, 176, 159, 177, 178, 179, 175, - 180, 183, 176, 181, 177, 182, 184, 179, 185, 178, - 174, 186, 181, 187, 184, 188, 185, 194, 195, 186, - 197, 183, 180, 196, 198, 196, 182, 199, 202, 188, - 205, 206, 207, 199, 187, 209, 211, 205, 213, 210, - 211, 202, 216, 206, 197, 194, 195, 210, 198, 214, - 219, 209, 213, 196, 207, 222, 215, 199, 214, 215, + 156, 160, 160, 160, 160, 163, 171, 163, 163, 350, + 149, 170, 152, 144, 168, 154, 155, 151, 172, 169, + 153, 173, 163, 169, 156, 160, 162, 175, 162, 162, + 162, 162, 172, 174, 176, 175, 177, 174, 178, 179, + 180, 181, 173, 162, 183, 182, 178, 179, 180, 184, + 185, 176, 186, 181, 182, 187, 177, 188, 184, 189, + 190, 191, 197, 187, 198, 188, 183, 189, 199, 200, + 199, 185, 186, 201, 202, 191, 208, 209, 210, 212, + 202, 190, 216, 208, 214, 221, 213, 219, 214, 209, + 197, 221, 198, 200, 213, 212, 216, 201, 199, 217, - 218, 216, 224, 220, 222, 223, 218, 220, 232, 231, - 224, 219, 233, 237, 223, 239, 234, 240, 241, 237, - 242, 243, 240, 256, 245, 240, 223, 231, 233, 232, - 234, 242, 243, 246, 241, 244, 245, 247, 254, 255, - 239, 257, 244, 258, 261, 256, 264, 266, 260, 247, - 255, 275, 246, 267, 258, 254, 260, 267, 268, 274, - 261, 276, 257, 266, 279, 264, 280, 281, 282, 276, - 275, 274, 268, 280, 279, 281, 282, 283, 288, 284, - 289, 293, 294, 291, 299, 293, 338, 296, 289, 294, - 295, 301, 283, 284, 288, 291, 296, 300, 295, 302, + 210, 222, 218, 223, 202, 218, 219, 223, 217, 225, + 226, 234, 227, 235, 236, 242, 244, 240, 225, 226, + 227, 237, 222, 240, 249, 259, 245, 246, 243, 234, + 236, 226, 244, 243, 235, 237, 243, 245, 246, 247, + 242, 248, 250, 249, 257, 258, 247, 259, 260, 261, + 263, 264, 267, 248, 250, 270, 258, 269, 263, 270, + 261, 257, 271, 277, 278, 283, 279, 264, 282, 260, + 287, 267, 283, 269, 279, 277, 271, 284, 282, 285, + 286, 291, 292, 278, 287, 284, 294, 285, 296, 297, + 292, 298, 296, 299, 302, 286, 297, 291, 294, 298, - 305, 300, 296, 309, 306, 299, 302, 301, 306, 312, - 309, 313, 316, 312, 317, 319, 322, 320, 325, 305, - 317, 328, 327, 319, 322, 324, 323, 316, 320, 327, - 321, 318, 313, 315, 325, 330, 330, 330, 330, 330, - 330, 330, 330, 331, 331, 331, 331, 331, 331, 331, - 331, 332, 332, 332, 332, 332, 332, 332, 332, 333, - 333, 314, 311, 333, 334, 334, 334, 334, 334, 334, - 334, 334, 335, 310, 335, 335, 335, 335, 336, 336, - 336, 336, 337, 337, 337, 337, 337, 337, 337, 337, - 339, 339, 339, 339, 339, 339, 339, 339, 340, 340, + 303, 304, 299, 305, 303, 308, 312, 309, 299, 316, + 305, 309, 315, 312, 319, 302, 315, 304, 322, 320, + 323, 328, 347, 341, 308, 320, 322, 325, 331, 319, + 316, 323, 330, 327, 326, 325, 324, 328, 321, 330, + 333, 333, 333, 333, 333, 333, 333, 333, 334, 334, + 334, 334, 334, 334, 334, 334, 335, 335, 335, 335, + 335, 335, 335, 335, 336, 336, 318, 317, 336, 337, + 337, 337, 337, 337, 337, 337, 337, 338, 314, 338, + 338, 338, 338, 339, 339, 339, 339, 340, 340, 340, + 340, 340, 340, 340, 340, 342, 342, 342, 342, 342, - 340, 340, 340, 340, 340, 340, 341, 341, 341, 341, - 341, 341, 341, 341, 342, 308, 342, 342, 342, 342, - 342, 342, 343, 343, 307, 343, 345, 345, 345, 345, - 345, 345, 345, 345, 346, 346, 346, 346, 346, 346, - 346, 346, 304, 303, 298, 292, 290, 287, 285, 278, - 277, 273, 271, 270, 265, 263, 262, 259, 253, 252, - 251, 250, 248, 238, 236, 235, 229, 228, 227, 226, - 221, 217, 212, 208, 204, 203, 201, 200, 193, 192, - 191, 190, 162, 155, 145, 143, 123, 122, 116, 108, - 107, 103, 90, 75, 74, 73, 66, 63, 61, 38, + 342, 342, 342, 343, 343, 343, 343, 343, 343, 343, + 343, 344, 344, 344, 344, 344, 344, 344, 344, 345, + 313, 345, 345, 345, 345, 345, 345, 346, 346, 311, + 346, 348, 348, 348, 348, 348, 348, 348, 348, 349, + 349, 349, 349, 349, 349, 349, 349, 310, 307, 306, + 301, 295, 293, 290, 288, 281, 280, 276, 274, 273, + 268, 266, 265, 262, 256, 255, 254, 253, 251, 241, + 239, 238, 232, 231, 230, 229, 224, 220, 215, 211, + 207, 206, 204, 203, 196, 195, 194, 193, 165, 158, + 148, 146, 124, 123, 117, 109, 108, 104, 91, 76, - 35, 32, 29, 16, 13, 9, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329 + 75, 74, 66, 64, 61, 38, 35, 32, 29, 16, + 13, 9, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332 } ; /* The intent behind this definition is that it'll catch @@ -925,14 +930,14 @@ static const flex_int16_t yy_chk[771] = #line 25 "lexer.lpp" #define YY_USER_ACTION ctx->loc.columns(yyleng); -#line 928 "lexer.cpp" +#line 933 "lexer.cpp" -#line 930 "lexer.cpp" +#line 935 "lexer.cpp" #define INITIAL 0 -#define COMMENT_BLOCK_STATE 1 -#define DEVBLOCK_ON_STATE 2 -#define DEVBLOCK_OFF_STATE 3 +#define COMMENT_STATE 1 +#define DEV_OFF_STATE 2 +#define DEV_ON_STATE 3 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way @@ -1196,7 +1201,7 @@ YY_DECL ctx->loc.step(); -#line 1199 "lexer.cpp" +#line 1204 "lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1223,13 +1228,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 >= 330 ) + if ( yy_current_state >= 333 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 329 ); + while ( yy_current_state != 332 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -1257,557 +1262,576 @@ YY_RULE_SETUP case 2: /* rule 2 can match eol */ YY_RULE_SETUP -#line 52 "lexer.lpp" +#line 51 "lexer.lpp" { ctx->loc.lines(yyleng); ctx->loc.step(); } YY_BREAK case 3: YY_RULE_SETUP -#line 54 "lexer.lpp" +#line 53 "lexer.lpp" YY_BREAK case 4: YY_RULE_SETUP -#line 56 "lexer.lpp" -{ BEGIN(COMMENT_BLOCK_STATE); } +#line 55 "lexer.lpp" +{ BEGIN(COMMENT_STATE); } YY_BREAK case 5: YY_RULE_SETUP -#line 57 "lexer.lpp" +#line 56 "lexer.lpp" YY_BREAK case 6: /* rule 6 can match eol */ YY_RULE_SETUP -#line 58 "lexer.lpp" +#line 57 "lexer.lpp" { ctx->loc.lines(yyleng); ctx->loc.step(); } YY_BREAK case 7: YY_RULE_SETUP -#line 59 "lexer.lpp" +#line 58 "lexer.lpp" { BEGIN(INITIAL); } YY_BREAK +case YY_STATE_EOF(COMMENT_STATE): +#line 59 "lexer.lpp" +{ throw s2::parser::syntax_error(ctx->loc, "unmatched multiline comment start ('/*')"); } + YY_BREAK case 8: YY_RULE_SETUP -#line 61 "lexer.lpp" -{ BEGIN(ctx->mode == xsk::gsc::build::dev ? DEVBLOCK_ON_STATE : DEVBLOCK_OFF_STATE); } +#line 60 "lexer.lpp" +{ throw s2::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } YY_BREAK case 9: YY_RULE_SETUP #line 62 "lexer.lpp" - +{ throw s2::parser::syntax_error(ctx->loc, "cannot recurse devblock ('/#')"); } YY_BREAK case 10: -/* rule 10 can match eol */ YY_RULE_SETUP #line 63 "lexer.lpp" -{ ctx->loc.lines(yyleng); ctx->loc.step(); } +{ BEGIN(INITIAL); return s2::parser::make_DEVEND(ctx->loc); } + YY_BREAK +case YY_STATE_EOF(DEV_ON_STATE): +#line 64 "lexer.lpp" +{ throw s2::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } YY_BREAK case 11: YY_RULE_SETUP -#line 64 "lexer.lpp" -{ BEGIN(INITIAL); } +#line 66 "lexer.lpp" +{ BEGIN(ctx->mode == xsk::gsc::build::dev ? DEV_ON_STATE : DEV_OFF_STATE); if(ctx->mode == xsk::gsc::build::dev) return s2::parser::make_DEVBEGIN(ctx->loc); } YY_BREAK case 12: YY_RULE_SETUP -#line 66 "lexer.lpp" -{ throw s2::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } +#line 67 "lexer.lpp" + YY_BREAK case 13: +/* rule 13 can match eol */ YY_RULE_SETUP -#line 67 "lexer.lpp" -{ throw s2::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } +#line 68 "lexer.lpp" +{ ctx->loc.lines(yyleng); ctx->loc.step(); } YY_BREAK case 14: YY_RULE_SETUP #line 69 "lexer.lpp" -{ return s2::parser::make_INLINE(ctx->loc); } +{ BEGIN(INITIAL); } + YY_BREAK +case YY_STATE_EOF(DEV_OFF_STATE): +#line 70 "lexer.lpp" +{ throw s2::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } YY_BREAK case 15: YY_RULE_SETUP -#line 70 "lexer.lpp" -{ return s2::parser::make_INCLUDE(ctx->loc); } +#line 71 "lexer.lpp" +{ throw s2::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } YY_BREAK case 16: YY_RULE_SETUP -#line 71 "lexer.lpp" -{ return s2::parser::make_USINGTREE(ctx->loc); } +#line 73 "lexer.lpp" +{ return s2::parser::make_INLINE(ctx->loc); } YY_BREAK case 17: YY_RULE_SETUP -#line 72 "lexer.lpp" -{ return s2::parser::make_ANIMTREE(ctx->loc); } +#line 74 "lexer.lpp" +{ return s2::parser::make_INCLUDE(ctx->loc); } YY_BREAK case 18: YY_RULE_SETUP -#line 73 "lexer.lpp" -{ return s2::parser::make_ENDON(ctx->loc); } +#line 75 "lexer.lpp" +{ return s2::parser::make_USINGTREE(ctx->loc); } YY_BREAK case 19: YY_RULE_SETUP -#line 74 "lexer.lpp" -{ return s2::parser::make_NOTIFY(ctx->loc); } +#line 76 "lexer.lpp" +{ return s2::parser::make_ANIMTREE(ctx->loc); } YY_BREAK case 20: YY_RULE_SETUP -#line 75 "lexer.lpp" -{ return s2::parser::make_WAIT(ctx->loc); } +#line 77 "lexer.lpp" +{ return s2::parser::make_ENDON(ctx->loc); } YY_BREAK case 21: YY_RULE_SETUP -#line 76 "lexer.lpp" -{ return s2::parser::make_WAITTILL(ctx->loc); } +#line 78 "lexer.lpp" +{ return s2::parser::make_NOTIFY(ctx->loc); } YY_BREAK case 22: YY_RULE_SETUP -#line 77 "lexer.lpp" -{ return s2::parser::make_WAITTILLMATCH(ctx->loc); } +#line 79 "lexer.lpp" +{ return s2::parser::make_WAIT(ctx->loc); } YY_BREAK case 23: YY_RULE_SETUP -#line 78 "lexer.lpp" -{ return s2::parser::make_WAITTILLFRAMEEND(ctx->loc); } +#line 80 "lexer.lpp" +{ return s2::parser::make_WAITTILL(ctx->loc); } YY_BREAK case 24: YY_RULE_SETUP -#line 79 "lexer.lpp" -{ return s2::parser::make_WAITFRAME(ctx->loc); } +#line 81 "lexer.lpp" +{ return s2::parser::make_WAITTILLMATCH(ctx->loc); } YY_BREAK case 25: YY_RULE_SETUP -#line 80 "lexer.lpp" -{ return s2::parser::make_IF(ctx->loc); } +#line 82 "lexer.lpp" +{ return s2::parser::make_WAITTILLFRAMEEND(ctx->loc); } YY_BREAK case 26: YY_RULE_SETUP -#line 81 "lexer.lpp" -{ return s2::parser::make_ELSE(ctx->loc); } +#line 83 "lexer.lpp" +{ return s2::parser::make_WAITFRAME(ctx->loc); } YY_BREAK case 27: YY_RULE_SETUP -#line 82 "lexer.lpp" -{ return s2::parser::make_DO(ctx->loc); } +#line 84 "lexer.lpp" +{ return s2::parser::make_IF(ctx->loc); } YY_BREAK case 28: YY_RULE_SETUP -#line 83 "lexer.lpp" -{ return s2::parser::make_WHILE(ctx->loc); } +#line 85 "lexer.lpp" +{ return s2::parser::make_ELSE(ctx->loc); } YY_BREAK case 29: YY_RULE_SETUP -#line 84 "lexer.lpp" -{ return s2::parser::make_FOR(ctx->loc); } +#line 86 "lexer.lpp" +{ return s2::parser::make_DO(ctx->loc); } YY_BREAK case 30: YY_RULE_SETUP -#line 85 "lexer.lpp" -{ return s2::parser::make_FOREACH(ctx->loc); } +#line 87 "lexer.lpp" +{ return s2::parser::make_WHILE(ctx->loc); } YY_BREAK case 31: YY_RULE_SETUP -#line 86 "lexer.lpp" -{ return s2::parser::make_IN(ctx->loc); } +#line 88 "lexer.lpp" +{ return s2::parser::make_FOR(ctx->loc); } YY_BREAK case 32: YY_RULE_SETUP -#line 87 "lexer.lpp" -{ return s2::parser::make_SWITCH(ctx->loc); } +#line 89 "lexer.lpp" +{ return s2::parser::make_FOREACH(ctx->loc); } YY_BREAK case 33: YY_RULE_SETUP -#line 88 "lexer.lpp" -{ return s2::parser::make_CASE(ctx->loc); } +#line 90 "lexer.lpp" +{ return s2::parser::make_IN(ctx->loc); } YY_BREAK case 34: YY_RULE_SETUP -#line 89 "lexer.lpp" -{ return s2::parser::make_DEFAULT(ctx->loc); } +#line 91 "lexer.lpp" +{ return s2::parser::make_SWITCH(ctx->loc); } YY_BREAK case 35: YY_RULE_SETUP -#line 90 "lexer.lpp" -{ return s2::parser::make_BREAK(ctx->loc); } +#line 92 "lexer.lpp" +{ return s2::parser::make_CASE(ctx->loc); } YY_BREAK case 36: YY_RULE_SETUP -#line 91 "lexer.lpp" -{ return s2::parser::make_CONTINUE(ctx->loc); } +#line 93 "lexer.lpp" +{ return s2::parser::make_DEFAULT(ctx->loc); } YY_BREAK case 37: YY_RULE_SETUP -#line 92 "lexer.lpp" -{ return s2::parser::make_RETURN(ctx->loc); } +#line 94 "lexer.lpp" +{ return s2::parser::make_BREAK(ctx->loc); } YY_BREAK case 38: YY_RULE_SETUP -#line 93 "lexer.lpp" -{ return s2::parser::make_BREAKPOINT(ctx->loc); } +#line 95 "lexer.lpp" +{ return s2::parser::make_CONTINUE(ctx->loc); } YY_BREAK case 39: YY_RULE_SETUP -#line 94 "lexer.lpp" -{ return s2::parser::make_PROFBEGIN(ctx->loc); } +#line 96 "lexer.lpp" +{ return s2::parser::make_RETURN(ctx->loc); } YY_BREAK case 40: YY_RULE_SETUP -#line 95 "lexer.lpp" -{ return s2::parser::make_PROFEND(ctx->loc); } +#line 97 "lexer.lpp" +{ return s2::parser::make_BREAKPOINT(ctx->loc); } YY_BREAK case 41: YY_RULE_SETUP -#line 96 "lexer.lpp" -{ return s2::parser::make_THREAD(ctx->loc); } +#line 98 "lexer.lpp" +{ return s2::parser::make_PROFBEGIN(ctx->loc); } YY_BREAK case 42: YY_RULE_SETUP -#line 97 "lexer.lpp" -{ return s2::parser::make_CHILDTHREAD(ctx->loc); } +#line 99 "lexer.lpp" +{ return s2::parser::make_PROFEND(ctx->loc); } YY_BREAK case 43: YY_RULE_SETUP -#line 98 "lexer.lpp" -{ return s2::parser::make_THISTHREAD(ctx->loc); } +#line 100 "lexer.lpp" +{ return s2::parser::make_THREAD(ctx->loc); } YY_BREAK case 44: YY_RULE_SETUP -#line 99 "lexer.lpp" -{ return s2::parser::make_CALL(ctx->loc); } +#line 101 "lexer.lpp" +{ return s2::parser::make_CHILDTHREAD(ctx->loc); } YY_BREAK case 45: YY_RULE_SETUP -#line 100 "lexer.lpp" -{ return s2::parser::make_TRUE(ctx->loc); } +#line 102 "lexer.lpp" +{ return s2::parser::make_THISTHREAD(ctx->loc); } YY_BREAK case 46: YY_RULE_SETUP -#line 101 "lexer.lpp" -{ return s2::parser::make_FALSE(ctx->loc); } +#line 103 "lexer.lpp" +{ return s2::parser::make_CALL(ctx->loc); } YY_BREAK case 47: YY_RULE_SETUP -#line 102 "lexer.lpp" -{ return s2::parser::make_UNDEFINED(ctx->loc); } +#line 104 "lexer.lpp" +{ return s2::parser::make_TRUE(ctx->loc); } YY_BREAK case 48: YY_RULE_SETUP -#line 103 "lexer.lpp" -{ return s2::parser::make_SIZE(ctx->loc); } +#line 105 "lexer.lpp" +{ return s2::parser::make_FALSE(ctx->loc); } YY_BREAK case 49: YY_RULE_SETUP -#line 104 "lexer.lpp" -{ return s2::parser::make_GAME(ctx->loc); } +#line 106 "lexer.lpp" +{ return s2::parser::make_UNDEFINED(ctx->loc); } YY_BREAK case 50: YY_RULE_SETUP -#line 105 "lexer.lpp" -{ return s2::parser::make_SELF(ctx->loc); } +#line 107 "lexer.lpp" +{ return s2::parser::make_SIZE(ctx->loc); } YY_BREAK case 51: YY_RULE_SETUP -#line 106 "lexer.lpp" -{ return s2::parser::make_ANIM(ctx->loc); } +#line 108 "lexer.lpp" +{ return s2::parser::make_GAME(ctx->loc); } YY_BREAK case 52: YY_RULE_SETUP -#line 107 "lexer.lpp" -{ return s2::parser::make_LEVEL(ctx->loc); } +#line 109 "lexer.lpp" +{ return s2::parser::make_SELF(ctx->loc); } YY_BREAK case 53: YY_RULE_SETUP -#line 108 "lexer.lpp" -{ return s2::parser::make_LPAREN(ctx->loc); } +#line 110 "lexer.lpp" +{ return s2::parser::make_ANIM(ctx->loc); } YY_BREAK case 54: YY_RULE_SETUP -#line 109 "lexer.lpp" -{ return s2::parser::make_RPAREN(ctx->loc); } +#line 111 "lexer.lpp" +{ return s2::parser::make_LEVEL(ctx->loc); } YY_BREAK case 55: YY_RULE_SETUP -#line 110 "lexer.lpp" -{ return s2::parser::make_LBRACE(ctx->loc); } +#line 112 "lexer.lpp" +{ return s2::parser::make_LPAREN(ctx->loc); } YY_BREAK case 56: YY_RULE_SETUP -#line 111 "lexer.lpp" -{ return s2::parser::make_RBRACE(ctx->loc); } +#line 113 "lexer.lpp" +{ return s2::parser::make_RPAREN(ctx->loc); } YY_BREAK case 57: YY_RULE_SETUP -#line 112 "lexer.lpp" -{ return s2::parser::make_LBRACKET(ctx->loc); } +#line 114 "lexer.lpp" +{ return s2::parser::make_LBRACE(ctx->loc); } YY_BREAK case 58: YY_RULE_SETUP -#line 113 "lexer.lpp" -{ return s2::parser::make_RBRACKET(ctx->loc); } +#line 115 "lexer.lpp" +{ return s2::parser::make_RBRACE(ctx->loc); } YY_BREAK case 59: YY_RULE_SETUP -#line 114 "lexer.lpp" -{ return s2::parser::make_COMMA(ctx->loc); } +#line 116 "lexer.lpp" +{ return s2::parser::make_LBRACKET(ctx->loc); } YY_BREAK case 60: YY_RULE_SETUP -#line 115 "lexer.lpp" -{ return s2::parser::make_DOT(ctx->loc); } +#line 117 "lexer.lpp" +{ return s2::parser::make_RBRACKET(ctx->loc); } YY_BREAK case 61: YY_RULE_SETUP -#line 116 "lexer.lpp" -{ return s2::parser::make_DOUBLECOLON(ctx->loc); } +#line 118 "lexer.lpp" +{ return s2::parser::make_COMMA(ctx->loc); } YY_BREAK case 62: YY_RULE_SETUP -#line 117 "lexer.lpp" -{ return s2::parser::make_COLON(ctx->loc); } +#line 119 "lexer.lpp" +{ return s2::parser::make_DOT(ctx->loc); } YY_BREAK case 63: YY_RULE_SETUP -#line 118 "lexer.lpp" -{ return s2::parser::make_SEMICOLON(ctx->loc); } +#line 120 "lexer.lpp" +{ return s2::parser::make_DOUBLECOLON(ctx->loc); } YY_BREAK case 64: YY_RULE_SETUP -#line 119 "lexer.lpp" -{ return s2::parser::make_QMARK(ctx->loc); } +#line 121 "lexer.lpp" +{ return s2::parser::make_COLON(ctx->loc); } YY_BREAK case 65: YY_RULE_SETUP -#line 120 "lexer.lpp" -{ return s2::parser::make_INCREMENT(ctx->loc); } +#line 122 "lexer.lpp" +{ return s2::parser::make_SEMICOLON(ctx->loc); } YY_BREAK case 66: YY_RULE_SETUP -#line 121 "lexer.lpp" -{ return s2::parser::make_DECREMENT(ctx->loc); } +#line 123 "lexer.lpp" +{ return s2::parser::make_QMARK(ctx->loc); } YY_BREAK case 67: YY_RULE_SETUP -#line 122 "lexer.lpp" -{ return s2::parser::make_ASSIGN_LSHIFT(ctx->loc); } +#line 124 "lexer.lpp" +{ return s2::parser::make_INCREMENT(ctx->loc); } YY_BREAK case 68: YY_RULE_SETUP -#line 123 "lexer.lpp" -{ return s2::parser::make_ASSIGN_RSHIFT(ctx->loc); } +#line 125 "lexer.lpp" +{ return s2::parser::make_DECREMENT(ctx->loc); } YY_BREAK case 69: YY_RULE_SETUP -#line 124 "lexer.lpp" -{ return s2::parser::make_LSHIFT(ctx->loc); } +#line 126 "lexer.lpp" +{ return s2::parser::make_ASSIGN_LSHIFT(ctx->loc); } YY_BREAK case 70: YY_RULE_SETUP -#line 125 "lexer.lpp" -{ return s2::parser::make_RSHIFT(ctx->loc); } +#line 127 "lexer.lpp" +{ return s2::parser::make_ASSIGN_RSHIFT(ctx->loc); } YY_BREAK case 71: YY_RULE_SETUP -#line 126 "lexer.lpp" -{ return s2::parser::make_OR(ctx->loc); } +#line 128 "lexer.lpp" +{ return s2::parser::make_LSHIFT(ctx->loc); } YY_BREAK case 72: YY_RULE_SETUP -#line 127 "lexer.lpp" -{ return s2::parser::make_AND(ctx->loc); } +#line 129 "lexer.lpp" +{ return s2::parser::make_RSHIFT(ctx->loc); } YY_BREAK case 73: YY_RULE_SETUP -#line 128 "lexer.lpp" -{ return s2::parser::make_EQUALITY(ctx->loc); } +#line 130 "lexer.lpp" +{ return s2::parser::make_OR(ctx->loc); } YY_BREAK case 74: YY_RULE_SETUP -#line 129 "lexer.lpp" -{ return s2::parser::make_INEQUALITY(ctx->loc); } +#line 131 "lexer.lpp" +{ return s2::parser::make_AND(ctx->loc); } YY_BREAK case 75: YY_RULE_SETUP -#line 130 "lexer.lpp" -{ return s2::parser::make_LESS_EQUAL(ctx->loc); } +#line 132 "lexer.lpp" +{ return s2::parser::make_EQUALITY(ctx->loc); } YY_BREAK case 76: YY_RULE_SETUP -#line 131 "lexer.lpp" -{ return s2::parser::make_GREATER_EQUAL(ctx->loc); } +#line 133 "lexer.lpp" +{ return s2::parser::make_INEQUALITY(ctx->loc); } YY_BREAK case 77: YY_RULE_SETUP -#line 132 "lexer.lpp" -{ return s2::parser::make_LESS(ctx->loc); } +#line 134 "lexer.lpp" +{ return s2::parser::make_LESS_EQUAL(ctx->loc); } YY_BREAK case 78: YY_RULE_SETUP -#line 133 "lexer.lpp" -{ return s2::parser::make_GREATER(ctx->loc); } +#line 135 "lexer.lpp" +{ return s2::parser::make_GREATER_EQUAL(ctx->loc); } YY_BREAK case 79: YY_RULE_SETUP -#line 134 "lexer.lpp" -{ return s2::parser::make_ASSIGN_ADD(ctx->loc); } +#line 136 "lexer.lpp" +{ return s2::parser::make_LESS(ctx->loc); } YY_BREAK case 80: YY_RULE_SETUP -#line 135 "lexer.lpp" -{ return s2::parser::make_ASSIGN_SUB(ctx->loc); } +#line 137 "lexer.lpp" +{ return s2::parser::make_GREATER(ctx->loc); } YY_BREAK case 81: YY_RULE_SETUP -#line 136 "lexer.lpp" -{ return s2::parser::make_ASSIGN_MUL(ctx->loc); } +#line 138 "lexer.lpp" +{ return s2::parser::make_ASSIGN_ADD(ctx->loc); } YY_BREAK case 82: YY_RULE_SETUP -#line 137 "lexer.lpp" -{ return s2::parser::make_ASSIGN_DIV(ctx->loc); } +#line 139 "lexer.lpp" +{ return s2::parser::make_ASSIGN_SUB(ctx->loc); } YY_BREAK case 83: YY_RULE_SETUP -#line 138 "lexer.lpp" -{ return s2::parser::make_ASSIGN_MOD(ctx->loc); } +#line 140 "lexer.lpp" +{ return s2::parser::make_ASSIGN_MUL(ctx->loc); } YY_BREAK case 84: YY_RULE_SETUP -#line 139 "lexer.lpp" -{ return s2::parser::make_ASSIGN_BW_OR(ctx->loc); } +#line 141 "lexer.lpp" +{ return s2::parser::make_ASSIGN_DIV(ctx->loc); } YY_BREAK case 85: YY_RULE_SETUP -#line 140 "lexer.lpp" -{ return s2::parser::make_ASSIGN_BW_AND(ctx->loc); } +#line 142 "lexer.lpp" +{ return s2::parser::make_ASSIGN_MOD(ctx->loc); } YY_BREAK case 86: YY_RULE_SETUP -#line 141 "lexer.lpp" -{ return s2::parser::make_ASSIGN_BW_EXOR(ctx->loc); } +#line 143 "lexer.lpp" +{ return s2::parser::make_ASSIGN_BW_OR(ctx->loc); } YY_BREAK case 87: YY_RULE_SETUP -#line 142 "lexer.lpp" -{ return s2::parser::make_ASSIGN(ctx->loc); } +#line 144 "lexer.lpp" +{ return s2::parser::make_ASSIGN_BW_AND(ctx->loc); } YY_BREAK case 88: YY_RULE_SETUP -#line 143 "lexer.lpp" -{ return s2::parser::make_ADD(ctx->loc); } +#line 145 "lexer.lpp" +{ return s2::parser::make_ASSIGN_BW_EXOR(ctx->loc); } YY_BREAK case 89: YY_RULE_SETUP -#line 144 "lexer.lpp" -{ return s2::parser::make_SUB(ctx->loc); } +#line 146 "lexer.lpp" +{ return s2::parser::make_ASSIGN(ctx->loc); } YY_BREAK case 90: YY_RULE_SETUP -#line 145 "lexer.lpp" -{ return s2::parser::make_MUL(ctx->loc); } +#line 147 "lexer.lpp" +{ return s2::parser::make_ADD(ctx->loc); } YY_BREAK case 91: YY_RULE_SETUP -#line 146 "lexer.lpp" -{ return s2::parser::make_DIV(ctx->loc); } +#line 148 "lexer.lpp" +{ return s2::parser::make_SUB(ctx->loc); } YY_BREAK case 92: YY_RULE_SETUP -#line 147 "lexer.lpp" -{ return s2::parser::make_MOD(ctx->loc); } +#line 149 "lexer.lpp" +{ return s2::parser::make_MUL(ctx->loc); } YY_BREAK case 93: YY_RULE_SETUP -#line 148 "lexer.lpp" -{ return s2::parser::make_NOT(ctx->loc); } +#line 150 "lexer.lpp" +{ return s2::parser::make_DIV(ctx->loc); } YY_BREAK case 94: YY_RULE_SETUP -#line 149 "lexer.lpp" -{ return s2::parser::make_COMPLEMENT(ctx->loc); } +#line 151 "lexer.lpp" +{ return s2::parser::make_MOD(ctx->loc); } YY_BREAK case 95: YY_RULE_SETUP -#line 150 "lexer.lpp" -{ return s2::parser::make_BITWISE_OR(ctx->loc); } +#line 152 "lexer.lpp" +{ return s2::parser::make_NOT(ctx->loc); } YY_BREAK case 96: YY_RULE_SETUP -#line 151 "lexer.lpp" -{ return s2::parser::make_BITWISE_AND(ctx->loc); } +#line 153 "lexer.lpp" +{ return s2::parser::make_COMPLEMENT(ctx->loc); } YY_BREAK case 97: YY_RULE_SETUP -#line 152 "lexer.lpp" -{ return s2::parser::make_BITWISE_EXOR(ctx->loc); } +#line 154 "lexer.lpp" +{ return s2::parser::make_BITWISE_OR(ctx->loc); } YY_BREAK case 98: YY_RULE_SETUP -#line 153 "lexer.lpp" -{ return s2::parser::make_PATH(xsk::utils::string::fordslash(yytext), ctx->loc); } +#line 155 "lexer.lpp" +{ return s2::parser::make_BITWISE_AND(ctx->loc); } YY_BREAK case 99: YY_RULE_SETUP -#line 154 "lexer.lpp" -{ return s2::parser::make_IDENTIFIER((std::string(yytext, 3) == "_ID") ? std::string(yytext) : xsk::utils::string::to_lower(yytext), ctx->loc); } +#line 156 "lexer.lpp" +{ return s2::parser::make_BITWISE_EXOR(ctx->loc); } YY_BREAK case 100: -/* rule 100 can match eol */ -YY_RULE_SETUP -#line 155 "lexer.lpp" -{ return s2::parser::make_ISTRING(std::string(yytext).substr(1), ctx->loc); } - YY_BREAK -case 101: -/* rule 101 can match eol */ -YY_RULE_SETUP -#line 156 "lexer.lpp" -{ return s2::parser::make_STRING(std::string(yytext), ctx->loc); } - YY_BREAK -case 102: YY_RULE_SETUP #line 157 "lexer.lpp" -{ return s2::parser::make_COLOR(std::string(yytext).substr(1), ctx->loc); } +{ return s2::parser::make_PATH(xsk::utils::string::fordslash(yytext), ctx->loc); } YY_BREAK -case 103: +case 101: YY_RULE_SETUP #line 158 "lexer.lpp" -{ return s2::parser::make_FLOAT(std::string(yytext), ctx->loc); } +{ return s2::parser::make_IDENTIFIER((std::string(yytext, 3) == "_ID") ? std::string(yytext) : xsk::utils::string::to_lower(yytext), ctx->loc); } + YY_BREAK +case 102: +/* rule 102 can match eol */ +YY_RULE_SETUP +#line 159 "lexer.lpp" +{ return s2::parser::make_ISTRING(std::string(yytext).substr(1), ctx->loc); } + YY_BREAK +case 103: +/* rule 103 can match eol */ +YY_RULE_SETUP +#line 160 "lexer.lpp" +{ return s2::parser::make_STRING(std::string(yytext), ctx->loc); } YY_BREAK case 104: YY_RULE_SETUP -#line 159 "lexer.lpp" -{ return s2::parser::make_INT_OCT(xsk::utils::string::oct_to_dec(yytext), ctx->loc); } +#line 161 "lexer.lpp" +{ return s2::parser::make_COLOR(std::string(yytext).substr(1), ctx->loc); } YY_BREAK case 105: YY_RULE_SETUP -#line 160 "lexer.lpp" -{ return s2::parser::make_INT_BIN(xsk::utils::string::bin_to_dec(yytext), ctx->loc); } +#line 162 "lexer.lpp" +{ return s2::parser::make_FLOAT(std::string(yytext), ctx->loc); } YY_BREAK case 106: YY_RULE_SETUP -#line 161 "lexer.lpp" -{ return s2::parser::make_INT_HEX(xsk::utils::string::hex_to_dec(yytext), ctx->loc); } +#line 163 "lexer.lpp" +{ return s2::parser::make_INT_OCT(xsk::utils::string::oct_to_dec(yytext), ctx->loc); } YY_BREAK case 107: YY_RULE_SETUP -#line 162 "lexer.lpp" -{ return s2::parser::make_INT_DEC(std::string(yytext), ctx->loc); } - YY_BREAK -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(COMMENT_BLOCK_STATE): -case YY_STATE_EOF(DEVBLOCK_ON_STATE): -case YY_STATE_EOF(DEVBLOCK_OFF_STATE): -#line 163 "lexer.lpp" -{ if(ctx->header_top > 0) s2_pop_header(ctx); else return s2::parser::make_S2EOF(ctx->loc); } +#line 164 "lexer.lpp" +{ return s2::parser::make_INT_BIN(xsk::utils::string::bin_to_dec(yytext), ctx->loc); } YY_BREAK case 108: -/* rule 108 can match eol */ YY_RULE_SETUP -#line 164 "lexer.lpp" -{ throw s2::parser::syntax_error(ctx->loc, "bad token: \'" + std::string(yytext) + "\'"); } +#line 165 "lexer.lpp" +{ return s2::parser::make_INT_HEX(xsk::utils::string::hex_to_dec(yytext), ctx->loc); } YY_BREAK case 109: YY_RULE_SETUP #line 166 "lexer.lpp" +{ return s2::parser::make_INT_DEC(std::string(yytext), ctx->loc); } + YY_BREAK +case YY_STATE_EOF(INITIAL): +#line 167 "lexer.lpp" +{ if(ctx->header_top > 0) s2_pop_header(ctx); else return s2::parser::make_S2EOF(ctx->loc); } + YY_BREAK +case 110: +/* rule 110 can match eol */ +YY_RULE_SETUP +#line 168 "lexer.lpp" +{ throw s2::parser::syntax_error(ctx->loc, "bad token: \'" + std::string(yytext) + "\'"); } + YY_BREAK +case 111: +YY_RULE_SETUP +#line 170 "lexer.lpp" ECHO; YY_BREAK -#line 1810 "lexer.cpp" +#line 1834 "lexer.cpp" case YY_END_OF_BUFFER: { @@ -2105,7 +2129,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 >= 330 ) + if ( yy_current_state >= 333 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2134,11 +2158,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 >= 330 ) + if ( yy_current_state >= 333 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 329); + yy_is_jam = (yy_current_state == 332); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -2937,7 +2961,7 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 166 "lexer.lpp" +#line 170 "lexer.lpp" void s2_push_header(xsk::gsc::context* ctx, const std::string& file) diff --git a/src/s2/xsk/lexer.hpp b/src/s2/xsk/lexer.hpp index 533b90b2..406f8296 100644 --- a/src/s2/xsk/lexer.hpp +++ b/src/s2/xsk/lexer.hpp @@ -439,9 +439,9 @@ void yyfree ( void * , yyscan_t yyscanner ); #ifdef YY_HEADER_EXPORT_START_CONDITIONS #define INITIAL 0 -#define COMMENT_BLOCK_STATE 1 -#define DEVBLOCK_ON_STATE 2 -#define DEVBLOCK_OFF_STATE 3 +#define COMMENT_STATE 1 +#define DEV_OFF_STATE 2 +#define DEV_ON_STATE 3 #endif @@ -703,7 +703,7 @@ extern int yylex (yyscan_t yyscanner); #undef yyTABLES_NAME #endif -#line 166 "lexer.lpp" +#line 170 "lexer.lpp" #line 709 "lexer.hpp" diff --git a/src/s2/xsk/parser.cpp b/src/s2/xsk/parser.cpp index c38c38a2..d50bb6e3 100644 --- a/src/s2/xsk/parser.cpp +++ b/src/s2/xsk/parser.cpp @@ -442,6 +442,7 @@ namespace xsk { namespace gsc { namespace s2 { value.YY_MOVE_OR_COPY< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.YY_MOVE_OR_COPY< ast::stmt_list::ptr > (YY_MOVE (that.value)); @@ -745,6 +746,7 @@ namespace xsk { namespace gsc { namespace s2 { value.move< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (YY_MOVE (that.value)); @@ -1048,6 +1050,7 @@ namespace xsk { namespace gsc { namespace s2 { value.copy< ast::stmt_ifelse::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.copy< ast::stmt_list::ptr > (that.value); @@ -1350,6 +1353,7 @@ namespace xsk { namespace gsc { namespace s2 { value.move< ast::stmt_ifelse::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (that.value); @@ -1907,6 +1911,7 @@ namespace xsk { namespace gsc { namespace s2 { yylhs.value.emplace< ast::stmt_ifelse::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list yylhs.value.emplace< ast::stmt_list::ptr > (); @@ -1990,1291 +1995,1321 @@ namespace xsk { namespace gsc { namespace s2 { switch (yyn) { case 2: // root: program -#line 251 "parser.ypp" +#line 254 "parser.ypp" { ast = std::move(yystack_[0].value.as < ast::program::ptr > ()); } -#line 1996 "parser.cpp" +#line 2001 "parser.cpp" break; case 3: // root: %empty -#line 252 "parser.ypp" +#line 255 "parser.ypp" { ast = std::make_unique(yylhs.location); } -#line 2002 "parser.cpp" +#line 2007 "parser.cpp" break; case 4: // program: program inline -#line 257 "parser.ypp" +#line 260 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); } -#line 2008 "parser.cpp" +#line 2013 "parser.cpp" break; case 5: // program: program include -#line 259 "parser.ypp" +#line 262 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 2014 "parser.cpp" +#line 2019 "parser.cpp" break; case 6: // program: program declaration -#line 261 "parser.ypp" +#line 264 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2020 "parser.cpp" +#line 2025 "parser.cpp" break; case 7: // program: inline -#line 263 "parser.ypp" +#line 266 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); } -#line 2026 "parser.cpp" +#line 2031 "parser.cpp" break; case 8: // program: include -#line 265 "parser.ypp" +#line 268 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 2032 "parser.cpp" +#line 2037 "parser.cpp" break; case 9: // program: declaration -#line 267 "parser.ypp" +#line 270 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2038 "parser.cpp" +#line 2043 "parser.cpp" break; case 10: // inline: "#inline" expr_path ";" -#line 271 "parser.ypp" +#line 274 "parser.ypp" { s2_push_header(ctx, yystack_[1].value.as < ast::expr_path::ptr > ()->value); } -#line 2044 "parser.cpp" +#line 2049 "parser.cpp" break; case 11: // include: "#include" expr_path ";" -#line 276 "parser.ypp" +#line 279 "parser.ypp" { yylhs.value.as < ast::include::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_path::ptr > ())); } -#line 2050 "parser.cpp" +#line 2055 "parser.cpp" break; - case 12: // declaration: decl_usingtree -#line 280 "parser.ypp" + case 12: // declaration: "/#" +#line 283 "parser.ypp" + { yylhs.value.as < ast::decl > ().as_dev_begin = std::make_unique(yylhs.location); } +#line 2061 "parser.cpp" + break; + + case 13: // declaration: "#/" +#line 284 "parser.ypp" + { yylhs.value.as < ast::decl > ().as_dev_end = std::make_unique(yylhs.location); } +#line 2067 "parser.cpp" + break; + + case 14: // declaration: decl_usingtree +#line 285 "parser.ypp" { yylhs.value.as < ast::decl > ().as_usingtree = std::move(yystack_[0].value.as < ast::decl_usingtree::ptr > ()); } -#line 2056 "parser.cpp" +#line 2073 "parser.cpp" break; - case 13: // declaration: decl_constant -#line 281 "parser.ypp" + case 15: // declaration: decl_constant +#line 286 "parser.ypp" { yylhs.value.as < ast::decl > ().as_constant = std::move(yystack_[0].value.as < ast::decl_constant::ptr > ()); } -#line 2062 "parser.cpp" +#line 2079 "parser.cpp" break; - case 14: // declaration: decl_thread -#line 282 "parser.ypp" - { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } -#line 2068 "parser.cpp" - break; - - case 15: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" + case 16: // declaration: decl_thread #line 287 "parser.ypp" - { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_usingtree::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_string::ptr > ())); } -#line 2074 "parser.cpp" + { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } +#line 2085 "parser.cpp" break; - case 16: // decl_constant: expr_identifier "=" expr ";" + case 17: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" #line 292 "parser.ypp" - { yylhs.value.as < ast::decl_constant::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2080 "parser.cpp" + { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_usingtree::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_string::ptr > ())); } +#line 2091 "parser.cpp" break; - case 17: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block + case 18: // decl_constant: expr_identifier "=" expr ";" #line 297 "parser.ypp" - { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_thread::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2086 "parser.cpp" + { yylhs.value.as < ast::decl_constant::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } +#line 2097 "parser.cpp" break; - case 18: // stmt: stmt_block -#line 301 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } -#line 2092 "parser.cpp" - break; - - case 19: // stmt: stmt_call + case 19: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block #line 302 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } -#line 2098 "parser.cpp" + { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_thread::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } +#line 2103 "parser.cpp" break; - case 20: // stmt: stmt_assign -#line 303 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } -#line 2104 "parser.cpp" - break; - - case 21: // stmt: stmt_endon -#line 304 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } -#line 2110 "parser.cpp" - break; - - case 22: // stmt: stmt_notify -#line 305 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } -#line 2116 "parser.cpp" - break; - - case 23: // stmt: stmt_wait + case 20: // stmt: stmt_dev #line 306 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } -#line 2122 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } +#line 2109 "parser.cpp" break; - case 24: // stmt: stmt_waittill + case 21: // stmt: stmt_block #line 307 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } -#line 2128 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } +#line 2115 "parser.cpp" break; - case 25: // stmt: stmt_waittillmatch + case 22: // stmt: stmt_call #line 308 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } -#line 2134 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } +#line 2121 "parser.cpp" break; - case 26: // stmt: stmt_waittillframeend + case 23: // stmt: stmt_assign #line 309 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } -#line 2140 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } +#line 2127 "parser.cpp" break; - case 27: // stmt: stmt_waitframe + case 24: // stmt: stmt_endon #line 310 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waitframe = std::move(yystack_[0].value.as < ast::stmt_waitframe::ptr > ()); } -#line 2146 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } +#line 2133 "parser.cpp" break; - case 28: // stmt: stmt_if + case 25: // stmt: stmt_notify #line 311 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } -#line 2152 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } +#line 2139 "parser.cpp" break; - case 29: // stmt: stmt_ifelse + case 26: // stmt: stmt_wait #line 312 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } -#line 2158 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } +#line 2145 "parser.cpp" break; - case 30: // stmt: stmt_while + case 27: // stmt: stmt_waittill #line 313 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } -#line 2164 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } +#line 2151 "parser.cpp" break; - case 31: // stmt: stmt_dowhile + case 28: // stmt: stmt_waittillmatch #line 314 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } -#line 2170 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } +#line 2157 "parser.cpp" break; - case 32: // stmt: stmt_for + case 29: // stmt: stmt_waittillframeend #line 315 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } -#line 2176 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } +#line 2163 "parser.cpp" break; - case 33: // stmt: stmt_foreach + case 30: // stmt: stmt_waitframe #line 316 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } -#line 2182 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waitframe = std::move(yystack_[0].value.as < ast::stmt_waitframe::ptr > ()); } +#line 2169 "parser.cpp" break; - case 34: // stmt: stmt_switch + case 31: // stmt: stmt_if #line 317 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } -#line 2188 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } +#line 2175 "parser.cpp" break; - case 35: // stmt: stmt_case + case 32: // stmt: stmt_ifelse #line 318 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } -#line 2194 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } +#line 2181 "parser.cpp" break; - case 36: // stmt: stmt_default + case 33: // stmt: stmt_while #line 319 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } -#line 2200 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } +#line 2187 "parser.cpp" break; - case 37: // stmt: stmt_break + case 34: // stmt: stmt_dowhile #line 320 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } -#line 2206 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } +#line 2193 "parser.cpp" break; - case 38: // stmt: stmt_continue + case 35: // stmt: stmt_for #line 321 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } -#line 2212 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } +#line 2199 "parser.cpp" break; - case 39: // stmt: stmt_return + case 36: // stmt: stmt_foreach #line 322 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } -#line 2218 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } +#line 2205 "parser.cpp" break; - case 40: // stmt: stmt_breakpoint + case 37: // stmt: stmt_switch #line 323 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } -#line 2224 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } +#line 2211 "parser.cpp" break; - case 41: // stmt: stmt_prof_begin + case 38: // stmt: stmt_case #line 324 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } -#line 2230 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } +#line 2217 "parser.cpp" break; - case 42: // stmt: stmt_prof_end + case 39: // stmt: stmt_default #line 325 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } -#line 2236 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } +#line 2223 "parser.cpp" break; - case 43: // stmt_block: "{" stmt_list "}" + case 40: // stmt: stmt_break +#line 326 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } +#line 2229 "parser.cpp" + break; + + case 41: // stmt: stmt_continue +#line 327 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } +#line 2235 "parser.cpp" + break; + + case 42: // stmt: stmt_return +#line 328 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } +#line 2241 "parser.cpp" + break; + + case 43: // stmt: stmt_breakpoint #line 329 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } -#line 2242 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } +#line 2247 "parser.cpp" break; - case 44: // stmt_block: "{" "}" + case 44: // stmt: stmt_prof_begin #line 330 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } -#line 2248 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } +#line 2253 "parser.cpp" break; - case 45: // stmt_list: stmt_list stmt + case 45: // stmt: stmt_prof_end +#line 331 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } +#line 2259 "parser.cpp" + break; + + case 46: // stmt_dev: "/#" stmt_list "#/" #line 335 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2254 "parser.cpp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } +#line 2265 "parser.cpp" break; - case 46: // stmt_list: stmt -#line 337 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2260 "parser.cpp" + case 47: // stmt_dev: "/#" "#/" +#line 336 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } +#line 2271 "parser.cpp" break; - case 47: // stmt_expr: expr_assign -#line 342 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2266 "parser.cpp" + case 48: // stmt_block: "{" stmt_list "}" +#line 340 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } +#line 2277 "parser.cpp" break; - case 48: // stmt_expr: expr_increment -#line 344 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2272 "parser.cpp" + case 49: // stmt_block: "{" "}" +#line 341 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } +#line 2283 "parser.cpp" break; - case 49: // stmt_expr: expr_decrement + case 50: // stmt_list: stmt_list stmt #line 346 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2278 "parser.cpp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2289 "parser.cpp" break; - case 50: // stmt_expr: %empty + case 51: // stmt_list: stmt #line 348 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2284 "parser.cpp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2295 "parser.cpp" break; - case 51: // stmt_call: expr_call ";" + case 52: // stmt_expr: expr_assign #line 353 "parser.ypp" - { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } -#line 2290 "parser.cpp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2301 "parser.cpp" break; - case 52: // stmt_call: expr_method ";" + case 53: // stmt_expr: expr_increment #line 355 "parser.ypp" - { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_method::ptr > ()))); } -#line 2296 "parser.cpp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2307 "parser.cpp" break; - case 53: // stmt_assign: expr_assign ";" -#line 360 "parser.ypp" - { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2302 "parser.cpp" + case 54: // stmt_expr: expr_decrement +#line 357 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2313 "parser.cpp" break; - case 54: // stmt_assign: expr_increment ";" -#line 362 "parser.ypp" - { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2308 "parser.cpp" + case 55: // stmt_expr: %empty +#line 359 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } +#line 2319 "parser.cpp" break; - case 55: // stmt_assign: expr_decrement ";" + case 56: // stmt_call: expr_call ";" #line 364 "parser.ypp" + { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } +#line 2325 "parser.cpp" + break; + + case 57: // stmt_call: expr_method ";" +#line 366 "parser.ypp" + { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_method::ptr > ()))); } +#line 2331 "parser.cpp" + break; + + case 58: // stmt_assign: expr_assign ";" +#line 371 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2314 "parser.cpp" +#line 2337 "parser.cpp" break; - case 56: // stmt_endon: expr_object "endon" "(" expr ")" ";" -#line 369 "parser.ypp" + case 59: // stmt_assign: expr_increment ";" +#line 373 "parser.ypp" + { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 2343 "parser.cpp" + break; + + case 60: // stmt_assign: expr_decrement ";" +#line 375 "parser.ypp" + { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 2349 "parser.cpp" + break; + + case 61: // stmt_endon: expr_object "endon" "(" expr ")" ";" +#line 380 "parser.ypp" { yylhs.value.as < ast::stmt_endon::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ())); } -#line 2320 "parser.cpp" +#line 2355 "parser.cpp" break; - case 57: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" -#line 374 "parser.ypp" + case 62: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" +#line 385 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2326 "parser.cpp" +#line 2361 "parser.cpp" break; - case 58: // stmt_notify: expr_object "notify" "(" expr ")" ";" -#line 376 "parser.ypp" + case 63: // stmt_notify: expr_object "notify" "(" expr ")" ";" +#line 387 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2332 "parser.cpp" +#line 2367 "parser.cpp" break; - case 59: // stmt_wait: "wait" expr ";" -#line 381 "parser.ypp" + case 64: // stmt_wait: "wait" expr ";" +#line 392 "parser.ypp" { yylhs.value.as < ast::stmt_wait::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2338 "parser.cpp" +#line 2373 "parser.cpp" break; - case 60: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" -#line 386 "parser.ypp" + case 65: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" +#line 397 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2344 "parser.cpp" +#line 2379 "parser.cpp" break; - case 61: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" -#line 388 "parser.ypp" + case 66: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" +#line 399 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2350 "parser.cpp" +#line 2385 "parser.cpp" break; - case 62: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" -#line 393 "parser.ypp" + case 67: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" +#line 404 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2356 "parser.cpp" +#line 2391 "parser.cpp" break; - case 63: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" -#line 395 "parser.ypp" + case 68: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" +#line 406 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2362 "parser.cpp" +#line 2397 "parser.cpp" break; - case 64: // stmt_waittillframeend: "waittillframeend" ";" -#line 400 "parser.ypp" + case 69: // stmt_waittillframeend: "waittillframeend" ";" +#line 411 "parser.ypp" { yylhs.value.as < ast::stmt_waittillframeend::ptr > () = std::make_unique(yylhs.location); } -#line 2368 "parser.cpp" +#line 2403 "parser.cpp" break; - case 65: // stmt_waitframe: "waitframe" ";" -#line 405 "parser.ypp" + case 70: // stmt_waitframe: "waitframe" ";" +#line 416 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } -#line 2374 "parser.cpp" +#line 2409 "parser.cpp" break; - case 66: // stmt_waitframe: "waitframe" "(" ")" ";" -#line 407 "parser.ypp" + case 71: // stmt_waitframe: "waitframe" "(" ")" ";" +#line 418 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } -#line 2380 "parser.cpp" +#line 2415 "parser.cpp" break; - case 67: // stmt_if: "if" "(" expr ")" stmt -#line 412 "parser.ypp" + case 72: // stmt_if: "if" "(" expr ")" stmt +#line 423 "parser.ypp" { yylhs.value.as < ast::stmt_if::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2386 "parser.cpp" +#line 2421 "parser.cpp" break; - case 68: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 417 "parser.ypp" + case 73: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 428 "parser.ypp" { yylhs.value.as < ast::stmt_ifelse::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::stmt > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2392 "parser.cpp" +#line 2427 "parser.cpp" break; - case 69: // stmt_while: "while" "(" expr ")" stmt -#line 422 "parser.ypp" + case 74: // stmt_while: "while" "(" expr ")" stmt +#line 433 "parser.ypp" { yylhs.value.as < ast::stmt_while::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2398 "parser.cpp" +#line 2433 "parser.cpp" break; - case 70: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" -#line 427 "parser.ypp" + case 75: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" +#line 438 "parser.ypp" { yylhs.value.as < ast::stmt_dowhile::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[5].value.as < ast::stmt > ())); } -#line 2404 "parser.cpp" +#line 2439 "parser.cpp" break; - case 71: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt -#line 432 "parser.ypp" + case 76: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt +#line 443 "parser.ypp" { yylhs.value.as < ast::stmt_for::ptr > () = std::make_unique(yylhs.location, ast::stmt(std::move(yystack_[6].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[4].value.as < ast::expr > ()), ast::stmt(std::move(yystack_[2].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2410 "parser.cpp" +#line 2445 "parser.cpp" break; - case 72: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt -#line 437 "parser.ypp" + case 77: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt +#line 448 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2416 "parser.cpp" +#line 2451 "parser.cpp" break; - case 73: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt -#line 439 "parser.ypp" + case 78: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt +#line 450 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[6].value.as < ast::expr_identifier::ptr > ())), ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2422 "parser.cpp" +#line 2457 "parser.cpp" break; - case 74: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 444 "parser.ypp" + case 79: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 455 "parser.ypp" { yylhs.value.as < ast::stmt_switch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2428 "parser.cpp" +#line 2463 "parser.cpp" break; - case 75: // stmt_case: "case" expr_integer ":" -#line 449 "parser.ypp" + case 80: // stmt_case: "case" expr_integer ":" +#line 460 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_integer::ptr > ())), std::make_unique(yylhs.location)); } -#line 2434 "parser.cpp" +#line 2469 "parser.cpp" break; - case 76: // stmt_case: "case" expr_string ":" -#line 451 "parser.ypp" + case 81: // stmt_case: "case" expr_string ":" +#line 462 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_string::ptr > ())), std::make_unique(yylhs.location)); } -#line 2440 "parser.cpp" +#line 2475 "parser.cpp" break; - case 77: // stmt_default: "default" ":" -#line 456 "parser.ypp" + case 82: // stmt_default: "default" ":" +#line 467 "parser.ypp" { yylhs.value.as < ast::stmt_default::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2446 "parser.cpp" +#line 2481 "parser.cpp" break; - case 78: // stmt_break: "break" ";" -#line 461 "parser.ypp" + case 83: // stmt_break: "break" ";" +#line 472 "parser.ypp" { yylhs.value.as < ast::stmt_break::ptr > () = std::make_unique(yylhs.location); } -#line 2452 "parser.cpp" +#line 2487 "parser.cpp" break; - case 79: // stmt_continue: "continue" ";" -#line 466 "parser.ypp" + case 84: // stmt_continue: "continue" ";" +#line 477 "parser.ypp" { yylhs.value.as < ast::stmt_continue::ptr > () = std::make_unique(yylhs.location); } -#line 2458 "parser.cpp" +#line 2493 "parser.cpp" break; - case 80: // stmt_return: "return" expr ";" -#line 471 "parser.ypp" + case 85: // stmt_return: "return" expr ";" +#line 482 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2464 "parser.cpp" +#line 2499 "parser.cpp" break; - case 81: // stmt_return: "return" ";" -#line 473 "parser.ypp" + case 86: // stmt_return: "return" ";" +#line 484 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2470 "parser.cpp" +#line 2505 "parser.cpp" break; - case 82: // stmt_breakpoint: "breakpoint" ";" -#line 478 "parser.ypp" + case 87: // stmt_breakpoint: "breakpoint" ";" +#line 489 "parser.ypp" { yylhs.value.as < ast::stmt_breakpoint::ptr > () = std::make_unique(yylhs.location); } -#line 2476 "parser.cpp" +#line 2511 "parser.cpp" break; - case 83: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 483 "parser.ypp" - { yylhs.value.as < ast::stmt_prof_begin::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2482 "parser.cpp" - break; - - case 84: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 488 "parser.ypp" - { yylhs.value.as < ast::stmt_prof_end::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2488 "parser.cpp" - break; - - case 85: // expr: expr_ternary -#line 492 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2494 "parser.cpp" - break; - - case 86: // expr: expr_binary -#line 493 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2500 "parser.cpp" - break; - - case 87: // expr: expr_primitive + case 88: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" #line 494 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2506 "parser.cpp" + { yylhs.value.as < ast::stmt_prof_begin::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } +#line 2517 "parser.cpp" break; - case 88: // expr_or_empty: expr -#line 498 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2512 "parser.cpp" - break; - - case 89: // expr_or_empty: %empty + case 89: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" #line 499 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } -#line 2518 "parser.cpp" + { yylhs.value.as < ast::stmt_prof_end::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } +#line 2523 "parser.cpp" break; - case 90: // expr_assign: expr_object "=" expr + case 90: // expr: expr_ternary +#line 503 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2529 "parser.cpp" + break; + + case 91: // expr: expr_binary #line 504 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2524 "parser.cpp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2535 "parser.cpp" break; - case 91: // expr_assign: expr_object "|=" expr -#line 506 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2530 "parser.cpp" + case 92: // expr: expr_primitive +#line 505 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2541 "parser.cpp" break; - case 92: // expr_assign: expr_object "&=" expr -#line 508 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2536 "parser.cpp" + case 93: // expr_or_empty: expr +#line 509 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2547 "parser.cpp" break; - case 93: // expr_assign: expr_object "^=" expr + case 94: // expr_or_empty: %empty #line 510 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } +#line 2553 "parser.cpp" + break; + + case 95: // expr_assign: expr_object "=" expr +#line 515 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2559 "parser.cpp" + break; + + case 96: // expr_assign: expr_object "|=" expr +#line 517 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2565 "parser.cpp" + break; + + case 97: // expr_assign: expr_object "&=" expr +#line 519 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2571 "parser.cpp" + break; + + case 98: // expr_assign: expr_object "^=" expr +#line 521 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2542 "parser.cpp" +#line 2577 "parser.cpp" break; - case 94: // expr_assign: expr_object "<<=" expr -#line 512 "parser.ypp" + case 99: // expr_assign: expr_object "<<=" expr +#line 523 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()),std::move( yystack_[0].value.as < ast::expr > ())); } -#line 2548 "parser.cpp" +#line 2583 "parser.cpp" break; - case 95: // expr_assign: expr_object ">>=" expr -#line 514 "parser.ypp" + case 100: // expr_assign: expr_object ">>=" expr +#line 525 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2554 "parser.cpp" +#line 2589 "parser.cpp" break; - case 96: // expr_assign: expr_object "+=" expr -#line 516 "parser.ypp" + case 101: // expr_assign: expr_object "+=" expr +#line 527 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2560 "parser.cpp" +#line 2595 "parser.cpp" break; - case 97: // expr_assign: expr_object "-=" expr -#line 518 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2566 "parser.cpp" - break; - - case 98: // expr_assign: expr_object "*=" expr -#line 520 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2572 "parser.cpp" - break; - - case 99: // expr_assign: expr_object "/=" expr -#line 522 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2578 "parser.cpp" - break; - - case 100: // expr_assign: expr_object "%=" expr -#line 524 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2584 "parser.cpp" - break; - - case 101: // expr_increment: "++" expr_object + case 102: // expr_assign: expr_object "-=" expr #line 529 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2590 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2601 "parser.cpp" break; - case 102: // expr_increment: expr_object "++" + case 103: // expr_assign: expr_object "*=" expr #line 531 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2607 "parser.cpp" + break; + + case 104: // expr_assign: expr_object "/=" expr +#line 533 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2613 "parser.cpp" + break; + + case 105: // expr_assign: expr_object "%=" expr +#line 535 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2619 "parser.cpp" + break; + + case 106: // expr_increment: "++" expr_object +#line 540 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } +#line 2625 "parser.cpp" + break; + + case 107: // expr_increment: expr_object "++" +#line 542 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2596 "parser.cpp" +#line 2631 "parser.cpp" break; - case 103: // expr_decrement: "--" expr_object -#line 536 "parser.ypp" + case 108: // expr_decrement: "--" expr_object +#line 547 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2602 "parser.cpp" +#line 2637 "parser.cpp" break; - case 104: // expr_decrement: expr_object "--" -#line 538 "parser.ypp" + case 109: // expr_decrement: expr_object "--" +#line 549 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2608 "parser.cpp" +#line 2643 "parser.cpp" break; - case 105: // expr_ternary: expr "?" expr ":" expr -#line 543 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2614 "parser.cpp" - break; - - case 106: // expr_binary: expr "||" expr -#line 548 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2620 "parser.cpp" - break; - - case 107: // expr_binary: expr "&&" expr -#line 550 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2626 "parser.cpp" - break; - - case 108: // expr_binary: expr "==" expr -#line 552 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2632 "parser.cpp" - break; - - case 109: // expr_binary: expr "!=" expr + case 110: // expr_ternary: expr "?" expr ":" expr #line 554 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2649 "parser.cpp" + break; + + case 111: // expr_binary: expr "||" expr +#line 559 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2655 "parser.cpp" + break; + + case 112: // expr_binary: expr "&&" expr +#line 561 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2661 "parser.cpp" + break; + + case 113: // expr_binary: expr "==" expr +#line 563 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2667 "parser.cpp" + break; + + case 114: // expr_binary: expr "!=" expr +#line 565 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2638 "parser.cpp" +#line 2673 "parser.cpp" break; - case 110: // expr_binary: expr "<=" expr -#line 556 "parser.ypp" + case 115: // expr_binary: expr "<=" expr +#line 567 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2644 "parser.cpp" +#line 2679 "parser.cpp" break; - case 111: // expr_binary: expr ">=" expr -#line 558 "parser.ypp" + case 116: // expr_binary: expr ">=" expr +#line 569 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2650 "parser.cpp" +#line 2685 "parser.cpp" break; - case 112: // expr_binary: expr "<" expr -#line 560 "parser.ypp" + case 117: // expr_binary: expr "<" expr +#line 571 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2656 "parser.cpp" +#line 2691 "parser.cpp" break; - case 113: // expr_binary: expr ">" expr -#line 562 "parser.ypp" + case 118: // expr_binary: expr ">" expr +#line 573 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2662 "parser.cpp" +#line 2697 "parser.cpp" break; - case 114: // expr_binary: expr "|" expr -#line 564 "parser.ypp" + case 119: // expr_binary: expr "|" expr +#line 575 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2668 "parser.cpp" +#line 2703 "parser.cpp" break; - case 115: // expr_binary: expr "&" expr -#line 566 "parser.ypp" + case 120: // expr_binary: expr "&" expr +#line 577 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2674 "parser.cpp" +#line 2709 "parser.cpp" break; - case 116: // expr_binary: expr "^" expr -#line 568 "parser.ypp" + case 121: // expr_binary: expr "^" expr +#line 579 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2680 "parser.cpp" +#line 2715 "parser.cpp" break; - case 117: // expr_binary: expr "<<" expr -#line 570 "parser.ypp" + case 122: // expr_binary: expr "<<" expr +#line 581 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2686 "parser.cpp" +#line 2721 "parser.cpp" break; - case 118: // expr_binary: expr ">>" expr -#line 572 "parser.ypp" + case 123: // expr_binary: expr ">>" expr +#line 583 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2692 "parser.cpp" +#line 2727 "parser.cpp" break; - case 119: // expr_binary: expr "+" expr -#line 574 "parser.ypp" + case 124: // expr_binary: expr "+" expr +#line 585 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2698 "parser.cpp" +#line 2733 "parser.cpp" break; - case 120: // expr_binary: expr "-" expr -#line 576 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2704 "parser.cpp" - break; - - case 121: // expr_binary: expr "*" expr -#line 578 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2710 "parser.cpp" - break; - - case 122: // expr_binary: expr "/" expr -#line 580 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2716 "parser.cpp" - break; - - case 123: // expr_binary: expr "%" expr -#line 582 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2722 "parser.cpp" - break; - - case 124: // expr_primitive: expr_complement -#line 586 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } -#line 2728 "parser.cpp" - break; - - case 125: // expr_primitive: expr_not + case 125: // expr_binary: expr "-" expr #line 587 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } -#line 2734 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2739 "parser.cpp" break; - case 126: // expr_primitive: expr_call -#line 588 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 2740 "parser.cpp" - break; - - case 127: // expr_primitive: expr_method + case 126: // expr_binary: expr "*" expr #line 589 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 2746 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2745 "parser.cpp" break; - case 128: // expr_primitive: expr_add_array -#line 590 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } -#line 2752 "parser.cpp" - break; - - case 129: // expr_primitive: expr_reference + case 127: // expr_binary: expr "/" expr #line 591 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } -#line 2758 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2751 "parser.cpp" break; - case 130: // expr_primitive: expr_array -#line 592 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 2764 "parser.cpp" - break; - - case 131: // expr_primitive: expr_field + case 128: // expr_binary: expr "%" expr #line 593 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 2770 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2757 "parser.cpp" break; - case 132: // expr_primitive: expr_size -#line 594 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } -#line 2776 "parser.cpp" - break; - - case 133: // expr_primitive: expr_paren -#line 595 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } -#line 2782 "parser.cpp" - break; - - case 134: // expr_primitive: expr_thisthread -#line 596 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } -#line 2788 "parser.cpp" - break; - - case 135: // expr_primitive: expr_empty_array + case 129: // expr_primitive: expr_complement #line 597 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } -#line 2794 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } +#line 2763 "parser.cpp" break; - case 136: // expr_primitive: expr_undefined + case 130: // expr_primitive: expr_not #line 598 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } -#line 2800 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } +#line 2769 "parser.cpp" break; - case 137: // expr_primitive: expr_game + case 131: // expr_primitive: expr_call #line 599 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 2806 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 2775 "parser.cpp" break; - case 138: // expr_primitive: expr_self + case 132: // expr_primitive: expr_method #line 600 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 2812 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 2781 "parser.cpp" break; - case 139: // expr_primitive: expr_anim + case 133: // expr_primitive: expr_add_array #line 601 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 2818 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } +#line 2787 "parser.cpp" break; - case 140: // expr_primitive: expr_level + case 134: // expr_primitive: expr_reference #line 602 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 2824 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } +#line 2793 "parser.cpp" break; - case 141: // expr_primitive: expr_animation + case 135: // expr_primitive: expr_array #line 603 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } -#line 2830 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 2799 "parser.cpp" break; - case 142: // expr_primitive: expr_animtree + case 136: // expr_primitive: expr_field #line 604 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } -#line 2836 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 2805 "parser.cpp" break; - case 143: // expr_primitive: expr_identifier + case 137: // expr_primitive: expr_size #line 605 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 2842 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } +#line 2811 "parser.cpp" break; - case 144: // expr_primitive: expr_istring + case 138: // expr_primitive: expr_paren #line 606 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } -#line 2848 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } +#line 2817 "parser.cpp" break; - case 145: // expr_primitive: expr_string + case 139: // expr_primitive: expr_thisthread #line 607 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } -#line 2854 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } +#line 2823 "parser.cpp" break; - case 146: // expr_primitive: expr_color + case 140: // expr_primitive: expr_empty_array #line 608 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } -#line 2860 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } +#line 2829 "parser.cpp" break; - case 147: // expr_primitive: expr_vector + case 141: // expr_primitive: expr_undefined #line 609 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } -#line 2866 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } +#line 2835 "parser.cpp" break; - case 148: // expr_primitive: expr_float + case 142: // expr_primitive: expr_game #line 610 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } -#line 2872 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 2841 "parser.cpp" break; - case 149: // expr_primitive: expr_integer + case 143: // expr_primitive: expr_self #line 611 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } -#line 2878 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 2847 "parser.cpp" break; - case 150: // expr_primitive: expr_false + case 144: // expr_primitive: expr_anim #line 612 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } -#line 2884 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 2853 "parser.cpp" break; - case 151: // expr_primitive: expr_true + case 145: // expr_primitive: expr_level #line 613 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } -#line 2890 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 2859 "parser.cpp" break; - case 152: // expr_complement: "~" expr + case 146: // expr_primitive: expr_animation +#line 614 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } +#line 2865 "parser.cpp" + break; + + case 147: // expr_primitive: expr_animtree +#line 615 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } +#line 2871 "parser.cpp" + break; + + case 148: // expr_primitive: expr_identifier +#line 616 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 2877 "parser.cpp" + break; + + case 149: // expr_primitive: expr_istring +#line 617 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } +#line 2883 "parser.cpp" + break; + + case 150: // expr_primitive: expr_string #line 618 "parser.ypp" - { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2896 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } +#line 2889 "parser.cpp" break; - case 153: // expr_not: "!" expr + case 151: // expr_primitive: expr_color +#line 619 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } +#line 2895 "parser.cpp" + break; + + case 152: // expr_primitive: expr_vector +#line 620 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } +#line 2901 "parser.cpp" + break; + + case 153: // expr_primitive: expr_float +#line 621 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } +#line 2907 "parser.cpp" + break; + + case 154: // expr_primitive: expr_integer +#line 622 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } +#line 2913 "parser.cpp" + break; + + case 155: // expr_primitive: expr_false #line 623 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } +#line 2919 "parser.cpp" + break; + + case 156: // expr_primitive: expr_true +#line 624 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } +#line 2925 "parser.cpp" + break; + + case 157: // expr_complement: "~" expr +#line 629 "parser.ypp" + { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2931 "parser.cpp" + break; + + case 158: // expr_not: "!" expr +#line 634 "parser.ypp" { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2902 "parser.cpp" +#line 2937 "parser.cpp" break; - case 154: // expr_call: expr_function -#line 627 "parser.ypp" + case 159: // expr_call: expr_function +#line 638 "parser.ypp" { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2908 "parser.cpp" +#line 2943 "parser.cpp" break; - case 155: // expr_call: expr_pointer -#line 628 "parser.ypp" - { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2914 "parser.cpp" - break; - - case 156: // expr_method: expr_object expr_function -#line 631 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2920 "parser.cpp" - break; - - case 157: // expr_method: expr_object expr_pointer -#line 632 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2926 "parser.cpp" - break; - - case 158: // expr_function: expr_identifier "(" expr_arguments ")" -#line 637 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2932 "parser.cpp" - break; - - case 159: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" + case 160: // expr_call: expr_pointer #line 639 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2938 "parser.cpp" + { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } +#line 2949 "parser.cpp" break; - case 160: // expr_function: "thread" expr_identifier "(" expr_arguments ")" -#line 641 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2944 "parser.cpp" + case 161: // expr_method: expr_object expr_function +#line 642 "parser.ypp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 2955 "parser.cpp" break; - case 161: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" + case 162: // expr_method: expr_object expr_pointer #line 643 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2950 "parser.cpp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 2961 "parser.cpp" break; - case 162: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" -#line 645 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2956 "parser.cpp" + case 163: // expr_function: expr_identifier "(" expr_arguments ")" +#line 648 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 2967 "parser.cpp" break; - case 163: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 647 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2962 "parser.cpp" + case 164: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" +#line 650 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 2973 "parser.cpp" break; - case 164: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" + case 165: // expr_function: "thread" expr_identifier "(" expr_arguments ")" #line 652 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2968 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 2979 "parser.cpp" break; - case 165: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 166: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" #line 654 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2974 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 2985 "parser.cpp" break; - case 166: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 167: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" #line 656 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2980 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 2991 "parser.cpp" break; - case 167: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 168: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" #line 658 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::builtin); } -#line 2986 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 2997 "parser.cpp" break; - case 168: // expr_add_array: "[" expr_arguments_no_empty "]" + case 169: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" #line 663 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 3003 "parser.cpp" + break; + + case 170: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 665 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 3009 "parser.cpp" + break; + + case 171: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 667 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 3015 "parser.cpp" + break; + + case 172: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 669 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::builtin); } +#line 3021 "parser.cpp" + break; + + case 173: // expr_add_array: "[" expr_arguments_no_empty "]" +#line 674 "parser.ypp" { yylhs.value.as < ast::expr_add_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ())); } -#line 2992 "parser.cpp" +#line 3027 "parser.cpp" break; - case 169: // expr_parameters: expr_parameters "," expr_identifier -#line 668 "parser.ypp" - { yylhs.value.as < ast::expr_parameters::ptr > () = std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 2998 "parser.cpp" - break; - - case 170: // expr_parameters: expr_identifier -#line 670 "parser.ypp" - { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3004 "parser.cpp" - break; - - case 171: // expr_parameters: %empty -#line 672 "parser.ypp" - { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } -#line 3010 "parser.cpp" - break; - - case 172: // expr_arguments: expr_arguments_no_empty -#line 677 "parser.ypp" - { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } -#line 3016 "parser.cpp" - break; - - case 173: // expr_arguments: %empty + case 174: // expr_parameters: expr_parameters "," expr_identifier #line 679 "parser.ypp" + { yylhs.value.as < ast::expr_parameters::ptr > () = std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } +#line 3033 "parser.cpp" + break; + + case 175: // expr_parameters: expr_identifier +#line 681 "parser.ypp" + { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } +#line 3039 "parser.cpp" + break; + + case 176: // expr_parameters: %empty +#line 683 "parser.ypp" + { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } +#line 3045 "parser.cpp" + break; + + case 177: // expr_arguments: expr_arguments_no_empty +#line 688 "parser.ypp" + { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } +#line 3051 "parser.cpp" + break; + + case 178: // expr_arguments: %empty +#line 690 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); } -#line 3022 "parser.cpp" +#line 3057 "parser.cpp" break; - case 174: // expr_arguments_no_empty: expr_arguments "," expr -#line 684 "parser.ypp" + case 179: // expr_arguments_no_empty: expr_arguments "," expr +#line 695 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ()); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 3028 "parser.cpp" +#line 3063 "parser.cpp" break; - case 175: // expr_arguments_no_empty: expr -#line 686 "parser.ypp" + case 180: // expr_arguments_no_empty: expr +#line 697 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 3034 "parser.cpp" +#line 3069 "parser.cpp" break; - case 176: // expr_reference: "::" expr_identifier -#line 691 "parser.ypp" + case 181: // expr_reference: "::" expr_identifier +#line 702 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3040 "parser.cpp" +#line 3075 "parser.cpp" break; - case 177: // expr_reference: expr_path "::" expr_identifier -#line 693 "parser.ypp" + case 182: // expr_reference: expr_path "::" expr_identifier +#line 704 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_path::ptr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3046 "parser.cpp" +#line 3081 "parser.cpp" break; - case 178: // expr_array: expr_object "[" expr "]" -#line 698 "parser.ypp" + case 183: // expr_array: expr_object "[" expr "]" +#line 709 "parser.ypp" { yylhs.value.as < ast::expr_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3052 "parser.cpp" +#line 3087 "parser.cpp" break; - case 179: // expr_field: expr_object "." expr_identifier -#line 703 "parser.ypp" + case 184: // expr_field: expr_object "." expr_identifier +#line 714 "parser.ypp" { yylhs.value.as < ast::expr_field::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3058 "parser.cpp" +#line 3093 "parser.cpp" break; - case 180: // expr_size: expr_object ".size" -#line 708 "parser.ypp" - { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3064 "parser.cpp" - break; - - case 181: // expr_paren: "(" expr ")" -#line 713 "parser.ypp" - { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3070 "parser.cpp" - break; - - case 182: // expr_object: expr_call -#line 717 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 3076 "parser.cpp" - break; - - case 183: // expr_object: expr_method -#line 718 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 3082 "parser.cpp" - break; - - case 184: // expr_object: expr_array + case 185: // expr_size: expr_object ".size" #line 719 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 3088 "parser.cpp" + { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3099 "parser.cpp" break; - case 185: // expr_object: expr_field -#line 720 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 3094 "parser.cpp" - break; - - case 186: // expr_object: expr_game -#line 721 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 3100 "parser.cpp" - break; - - case 187: // expr_object: expr_self -#line 722 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 3106 "parser.cpp" - break; - - case 188: // expr_object: expr_anim -#line 723 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 3112 "parser.cpp" - break; - - case 189: // expr_object: expr_level + case 186: // expr_paren: "(" expr ")" #line 724 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 3118 "parser.cpp" + { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3105 "parser.cpp" break; - case 190: // expr_object: expr_identifier -#line 725 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 3124 "parser.cpp" + case 187: // expr_object: expr_call +#line 728 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 3111 "parser.cpp" break; - case 191: // expr_thisthread: "thisthread" + case 188: // expr_object: expr_method +#line 729 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 3117 "parser.cpp" + break; + + case 189: // expr_object: expr_array #line 730 "parser.ypp" - { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } -#line 3130 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 3123 "parser.cpp" break; - case 192: // expr_empty_array: "[" "]" + case 190: // expr_object: expr_field +#line 731 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 3129 "parser.cpp" + break; + + case 191: // expr_object: expr_game +#line 732 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 3135 "parser.cpp" + break; + + case 192: // expr_object: expr_self +#line 733 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 3141 "parser.cpp" + break; + + case 193: // expr_object: expr_anim +#line 734 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 3147 "parser.cpp" + break; + + case 194: // expr_object: expr_level #line 735 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 3153 "parser.cpp" + break; + + case 195: // expr_object: expr_identifier +#line 736 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 3159 "parser.cpp" + break; + + case 196: // expr_thisthread: "thisthread" +#line 741 "parser.ypp" + { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } +#line 3165 "parser.cpp" + break; + + case 197: // expr_empty_array: "[" "]" +#line 746 "parser.ypp" { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } -#line 3136 "parser.cpp" +#line 3171 "parser.cpp" break; - case 193: // expr_undefined: "undefined" -#line 740 "parser.ypp" + case 198: // expr_undefined: "undefined" +#line 751 "parser.ypp" { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } -#line 3142 "parser.cpp" +#line 3177 "parser.cpp" break; - case 194: // expr_game: "game" -#line 745 "parser.ypp" + case 199: // expr_game: "game" +#line 756 "parser.ypp" { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } -#line 3148 "parser.cpp" +#line 3183 "parser.cpp" break; - case 195: // expr_self: "self" -#line 750 "parser.ypp" + case 200: // expr_self: "self" +#line 761 "parser.ypp" { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } -#line 3154 "parser.cpp" +#line 3189 "parser.cpp" break; - case 196: // expr_anim: "anim" -#line 755 "parser.ypp" + case 201: // expr_anim: "anim" +#line 766 "parser.ypp" { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } -#line 3160 "parser.cpp" +#line 3195 "parser.cpp" break; - case 197: // expr_level: "level" -#line 760 "parser.ypp" + case 202: // expr_level: "level" +#line 771 "parser.ypp" { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } -#line 3166 "parser.cpp" +#line 3201 "parser.cpp" break; - case 198: // expr_animation: "%" "identifier" -#line 765 "parser.ypp" + case 203: // expr_animation: "%" "identifier" +#line 776 "parser.ypp" { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3172 "parser.cpp" +#line 3207 "parser.cpp" break; - case 199: // expr_animtree: "#animtree" -#line 770 "parser.ypp" + case 204: // expr_animtree: "#animtree" +#line 781 "parser.ypp" { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } -#line 3178 "parser.cpp" +#line 3213 "parser.cpp" break; - case 200: // expr_identifier: "identifier" -#line 775 "parser.ypp" + case 205: // expr_identifier: "identifier" +#line 786 "parser.ypp" { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3184 "parser.cpp" +#line 3219 "parser.cpp" break; - case 201: // expr_path: "path" -#line 780 "parser.ypp" + case 206: // expr_path: "path" +#line 791 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3190 "parser.cpp" +#line 3225 "parser.cpp" break; - case 202: // expr_path: expr_identifier -#line 782 "parser.ypp" + case 207: // expr_path: expr_identifier +#line 793 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < ast::expr_identifier::ptr > ()->value); } -#line 3196 "parser.cpp" +#line 3231 "parser.cpp" break; - case 203: // expr_istring: "localized string" -#line 787 "parser.ypp" + case 208: // expr_istring: "localized string" +#line 798 "parser.ypp" { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3202 "parser.cpp" +#line 3237 "parser.cpp" break; - case 204: // expr_string: "string literal" -#line 792 "parser.ypp" + case 209: // expr_string: "string literal" +#line 803 "parser.ypp" { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3208 "parser.cpp" +#line 3243 "parser.cpp" break; - case 205: // expr_color: "color" -#line 797 "parser.ypp" + case 210: // expr_color: "color" +#line 808 "parser.ypp" { yylhs.value.as < ast::expr_color::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3214 "parser.cpp" +#line 3249 "parser.cpp" break; - case 206: // expr_vector: "(" expr "," expr "," expr ")" -#line 802 "parser.ypp" + case 211: // expr_vector: "(" expr "," expr "," expr ")" +#line 813 "parser.ypp" { yylhs.value.as < ast::expr_vector::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3220 "parser.cpp" +#line 3255 "parser.cpp" break; - case 207: // expr_float: "-" "float" -#line 807 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3226 "parser.cpp" - break; - - case 208: // expr_float: "float" -#line 809 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3232 "parser.cpp" - break; - - case 209: // expr_integer: "-" "int" -#line 814 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3238 "parser.cpp" - break; - - case 210: // expr_integer: "int" -#line 816 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3244 "parser.cpp" - break; - - case 211: // expr_integer: "octal int" + case 212: // expr_float: "-" "float" #line 818 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3250 "parser.cpp" + { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 3261 "parser.cpp" break; - case 212: // expr_integer: "binary int" + case 213: // expr_float: "float" #line 820 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3256 "parser.cpp" + { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3267 "parser.cpp" break; - case 213: // expr_integer: "hexadecimal int" -#line 822 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3262 "parser.cpp" + case 214: // expr_integer: "-" "int" +#line 825 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 3273 "parser.cpp" break; - case 214: // expr_false: "false" + case 215: // expr_integer: "int" #line 827 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3279 "parser.cpp" + break; + + case 216: // expr_integer: "octal int" +#line 829 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3285 "parser.cpp" + break; + + case 217: // expr_integer: "binary int" +#line 831 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3291 "parser.cpp" + break; + + case 218: // expr_integer: "hexadecimal int" +#line 833 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3297 "parser.cpp" + break; + + case 219: // expr_false: "false" +#line 838 "parser.ypp" { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } -#line 3268 "parser.cpp" +#line 3303 "parser.cpp" break; - case 215: // expr_true: "true" -#line 832 "parser.ypp" + case 220: // expr_true: "true" +#line 843 "parser.ypp" { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } -#line 3274 "parser.cpp" +#line 3309 "parser.cpp" break; -#line 3278 "parser.cpp" +#line 3313 "parser.cpp" default: break; @@ -3458,35 +3493,36 @@ namespace xsk { namespace gsc { namespace s2 { { static const char *const yy_sname[] = { - "end of file", "error", "invalid token", "#inline", "#include", - "#using_animtree", "#animtree", "endon", "notify", "wait", "waittill", - "waittillmatch", "waittillframeend", "waitframe", "if", "else", "do", - "while", "for", "foreach", "in", "switch", "case", "default", "break", - "continue", "return", "breakpoint", "prof_begin", "prof_end", "thread", - "childthread", "thisthread", "call", "true", "false", "undefined", - ".size", "game", "self", "anim", "level", "(", ")", "{", "}", "[", "]", - ",", ".", "::", ":", ";", "?", "++", "--", "<<", ">>", "||", "&&", "==", - "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", - "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", "%", - "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", "inline", "include", - "declaration", "decl_usingtree", "decl_constant", "decl_thread", "stmt", - "stmt_block", "stmt_list", "stmt_expr", "stmt_call", "stmt_assign", - "stmt_endon", "stmt_notify", "stmt_wait", "stmt_waittill", - "stmt_waittillmatch", "stmt_waittillframeend", "stmt_waitframe", - "stmt_if", "stmt_ifelse", "stmt_while", "stmt_dowhile", "stmt_for", - "stmt_foreach", "stmt_switch", "stmt_case", "stmt_default", "stmt_break", - "stmt_continue", "stmt_return", "stmt_breakpoint", "stmt_prof_begin", - "stmt_prof_end", "expr", "expr_or_empty", "expr_assign", - "expr_increment", "expr_decrement", "expr_ternary", "expr_binary", - "expr_primitive", "expr_complement", "expr_not", "expr_call", - "expr_method", "expr_function", "expr_pointer", "expr_add_array", - "expr_parameters", "expr_arguments", "expr_arguments_no_empty", - "expr_reference", "expr_array", "expr_field", "expr_size", "expr_paren", - "expr_object", "expr_thisthread", "expr_empty_array", "expr_undefined", - "expr_game", "expr_self", "expr_anim", "expr_level", "expr_animation", + "end of file", "error", "invalid token", "/#", "#/", "#inline", + "#include", "#using_animtree", "#animtree", "endon", "notify", "wait", + "waittill", "waittillmatch", "waittillframeend", "waitframe", "if", + "else", "do", "while", "for", "foreach", "in", "switch", "case", + "default", "break", "continue", "return", "breakpoint", "prof_begin", + "prof_end", "thread", "childthread", "thisthread", "call", "true", + "false", "undefined", ".size", "game", "self", "anim", "level", "(", ")", + "{", "}", "[", "]", ",", ".", "::", ":", ";", "?", "++", "--", "<<", + ">>", "||", "&&", "==", "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", + "-=", "*=", "/=", "%=", "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", + "+", "-", "*", "/", "%", "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", + "inline", "include", "declaration", "decl_usingtree", "decl_constant", + "decl_thread", "stmt", "stmt_dev", "stmt_block", "stmt_list", + "stmt_expr", "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", + "stmt_wait", "stmt_waittill", "stmt_waittillmatch", + "stmt_waittillframeend", "stmt_waitframe", "stmt_if", "stmt_ifelse", + "stmt_while", "stmt_dowhile", "stmt_for", "stmt_foreach", "stmt_switch", + "stmt_case", "stmt_default", "stmt_break", "stmt_continue", + "stmt_return", "stmt_breakpoint", "stmt_prof_begin", "stmt_prof_end", + "expr", "expr_or_empty", "expr_assign", "expr_increment", + "expr_decrement", "expr_ternary", "expr_binary", "expr_primitive", + "expr_complement", "expr_not", "expr_call", "expr_method", + "expr_function", "expr_pointer", "expr_add_array", "expr_parameters", + "expr_arguments", "expr_arguments_no_empty", "expr_reference", + "expr_array", "expr_field", "expr_size", "expr_paren", "expr_object", + "expr_thisthread", "expr_empty_array", "expr_undefined", "expr_game", + "expr_self", "expr_anim", "expr_level", "expr_animation", "expr_animtree", "expr_identifier", "expr_path", "expr_istring", "expr_string", "expr_color", "expr_vector", "expr_float", "expr_integer", "expr_false", "expr_true", YY_NULLPTR @@ -3754,661 +3790,704 @@ namespace xsk { namespace gsc { namespace s2 { } - const short parser::yypact_ninf_ = -259; + const short parser::yypact_ninf_ = -269; - const short parser::yytable_ninf_ = -203; + const short parser::yytable_ninf_ = -208; const short parser::yypact_[] = { - 15, -53, -53, -14, -259, 44, 15, -259, -259, -259, - -259, -259, -259, -25, -259, -259, 20, 28, -43, -259, - -259, -259, -259, -33, 745, -259, -259, -259, 38, -7, - -259, -259, -17, 1, -259, 41, -259, -259, -259, -259, - -259, -259, -259, 745, 18, -33, 745, 745, -31, 5, - -259, -259, -259, -259, -259, -259, -259, 1793, -259, -259, - -259, -259, -259, 111, 400, -259, -259, -259, -259, 584, - 768, -259, -259, 773, -259, -259, -259, 1014, 1022, 1036, - 1046, -259, -259, 85, 50, -259, -259, -259, -259, -259, - -259, -259, -259, 42, 58, -33, 71, 86, 79, 84, - 90, 96, 94, 1079, 18, -259, 1876, 88, 115, -259, - -259, -259, -259, -259, -259, -259, 745, 745, 745, 745, - 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, - 745, 745, 745, 745, 745, -259, 812, -33, -259, -259, - 116, 133, 745, -33, -259, 900, -259, -259, 745, 745, - -33, 745, 745, -33, 745, -259, 745, 1523, 745, -259, - 1758, 175, 175, 807, 1907, 1989, 1989, 82, 82, 82, - 82, 1917, 1958, 1948, -59, -59, -259, -259, -259, 1563, - -259, -33, -6, -259, 134, 745, 132, -21, 145, 1002, - 148, 149, 152, 167, 3, 162, 169, 172, 678, 177, - 189, 190, -259, 187, 702, 702, -259, -259, 951, -259, - -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, - -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, - -259, -259, -259, 183, 184, 192, 193, 195, -259, -259, - 573, -259, -259, -259, -259, -28, 1603, 35, 197, 1643, - 77, 199, 1683, 1722, 153, 1876, 745, -259, 134, -259, - 745, 1828, -259, 200, -259, 745, 231, 745, 36, -33, - 745, 156, 201, 202, -259, -259, -259, -259, 1863, -259, - 745, 745, 745, -259, -259, 480, 480, -259, -259, -259, - -259, -259, -259, -259, 212, 213, 221, 223, -259, -259, - 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, - 745, 219, -259, 745, 220, -259, 745, 225, 745, 228, - 1876, 78, -259, 224, 1245, 233, 1279, 226, -259, -259, - -259, 520, -8, 1313, -259, -259, -259, 104, 113, 1523, - 745, 745, 745, 745, 1876, 1876, 1876, 1876, 1876, 1876, - 1876, 1876, 1876, 1876, 1876, 235, 126, 242, 127, 245, - 1347, 745, -259, -259, 1002, 745, 1002, 745, 745, -33, - 58, 236, 237, 1381, 1123, 1167, 1211, 745, -259, 745, - -259, 745, -259, 154, 258, 1415, -259, 1876, 238, 1449, - 274, -259, -259, -259, 241, 244, 745, 246, 745, 248, - 745, 158, 164, 180, -259, 1002, 249, 36, 1002, 745, - -259, -259, 254, -259, 256, -259, 260, -259, -259, -259, - -259, -259, 261, -259, 1483, 253, 276, 277, 1002, 1002, - -259, -259, -259, -259, -259 + 15, -269, -269, 10, 10, -32, -269, 26, 15, -269, + -269, -269, -269, -269, -269, -20, -269, -269, -24, -21, + -49, -269, -269, -269, -269, -30, 858, -269, -269, -269, + 25, -18, -269, -269, -35, -25, -269, 28, -269, -269, + -269, -269, -269, -269, -269, 858, 724, -30, 858, 858, + 55, -17, -269, -269, -269, -269, -269, -269, -269, 2001, + -269, -269, -269, -269, -269, 198, 435, -269, -269, -269, + -269, 589, 690, -269, -269, 814, -269, -269, -269, 819, + 881, 886, 1084, -269, -269, 552, 67, -269, -269, -269, + -269, -269, -269, -269, -269, 80, 34, -30, 75, 107, + 105, 112, 120, 115, 121, 1287, 724, -269, 2084, 118, + 128, -269, -269, -269, -269, -269, -269, -269, 858, 858, + 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, + 858, 858, 858, 858, 858, 858, 858, -269, 925, -30, + -269, -269, 135, 132, 858, -30, -269, 1021, -269, -269, + 858, 858, -30, 858, 858, -30, 858, -269, 858, 1731, + 858, -269, 1966, 117, 117, 920, 2115, 2166, 2166, 309, + 309, 309, 309, 2125, 632, 2156, 54, 54, -269, -269, + -269, 1771, -269, -30, 13, -269, 141, 1072, 858, 136, + 12, 145, 1225, 147, 150, 153, 155, 33, 156, 152, + 157, 791, 161, 166, 173, -269, 177, 130, 130, -269, + -269, -269, 1123, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, 172, 174, 175, + 178, 180, -269, -269, 36, -269, -269, -269, -269, 7, + 1811, 22, 183, 1851, 29, 192, 1891, 1930, 193, 2084, + 858, -269, 141, -269, 858, -269, 1174, 2036, -269, 200, + -269, 858, 228, 858, -4, -30, 858, 158, 199, 202, + -269, -269, -269, -269, 2071, -269, 858, 858, 858, -269, + -269, 69, 69, -269, -269, -269, -269, -269, -269, -269, + 207, 212, 213, 214, -269, -269, 858, 858, 858, 858, + 858, 858, 858, 858, 858, 858, 858, 210, -269, 858, + 211, -269, 858, 215, 858, 217, 2084, 38, -269, -269, + 209, 1453, 221, 1487, 222, -269, -269, -269, 1251, -7, + 1521, -269, -269, -269, 44, 45, 1731, 858, 858, 858, + 858, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, + 2084, 2084, 223, 46, 225, 53, 227, 1555, 858, -269, + -269, 1225, 858, 1225, 858, 858, -30, 34, 224, 232, + 1589, 1331, 1375, 1419, 858, -269, 858, -269, 858, -269, + 77, 256, 1623, -269, 2084, 235, 1657, 255, -269, -269, + -269, 236, 239, 858, 240, 858, 241, 858, 87, 88, + 98, -269, 1225, 246, -4, 1225, 858, -269, -269, 234, + -269, 254, -269, 257, -269, -269, -269, -269, -269, 258, + -269, 1691, 247, 250, 253, 1225, 1225, -269, -269, -269, + -269, -269 }; const unsigned char parser::yydefact_[] = { - 3, 0, 0, 0, 200, 0, 2, 7, 8, 9, - 12, 13, 14, 0, 201, 202, 0, 0, 0, 1, - 4, 5, 6, 171, 0, 10, 11, 204, 0, 0, - 170, 199, 0, 0, 191, 0, 215, 214, 193, 194, - 195, 196, 197, 0, 173, 0, 0, 0, 0, 0, - 203, 205, 208, 210, 211, 212, 213, 0, 85, 86, - 87, 124, 125, 126, 127, 154, 155, 128, 129, 130, - 131, 132, 133, 0, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 0, 144, 145, 146, 147, 148, - 149, 150, 151, 0, 0, 0, 0, 202, 0, 0, - 202, 0, 0, 0, 173, 192, 175, 0, 172, 176, - 153, 152, 207, 209, 198, 16, 0, 0, 0, 0, + 3, 12, 13, 0, 0, 0, 205, 0, 2, 7, + 8, 9, 14, 15, 16, 0, 206, 207, 0, 0, + 0, 1, 4, 5, 6, 176, 0, 10, 11, 209, + 0, 0, 175, 204, 0, 0, 196, 0, 220, 219, + 198, 199, 200, 201, 202, 0, 178, 0, 0, 0, + 0, 0, 208, 210, 213, 215, 216, 217, 218, 0, + 90, 91, 92, 129, 130, 131, 132, 159, 160, 133, + 134, 135, 136, 137, 138, 0, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 0, 149, 150, 151, + 152, 153, 154, 155, 156, 0, 0, 0, 0, 207, + 0, 0, 207, 0, 0, 0, 178, 197, 180, 0, + 177, 181, 158, 157, 212, 214, 203, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 180, 0, 0, 156, 157, - 202, 0, 173, 0, 15, 0, 17, 169, 0, 173, - 0, 0, 173, 0, 0, 181, 0, 175, 0, 168, - 0, 117, 118, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 119, 120, 121, 122, 123, 0, - 179, 0, 0, 172, 177, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 185, 0, 0, + 161, 162, 207, 0, 178, 0, 17, 0, 19, 174, + 0, 178, 0, 0, 178, 0, 0, 186, 0, 180, + 0, 173, 0, 122, 123, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 124, 125, 126, 127, + 128, 0, 184, 0, 0, 177, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 44, 0, 0, 0, 46, 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, 42, 0, 0, 0, 182, 183, 184, 185, - 0, 186, 187, 188, 189, 190, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 174, 0, 178, 0, 158, - 173, 0, 64, 0, 65, 0, 0, 0, 50, 0, - 0, 0, 0, 0, 77, 78, 79, 81, 0, 82, - 173, 173, 0, 182, 183, 101, 103, 43, 45, 53, - 54, 55, 51, 52, 0, 0, 0, 0, 102, 104, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 160, 173, 0, 162, 173, 0, 0, 0, - 105, 0, 59, 0, 0, 0, 0, 0, 47, 48, - 49, 0, 0, 0, 76, 75, 80, 0, 0, 0, - 0, 0, 0, 0, 90, 96, 97, 98, 99, 100, - 91, 92, 93, 95, 94, 0, 0, 0, 0, 0, - 0, 173, 159, 66, 0, 0, 0, 89, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 173, 161, 173, - 163, 173, 206, 0, 67, 0, 69, 88, 0, 0, - 0, 74, 83, 84, 0, 0, 173, 0, 173, 0, - 173, 0, 0, 0, 164, 0, 0, 50, 0, 0, - 56, 58, 172, 61, 172, 63, 172, 165, 166, 167, - 68, 70, 0, 72, 0, 0, 0, 0, 0, 0, - 57, 60, 62, 71, 73 + 0, 0, 0, 0, 0, 49, 0, 0, 0, 51, + 20, 21, 0, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 0, 0, 0, + 187, 188, 189, 190, 0, 191, 192, 193, 194, 195, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, + 0, 183, 0, 163, 178, 47, 0, 0, 69, 0, + 70, 0, 0, 0, 55, 0, 0, 0, 0, 0, + 82, 83, 84, 86, 0, 87, 178, 178, 0, 187, + 188, 106, 108, 48, 50, 58, 59, 60, 56, 57, + 0, 0, 0, 0, 107, 109, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 165, 178, + 0, 167, 178, 0, 0, 0, 110, 0, 46, 64, + 0, 0, 0, 0, 0, 52, 53, 54, 0, 0, + 0, 81, 80, 85, 0, 0, 0, 0, 0, 0, + 0, 95, 101, 102, 103, 104, 105, 96, 97, 98, + 100, 99, 0, 0, 0, 0, 0, 0, 178, 164, + 71, 0, 0, 0, 94, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 178, 166, 178, 168, 178, 211, + 0, 72, 0, 74, 93, 0, 0, 0, 79, 88, + 89, 0, 0, 178, 0, 178, 0, 178, 0, 0, + 0, 169, 0, 0, 55, 0, 0, 61, 63, 177, + 66, 177, 68, 177, 170, 171, 172, 73, 75, 0, + 77, 0, 0, 0, 0, 0, 0, 62, 65, 67, + 76, 78 }; const short parser::yypgoto_[] = { - -259, -259, -259, 300, 320, 324, -259, -259, -259, -178, - -89, -259, -75, -259, -259, -259, -259, -259, -259, -259, - -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, - -259, -259, -259, -259, -259, -259, -259, 191, -259, -258, - -253, -252, -259, -259, -259, -259, -259, -26, -12, -69, - -60, -259, -259, 257, -41, -259, 14, 75, -259, -259, - 157, -259, -259, -259, 247, 259, 273, 331, -259, -259, - 0, 6, -259, -9, -259, -259, -259, 139, -259, -259 + -269, -269, -269, 273, 319, 321, -269, -269, -269, 163, + -269, -94, 143, -83, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, 190, -269, + -268, -260, -258, -269, -269, -269, -269, -269, -130, -26, + -70, -68, -269, -269, 325, -45, -269, -12, 219, -269, + -269, 245, -269, -269, -269, 252, 300, 335, 369, -269, + -269, 0, 6, -269, -9, -269, -269, -269, 137, -269, + -269 }; const short parser::yydefgoto_[] = { - 0, 5, 6, 7, 8, 9, 10, 11, 12, 206, - 207, 208, 327, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 106, 388, 233, - 234, 235, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 29, 107, 183, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92 + 0, 7, 8, 9, 10, 11, 12, 13, 14, 209, + 210, 211, 212, 334, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 108, 395, + 237, 238, 239, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 31, 109, 185, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94 }; const short parser::yytable_[] = { - 13, 15, 15, 108, 138, 146, 13, 16, 17, 28, - 328, 266, 368, 139, 142, 329, 330, 23, 1, 2, - 3, 263, -202, 30, 31, 132, 133, 134, 18, 96, - 288, 264, 97, 100, 14, 4, 94, 259, 98, 101, - 369, 95, 158, 24, 19, 109, 27, 99, 32, 33, - 34, 35, 36, 37, 38, 4, 39, 40, 41, 42, - 43, 112, 113, 108, 104, 105, 32, 33, 45, 35, - 14, 4, 25, 140, 39, 40, 41, 42, 312, 141, - 26, 93, 203, 158, 46, 47, 271, 102, 14, 4, - 204, 205, 27, 114, 144, 147, 53, 54, 55, 56, - 143, 48, 145, 4, 49, 14, 4, 27, 50, 51, - 52, 53, 54, 55, 56, -190, -190, 148, -190, 236, - 315, 362, -190, 14, 4, 158, 158, 142, 149, 150, - 151, -190, 152, 237, -190, -202, 158, 180, 117, 118, - 154, -182, -182, 184, -182, 245, 153, 371, -182, 328, - 248, 141, 158, 251, 329, 330, 372, -182, 142, 238, - -182, 158, 159, 236, 130, 131, 132, 133, 134, 378, - 380, 138, -190, -190, 158, 158, 260, 237, 283, 283, - 139, 258, 236, 181, 262, 272, 384, 265, 386, 245, - 267, 268, 284, 284, 269, 141, 237, 404, -182, -182, - 319, 417, 158, 238, 245, 245, 158, 418, 245, 270, - 141, 141, 158, 274, 141, 57, 138, 138, 238, 238, - 239, 275, 238, 419, 276, 139, 139, 420, 158, 279, - 423, 280, 281, 282, 103, 289, 290, 110, 111, 313, - 140, 316, 283, 323, 291, 292, 141, 293, 325, 113, - 433, 434, 334, 335, 340, 341, 284, 130, 131, 132, - 133, 134, 138, 342, 239, 343, 355, 357, 245, 332, - 361, 139, 359, 405, 141, 365, 363, 377, 367, 239, - 239, 391, 238, 239, 379, 140, 140, 381, 392, 393, - 407, 141, 141, 410, 409, 157, 411, 425, 413, 426, - 415, 421, 240, 427, 428, 430, 20, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 21, 179, 431, 432, - 22, 140, 422, 273, 0, 0, 0, 141, 236, 246, - 236, 0, 249, 239, 0, 252, 240, 253, 0, 255, - 0, 0, 237, 0, 237, 412, 0, 414, 0, 416, - 0, 285, 286, 0, 245, 240, 245, 0, 0, 390, - 141, 0, 141, 0, 0, 0, 261, 0, 238, 236, - 238, 283, 236, 0, 0, 0, 0, 0, 0, 278, - 0, 0, 241, 237, 0, 284, 237, 0, 0, 182, - 0, 0, 236, 236, 242, 245, 247, 245, 245, 250, - 0, 141, 0, 141, 141, 0, 237, 237, 243, 238, - 0, 238, 238, 0, 0, 331, 0, 0, 245, 245, - -183, -183, 0, -183, 141, 141, 241, -183, 0, 239, - 0, 239, 238, 238, 0, 0, -183, 320, 242, -183, - 0, 241, 241, 0, 0, 241, 324, 0, 326, 0, - 0, 333, 243, 242, 242, 0, 0, 242, 0, 0, - 0, 0, 0, 339, 0, 0, 244, 243, 243, 0, - 239, 243, 239, 239, 0, 0, 0, -183, -183, 0, - 0, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 0, 239, 239, 0, 0, 0, 0, 360, - 32, 33, 0, 35, 0, 241, 0, 321, 0, 0, - 244, 240, 0, 240, 0, 0, 136, 242, 0, 137, - 0, 373, 374, 375, 376, 244, 244, 337, 338, 244, - 0, 243, 0, 0, 0, 0, 0, 0, 0, 0, - 32, 33, 0, 35, 0, 0, 385, 0, 387, 389, - 0, 0, 240, 0, 331, 240, 136, 14, 4, 137, - 356, 0, 0, 358, 298, 299, 0, 0, 0, 0, - 294, 295, 0, 296, 297, 240, 240, 0, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 244, - 424, 0, 0, 32, 33, 0, 35, 14, 4, 0, - 0, 241, 0, 241, -184, -184, 0, -184, 383, 136, - 0, -184, 137, 242, 0, 242, 0, 298, 299, 0, - -184, 0, 0, -184, 401, 0, 402, 243, 403, 243, - 0, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 241, 0, 241, 241, 0, 0, 0, 0, - 14, 4, 0, 0, 242, 0, 242, 242, 0, 0, - 0, -184, -184, 0, 0, 241, 241, 0, 243, 0, - 243, 243, 0, 0, 31, 0, 0, 242, 242, 0, - 0, 0, 0, 0, 0, 244, 0, 244, 0, 0, - 0, 243, 243, 0, 0, 0, 0, 0, 32, 33, - 34, 35, 36, 37, 38, 0, 39, 40, 41, 42, - 43, 0, 0, 0, 44, 0, 0, 0, 45, 0, - 277, 0, 32, 33, 0, 35, 244, 0, 244, 244, - 39, 40, 41, 42, 46, 47, 0, 0, 203, 0, - 0, 31, 0, 0, 0, 0, 0, 0, 0, 244, - 244, 48, 0, 0, 49, 14, 4, 27, 50, 51, - 52, 53, 54, 55, 56, 32, 33, 34, 35, 36, - 37, 38, 0, 39, 40, 41, 42, 43, 0, 14, - 4, 44, 0, 0, 0, 45, 0, 0, -185, -185, - 0, -185, 0, 32, 33, -185, 35, 0, 0, 0, - 135, 46, 47, 0, -185, 0, 0, -185, 31, 136, - 0, 0, 137, 0, 0, 0, 0, 0, 48, 0, - 0, 49, 14, 4, 27, 50, 51, 52, 53, 54, - 55, 56, 32, 33, 34, 35, 36, 37, 38, 0, - 39, 40, 41, 42, 43, -185, -185, 0, 104, 0, - 14, 4, 45, 117, 118, 0, 120, 121, 122, 123, - 124, 125, 126, 0, 0, 0, 0, 0, 46, 47, - 0, 0, 0, 0, 0, 0, 127, 128, 129, 130, - 131, 132, 133, 134, 0, 48, 0, 0, 49, 14, - 4, 27, 50, 51, 52, 53, 54, 55, 56, 185, - 0, 0, 186, 187, 188, 0, 189, 190, 191, 192, - 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 32, 33, 0, 35, 0, 0, 0, 0, 39, 40, - 41, 42, 0, 0, 145, 202, 203, 0, 0, 0, - 0, 0, 0, 0, 204, 205, 0, 0, 0, 0, - 185, 0, 0, 186, 187, 188, 0, 189, 190, 191, - 192, 0, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 32, 33, 0, 35, 0, 0, 14, 4, 39, - 40, 41, 42, 0, 0, 145, 287, 203, 0, 0, - 0, 0, 0, 0, 0, 204, 205, 0, 0, 0, - 0, 185, 0, 0, 186, 187, 188, 0, 189, 190, - 191, 192, 0, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 32, 33, 0, 35, 0, 0, 14, 4, - 39, 40, 41, 42, -186, -186, 145, -186, 203, 0, - 0, -186, -187, -187, 0, -187, 204, 205, 0, -187, - -186, 0, 0, -186, 0, 0, -188, -188, -187, -188, - 0, -187, 0, -188, 0, 0, -189, -189, 0, -189, - 0, 0, -188, -189, 0, -188, 0, 0, 0, 14, - 4, 0, -189, 0, 0, -189, 0, 0, 0, 0, - 0, -186, -186, 0, 0, 0, 0, 0, 0, -187, - -187, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 155, -188, -188, 0, 0, 156, 0, 0, - 0, 0, 116, -189, -189, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 395, 0, 0, 0, - 0, 396, 0, 0, 0, 0, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 15, 110, 148, 17, 17, 140, 335, 141, 15, 18, + 19, 30, 20, 98, 336, 375, 337, 240, 1, 2, + 3, 4, 5, 101, 25, 32, 21, 96, 34, 35, + 27, 37, 97, 28, 99, 102, 41, 42, 43, 44, + 100, 103, 29, 376, 206, 300, 301, 111, 302, 303, + 26, 144, 207, 208, 16, 6, 269, 240, 263, -207, + 6, 110, 240, 160, 16, 6, 270, 318, 34, 35, + 95, 37, 160, 116, 321, 142, 104, 289, 289, 160, + 147, 143, 240, 369, 138, 16, 6, 139, 160, 378, + 379, 385, 304, 305, 160, 160, 160, 149, 387, 16, + 6, 34, 35, 160, 37, 6, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 138, 277, 145, + 139, 241, 411, 150, 29, 16, 6, 160, 55, 56, + 57, 58, 424, 425, 146, 242, 240, 160, 160, 182, + 134, 135, 136, 426, 289, 186, 335, 249, 160, 114, + 115, 151, 252, 143, 336, 255, 337, 152, 16, 6, + 153, 241, 34, 35, 154, 37, 241, 155, 160, 156, + 41, 42, 43, 44, 140, 242, 141, 161, 206, 144, + 242, 290, 290, 262, 183, 264, 241, 249, 278, 271, + 268, 273, 249, 143, 274, 242, 242, 275, 143, 276, + 242, 132, 133, 134, 135, 136, 281, 249, 249, 280, + 286, 282, 249, 143, 143, 285, 59, 287, 143, 16, + 6, 140, 140, 141, 141, 288, 295, 319, 296, 297, + -187, -187, 298, -187, 299, 105, 322, -187, 112, 113, + 241, 240, 325, 240, 142, 330, -187, 332, 290, -187, + 143, 347, 341, 115, 242, 342, 348, 349, 350, 362, + 364, 368, 242, 370, 366, 372, 249, 384, 140, 386, + 141, 388, 143, 412, 249, 339, 374, 416, 399, 432, + 143, 22, 240, 398, 289, 240, 400, -187, -187, 414, + 417, 142, 142, 418, 420, 422, 159, 143, 143, 433, + 428, 437, 434, 435, 438, 240, 240, 439, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 23, 181, 24, + 266, 429, 0, 0, 279, 0, 0, 0, 142, 0, + 250, 0, 0, 253, 143, 241, 256, 241, 257, 0, + 259, 0, 0, 0, 0, 272, 0, 0, 419, 242, + 421, 242, 423, 0, 0, 0, 243, 119, 120, 0, + 0, 249, 0, 249, 0, 294, 397, 143, 267, 143, + 0, 0, 0, 0, 0, 0, 241, 0, 290, 241, + 0, 284, 244, 132, 133, 134, 135, 136, 0, 245, + 242, 0, 242, 242, 0, 0, 243, 0, 0, 241, + 241, 243, 249, 0, 249, 249, 0, 0, 143, 0, + 143, 143, 0, 242, 242, 0, 243, 243, 0, 294, + 0, 243, 244, 0, 0, 249, 249, 244, 0, 245, + 0, 143, 143, 0, 245, 0, 0, 246, 0, 0, + 326, 0, 291, 292, 0, 0, 0, 244, 0, 245, + 245, 331, 0, 333, 245, 0, 340, -188, -188, 184, + -188, 0, 0, 0, -188, 0, 251, 0, 346, 254, + 0, 0, 247, -188, 0, 243, -188, 246, 0, 0, + 0, 0, 246, 243, 0, 0, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 246, 246, 0, + 0, 244, 246, 0, 367, 0, 248, 0, 245, 338, + 0, 0, 247, 0, -188, -188, 245, 247, 0, 0, + 0, 0, 0, 0, 391, 0, 393, 380, 381, 382, + 383, 0, 247, 247, 0, 0, 0, 247, 0, 0, + 0, 0, 0, 0, 0, 0, 248, 0, 0, 0, + 0, 248, 392, 0, 394, 396, 246, 0, 0, 0, + 0, 0, 0, 0, 246, 427, 248, 248, 430, 0, + 0, 248, 0, 0, -195, -195, 0, -195, 0, 327, + 243, -195, 243, 0, 0, 0, 144, 0, 440, 441, + -195, 247, 0, -195, -207, 0, 431, 0, 0, 247, + 0, 344, 345, 0, 0, 0, 244, 0, 244, 0, + 0, -189, -189, 245, -189, 245, 0, 0, -189, 0, + 0, 243, 0, 243, 243, 248, 0, -189, 0, 0, + -189, -195, -195, 248, 363, 0, 0, 365, 0, 0, + 0, 0, 0, 0, 243, 243, 0, 244, 0, 338, + 244, 0, 0, 0, 245, 0, 245, 245, 0, 0, + 0, 246, 0, 246, 0, 0, 0, 0, -189, -189, + 244, 244, 0, 0, 0, 0, 0, 245, 245, 0, + 119, 120, 0, 390, 123, 124, 125, 126, 127, 128, + 0, 0, 0, 0, 0, 0, 247, 0, 247, 408, + 0, 409, 246, 410, 246, 246, 132, 133, 134, 135, + 136, 0, -190, -190, 0, -190, 0, 0, 0, -190, + 0, 0, 33, 0, 0, 246, 246, 0, -190, 0, + 248, -190, 248, 0, 0, 0, 0, 247, 0, 247, + 247, 0, 0, 0, 0, 0, 34, 35, 36, 37, + 38, 39, 40, 0, 41, 42, 43, 44, 45, 0, + 247, 247, 106, 107, 0, 0, 47, 0, 0, -190, + -190, 248, 0, 248, 248, 0, 0, 0, 0, 0, + 0, 0, 48, 49, 0, 0, 0, 0, 0, 33, + 0, 0, 0, 0, 248, 248, 0, 0, 0, 50, + 0, 0, 51, 16, 6, 29, 52, 53, 54, 55, + 56, 57, 58, 34, 35, 36, 37, 38, 39, 40, + 0, 41, 42, 43, 44, 45, 0, 0, 0, 46, + 0, 0, 0, 47, 0, 283, 34, 35, 0, 37, + 0, -191, -191, 137, -191, 0, 0, 0, -191, 48, + 49, 0, 138, 0, 0, 139, 33, -191, 0, 0, + -191, 0, 0, 0, 0, 0, 50, 0, 0, 51, + 16, 6, 29, 52, 53, 54, 55, 56, 57, 58, + 34, 35, 36, 37, 38, 39, 40, 0, 41, 42, + 43, 44, 45, 16, 6, 0, 46, 0, -191, -191, + 47, 0, 0, -192, -192, 0, -192, 0, -193, -193, + -192, -193, 0, 0, 0, -193, 48, 49, 0, -192, + 0, 0, -192, 33, -193, 0, 0, -193, 0, 0, + 0, 0, 0, 50, 0, 0, 51, 16, 6, 29, + 52, 53, 54, 55, 56, 57, 58, 34, 35, 36, + 37, 38, 39, 40, 0, 41, 42, 43, 44, 45, + -192, -192, 0, 106, 0, -193, -193, 47, 119, 120, + 0, 122, 123, 124, 125, 126, 127, 128, 0, 0, + 0, 0, 0, 48, 49, 0, 0, 0, 0, 0, + 0, 129, 130, 131, 132, 133, 134, 135, 136, 0, + 50, 0, 0, 51, 16, 6, 29, 52, 53, 54, + 55, 56, 57, 58, 187, 0, 0, 0, 0, 0, + 0, 0, 188, 0, 0, 189, 190, 191, 0, 192, + 193, 194, 195, 0, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 34, 35, 0, 37, 0, 0, 0, + 0, 41, 42, 43, 44, 0, 0, 147, 205, 206, + 0, 0, 0, 0, 0, 187, 265, 207, 208, 0, + 0, 0, 0, 188, 0, 0, 189, 190, 191, 0, + 192, 193, 194, 195, 0, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 34, 35, 0, 37, 0, 0, + 16, 6, 41, 42, 43, 44, -194, -194, 147, -194, + 206, 0, 0, -194, 0, 0, 187, 0, 207, 208, + 0, 0, -194, 0, 188, -194, 0, 189, 190, 191, + 0, 192, 193, 194, 195, 0, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 34, 35, 0, 37, 0, + 0, 16, 6, 41, 42, 43, 44, 0, 0, 147, + 293, 206, 0, -194, -194, 0, 0, 187, 328, 207, + 208, 0, 0, 0, 0, 188, 0, 0, 189, 190, + 191, 0, 192, 193, 194, 195, 0, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 34, 35, 0, 37, + 0, 0, 16, 6, 41, 42, 43, 44, 0, 0, + 147, 0, 206, 0, 0, 0, 0, 0, 187, 0, + 207, 208, 0, 0, 0, 0, 188, 0, 0, 189, + 190, 191, 0, 192, 193, 194, 195, 0, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 34, 35, 0, + 37, 0, 0, 16, 6, 41, 42, 43, 44, 0, + 0, 147, 0, 206, 0, 0, 0, 0, 0, 0, + 0, 207, 208, 34, 35, 0, 37, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, + 0, 0, 139, 0, 0, 0, 0, 304, 305, 0, + 0, 0, 0, 0, 16, 6, 0, 0, 0, 0, + 0, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 157, 0, 0, 0, 0, 158, 0, 0, + 16, 6, 118, 0, 0, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, + 131, 132, 133, 134, 135, 136, 402, 0, 0, 0, + 0, 403, 0, 0, 0, 0, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 397, 0, 0, 0, 0, 398, 0, 0, 0, 0, - 116, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 127, 128, 129, 130, - 131, 132, 133, 134, 399, 0, 0, 0, 0, 400, - 0, 0, 0, 0, 116, 0, 0, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 364, 0, - 127, 128, 129, 130, 131, 132, 133, 134, 116, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 366, 0, 127, 128, 129, 130, 131, 132, - 133, 134, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 370, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 404, 0, 0, 0, 0, 405, 0, 0, 0, 0, + 118, 0, 0, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 129, 130, 131, 132, + 133, 134, 135, 136, 406, 0, 0, 0, 0, 407, + 0, 0, 0, 0, 118, 0, 0, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 371, 0, + 129, 130, 131, 132, 133, 134, 135, 136, 118, 0, + 0, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 373, 0, 129, 130, 131, 132, 133, 134, + 135, 136, 118, 0, 0, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 377, 0, 129, 130, + 131, 132, 133, 134, 135, 136, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 382, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 116, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 394, 0, 127, 128, 129, 130, - 131, 132, 133, 134, 116, 0, 0, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 406, 0, - 127, 128, 129, 130, 131, 132, 133, 134, 116, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 408, 0, 127, 128, 129, 130, 131, 132, - 133, 134, 116, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 429, 0, 127, 128, - 129, 130, 131, 132, 133, 134, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 389, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 118, 0, 0, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 401, 0, 129, 130, 131, 132, + 133, 134, 135, 136, 118, 0, 0, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 413, 0, + 129, 130, 131, 132, 133, 134, 135, 136, 118, 0, + 0, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 415, 0, 129, 130, 131, 132, 133, 134, + 135, 136, 118, 0, 0, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 436, 0, 129, 130, + 131, 132, 133, 134, 135, 136, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 254, 0, 0, 0, 0, 0, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 258, 0, 0, 0, 0, 0, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 257, 0, 0, 0, 0, 0, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 261, 0, 0, 0, 0, 0, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 311, 0, 0, 0, 0, 0, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 317, 0, 0, 0, 0, 0, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 314, 0, 0, 0, 0, 0, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 320, 0, 0, 0, 0, 0, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 317, 0, 0, 0, 0, 0, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 323, 0, 0, 0, 0, 0, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 318, 0, 0, 0, 0, 116, 0, 0, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 0, 0, + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 324, 0, 0, 0, 0, 118, 0, 0, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 127, 128, 129, 130, 131, 132, 133, 134, 256, - 0, 116, 0, 0, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 127, 128, 129, - 130, 131, 132, 133, 134, 115, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 129, 130, 131, 132, 133, 134, 135, 136, 260, + 0, 118, 0, 0, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 129, 130, 131, + 132, 133, 134, 135, 136, 117, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 128, 129, 130, 131, 132, 133, 134, - 322, 116, 0, 0, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 127, 128, 129, - 130, 131, 132, 133, 134, 336, 116, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 116, - 0, 0, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 0, 0, 0, 0, 0, 127, 128, 129, 130, 131, - 132, 133, 134, 117, 118, 0, 0, 121, 122, 123, - 124, 125, 126, 117, 118, 0, 0, 121, 122, 123, - 124, 125, 126, 0, 0, 0, 127, 128, 129, 130, - 131, 132, 133, 134, 0, 0, 0, 128, 129, 130, - 131, 132, 133, 134, 117, 118, 0, 0, 121, 122, - 123, 124, 125, 126, 117, 118, 0, 0, 121, 122, - 123, 124, 125, 126, 0, 0, 0, 0, 128, 0, - 130, 131, 132, 133, 134, 0, 0, 0, 0, 0, - 130, 131, 132, 133, 134, 117, 118, 0, 0, 0, - 0, 123, 124, 125, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 130, 131, 132, 133, 134 + 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 329, 118, 0, 0, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 129, 130, 131, + 132, 133, 134, 135, 136, 343, 118, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 118, + 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 0, 0, 0, 0, 0, 129, 130, 131, 132, 133, + 134, 135, 136, 119, 120, 0, 0, 123, 124, 125, + 126, 127, 128, 119, 120, 0, 0, 123, 124, 125, + 126, 127, 128, 0, 0, 0, 129, 130, 131, 132, + 133, 134, 135, 136, 0, 0, 0, 130, 131, 132, + 133, 134, 135, 136, 119, 120, 0, 0, 123, 124, + 125, 126, 127, 128, 119, 120, 0, 0, 0, 0, + 125, 126, 127, 128, 0, 0, 0, 0, 130, 0, + 132, 133, 134, 135, 136, 0, 0, 0, 0, 0, + 132, 133, 134, 135, 136 }; const short parser::yycheck_[] = { - 0, 1, 2, 44, 73, 94, 6, 1, 2, 18, - 268, 189, 20, 73, 42, 268, 268, 42, 3, 4, - 5, 42, 50, 23, 6, 84, 85, 86, 42, 46, - 208, 52, 32, 33, 87, 88, 43, 43, 32, 33, - 48, 48, 48, 68, 0, 45, 89, 46, 30, 31, - 32, 33, 34, 35, 36, 88, 38, 39, 40, 41, - 42, 92, 93, 104, 46, 47, 30, 31, 50, 33, - 87, 88, 52, 73, 38, 39, 40, 41, 43, 73, - 52, 43, 46, 48, 66, 67, 83, 46, 87, 88, - 54, 55, 89, 88, 52, 95, 93, 94, 95, 96, - 50, 83, 44, 88, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 30, 31, 46, 33, 145, - 43, 43, 37, 87, 88, 48, 48, 42, 42, 50, - 46, 46, 42, 145, 49, 50, 48, 137, 56, 57, - 46, 30, 31, 143, 33, 145, 50, 43, 37, 407, - 150, 145, 48, 153, 407, 407, 43, 46, 42, 145, - 49, 48, 47, 189, 82, 83, 84, 85, 86, 43, - 43, 240, 87, 88, 48, 48, 42, 189, 204, 205, - 240, 181, 208, 50, 52, 194, 364, 42, 366, 189, - 42, 42, 204, 205, 42, 189, 208, 43, 87, 88, - 47, 43, 48, 189, 204, 205, 48, 43, 208, 42, - 204, 205, 48, 51, 208, 24, 285, 286, 204, 205, - 145, 52, 208, 43, 52, 285, 286, 405, 48, 52, - 408, 42, 42, 46, 43, 52, 52, 46, 47, 42, - 240, 42, 268, 43, 52, 52, 240, 52, 17, 93, - 428, 429, 51, 51, 42, 42, 268, 82, 83, 84, - 85, 86, 331, 42, 189, 42, 47, 47, 268, 269, - 42, 331, 47, 15, 268, 42, 52, 42, 52, 204, - 205, 370, 268, 208, 42, 285, 286, 42, 52, 52, - 52, 285, 286, 52, 20, 104, 52, 43, 52, 43, - 52, 52, 145, 43, 43, 52, 6, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 6, 136, 52, 52, - 6, 331, 407, 194, -1, -1, -1, 331, 364, 148, - 366, -1, 151, 268, -1, 154, 189, 156, -1, 158, - -1, -1, 364, -1, 366, 396, -1, 398, -1, 400, - -1, 204, 205, -1, 364, 208, 366, -1, -1, 369, - 364, -1, 366, -1, -1, -1, 185, -1, 364, 405, - 366, 407, 408, -1, -1, -1, -1, -1, -1, 198, - -1, -1, 145, 405, -1, 407, 408, -1, -1, 142, - -1, -1, 428, 429, 145, 405, 149, 407, 408, 152, - -1, 405, -1, 407, 408, -1, 428, 429, 145, 405, - -1, 407, 408, -1, -1, 268, -1, -1, 428, 429, - 30, 31, -1, 33, 428, 429, 189, 37, -1, 364, - -1, 366, 428, 429, -1, -1, 46, 256, 189, 49, - -1, 204, 205, -1, -1, 208, 265, -1, 267, -1, - -1, 270, 189, 204, 205, -1, -1, 208, -1, -1, - -1, -1, -1, 282, -1, -1, 145, 204, 205, -1, - 405, 208, 407, 408, -1, -1, -1, 87, 88, -1, - -1, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, -1, 428, 429, -1, -1, -1, -1, 318, - 30, 31, -1, 33, -1, 268, -1, 260, -1, -1, - 189, 364, -1, 366, -1, -1, 46, 268, -1, 49, - -1, 340, 341, 342, 343, 204, 205, 280, 281, 208, - -1, 268, -1, -1, -1, -1, -1, -1, -1, -1, - 30, 31, -1, 33, -1, -1, 365, -1, 367, 368, - -1, -1, 405, -1, 407, 408, 46, 87, 88, 49, - 313, -1, -1, 316, 54, 55, -1, -1, -1, -1, - 7, 8, -1, 10, 11, 428, 429, -1, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 268, - 409, -1, -1, 30, 31, -1, 33, 87, 88, -1, - -1, 364, -1, 366, 30, 31, -1, 33, 361, 46, - -1, 37, 49, 364, -1, 366, -1, 54, 55, -1, - 46, -1, -1, 49, 377, -1, 379, 364, 381, 366, - -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 405, -1, 407, 408, -1, -1, -1, -1, - 87, 88, -1, -1, 405, -1, 407, 408, -1, -1, - -1, 87, 88, -1, -1, 428, 429, -1, 405, -1, - 407, 408, -1, -1, 6, -1, -1, 428, 429, -1, - -1, -1, -1, -1, -1, 364, -1, 366, -1, -1, - -1, 428, 429, -1, -1, -1, -1, -1, 30, 31, - 32, 33, 34, 35, 36, -1, 38, 39, 40, 41, - 42, -1, -1, -1, 46, -1, -1, -1, 50, -1, - 52, -1, 30, 31, -1, 33, 405, -1, 407, 408, - 38, 39, 40, 41, 66, 67, -1, -1, 46, -1, - -1, 6, -1, -1, -1, -1, -1, -1, -1, 428, - 429, 83, -1, -1, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 30, 31, 32, 33, 34, - 35, 36, -1, 38, 39, 40, 41, 42, -1, 87, - 88, 46, -1, -1, -1, 50, -1, -1, 30, 31, - -1, 33, -1, 30, 31, 37, 33, -1, -1, -1, - 37, 66, 67, -1, 46, -1, -1, 49, 6, 46, - -1, -1, 49, -1, -1, -1, -1, -1, 83, -1, - -1, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 30, 31, 32, 33, 34, 35, 36, -1, - 38, 39, 40, 41, 42, 87, 88, -1, 46, -1, - 87, 88, 50, 56, 57, -1, 59, 60, 61, 62, - 63, 64, 65, -1, -1, -1, -1, -1, 66, 67, - -1, -1, -1, -1, -1, -1, 79, 80, 81, 82, - 83, 84, 85, 86, -1, 83, -1, -1, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 9, - -1, -1, 12, 13, 14, -1, 16, 17, 18, 19, - -1, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, -1, 33, -1, -1, -1, -1, 38, 39, - 40, 41, -1, -1, 44, 45, 46, -1, -1, -1, - -1, -1, -1, -1, 54, 55, -1, -1, -1, -1, - 9, -1, -1, 12, 13, 14, -1, 16, 17, 18, - 19, -1, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, -1, 33, -1, -1, 87, 88, 38, - 39, 40, 41, -1, -1, 44, 45, 46, -1, -1, - -1, -1, -1, -1, -1, 54, 55, -1, -1, -1, - -1, 9, -1, -1, 12, 13, 14, -1, 16, 17, - 18, 19, -1, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, -1, 33, -1, -1, 87, 88, - 38, 39, 40, 41, 30, 31, 44, 33, 46, -1, - -1, 37, 30, 31, -1, 33, 54, 55, -1, 37, - 46, -1, -1, 49, -1, -1, 30, 31, 46, 33, - -1, 49, -1, 37, -1, -1, 30, 31, -1, 33, - -1, -1, 46, 37, -1, 49, -1, -1, -1, 87, - 88, -1, 46, -1, -1, 49, -1, -1, -1, -1, - -1, 87, 88, -1, -1, -1, -1, -1, -1, 87, - 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 43, 87, 88, -1, -1, 48, -1, -1, - -1, -1, 53, 87, 88, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 79, 80, - 81, 82, 83, 84, 85, 86, 43, -1, -1, -1, - -1, 48, -1, -1, -1, -1, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + 0, 46, 96, 3, 4, 75, 274, 75, 8, 3, + 4, 20, 44, 48, 274, 22, 274, 147, 3, 4, + 5, 6, 7, 48, 44, 25, 0, 45, 32, 33, + 54, 35, 50, 54, 34, 35, 40, 41, 42, 43, + 34, 35, 91, 50, 48, 9, 10, 47, 12, 13, + 70, 44, 56, 57, 89, 90, 44, 187, 45, 52, + 90, 106, 192, 50, 89, 90, 54, 45, 32, 33, + 45, 35, 50, 90, 45, 75, 48, 207, 208, 50, + 46, 75, 212, 45, 48, 89, 90, 51, 50, 45, + 45, 45, 56, 57, 50, 50, 50, 97, 45, 89, + 90, 32, 33, 50, 35, 90, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 48, 85, 52, + 51, 147, 45, 48, 91, 89, 90, 50, 95, 96, + 97, 98, 45, 45, 54, 147, 266, 50, 50, 139, + 86, 87, 88, 45, 274, 145, 414, 147, 50, 94, + 95, 44, 152, 147, 414, 155, 414, 52, 89, 90, + 48, 187, 32, 33, 44, 35, 192, 52, 50, 48, + 40, 41, 42, 43, 244, 187, 244, 49, 48, 44, + 192, 207, 208, 183, 52, 44, 212, 187, 197, 44, + 54, 44, 192, 187, 44, 207, 208, 44, 192, 44, + 212, 84, 85, 86, 87, 88, 54, 207, 208, 53, + 44, 54, 212, 207, 208, 54, 26, 44, 212, 89, + 90, 291, 292, 291, 292, 48, 54, 44, 54, 54, + 32, 33, 54, 35, 54, 45, 44, 39, 48, 49, + 266, 371, 49, 373, 244, 45, 48, 19, 274, 51, + 244, 44, 53, 95, 266, 53, 44, 44, 44, 49, + 49, 44, 274, 54, 49, 44, 266, 44, 338, 44, + 338, 44, 266, 17, 274, 275, 54, 22, 54, 45, + 274, 8, 412, 377, 414, 415, 54, 89, 90, 54, + 54, 291, 292, 54, 54, 54, 106, 291, 292, 45, + 54, 54, 45, 45, 54, 435, 436, 54, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 8, 138, 8, + 187, 414, -1, -1, 197, -1, -1, -1, 338, -1, + 150, -1, -1, 153, 338, 371, 156, 373, 158, -1, + 160, -1, -1, -1, -1, 192, -1, -1, 403, 371, + 405, 373, 407, -1, -1, -1, 147, 58, 59, -1, + -1, 371, -1, 373, -1, 212, 376, 371, 188, 373, + -1, -1, -1, -1, -1, -1, 412, -1, 414, 415, + -1, 201, 147, 84, 85, 86, 87, 88, -1, 147, + 412, -1, 414, 415, -1, -1, 187, -1, -1, 435, + 436, 192, 412, -1, 414, 415, -1, -1, 412, -1, + 414, 415, -1, 435, 436, -1, 207, 208, -1, 266, + -1, 212, 187, -1, -1, 435, 436, 192, -1, 187, + -1, 435, 436, -1, 192, -1, -1, 147, -1, -1, + 260, -1, 207, 208, -1, -1, -1, 212, -1, 207, + 208, 271, -1, 273, 212, -1, 276, 32, 33, 144, + 35, -1, -1, -1, 39, -1, 151, -1, 288, 154, + -1, -1, 147, 48, -1, 266, 51, 187, -1, -1, + -1, -1, 192, 274, -1, -1, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 207, 208, -1, + -1, 266, 212, -1, 324, -1, 147, -1, 266, 274, + -1, -1, 187, -1, 89, 90, 274, 192, -1, -1, + -1, -1, -1, -1, 371, -1, 373, 347, 348, 349, + 350, -1, 207, 208, -1, -1, -1, 212, -1, -1, + -1, -1, -1, -1, -1, -1, 187, -1, -1, -1, + -1, 192, 372, -1, 374, 375, 266, -1, -1, -1, + -1, -1, -1, -1, 274, 412, 207, 208, 415, -1, + -1, 212, -1, -1, 32, 33, -1, 35, -1, 264, + 371, 39, 373, -1, -1, -1, 44, -1, 435, 436, + 48, 266, -1, 51, 52, -1, 416, -1, -1, 274, + -1, 286, 287, -1, -1, -1, 371, -1, 373, -1, + -1, 32, 33, 371, 35, 373, -1, -1, 39, -1, + -1, 412, -1, 414, 415, 266, -1, 48, -1, -1, + 51, 89, 90, 274, 319, -1, -1, 322, -1, -1, + -1, -1, -1, -1, 435, 436, -1, 412, -1, 414, + 415, -1, -1, -1, 412, -1, 414, 415, -1, -1, + -1, 371, -1, 373, -1, -1, -1, -1, 89, 90, + 435, 436, -1, -1, -1, -1, -1, 435, 436, -1, + 58, 59, -1, 368, 62, 63, 64, 65, 66, 67, + -1, -1, -1, -1, -1, -1, 371, -1, 373, 384, + -1, 386, 412, 388, 414, 415, 84, 85, 86, 87, + 88, -1, 32, 33, -1, 35, -1, -1, -1, 39, + -1, -1, 8, -1, -1, 435, 436, -1, 48, -1, + 371, 51, 373, -1, -1, -1, -1, 412, -1, 414, + 415, -1, -1, -1, -1, -1, 32, 33, 34, 35, + 36, 37, 38, -1, 40, 41, 42, 43, 44, -1, + 435, 436, 48, 49, -1, -1, 52, -1, -1, 89, + 90, 412, -1, 414, 415, -1, -1, -1, -1, -1, + -1, -1, 68, 69, -1, -1, -1, -1, -1, 8, + -1, -1, -1, -1, 435, 436, -1, -1, -1, 85, + -1, -1, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 32, 33, 34, 35, 36, 37, 38, + -1, 40, 41, 42, 43, 44, -1, -1, -1, 48, + -1, -1, -1, 52, -1, 54, 32, 33, -1, 35, + -1, 32, 33, 39, 35, -1, -1, -1, 39, 68, + 69, -1, 48, -1, -1, 51, 8, 48, -1, -1, + 51, -1, -1, -1, -1, -1, 85, -1, -1, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 32, 33, 34, 35, 36, 37, 38, -1, 40, 41, + 42, 43, 44, 89, 90, -1, 48, -1, 89, 90, + 52, -1, -1, 32, 33, -1, 35, -1, 32, 33, + 39, 35, -1, -1, -1, 39, 68, 69, -1, 48, + -1, -1, 51, 8, 48, -1, -1, 51, -1, -1, + -1, -1, -1, 85, -1, -1, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 32, 33, 34, + 35, 36, 37, 38, -1, 40, 41, 42, 43, 44, + 89, 90, -1, 48, -1, 89, 90, 52, 58, 59, + -1, 61, 62, 63, 64, 65, 66, 67, -1, -1, + -1, -1, -1, 68, 69, -1, -1, -1, -1, -1, + -1, 81, 82, 83, 84, 85, 86, 87, 88, -1, + 85, -1, -1, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 3, -1, -1, -1, -1, -1, + -1, -1, 11, -1, -1, 14, 15, 16, -1, 18, + 19, 20, 21, -1, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, -1, 35, -1, -1, -1, + -1, 40, 41, 42, 43, -1, -1, 46, 47, 48, + -1, -1, -1, -1, -1, 3, 4, 56, 57, -1, + -1, -1, -1, 11, -1, -1, 14, 15, 16, -1, + 18, 19, 20, 21, -1, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, -1, 35, -1, -1, + 89, 90, 40, 41, 42, 43, 32, 33, 46, 35, + 48, -1, -1, 39, -1, -1, 3, -1, 56, 57, + -1, -1, 48, -1, 11, 51, -1, 14, 15, 16, + -1, 18, 19, 20, 21, -1, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, -1, 35, -1, + -1, 89, 90, 40, 41, 42, 43, -1, -1, 46, + 47, 48, -1, 89, 90, -1, -1, 3, 4, 56, + 57, -1, -1, -1, -1, 11, -1, -1, 14, 15, + 16, -1, 18, 19, 20, 21, -1, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, -1, 35, + -1, -1, 89, 90, 40, 41, 42, 43, -1, -1, + 46, -1, 48, -1, -1, -1, -1, -1, 3, -1, + 56, 57, -1, -1, -1, -1, 11, -1, -1, 14, + 15, 16, -1, 18, 19, 20, 21, -1, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, + 35, -1, -1, 89, 90, 40, 41, 42, 43, -1, + -1, 46, -1, 48, -1, -1, -1, -1, -1, -1, + -1, 56, 57, 32, 33, -1, 35, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 48, + -1, -1, 51, -1, -1, -1, -1, 56, 57, -1, + -1, -1, -1, -1, 89, 90, -1, -1, -1, -1, + -1, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 45, -1, -1, -1, -1, 50, -1, -1, + 89, 90, 55, -1, -1, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 81, 82, + 83, 84, 85, 86, 87, 88, 45, -1, -1, -1, + -1, 50, -1, -1, -1, -1, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 43, -1, -1, -1, -1, 48, -1, -1, -1, -1, - 53, -1, -1, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 79, 80, 81, 82, - 83, 84, 85, 86, 43, -1, -1, -1, -1, 48, - -1, -1, -1, -1, 53, -1, -1, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 43, -1, - 79, 80, 81, 82, 83, 84, 85, 86, 53, -1, - -1, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 43, -1, 79, 80, 81, 82, 83, 84, - 85, 86, 53, -1, -1, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 43, -1, 79, 80, - 81, 82, 83, 84, 85, 86, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 45, -1, -1, -1, -1, 50, -1, -1, -1, -1, + 55, -1, -1, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 81, 82, 83, 84, + 85, 86, 87, 88, 45, -1, -1, -1, -1, 50, + -1, -1, -1, -1, 55, -1, -1, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 45, -1, + 81, 82, 83, 84, 85, 86, 87, 88, 55, -1, + -1, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 45, -1, 81, 82, 83, 84, 85, 86, + 87, 88, 55, -1, -1, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 45, -1, 81, 82, + 83, 84, 85, 86, 87, 88, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 43, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 53, -1, -1, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 43, -1, 79, 80, 81, 82, - 83, 84, 85, 86, 53, -1, -1, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 43, -1, - 79, 80, 81, 82, 83, 84, 85, 86, 53, -1, - -1, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 43, -1, 79, 80, 81, 82, 83, 84, - 85, 86, 53, -1, -1, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 43, -1, 79, 80, - 81, 82, 83, 84, 85, 86, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + 45, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 55, -1, -1, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 45, -1, 81, 82, 83, 84, + 85, 86, 87, 88, 55, -1, -1, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 45, -1, + 81, 82, 83, 84, 85, 86, 87, 88, 55, -1, + -1, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 45, -1, 81, 82, 83, 84, 85, 86, + 87, 88, 55, -1, -1, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 45, -1, 81, 82, + 83, 84, 85, 86, 87, 88, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 47, -1, -1, -1, -1, -1, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 49, -1, -1, -1, -1, -1, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 47, -1, -1, -1, -1, -1, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 49, -1, -1, -1, -1, -1, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 47, -1, -1, -1, -1, -1, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 49, -1, -1, -1, -1, -1, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 47, -1, -1, -1, -1, -1, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 49, -1, -1, -1, -1, -1, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 47, -1, -1, -1, -1, -1, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 49, -1, -1, -1, -1, -1, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 48, -1, -1, -1, -1, 53, -1, -1, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, -1, -1, + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 50, -1, -1, -1, -1, 55, -1, -1, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 79, 80, 81, 82, 83, 84, 85, 86, 51, - -1, 53, -1, -1, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, - 82, 83, 84, 85, 86, 52, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + -1, 81, 82, 83, 84, 85, 86, 87, 88, 53, + -1, 55, -1, -1, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 81, 82, 83, + 84, 85, 86, 87, 88, 54, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 52, 53, -1, -1, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, - 82, 83, 84, 85, 86, 52, 53, -1, -1, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 53, - -1, -1, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 79, 80, 81, 82, 83, 84, 85, 86, - -1, -1, -1, -1, -1, 79, 80, 81, 82, 83, - 84, 85, 86, 56, 57, -1, -1, 60, 61, 62, - 63, 64, 65, 56, 57, -1, -1, 60, 61, 62, - 63, 64, 65, -1, -1, -1, 79, 80, 81, 82, - 83, 84, 85, 86, -1, -1, -1, 80, 81, 82, - 83, 84, 85, 86, 56, 57, -1, -1, 60, 61, - 62, 63, 64, 65, 56, 57, -1, -1, 60, 61, - 62, 63, 64, 65, -1, -1, -1, -1, 80, -1, - 82, 83, 84, 85, 86, -1, -1, -1, -1, -1, - 82, 83, 84, 85, 86, 56, 57, -1, -1, -1, - -1, 62, 63, 64, 65, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 82, 83, 84, 85, 86 + -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 54, 55, -1, -1, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 81, 82, 83, + 84, 85, 86, 87, 88, 54, 55, -1, -1, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 55, + -1, -1, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 81, 82, 83, 84, 85, 86, 87, 88, + -1, -1, -1, -1, -1, 81, 82, 83, 84, 85, + 86, 87, 88, 58, 59, -1, -1, 62, 63, 64, + 65, 66, 67, 58, 59, -1, -1, 62, 63, 64, + 65, 66, 67, -1, -1, -1, 81, 82, 83, 84, + 85, 86, 87, 88, -1, -1, -1, 82, 83, 84, + 85, 86, 87, 88, 58, 59, -1, -1, 62, 63, + 64, 65, 66, 67, 58, 59, -1, -1, -1, -1, + 64, 65, 66, 67, -1, -1, -1, -1, 82, -1, + 84, 85, 86, 87, 88, -1, -1, -1, -1, -1, + 84, 85, 86, 87, 88 }; const unsigned char parser::yystos_[] = { - 0, 3, 4, 5, 88, 107, 108, 109, 110, 111, - 112, 113, 114, 176, 87, 176, 177, 177, 42, 0, - 109, 110, 111, 42, 68, 52, 52, 89, 179, 158, - 176, 6, 30, 31, 32, 33, 34, 35, 36, 38, - 39, 40, 41, 42, 46, 50, 66, 67, 83, 86, - 90, 91, 92, 93, 94, 95, 96, 143, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 43, 43, 48, 46, 176, 177, 46, - 176, 177, 46, 143, 46, 47, 143, 159, 160, 176, - 143, 143, 92, 93, 88, 52, 53, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 79, 80, 81, - 82, 83, 84, 85, 86, 37, 46, 49, 155, 156, - 176, 177, 42, 50, 52, 44, 116, 176, 46, 42, - 50, 46, 42, 50, 46, 43, 48, 143, 48, 47, - 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, - 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, - 176, 50, 159, 160, 176, 9, 12, 13, 14, 16, - 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 45, 46, 54, 55, 115, 116, 117, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 145, 146, 147, 153, 154, 162, 163, - 166, 170, 171, 172, 173, 176, 143, 159, 176, 143, - 159, 176, 143, 143, 47, 143, 51, 47, 176, 43, - 42, 143, 52, 42, 52, 42, 115, 42, 42, 42, - 42, 83, 179, 183, 51, 52, 52, 52, 143, 52, - 42, 42, 46, 153, 154, 166, 166, 45, 115, 52, - 52, 52, 52, 52, 7, 8, 10, 11, 54, 55, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 47, 43, 42, 47, 43, 42, 47, 48, 47, - 143, 159, 52, 43, 143, 17, 143, 118, 145, 146, - 147, 166, 176, 143, 51, 51, 52, 159, 159, 143, - 42, 42, 42, 42, 143, 143, 143, 143, 143, 143, - 143, 143, 143, 143, 143, 47, 159, 47, 159, 47, - 143, 42, 43, 52, 43, 42, 43, 52, 20, 48, - 43, 43, 43, 143, 143, 143, 143, 42, 43, 42, - 43, 42, 43, 159, 115, 143, 115, 143, 144, 143, - 176, 116, 52, 52, 43, 43, 48, 43, 48, 43, - 48, 159, 159, 159, 43, 15, 43, 52, 43, 20, - 52, 52, 160, 52, 160, 52, 160, 43, 43, 43, - 115, 52, 118, 115, 143, 43, 43, 43, 43, 43, - 52, 52, 52, 115, 115 + 0, 3, 4, 5, 6, 7, 90, 109, 110, 111, + 112, 113, 114, 115, 116, 179, 89, 179, 180, 180, + 44, 0, 111, 112, 113, 44, 70, 54, 54, 91, + 182, 161, 179, 8, 32, 33, 34, 35, 36, 37, + 38, 40, 41, 42, 43, 44, 48, 52, 68, 69, + 85, 88, 92, 93, 94, 95, 96, 97, 98, 146, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 45, 45, 50, 48, 179, + 180, 48, 179, 180, 48, 146, 48, 49, 146, 162, + 163, 179, 146, 146, 94, 95, 90, 54, 55, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 81, + 82, 83, 84, 85, 86, 87, 88, 39, 48, 51, + 158, 159, 179, 180, 44, 52, 54, 46, 119, 179, + 48, 44, 52, 48, 44, 52, 48, 45, 50, 146, + 50, 49, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 179, 52, 162, 163, 179, 3, 11, 14, + 15, 16, 18, 19, 20, 21, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 47, 48, 56, 57, 117, + 118, 119, 120, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 148, 149, 150, + 156, 157, 165, 166, 169, 173, 174, 175, 176, 179, + 146, 162, 179, 146, 162, 179, 146, 146, 49, 146, + 53, 49, 179, 45, 44, 4, 120, 146, 54, 44, + 54, 44, 117, 44, 44, 44, 44, 85, 182, 186, + 53, 54, 54, 54, 146, 54, 44, 44, 48, 156, + 157, 169, 169, 47, 117, 54, 54, 54, 54, 54, + 9, 10, 12, 13, 56, 57, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 49, 45, 44, + 49, 45, 44, 49, 50, 49, 146, 162, 4, 54, + 45, 146, 19, 146, 121, 148, 149, 150, 169, 179, + 146, 53, 53, 54, 162, 162, 146, 44, 44, 44, + 44, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 49, 162, 49, 162, 49, 146, 44, 45, + 54, 45, 44, 45, 54, 22, 50, 45, 45, 45, + 146, 146, 146, 146, 44, 45, 44, 45, 44, 45, + 162, 117, 146, 117, 146, 147, 146, 179, 119, 54, + 54, 45, 45, 50, 45, 50, 45, 50, 162, 162, + 162, 45, 17, 45, 54, 45, 22, 54, 54, 163, + 54, 163, 54, 163, 45, 45, 45, 117, 54, 121, + 117, 146, 45, 45, 45, 45, 45, 54, 54, 54, + 117, 117 }; const unsigned char parser::yyr1_[] = { - 0, 106, 107, 107, 108, 108, 108, 108, 108, 108, - 109, 110, 111, 111, 111, 112, 113, 114, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 116, 116, 117, 117, 118, 118, 118, - 118, 119, 119, 120, 120, 120, 121, 122, 122, 123, - 124, 124, 125, 125, 126, 127, 127, 128, 129, 130, - 131, 132, 133, 133, 134, 135, 135, 136, 137, 138, - 139, 139, 140, 141, 142, 143, 143, 143, 144, 144, - 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, - 145, 146, 146, 147, 147, 148, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 151, 152, 153, 153, 154, 154, 155, 155, - 155, 155, 155, 155, 156, 156, 156, 156, 157, 158, - 158, 158, 159, 159, 160, 160, 161, 161, 162, 163, - 164, 165, 166, 166, 166, 166, 166, 166, 166, 166, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 177, 178, 179, 180, 181, 182, 182, 183, - 183, 183, 183, 183, 184, 185 + 0, 108, 109, 109, 110, 110, 110, 110, 110, 110, + 111, 112, 113, 113, 113, 113, 113, 114, 115, 116, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 118, 118, 119, 119, + 120, 120, 121, 121, 121, 121, 122, 122, 123, 123, + 123, 124, 125, 125, 126, 127, 127, 128, 128, 129, + 130, 130, 131, 132, 133, 134, 135, 136, 136, 137, + 138, 138, 139, 140, 141, 142, 142, 143, 144, 145, + 146, 146, 146, 147, 147, 148, 148, 148, 148, 148, + 148, 148, 148, 148, 148, 148, 149, 149, 150, 150, + 151, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 154, 155, 156, + 156, 157, 157, 158, 158, 158, 158, 158, 158, 159, + 159, 159, 159, 160, 161, 161, 161, 162, 162, 163, + 163, 164, 164, 165, 166, 167, 168, 169, 169, 169, + 169, 169, 169, 169, 169, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 180, 181, 182, + 183, 184, 185, 185, 186, 186, 186, 186, 186, 187, + 188 }; const signed char parser::yyr2_[] = { 0, 2, 1, 0, 2, 2, 2, 1, 1, 1, - 3, 3, 1, 1, 1, 5, 4, 5, 1, 1, + 3, 3, 1, 1, 1, 1, 1, 5, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 3, 2, 2, 1, 1, 1, 1, - 0, 2, 2, 2, 2, 2, 6, 8, 6, 3, - 8, 6, 8, 6, 2, 2, 4, 5, 7, 5, - 7, 9, 7, 9, 5, 3, 3, 2, 2, 2, - 3, 2, 2, 5, 5, 1, 1, 1, 1, 0, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 2, 2, 2, 2, 5, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 3, 2, 3, 2, + 2, 1, 1, 1, 1, 0, 2, 2, 2, 2, + 2, 6, 8, 6, 3, 8, 6, 8, 6, 2, + 2, 4, 5, 7, 5, 7, 9, 7, 9, 5, + 3, 3, 2, 2, 2, 3, 2, 2, 5, 5, + 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, + 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 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, 1, 1, 2, 2, 4, 6, - 5, 7, 5, 7, 8, 9, 9, 9, 3, 3, - 1, 0, 1, 0, 3, 1, 2, 3, 4, 3, - 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, - 1, 1, 1, 1, 1, 1, 7, 2, 1, 2, - 1, 1, 1, 1, 1, 1 + 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, + 1, 2, 2, 4, 6, 5, 7, 5, 7, 8, + 9, 9, 9, 3, 3, 1, 0, 1, 0, 3, + 1, 2, 3, 4, 3, 2, 3, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, + 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, + 1, 7, 2, 1, 2, 1, 1, 1, 1, 1, + 1 }; @@ -4418,28 +4497,29 @@ namespace xsk { namespace gsc { namespace s2 { const short parser::yyrline_[] = { - 0, 251, 251, 252, 256, 258, 260, 262, 264, 266, - 271, 275, 280, 281, 282, 286, 291, 296, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 329, 330, 334, 336, 341, 343, 345, - 348, 352, 354, 359, 361, 363, 368, 373, 375, 380, - 385, 387, 392, 394, 399, 404, 406, 411, 416, 421, - 426, 431, 436, 438, 443, 448, 450, 455, 460, 465, - 470, 472, 477, 482, 487, 492, 493, 494, 498, 499, - 503, 505, 507, 509, 511, 513, 515, 517, 519, 521, - 523, 528, 530, 535, 537, 542, 547, 549, 551, 553, - 555, 557, 559, 561, 563, 565, 567, 569, 571, 573, - 575, 577, 579, 581, 586, 587, 588, 589, 590, 591, - 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, - 612, 613, 617, 622, 627, 628, 631, 632, 636, 638, - 640, 642, 644, 646, 651, 653, 655, 657, 662, 667, - 669, 672, 676, 679, 683, 685, 690, 692, 697, 702, - 707, 712, 717, 718, 719, 720, 721, 722, 723, 724, - 725, 729, 734, 739, 744, 749, 754, 759, 764, 769, - 774, 779, 781, 786, 791, 796, 801, 806, 808, 813, - 815, 817, 819, 821, 826, 831 + 0, 254, 254, 255, 259, 261, 263, 265, 267, 269, + 274, 278, 283, 284, 285, 286, 287, 291, 296, 301, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 335, 336, 340, 341, + 345, 347, 352, 354, 356, 359, 363, 365, 370, 372, + 374, 379, 384, 386, 391, 396, 398, 403, 405, 410, + 415, 417, 422, 427, 432, 437, 442, 447, 449, 454, + 459, 461, 466, 471, 476, 481, 483, 488, 493, 498, + 503, 504, 505, 509, 510, 514, 516, 518, 520, 522, + 524, 526, 528, 530, 532, 534, 539, 541, 546, 548, + 553, 558, 560, 562, 564, 566, 568, 570, 572, 574, + 576, 578, 580, 582, 584, 586, 588, 590, 592, 597, + 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, + 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, + 618, 619, 620, 621, 622, 623, 624, 628, 633, 638, + 639, 642, 643, 647, 649, 651, 653, 655, 657, 662, + 664, 666, 668, 673, 678, 680, 683, 687, 690, 694, + 696, 701, 703, 708, 713, 718, 723, 728, 729, 730, + 731, 732, 733, 734, 735, 736, 740, 745, 750, 755, + 760, 765, 770, 775, 780, 785, 790, 792, 797, 802, + 807, 812, 817, 819, 824, 826, 828, 830, 832, 837, + 842 }; void @@ -4472,9 +4552,9 @@ namespace xsk { namespace gsc { namespace s2 { #line 13 "parser.ypp" } } } // xsk::gsc::s2 -#line 4476 "parser.cpp" +#line 4556 "parser.cpp" -#line 835 "parser.ypp" +#line 846 "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 42839687..624bcec9 100644 --- a/src/s2/xsk/parser.hpp +++ b/src/s2/xsk/parser.hpp @@ -580,6 +580,7 @@ namespace xsk { namespace gsc { namespace s2 { // stmt_ifelse char dummy54[sizeof (ast::stmt_ifelse::ptr)]; + // stmt_dev // stmt_block // stmt_list char dummy55[sizeof (ast::stmt_list::ptr)]; @@ -679,109 +680,111 @@ namespace xsk { namespace gsc { namespace s2 { S2EOF = 0, // "end of file" S2error = 1, // error S2UNDEF = 2, // "invalid token" - INLINE = 3, // "#inline" - INCLUDE = 4, // "#include" - USINGTREE = 5, // "#using_animtree" - ANIMTREE = 6, // "#animtree" - ENDON = 7, // "endon" - NOTIFY = 8, // "notify" - WAIT = 9, // "wait" - WAITTILL = 10, // "waittill" - WAITTILLMATCH = 11, // "waittillmatch" - WAITTILLFRAMEEND = 12, // "waittillframeend" - WAITFRAME = 13, // "waitframe" - IF = 14, // "if" - ELSE = 15, // "else" - DO = 16, // "do" - WHILE = 17, // "while" - FOR = 18, // "for" - FOREACH = 19, // "foreach" - IN = 20, // "in" - SWITCH = 21, // "switch" - CASE = 22, // "case" - DEFAULT = 23, // "default" - BREAK = 24, // "break" - CONTINUE = 25, // "continue" - RETURN = 26, // "return" - BREAKPOINT = 27, // "breakpoint" - PROFBEGIN = 28, // "prof_begin" - PROFEND = 29, // "prof_end" - THREAD = 30, // "thread" - CHILDTHREAD = 31, // "childthread" - THISTHREAD = 32, // "thisthread" - CALL = 33, // "call" - TRUE = 34, // "true" - FALSE = 35, // "false" - UNDEFINED = 36, // "undefined" - SIZE = 37, // ".size" - GAME = 38, // "game" - SELF = 39, // "self" - ANIM = 40, // "anim" - LEVEL = 41, // "level" - LPAREN = 42, // "(" - RPAREN = 43, // ")" - LBRACE = 44, // "{" - RBRACE = 45, // "}" - LBRACKET = 46, // "[" - RBRACKET = 47, // "]" - COMMA = 48, // "," - DOT = 49, // "." - DOUBLECOLON = 50, // "::" - COLON = 51, // ":" - SEMICOLON = 52, // ";" - QMARK = 53, // "?" - INCREMENT = 54, // "++" - DECREMENT = 55, // "--" - LSHIFT = 56, // "<<" - RSHIFT = 57, // ">>" - OR = 58, // "||" - AND = 59, // "&&" - EQUALITY = 60, // "==" - INEQUALITY = 61, // "!=" - LESS_EQUAL = 62, // "<=" - GREATER_EQUAL = 63, // ">=" - LESS = 64, // "<" - GREATER = 65, // ">" - NOT = 66, // "!" - COMPLEMENT = 67, // "~" - ASSIGN = 68, // "=" - ASSIGN_ADD = 69, // "+=" - ASSIGN_SUB = 70, // "-=" - ASSIGN_MUL = 71, // "*=" - ASSIGN_DIV = 72, // "/=" - ASSIGN_MOD = 73, // "%=" - ASSIGN_BW_OR = 74, // "|=" - ASSIGN_BW_AND = 75, // "&=" - ASSIGN_BW_EXOR = 76, // "^=" - ASSIGN_RSHIFT = 77, // ">>=" - ASSIGN_LSHIFT = 78, // "<<=" - BITWISE_OR = 79, // "|" - BITWISE_AND = 80, // "&" - BITWISE_EXOR = 81, // "^" - ADD = 82, // "+" - SUB = 83, // "-" - MUL = 84, // "*" - DIV = 85, // "/" - MOD = 86, // "%" - PATH = 87, // "path" - IDENTIFIER = 88, // "identifier" - STRING = 89, // "string literal" - ISTRING = 90, // "localized string" - COLOR = 91, // "color" - FLOAT = 92, // "float" - INT_DEC = 93, // "int" - INT_OCT = 94, // "octal int" - INT_BIN = 95, // "binary int" - INT_HEX = 96, // "hexadecimal int" - ADD_ARRAY = 97, // ADD_ARRAY - THEN = 98, // THEN - TERN = 99, // TERN - NEG = 100, // NEG - ANIMREF = 101, // ANIMREF - PREINC = 102, // PREINC - PREDEC = 103, // PREDEC - POSTINC = 104, // POSTINC - POSTDEC = 105 // POSTDEC + DEVBEGIN = 3, // "/#" + DEVEND = 4, // "#/" + INLINE = 5, // "#inline" + INCLUDE = 6, // "#include" + USINGTREE = 7, // "#using_animtree" + ANIMTREE = 8, // "#animtree" + ENDON = 9, // "endon" + NOTIFY = 10, // "notify" + WAIT = 11, // "wait" + WAITTILL = 12, // "waittill" + WAITTILLMATCH = 13, // "waittillmatch" + WAITTILLFRAMEEND = 14, // "waittillframeend" + WAITFRAME = 15, // "waitframe" + IF = 16, // "if" + ELSE = 17, // "else" + DO = 18, // "do" + WHILE = 19, // "while" + FOR = 20, // "for" + FOREACH = 21, // "foreach" + IN = 22, // "in" + SWITCH = 23, // "switch" + CASE = 24, // "case" + DEFAULT = 25, // "default" + BREAK = 26, // "break" + CONTINUE = 27, // "continue" + RETURN = 28, // "return" + BREAKPOINT = 29, // "breakpoint" + PROFBEGIN = 30, // "prof_begin" + PROFEND = 31, // "prof_end" + THREAD = 32, // "thread" + CHILDTHREAD = 33, // "childthread" + THISTHREAD = 34, // "thisthread" + CALL = 35, // "call" + TRUE = 36, // "true" + FALSE = 37, // "false" + UNDEFINED = 38, // "undefined" + SIZE = 39, // ".size" + GAME = 40, // "game" + SELF = 41, // "self" + ANIM = 42, // "anim" + LEVEL = 43, // "level" + LPAREN = 44, // "(" + RPAREN = 45, // ")" + LBRACE = 46, // "{" + RBRACE = 47, // "}" + LBRACKET = 48, // "[" + RBRACKET = 49, // "]" + COMMA = 50, // "," + DOT = 51, // "." + DOUBLECOLON = 52, // "::" + COLON = 53, // ":" + SEMICOLON = 54, // ";" + QMARK = 55, // "?" + INCREMENT = 56, // "++" + DECREMENT = 57, // "--" + LSHIFT = 58, // "<<" + RSHIFT = 59, // ">>" + OR = 60, // "||" + AND = 61, // "&&" + EQUALITY = 62, // "==" + INEQUALITY = 63, // "!=" + LESS_EQUAL = 64, // "<=" + GREATER_EQUAL = 65, // ">=" + LESS = 66, // "<" + GREATER = 67, // ">" + NOT = 68, // "!" + COMPLEMENT = 69, // "~" + ASSIGN = 70, // "=" + ASSIGN_ADD = 71, // "+=" + ASSIGN_SUB = 72, // "-=" + ASSIGN_MUL = 73, // "*=" + ASSIGN_DIV = 74, // "/=" + ASSIGN_MOD = 75, // "%=" + ASSIGN_BW_OR = 76, // "|=" + ASSIGN_BW_AND = 77, // "&=" + ASSIGN_BW_EXOR = 78, // "^=" + ASSIGN_RSHIFT = 79, // ">>=" + ASSIGN_LSHIFT = 80, // "<<=" + BITWISE_OR = 81, // "|" + BITWISE_AND = 82, // "&" + BITWISE_EXOR = 83, // "^" + ADD = 84, // "+" + SUB = 85, // "-" + MUL = 86, // "*" + DIV = 87, // "/" + MOD = 88, // "%" + PATH = 89, // "path" + IDENTIFIER = 90, // "identifier" + STRING = 91, // "string literal" + ISTRING = 92, // "localized string" + COLOR = 93, // "color" + FLOAT = 94, // "float" + INT_DEC = 95, // "int" + INT_OCT = 96, // "octal int" + INT_BIN = 97, // "binary int" + INT_HEX = 98, // "hexadecimal int" + ADD_ARRAY = 99, // ADD_ARRAY + THEN = 100, // THEN + TERN = 101, // TERN + NEG = 102, // NEG + ANIMREF = 103, // ANIMREF + PREINC = 104, // PREINC + PREDEC = 105, // PREDEC + POSTINC = 106, // POSTINC + POSTDEC = 107 // POSTDEC }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; @@ -798,194 +801,197 @@ namespace xsk { namespace gsc { namespace s2 { { enum symbol_kind_type { - YYNTOKENS = 106, ///< Number of tokens. + YYNTOKENS = 108, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error S_YYUNDEF = 2, // "invalid token" - S_INLINE = 3, // "#inline" - S_INCLUDE = 4, // "#include" - S_USINGTREE = 5, // "#using_animtree" - S_ANIMTREE = 6, // "#animtree" - S_ENDON = 7, // "endon" - S_NOTIFY = 8, // "notify" - S_WAIT = 9, // "wait" - S_WAITTILL = 10, // "waittill" - S_WAITTILLMATCH = 11, // "waittillmatch" - S_WAITTILLFRAMEEND = 12, // "waittillframeend" - S_WAITFRAME = 13, // "waitframe" - S_IF = 14, // "if" - S_ELSE = 15, // "else" - S_DO = 16, // "do" - S_WHILE = 17, // "while" - S_FOR = 18, // "for" - S_FOREACH = 19, // "foreach" - S_IN = 20, // "in" - S_SWITCH = 21, // "switch" - S_CASE = 22, // "case" - S_DEFAULT = 23, // "default" - S_BREAK = 24, // "break" - S_CONTINUE = 25, // "continue" - S_RETURN = 26, // "return" - S_BREAKPOINT = 27, // "breakpoint" - S_PROFBEGIN = 28, // "prof_begin" - S_PROFEND = 29, // "prof_end" - S_THREAD = 30, // "thread" - S_CHILDTHREAD = 31, // "childthread" - S_THISTHREAD = 32, // "thisthread" - S_CALL = 33, // "call" - S_TRUE = 34, // "true" - S_FALSE = 35, // "false" - S_UNDEFINED = 36, // "undefined" - S_SIZE = 37, // ".size" - S_GAME = 38, // "game" - S_SELF = 39, // "self" - S_ANIM = 40, // "anim" - S_LEVEL = 41, // "level" - S_LPAREN = 42, // "(" - S_RPAREN = 43, // ")" - S_LBRACE = 44, // "{" - S_RBRACE = 45, // "}" - S_LBRACKET = 46, // "[" - S_RBRACKET = 47, // "]" - S_COMMA = 48, // "," - S_DOT = 49, // "." - S_DOUBLECOLON = 50, // "::" - S_COLON = 51, // ":" - S_SEMICOLON = 52, // ";" - S_QMARK = 53, // "?" - S_INCREMENT = 54, // "++" - S_DECREMENT = 55, // "--" - S_LSHIFT = 56, // "<<" - S_RSHIFT = 57, // ">>" - S_OR = 58, // "||" - S_AND = 59, // "&&" - S_EQUALITY = 60, // "==" - S_INEQUALITY = 61, // "!=" - S_LESS_EQUAL = 62, // "<=" - S_GREATER_EQUAL = 63, // ">=" - S_LESS = 64, // "<" - S_GREATER = 65, // ">" - S_NOT = 66, // "!" - S_COMPLEMENT = 67, // "~" - S_ASSIGN = 68, // "=" - S_ASSIGN_ADD = 69, // "+=" - S_ASSIGN_SUB = 70, // "-=" - S_ASSIGN_MUL = 71, // "*=" - S_ASSIGN_DIV = 72, // "/=" - S_ASSIGN_MOD = 73, // "%=" - S_ASSIGN_BW_OR = 74, // "|=" - S_ASSIGN_BW_AND = 75, // "&=" - S_ASSIGN_BW_EXOR = 76, // "^=" - S_ASSIGN_RSHIFT = 77, // ">>=" - S_ASSIGN_LSHIFT = 78, // "<<=" - S_BITWISE_OR = 79, // "|" - S_BITWISE_AND = 80, // "&" - S_BITWISE_EXOR = 81, // "^" - S_ADD = 82, // "+" - S_SUB = 83, // "-" - S_MUL = 84, // "*" - S_DIV = 85, // "/" - S_MOD = 86, // "%" - S_PATH = 87, // "path" - S_IDENTIFIER = 88, // "identifier" - S_STRING = 89, // "string literal" - S_ISTRING = 90, // "localized string" - S_COLOR = 91, // "color" - S_FLOAT = 92, // "float" - S_INT_DEC = 93, // "int" - S_INT_OCT = 94, // "octal int" - S_INT_BIN = 95, // "binary int" - S_INT_HEX = 96, // "hexadecimal int" - S_ADD_ARRAY = 97, // ADD_ARRAY - S_THEN = 98, // THEN - S_TERN = 99, // TERN - S_NEG = 100, // NEG - S_ANIMREF = 101, // ANIMREF - S_PREINC = 102, // PREINC - S_PREDEC = 103, // PREDEC - S_POSTINC = 104, // POSTINC - S_POSTDEC = 105, // POSTDEC - S_YYACCEPT = 106, // $accept - S_root = 107, // root - S_program = 108, // program - S_inline = 109, // inline - S_include = 110, // include - S_declaration = 111, // declaration - S_decl_usingtree = 112, // decl_usingtree - S_decl_constant = 113, // decl_constant - S_decl_thread = 114, // decl_thread - S_stmt = 115, // stmt - S_stmt_block = 116, // stmt_block - S_stmt_list = 117, // stmt_list - S_stmt_expr = 118, // stmt_expr - S_stmt_call = 119, // stmt_call - S_stmt_assign = 120, // stmt_assign - S_stmt_endon = 121, // stmt_endon - S_stmt_notify = 122, // stmt_notify - S_stmt_wait = 123, // stmt_wait - S_stmt_waittill = 124, // stmt_waittill - S_stmt_waittillmatch = 125, // stmt_waittillmatch - S_stmt_waittillframeend = 126, // stmt_waittillframeend - S_stmt_waitframe = 127, // stmt_waitframe - S_stmt_if = 128, // stmt_if - S_stmt_ifelse = 129, // stmt_ifelse - S_stmt_while = 130, // stmt_while - S_stmt_dowhile = 131, // stmt_dowhile - S_stmt_for = 132, // stmt_for - S_stmt_foreach = 133, // stmt_foreach - S_stmt_switch = 134, // stmt_switch - S_stmt_case = 135, // stmt_case - S_stmt_default = 136, // stmt_default - S_stmt_break = 137, // stmt_break - S_stmt_continue = 138, // stmt_continue - S_stmt_return = 139, // stmt_return - S_stmt_breakpoint = 140, // stmt_breakpoint - S_stmt_prof_begin = 141, // stmt_prof_begin - S_stmt_prof_end = 142, // stmt_prof_end - S_expr = 143, // expr - S_expr_or_empty = 144, // expr_or_empty - S_expr_assign = 145, // expr_assign - S_expr_increment = 146, // expr_increment - S_expr_decrement = 147, // expr_decrement - S_expr_ternary = 148, // expr_ternary - S_expr_binary = 149, // expr_binary - S_expr_primitive = 150, // expr_primitive - S_expr_complement = 151, // expr_complement - S_expr_not = 152, // expr_not - S_expr_call = 153, // expr_call - S_expr_method = 154, // expr_method - S_expr_function = 155, // expr_function - S_expr_pointer = 156, // expr_pointer - S_expr_add_array = 157, // expr_add_array - S_expr_parameters = 158, // expr_parameters - S_expr_arguments = 159, // expr_arguments - S_expr_arguments_no_empty = 160, // expr_arguments_no_empty - S_expr_reference = 161, // expr_reference - S_expr_array = 162, // expr_array - S_expr_field = 163, // expr_field - S_expr_size = 164, // expr_size - S_expr_paren = 165, // expr_paren - S_expr_object = 166, // expr_object - S_expr_thisthread = 167, // expr_thisthread - S_expr_empty_array = 168, // expr_empty_array - S_expr_undefined = 169, // expr_undefined - S_expr_game = 170, // expr_game - S_expr_self = 171, // expr_self - S_expr_anim = 172, // expr_anim - S_expr_level = 173, // expr_level - S_expr_animation = 174, // expr_animation - S_expr_animtree = 175, // expr_animtree - S_expr_identifier = 176, // expr_identifier - S_expr_path = 177, // expr_path - S_expr_istring = 178, // expr_istring - S_expr_string = 179, // expr_string - S_expr_color = 180, // expr_color - S_expr_vector = 181, // expr_vector - S_expr_float = 182, // expr_float - S_expr_integer = 183, // expr_integer - S_expr_false = 184, // expr_false - S_expr_true = 185 // expr_true + S_DEVBEGIN = 3, // "/#" + S_DEVEND = 4, // "#/" + S_INLINE = 5, // "#inline" + S_INCLUDE = 6, // "#include" + S_USINGTREE = 7, // "#using_animtree" + S_ANIMTREE = 8, // "#animtree" + S_ENDON = 9, // "endon" + S_NOTIFY = 10, // "notify" + S_WAIT = 11, // "wait" + S_WAITTILL = 12, // "waittill" + S_WAITTILLMATCH = 13, // "waittillmatch" + S_WAITTILLFRAMEEND = 14, // "waittillframeend" + S_WAITFRAME = 15, // "waitframe" + S_IF = 16, // "if" + S_ELSE = 17, // "else" + S_DO = 18, // "do" + S_WHILE = 19, // "while" + S_FOR = 20, // "for" + S_FOREACH = 21, // "foreach" + S_IN = 22, // "in" + S_SWITCH = 23, // "switch" + S_CASE = 24, // "case" + S_DEFAULT = 25, // "default" + S_BREAK = 26, // "break" + S_CONTINUE = 27, // "continue" + S_RETURN = 28, // "return" + S_BREAKPOINT = 29, // "breakpoint" + S_PROFBEGIN = 30, // "prof_begin" + S_PROFEND = 31, // "prof_end" + S_THREAD = 32, // "thread" + S_CHILDTHREAD = 33, // "childthread" + S_THISTHREAD = 34, // "thisthread" + S_CALL = 35, // "call" + S_TRUE = 36, // "true" + S_FALSE = 37, // "false" + S_UNDEFINED = 38, // "undefined" + S_SIZE = 39, // ".size" + S_GAME = 40, // "game" + S_SELF = 41, // "self" + S_ANIM = 42, // "anim" + S_LEVEL = 43, // "level" + S_LPAREN = 44, // "(" + S_RPAREN = 45, // ")" + S_LBRACE = 46, // "{" + S_RBRACE = 47, // "}" + S_LBRACKET = 48, // "[" + S_RBRACKET = 49, // "]" + S_COMMA = 50, // "," + S_DOT = 51, // "." + S_DOUBLECOLON = 52, // "::" + S_COLON = 53, // ":" + S_SEMICOLON = 54, // ";" + S_QMARK = 55, // "?" + S_INCREMENT = 56, // "++" + S_DECREMENT = 57, // "--" + S_LSHIFT = 58, // "<<" + S_RSHIFT = 59, // ">>" + S_OR = 60, // "||" + S_AND = 61, // "&&" + S_EQUALITY = 62, // "==" + S_INEQUALITY = 63, // "!=" + S_LESS_EQUAL = 64, // "<=" + S_GREATER_EQUAL = 65, // ">=" + S_LESS = 66, // "<" + S_GREATER = 67, // ">" + S_NOT = 68, // "!" + S_COMPLEMENT = 69, // "~" + S_ASSIGN = 70, // "=" + S_ASSIGN_ADD = 71, // "+=" + S_ASSIGN_SUB = 72, // "-=" + S_ASSIGN_MUL = 73, // "*=" + S_ASSIGN_DIV = 74, // "/=" + S_ASSIGN_MOD = 75, // "%=" + S_ASSIGN_BW_OR = 76, // "|=" + S_ASSIGN_BW_AND = 77, // "&=" + S_ASSIGN_BW_EXOR = 78, // "^=" + S_ASSIGN_RSHIFT = 79, // ">>=" + S_ASSIGN_LSHIFT = 80, // "<<=" + S_BITWISE_OR = 81, // "|" + S_BITWISE_AND = 82, // "&" + S_BITWISE_EXOR = 83, // "^" + S_ADD = 84, // "+" + S_SUB = 85, // "-" + S_MUL = 86, // "*" + S_DIV = 87, // "/" + S_MOD = 88, // "%" + S_PATH = 89, // "path" + S_IDENTIFIER = 90, // "identifier" + S_STRING = 91, // "string literal" + S_ISTRING = 92, // "localized string" + S_COLOR = 93, // "color" + S_FLOAT = 94, // "float" + S_INT_DEC = 95, // "int" + S_INT_OCT = 96, // "octal int" + S_INT_BIN = 97, // "binary int" + S_INT_HEX = 98, // "hexadecimal int" + S_ADD_ARRAY = 99, // ADD_ARRAY + S_THEN = 100, // THEN + S_TERN = 101, // TERN + S_NEG = 102, // NEG + S_ANIMREF = 103, // ANIMREF + S_PREINC = 104, // PREINC + S_PREDEC = 105, // PREDEC + S_POSTINC = 106, // POSTINC + S_POSTDEC = 107, // POSTDEC + S_YYACCEPT = 108, // $accept + S_root = 109, // root + S_program = 110, // program + S_inline = 111, // inline + S_include = 112, // include + S_declaration = 113, // declaration + S_decl_usingtree = 114, // decl_usingtree + S_decl_constant = 115, // decl_constant + S_decl_thread = 116, // decl_thread + S_stmt = 117, // stmt + S_stmt_dev = 118, // stmt_dev + S_stmt_block = 119, // stmt_block + S_stmt_list = 120, // stmt_list + S_stmt_expr = 121, // stmt_expr + S_stmt_call = 122, // stmt_call + S_stmt_assign = 123, // stmt_assign + S_stmt_endon = 124, // stmt_endon + S_stmt_notify = 125, // stmt_notify + S_stmt_wait = 126, // stmt_wait + S_stmt_waittill = 127, // stmt_waittill + S_stmt_waittillmatch = 128, // stmt_waittillmatch + S_stmt_waittillframeend = 129, // stmt_waittillframeend + S_stmt_waitframe = 130, // stmt_waitframe + S_stmt_if = 131, // stmt_if + S_stmt_ifelse = 132, // stmt_ifelse + S_stmt_while = 133, // stmt_while + S_stmt_dowhile = 134, // stmt_dowhile + S_stmt_for = 135, // stmt_for + S_stmt_foreach = 136, // stmt_foreach + S_stmt_switch = 137, // stmt_switch + S_stmt_case = 138, // stmt_case + S_stmt_default = 139, // stmt_default + S_stmt_break = 140, // stmt_break + S_stmt_continue = 141, // stmt_continue + S_stmt_return = 142, // stmt_return + S_stmt_breakpoint = 143, // stmt_breakpoint + S_stmt_prof_begin = 144, // stmt_prof_begin + S_stmt_prof_end = 145, // stmt_prof_end + S_expr = 146, // expr + S_expr_or_empty = 147, // expr_or_empty + S_expr_assign = 148, // expr_assign + S_expr_increment = 149, // expr_increment + S_expr_decrement = 150, // expr_decrement + S_expr_ternary = 151, // expr_ternary + S_expr_binary = 152, // expr_binary + S_expr_primitive = 153, // expr_primitive + S_expr_complement = 154, // expr_complement + S_expr_not = 155, // expr_not + S_expr_call = 156, // expr_call + S_expr_method = 157, // expr_method + S_expr_function = 158, // expr_function + S_expr_pointer = 159, // expr_pointer + S_expr_add_array = 160, // expr_add_array + S_expr_parameters = 161, // expr_parameters + S_expr_arguments = 162, // expr_arguments + S_expr_arguments_no_empty = 163, // expr_arguments_no_empty + S_expr_reference = 164, // expr_reference + S_expr_array = 165, // expr_array + S_expr_field = 166, // expr_field + S_expr_size = 167, // expr_size + S_expr_paren = 168, // expr_paren + S_expr_object = 169, // expr_object + S_expr_thisthread = 170, // expr_thisthread + S_expr_empty_array = 171, // expr_empty_array + S_expr_undefined = 172, // expr_undefined + S_expr_game = 173, // expr_game + S_expr_self = 174, // expr_self + S_expr_anim = 175, // expr_anim + S_expr_level = 176, // expr_level + S_expr_animation = 177, // expr_animation + S_expr_animtree = 178, // expr_animtree + S_expr_identifier = 179, // expr_identifier + S_expr_path = 180, // expr_path + S_expr_istring = 181, // expr_istring + S_expr_string = 182, // expr_string + S_expr_color = 183, // expr_color + S_expr_vector = 184, // expr_vector + S_expr_float = 185, // expr_float + S_expr_integer = 186, // expr_integer + S_expr_false = 187, // expr_false + S_expr_true = 188 // expr_true }; }; @@ -1248,6 +1254,7 @@ namespace xsk { namespace gsc { namespace s2 { value.move< ast::stmt_ifelse::ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (std::move (that.value)); @@ -2519,6 +2526,7 @@ switch (yykind) value.template destroy< ast::stmt_ifelse::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.template destroy< ast::stmt_list::ptr > (); @@ -2782,6 +2790,36 @@ switch (yykind) return symbol_type (token::S2UNDEF, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_DEVBEGIN (location_type l) + { + return symbol_type (token::DEVBEGIN, std::move (l)); + } +#else + static + symbol_type + make_DEVBEGIN (const location_type& l) + { + return symbol_type (token::DEVBEGIN, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_DEVEND (location_type l) + { + return symbol_type (token::DEVEND, std::move (l)); + } +#else + static + symbol_type + make_DEVEND (const location_type& l) + { + return symbol_type (token::DEVEND, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4671,9 +4709,9 @@ switch (yykind) /// Constants. enum { - yylast_ = 2075, ///< Last index in yytable_. - yynnts_ = 80, ///< Number of nonterminal symbols. - yyfinal_ = 19 ///< Termination state number. + yylast_ = 2254, ///< Last index in yytable_. + yynnts_ = 81, ///< Number of nonterminal symbols. + yyfinal_ = 21 ///< Termination state number. }; @@ -4926,6 +4964,7 @@ switch (yykind) value.copy< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.copy< ast::stmt_list::ptr > (YY_MOVE (that.value)); @@ -5243,6 +5282,7 @@ switch (yykind) value.move< ast::stmt_ifelse::ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (YY_MOVE (s.value)); @@ -5368,7 +5408,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::s2 -#line 5372 "parser.hpp" +#line 5412 "parser.hpp" diff --git a/src/s4/xsk/compiler.cpp b/src/s4/xsk/compiler.cpp index 42019ded..b6bed56d 100644 --- a/src/s4/xsk/compiler.cpp +++ b/src/s4/xsk/compiler.cpp @@ -85,6 +85,7 @@ void compiler::compile_program(const ast::program::ptr& program) constants_.clear(); local_functions_.clear(); index_ = 1; + developer_thread_ = false; for (const auto& entry : program->declarations) { @@ -150,6 +151,12 @@ void compiler::emit_declaration(const ast::decl& decl) { switch (decl.kind()) { + case ast::kind::decl_dev_begin: + developer_thread_ = true; + break; + case ast::kind::decl_dev_end: + developer_thread_ = false; + break; case ast::kind::decl_usingtree: emit_decl_usingtree(decl.as_usingtree); break; @@ -166,6 +173,9 @@ void compiler::emit_declaration(const ast::decl& decl) void compiler::emit_decl_usingtree(const ast::decl_usingtree::ptr& animtree) { + if(developer_thread_) + throw comp_error(animtree->loc(), "cannot put #using_animtree inside /# ... #/ comment"); + animtrees_.push_back({ animtree->name->value, false }); } diff --git a/src/s4/xsk/lexer.cpp b/src/s4/xsk/lexer.cpp index 5d5f052c..490bdca7 100644 --- a/src/s4/xsk/lexer.cpp +++ b/src/s4/xsk/lexer.cpp @@ -555,8 +555,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 111 -#define YY_END_OF_BUFFER 112 +#define YY_NUM_RULES 113 +#define YY_END_OF_BUFFER 114 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -564,46 +564,46 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[343] = +static const flex_int16_t yy_accept[346] = { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 112, 110, - 1, 2, 95, 110, 110, 94, 98, 110, 55, 56, - 92, 90, 61, 91, 62, 93, 109, 109, 64, 65, - 79, 89, 80, 66, 101, 101, 59, 60, 99, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 57, 97, 58, 96, 5, - 6, 5, 110, 92, 9, 10, 9, 76, 0, 103, - 0, 13, 0, 0, 0, 0, 85, 0, 74, 0, - 87, 0, 0, 12, 83, 67, 81, 68, 82, 105, - 0, 8, 4, 3, 84, 105, 109, 106, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 114, 112, + 1, 2, 97, 112, 112, 96, 100, 112, 57, 58, + 94, 92, 63, 93, 64, 95, 111, 111, 66, 67, + 81, 91, 82, 68, 103, 103, 61, 62, 101, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 59, 99, 60, 98, 5, + 6, 5, 12, 13, 12, 112, 94, 95, 78, 0, + 105, 0, 15, 0, 0, 0, 0, 87, 0, 76, + 0, 89, 0, 0, 8, 85, 69, 83, 70, 84, + 107, 0, 11, 4, 3, 86, 107, 111, 108, 0, - 0, 0, 63, 71, 77, 75, 78, 72, 101, 101, - 88, 101, 101, 101, 101, 101, 101, 27, 101, 101, - 101, 101, 101, 25, 31, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 86, 73, 7, 11, - 0, 103, 0, 0, 0, 0, 0, 0, 102, 0, - 0, 0, 0, 103, 0, 105, 0, 3, 105, 105, - 106, 107, 108, 100, 69, 70, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 29, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 104, 0, 0, 0, 0, 0, 102, 0, + 0, 0, 0, 65, 73, 79, 77, 80, 74, 103, + 103, 90, 103, 103, 103, 103, 103, 103, 29, 103, + 103, 103, 103, 103, 27, 33, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 88, 75, 7, + 14, 10, 9, 0, 105, 0, 0, 0, 0, 0, + 0, 104, 0, 0, 0, 0, 105, 0, 107, 0, + 3, 107, 107, 108, 109, 110, 102, 71, 72, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 31, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 106, 0, 0, 0, 0, - 0, 102, 0, 0, 101, 101, 51, 101, 44, 33, - 101, 101, 101, 26, 101, 101, 101, 49, 101, 101, - 101, 101, 50, 101, 101, 101, 45, 101, 20, 101, - 0, 0, 0, 0, 0, 48, 101, 101, 35, 101, - 101, 101, 18, 46, 101, 52, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 28, 0, 0, 0, 0, - 0, 101, 54, 101, 101, 101, 101, 101, 19, 101, - 101, 37, 32, 101, 41, 101, 101, 101, 104, 0, - 0, 14, 0, 101, 101, 101, 101, 34, 30, 101, - 101, 101, 101, 101, 101, 0, 15, 0, 101, 101, + 0, 104, 0, 0, 104, 0, 0, 103, 103, 53, + 103, 46, 35, 103, 103, 103, 28, 103, 103, 103, + 51, 103, 103, 103, 103, 52, 103, 103, 103, 47, + 103, 22, 103, 0, 0, 0, 0, 0, 50, 103, + 103, 37, 103, 103, 103, 20, 48, 103, 54, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 30, 0, + 0, 0, 0, 0, 103, 56, 103, 103, 103, 103, + 103, 21, 103, 103, 39, 34, 103, 43, 103, 103, + 103, 106, 0, 0, 16, 0, 103, 103, 103, 103, + 36, 32, 103, 103, 103, 103, 103, 103, 0, 17, - 101, 36, 101, 40, 101, 101, 101, 21, 17, 0, - 53, 101, 101, 101, 101, 47, 24, 101, 101, 0, - 38, 101, 39, 43, 101, 101, 0, 42, 101, 101, - 0, 101, 101, 0, 101, 22, 0, 101, 16, 101, - 23, 0 + 0, 103, 103, 103, 38, 103, 42, 103, 103, 103, + 23, 19, 0, 55, 103, 103, 103, 103, 49, 26, + 103, 103, 0, 40, 103, 41, 45, 103, 103, 0, + 44, 103, 103, 0, 103, 103, 0, 103, 24, 0, + 103, 18, 103, 25, 0 } ; static const YY_CHAR yy_ec[256] = @@ -650,95 +650,95 @@ static const YY_CHAR yy_meta[73] = 1, 1 } ; -static const flex_int16_t yy_base[363] = +static const flex_int16_t yy_base[366] = { 0, - 0, 0, 70, 71, 69, 72, 73, 74, 757, 758, - 758, 758, 731, 80, 69, 730, 82, 79, 758, 758, - 72, 79, 758, 78, 80, 99, 109, 116, 732, 758, - 70, 728, 83, 758, 710, 77, 758, 758, 726, 54, - 84, 101, 98, 108, 113, 60, 125, 68, 102, 104, - 121, 127, 128, 110, 132, 758, 116, 758, 758, 758, - 758, 733, 136, 724, 758, 758, 731, 758, 168, 758, - 189, 758, 0, 689, 688, 683, 758, 170, 758, 171, - 758, 175, 188, 758, 758, 758, 758, 758, 758, 183, - 690, 758, 758, 0, 758, 187, 200, 206, 172, 217, + 0, 0, 70, 71, 72, 73, 74, 75, 763, 764, + 764, 764, 737, 72, 67, 736, 80, 81, 764, 764, + 76, 81, 764, 82, 90, 110, 99, 124, 738, 764, + 71, 734, 73, 764, 716, 87, 764, 764, 732, 90, + 92, 105, 112, 114, 91, 58, 118, 88, 115, 117, + 123, 125, 126, 119, 139, 764, 138, 764, 764, 764, + 764, 739, 764, 764, 738, 165, 729, 177, 764, 179, + 764, 183, 764, 0, 695, 694, 689, 764, 185, 764, + 94, 764, 184, 192, 764, 764, 764, 764, 764, 764, + 179, 696, 764, 764, 0, 764, 185, 196, 221, 180, - 244, 0, 758, 718, 758, 758, 758, 717, 699, 207, - 758, 157, 173, 190, 186, 137, 199, 698, 167, 71, - 75, 197, 209, 697, 696, 202, 205, 212, 215, 213, - 235, 242, 219, 238, 243, 246, 758, 758, 758, 758, - 274, 276, 296, 0, 683, 250, 682, 277, 758, 299, - 298, 302, 300, 301, 305, 758, 667, 0, 302, 758, - 308, 314, 0, 692, 758, 758, 304, 303, 292, 271, - 295, 310, 306, 273, 313, 315, 316, 319, 321, 324, - 326, 325, 327, 328, 331, 330, 335, 338, 341, 344, - 342, 343, 0, 676, 676, 677, 672, 382, 384, 393, + 191, 248, 0, 764, 724, 764, 764, 764, 723, 705, + 223, 764, 178, 181, 193, 202, 201, 203, 704, 186, + 208, 70, 209, 205, 703, 702, 60, 210, 216, 218, + 229, 246, 247, 182, 242, 250, 251, 764, 764, 764, + 764, 764, 764, 269, 277, 304, 0, 689, 254, 688, + 278, 764, 309, 294, 312, 297, 307, 314, 764, 673, + 0, 306, 764, 313, 319, 0, 698, 764, 764, 310, + 286, 288, 298, 306, 300, 311, 301, 317, 316, 323, + 326, 327, 328, 329, 330, 332, 331, 334, 333, 338, + 339, 344, 348, 345, 349, 0, 682, 682, 683, 678, - 381, 386, 397, 679, 369, 365, 686, 270, 685, 684, - 360, 361, 366, 683, 374, 368, 371, 682, 377, 370, - 380, 385, 681, 389, 392, 394, 680, 396, 399, 401, - 0, 658, 656, 661, 666, 758, 410, 411, 403, 406, - 407, 412, 675, 674, 418, 673, 414, 425, 415, 417, - 429, 434, 432, 416, 436, 672, 0, 652, 663, 661, - 665, 445, 667, 437, 442, 443, 446, 447, 666, 449, - 450, 665, 664, 451, 663, 452, 455, 460, 758, 654, - 653, 758, 656, 473, 463, 464, 469, 659, 658, 201, - 471, 472, 476, 479, 482, 649, 758, 640, 497, 486, + 387, 388, 394, 392, 393, 400, 685, 372, 368, 692, + 364, 691, 690, 369, 370, 373, 689, 375, 371, 374, + 688, 383, 380, 396, 384, 687, 398, 385, 401, 686, + 402, 407, 409, 0, 664, 662, 667, 672, 764, 418, + 419, 413, 412, 420, 415, 681, 680, 426, 679, 414, + 435, 421, 423, 438, 441, 442, 425, 445, 678, 0, + 658, 669, 667, 671, 453, 673, 447, 450, 451, 455, + 452, 672, 458, 456, 671, 670, 459, 669, 465, 467, + 460, 764, 660, 659, 764, 662, 479, 470, 475, 477, + 665, 664, 480, 484, 488, 489, 483, 486, 655, 764, - 487, 655, 488, 654, 489, 491, 499, 501, 758, 641, - 652, 490, 505, 492, 506, 651, 633, 503, 514, 609, - 582, 512, 571, 570, 517, 515, 521, 541, 520, 523, - 521, 524, 526, 531, 525, 534, 522, 527, 758, 531, - 528, 758, 585, 593, 601, 606, 614, 620, 624, 632, - 493, 640, 648, 656, 664, 668, 409, 676, 684, 326, - 193, 191 + 646, 504, 493, 495, 661, 501, 643, 502, 505, 499, + 508, 764, 622, 592, 510, 514, 516, 515, 581, 580, + 519, 520, 537, 551, 521, 550, 549, 525, 526, 527, + 544, 527, 530, 521, 533, 534, 454, 535, 424, 414, + 537, 764, 539, 386, 764, 595, 603, 611, 616, 624, + 630, 634, 642, 313, 650, 658, 666, 674, 678, 308, + 686, 694, 282, 213, 208 } ; -static const flex_int16_t yy_def[363] = +static const flex_int16_t yy_def[366] = { 0, - 342, 1, 343, 343, 1, 1, 344, 344, 342, 342, - 342, 342, 342, 345, 346, 342, 342, 347, 342, 342, - 342, 342, 342, 342, 342, 342, 348, 348, 342, 342, - 342, 342, 342, 342, 349, 349, 342, 342, 342, 349, - 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 342, 342, 342, 342, 342, - 342, 342, 346, 342, 342, 342, 342, 342, 345, 342, - 350, 342, 351, 351, 342, 342, 342, 352, 342, 353, - 342, 347, 354, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 355, 342, 342, 348, 348, 348, 348, + 345, 1, 346, 346, 347, 347, 1, 1, 345, 345, + 345, 345, 345, 348, 349, 345, 345, 350, 345, 345, + 345, 345, 345, 345, 345, 345, 351, 351, 345, 345, + 345, 345, 345, 345, 352, 352, 345, 345, 345, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 349, 345, 345, 345, 348, + 345, 353, 345, 354, 354, 345, 345, 345, 355, 345, + 356, 345, 350, 357, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 358, 345, 345, 351, 351, 351, - 348, 356, 342, 342, 342, 342, 342, 342, 349, 349, - 342, 349, 349, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 342, 342, 342, 342, - 345, 345, 350, 357, 342, 342, 342, 352, 342, 358, - 353, 359, 347, 347, 354, 342, 342, 355, 342, 342, - 348, 348, 101, 356, 342, 342, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 360, 342, 342, 342, 342, 352, 352, 358, + 351, 351, 359, 345, 345, 345, 345, 345, 345, 352, + 352, 345, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 345, 345, 345, + 345, 345, 345, 348, 348, 353, 360, 345, 345, 345, + 355, 345, 361, 356, 362, 350, 350, 357, 345, 345, + 358, 345, 345, 351, 351, 102, 359, 345, 345, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 363, 345, 345, 345, 345, - 353, 353, 359, 342, 349, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, - 361, 342, 342, 342, 342, 342, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 362, 342, 342, 342, - 342, 349, 349, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 349, 349, 342, 342, - 342, 342, 342, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 342, 342, 342, 349, 349, + 355, 355, 361, 356, 356, 362, 345, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 364, 345, 345, 345, 345, 345, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 365, + 345, 345, 345, 345, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 345, 345, 345, 345, 345, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 345, 345, - 349, 349, 349, 349, 349, 349, 349, 349, 342, 342, - 349, 349, 349, 349, 349, 349, 349, 349, 349, 342, - 349, 349, 349, 349, 349, 349, 342, 349, 349, 349, - 342, 349, 349, 342, 349, 349, 342, 349, 342, 349, - 349, 0, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342 + 345, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 345, 345, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 345, 352, 352, 352, 352, 352, 352, 345, + 352, 352, 352, 345, 352, 352, 345, 352, 352, 345, + 352, 345, 352, 352, 0, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345 } ; -static const flex_int16_t yy_nxt[831] = +static const flex_int16_t yy_nxt[837] = { 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 28, @@ -747,93 +747,94 @@ static const flex_int16_t yy_nxt[831] = 37, 10, 38, 39, 35, 40, 41, 42, 43, 44, 45, 46, 35, 47, 35, 48, 35, 49, 35, 50, 51, 52, 53, 54, 35, 55, 35, 35, 56, 57, - 58, 59, 61, 61, 63, 66, 66, 63, 67, 67, - 64, 62, 62, 64, 70, 72, 78, 70, 84, 79, - 80, 86, 88, 104, 105, 102, 85, 90, 90, 90, + 58, 59, 61, 61, 64, 64, 71, 65, 65, 66, + 66, 62, 62, 73, 79, 67, 67, 80, 81, 71, + 68, 68, 85, 87, 105, 106, 89, 108, 109, 103, - 90, 102, 89, 87, 92, 123, 81, 107, 108, 102, - 93, 112, 102, 110, 74, 94, 102, 126, 102, 177, - 83, 71, 75, 95, 96, 102, 97, 98, 98, 97, - 178, 96, 76, 97, 97, 97, 97, 100, 110, 102, - 137, 91, 102, 102, 113, 102, 114, 117, 101, 102, - 102, 102, 140, 115, 102, 100, 118, 102, 121, 116, - 127, 110, 102, 119, 128, 120, 102, 134, 102, 102, - 129, 122, 70, 102, 149, 124, 130, 135, 102, 149, - 132, 74, 125, 70, 136, 138, 110, 342, 133, 75, - 82, 69, 131, 142, 174, 279, 154, 257, 102, 76, + 86, 103, 152, 124, 82, 88, 90, 91, 91, 91, + 91, 103, 75, 72, 97, 93, 98, 99, 99, 98, + 76, 94, 84, 111, 184, 181, 95, 101, 103, 103, + 77, 103, 103, 103, 96, 155, 122, 127, 102, 97, + 103, 98, 98, 98, 98, 101, 103, 113, 111, 123, + 115, 92, 114, 103, 111, 103, 103, 116, 103, 103, + 103, 118, 138, 117, 103, 103, 103, 103, 125, 120, + 119, 121, 130, 128, 131, 126, 135, 129, 133, 111, + 103, 142, 143, 71, 136, 70, 134, 145, 94, 152, + 132, 137, 71, 95, 83, 345, 91, 91, 91, 91, - 90, 90, 90, 90, 159, 159, 159, 159, 102, 71, - 169, 150, 152, 102, 102, 96, 83, 97, 97, 97, - 97, 96, 170, 161, 161, 161, 97, 102, 176, 155, - 143, 102, 342, 156, 162, 162, 167, 160, 102, 173, - 102, 102, 102, 102, 168, 171, 102, 102, 102, 175, - 102, 172, 303, 102, 102, 167, 102, 179, 102, 342, - 102, 163, 163, 163, 163, 180, 181, 182, 185, 168, - 183, 163, 163, 163, 163, 163, 102, 184, 70, 102, - 70, 149, 189, 102, 102, 102, 190, 102, 186, 163, - 163, 163, 163, 163, 163, 187, 191, 195, 69, 192, + 157, 96, 162, 162, 162, 162, 345, 139, 165, 165, + 75, 97, 282, 98, 98, 98, 98, 260, 76, 103, + 72, 103, 103, 103, 146, 84, 153, 103, 77, 159, + 173, 172, 103, 158, 103, 163, 97, 103, 164, 164, + 164, 98, 103, 103, 103, 192, 103, 179, 174, 103, + 103, 103, 170, 178, 175, 176, 180, 103, 177, 103, + 171, 183, 103, 345, 103, 166, 166, 166, 166, 182, + 103, 170, 185, 71, 186, 166, 166, 166, 166, 166, + 187, 71, 152, 103, 188, 171, 234, 103, 103, 103, + 193, 103, 103, 166, 166, 166, 166, 166, 166, 189, - 142, 148, 188, 199, 151, 196, 149, 82, 70, 70, - 202, 102, 102, 154, 102, 71, 208, 71, 150, 159, - 159, 159, 159, 96, 239, 161, 161, 161, 97, 342, - 231, 162, 162, 102, 205, 212, 102, 143, 206, 152, - 200, 83, 83, 203, 102, 102, 155, 102, 207, 102, - 209, 102, 160, 205, 102, 102, 102, 102, 213, 210, - 102, 211, 102, 206, 214, 102, 102, 102, 102, 102, - 217, 102, 102, 218, 215, 219, 102, 221, 220, 102, - 216, 223, 102, 102, 102, 102, 149, 226, 149, 149, - 227, 222, 224, 228, 149, 148, 225, 199, 230, 151, + 190, 198, 152, 194, 195, 71, 70, 191, 145, 199, + 72, 151, 196, 202, 154, 71, 83, 147, 72, 153, + 205, 209, 157, 162, 162, 162, 162, 103, 97, 103, + 164, 164, 164, 98, 345, 155, 165, 165, 84, 103, + 208, 103, 103, 211, 210, 146, 209, 103, 84, 213, + 203, 103, 103, 206, 103, 158, 163, 103, 103, 208, + 103, 212, 216, 215, 103, 217, 214, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 220, 221, 222, 103, + 103, 218, 224, 223, 226, 103, 103, 219, 229, 103, + 103, 152, 152, 230, 225, 227, 151, 231, 202, 228, - 237, 102, 102, 238, 229, 202, 102, 102, 240, 102, - 102, 102, 102, 193, 241, 102, 245, 244, 102, 237, - 247, 102, 152, 150, 248, 150, 102, 152, 238, 242, - 102, 243, 246, 102, 200, 102, 250, 102, 203, 252, - 102, 263, 102, 262, 102, 249, 253, 102, 102, 254, - 256, 102, 102, 102, 251, 102, 102, 102, 102, 102, - 263, 255, 264, 262, 266, 268, 102, 267, 265, 273, - 102, 270, 272, 102, 271, 102, 277, 102, 102, 284, - 269, 274, 275, 102, 102, 276, 102, 102, 102, 278, - 102, 102, 102, 102, 286, 285, 102, 144, 290, 289, + 152, 152, 154, 240, 233, 103, 241, 232, 205, 103, + 103, 103, 103, 103, 103, 103, 103, 243, 242, 248, + 247, 103, 240, 244, 103, 103, 103, 103, 153, 153, + 250, 241, 246, 155, 155, 203, 245, 103, 249, 103, + 251, 206, 103, 103, 252, 253, 255, 254, 103, 266, + 103, 265, 256, 103, 103, 103, 103, 257, 259, 103, + 103, 103, 103, 342, 103, 103, 103, 103, 266, 258, + 270, 265, 267, 271, 268, 276, 103, 269, 275, 103, + 272, 273, 103, 103, 274, 280, 103, 287, 103, 278, + 277, 103, 103, 103, 103, 279, 103, 103, 281, 103, - 294, 102, 284, 299, 102, 102, 287, 291, 288, 293, - 102, 292, 102, 102, 102, 295, 300, 102, 302, 304, - 102, 305, 299, 102, 301, 306, 311, 102, 102, 102, - 102, 102, 102, 102, 315, 307, 313, 308, 102, 316, - 102, 314, 102, 312, 102, 311, 102, 102, 317, 323, - 322, 318, 321, 102, 324, 102, 102, 319, 102, 326, - 328, 102, 329, 325, 102, 102, 102, 102, 102, 102, - 333, 339, 102, 335, 338, 102, 332, 330, 336, 341, - 337, 334, 102, 331, 340, 60, 60, 60, 60, 60, - 60, 60, 60, 65, 65, 65, 65, 65, 65, 65, + 103, 103, 289, 340, 292, 288, 103, 293, 103, 302, + 287, 103, 297, 294, 290, 298, 103, 291, 103, 295, + 103, 103, 296, 303, 103, 103, 305, 103, 302, 103, + 103, 306, 307, 314, 103, 304, 103, 308, 309, 310, + 103, 311, 103, 103, 316, 103, 103, 318, 320, 103, + 315, 103, 314, 319, 317, 103, 103, 103, 321, 325, + 103, 103, 103, 327, 322, 329, 103, 103, 103, 331, + 332, 103, 324, 326, 103, 103, 103, 336, 103, 328, + 103, 337, 338, 335, 341, 103, 339, 344, 333, 334, + 103, 103, 103, 330, 343, 60, 60, 60, 60, 60, - 65, 69, 69, 69, 69, 69, 69, 69, 69, 73, - 73, 102, 102, 73, 82, 82, 82, 82, 82, 82, - 82, 82, 99, 102, 99, 99, 99, 99, 109, 109, - 109, 109, 141, 141, 141, 141, 141, 141, 141, 141, - 148, 148, 148, 148, 148, 148, 148, 148, 151, 151, - 151, 151, 151, 151, 151, 151, 153, 153, 153, 153, - 153, 153, 153, 153, 158, 327, 158, 158, 158, 158, - 158, 158, 164, 164, 102, 164, 198, 198, 198, 198, - 198, 198, 198, 198, 201, 201, 201, 201, 201, 201, - 201, 201, 102, 102, 320, 102, 102, 310, 309, 102, + 60, 60, 60, 63, 63, 63, 63, 63, 63, 63, + 63, 70, 70, 70, 70, 70, 70, 70, 70, 74, + 74, 103, 103, 74, 83, 83, 83, 83, 83, 83, + 83, 83, 100, 103, 100, 100, 100, 100, 110, 110, + 110, 110, 144, 144, 144, 144, 144, 144, 144, 144, + 151, 151, 151, 151, 151, 151, 151, 151, 154, 154, + 154, 154, 154, 154, 154, 154, 156, 156, 156, 156, + 156, 156, 156, 156, 161, 323, 161, 161, 161, 161, + 161, 161, 167, 167, 103, 167, 201, 201, 201, 201, + 201, 201, 201, 201, 204, 204, 204, 204, 204, 204, - 102, 298, 297, 296, 102, 102, 102, 102, 102, 283, - 282, 281, 280, 102, 102, 102, 102, 261, 260, 259, - 258, 102, 102, 102, 102, 102, 102, 102, 236, 235, - 234, 233, 232, 102, 204, 197, 194, 102, 102, 102, - 102, 166, 165, 157, 147, 146, 145, 140, 85, 139, - 111, 102, 106, 103, 77, 68, 342, 9, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 204, 204, 103, 313, 312, 103, 103, 301, 300, 299, + 103, 103, 103, 103, 103, 286, 285, 284, 283, 103, + 103, 103, 103, 264, 263, 262, 261, 103, 103, 103, + 103, 103, 103, 103, 239, 238, 237, 236, 235, 103, + 207, 200, 197, 103, 103, 103, 103, 169, 168, 160, + 150, 149, 148, 86, 141, 140, 112, 103, 107, 104, + 78, 69, 345, 9, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342 + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345 } ; -static const flex_int16_t yy_chk[831] = +static const flex_int16_t yy_chk[837] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -842,90 +843,91 @@ static const flex_int16_t yy_chk[831] = 1, 1, 1, 1, 1, 1, 1, 1, 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, 7, 8, 6, 7, 8, - 5, 3, 4, 6, 14, 15, 17, 18, 21, 17, - 17, 22, 24, 31, 31, 40, 21, 25, 25, 25, + 1, 1, 3, 4, 5, 6, 14, 5, 6, 7, + 8, 3, 4, 15, 17, 7, 8, 17, 17, 18, + 7, 8, 21, 22, 31, 31, 24, 33, 33, 46, - 25, 46, 24, 22, 26, 46, 17, 33, 33, 48, - 26, 40, 120, 36, 15, 26, 121, 48, 36, 120, - 18, 14, 15, 26, 27, 41, 27, 27, 27, 27, - 121, 28, 15, 28, 28, 28, 28, 27, 36, 43, - 57, 25, 42, 49, 41, 50, 42, 43, 27, 44, - 27, 54, 63, 42, 45, 27, 43, 28, 45, 42, - 49, 47, 51, 44, 50, 44, 47, 54, 52, 53, - 51, 45, 69, 55, 78, 47, 52, 55, 116, 80, - 53, 63, 47, 82, 55, 57, 47, 99, 53, 63, - 83, 71, 52, 71, 116, 362, 83, 361, 112, 63, + 21, 127, 81, 46, 17, 22, 24, 25, 25, 25, + 25, 122, 15, 14, 27, 26, 27, 27, 27, 27, + 15, 26, 18, 36, 127, 122, 26, 27, 36, 48, + 15, 40, 45, 41, 26, 81, 45, 48, 27, 28, + 27, 28, 28, 28, 28, 27, 42, 40, 36, 45, + 42, 25, 41, 43, 47, 44, 49, 42, 50, 47, + 54, 43, 57, 42, 51, 28, 52, 53, 47, 44, + 43, 44, 51, 49, 52, 47, 54, 50, 53, 47, + 55, 66, 68, 70, 55, 72, 53, 72, 68, 79, + 52, 55, 83, 68, 84, 100, 91, 91, 91, 91, - 90, 90, 90, 90, 96, 96, 96, 96, 119, 69, - 112, 78, 80, 99, 113, 97, 82, 97, 97, 97, - 97, 98, 113, 98, 98, 98, 98, 115, 119, 83, - 71, 114, 100, 90, 100, 100, 110, 96, 122, 115, - 117, 97, 290, 126, 110, 114, 127, 98, 110, 117, - 123, 114, 290, 128, 130, 110, 129, 122, 100, 101, - 133, 101, 101, 101, 101, 123, 126, 127, 130, 110, - 128, 101, 101, 101, 101, 101, 131, 129, 141, 134, - 142, 148, 133, 132, 135, 101, 134, 136, 131, 101, - 101, 101, 101, 101, 101, 132, 135, 146, 143, 136, + 84, 68, 97, 97, 97, 97, 101, 57, 101, 101, + 66, 98, 365, 98, 98, 98, 98, 364, 66, 113, + 70, 100, 114, 134, 72, 83, 79, 120, 66, 91, + 114, 113, 101, 84, 115, 97, 99, 98, 99, 99, + 99, 99, 117, 116, 118, 134, 124, 120, 115, 121, + 123, 128, 111, 118, 115, 116, 121, 129, 117, 130, + 111, 124, 99, 102, 111, 102, 102, 102, 102, 123, + 131, 111, 128, 144, 129, 102, 102, 102, 102, 102, + 130, 145, 151, 135, 131, 111, 363, 132, 133, 102, + 135, 136, 137, 102, 102, 102, 102, 102, 102, 132, - 143, 150, 132, 150, 152, 146, 151, 155, 153, 154, - 152, 208, 170, 155, 174, 141, 170, 142, 148, 159, - 159, 159, 159, 161, 208, 161, 161, 161, 161, 162, - 360, 162, 162, 169, 167, 174, 171, 143, 168, 151, - 150, 153, 154, 152, 168, 167, 155, 173, 169, 161, - 171, 172, 159, 167, 175, 162, 176, 177, 175, 172, - 178, 173, 179, 168, 176, 180, 182, 181, 183, 184, - 179, 186, 185, 180, 177, 181, 187, 183, 182, 188, - 178, 185, 189, 191, 192, 190, 198, 188, 199, 201, - 189, 184, 186, 190, 202, 200, 187, 200, 192, 203, + 133, 149, 154, 136, 137, 156, 146, 133, 146, 149, + 144, 153, 360, 153, 155, 157, 158, 354, 145, 151, + 155, 171, 158, 162, 162, 162, 162, 171, 164, 172, + 164, 164, 164, 164, 165, 154, 165, 165, 156, 173, + 170, 175, 177, 173, 172, 146, 171, 174, 157, 175, + 153, 170, 176, 155, 164, 158, 162, 179, 178, 170, + 165, 174, 178, 177, 180, 179, 176, 181, 182, 183, + 184, 185, 187, 186, 189, 188, 182, 183, 184, 190, + 191, 180, 186, 185, 188, 192, 194, 181, 191, 193, + 195, 201, 202, 192, 187, 189, 203, 193, 203, 190, - 205, 211, 212, 206, 191, 203, 206, 213, 211, 216, - 205, 220, 217, 357, 212, 215, 217, 216, 219, 205, - 220, 221, 201, 198, 221, 199, 222, 202, 206, 213, - 224, 215, 219, 225, 200, 226, 224, 228, 203, 226, - 229, 238, 230, 237, 239, 222, 228, 240, 241, 229, - 230, 237, 238, 242, 225, 247, 249, 254, 250, 245, - 238, 229, 239, 237, 241, 245, 248, 242, 240, 250, - 251, 248, 249, 253, 248, 252, 254, 255, 264, 262, - 247, 251, 252, 265, 266, 253, 262, 267, 268, 255, - 270, 271, 274, 276, 265, 264, 277, 351, 270, 268, + 204, 205, 206, 208, 195, 211, 209, 194, 206, 209, + 214, 215, 219, 208, 216, 220, 218, 214, 211, 220, + 219, 223, 208, 215, 222, 225, 228, 344, 201, 202, + 223, 209, 218, 204, 205, 203, 216, 224, 222, 227, + 224, 206, 229, 231, 225, 227, 229, 228, 232, 241, + 233, 240, 231, 243, 242, 250, 245, 232, 233, 240, + 241, 244, 252, 340, 253, 339, 257, 248, 241, 232, + 245, 240, 242, 248, 243, 253, 251, 244, 252, 254, + 250, 251, 255, 256, 251, 257, 258, 265, 267, 255, + 254, 268, 269, 271, 265, 256, 270, 274, 258, 273, - 277, 278, 262, 284, 285, 286, 266, 271, 267, 276, - 287, 274, 291, 292, 284, 278, 285, 293, 287, 291, - 294, 292, 284, 295, 286, 293, 299, 300, 301, 303, - 305, 312, 306, 314, 305, 294, 301, 295, 299, 306, - 307, 303, 308, 300, 318, 299, 313, 315, 307, 314, - 313, 308, 312, 322, 315, 319, 326, 308, 325, 319, - 322, 329, 325, 318, 330, 332, 335, 333, 338, 341, - 330, 337, 340, 332, 335, 336, 329, 326, 333, 340, - 334, 331, 328, 327, 338, 343, 343, 343, 343, 343, - 343, 343, 343, 344, 344, 344, 344, 344, 344, 344, + 277, 281, 268, 337, 271, 267, 279, 273, 280, 287, + 265, 288, 280, 274, 269, 281, 289, 270, 290, 277, + 287, 293, 279, 288, 297, 294, 290, 298, 287, 295, + 296, 293, 294, 302, 303, 289, 304, 295, 296, 297, + 310, 298, 306, 308, 304, 302, 309, 308, 310, 311, + 303, 315, 302, 309, 306, 316, 318, 317, 311, 316, + 321, 322, 325, 318, 311, 322, 328, 329, 332, 325, + 328, 333, 315, 317, 335, 336, 338, 333, 341, 321, + 343, 334, 335, 332, 338, 331, 336, 343, 329, 330, + 327, 326, 324, 323, 341, 346, 346, 346, 346, 346, - 344, 345, 345, 345, 345, 345, 345, 345, 345, 346, - 346, 324, 323, 346, 347, 347, 347, 347, 347, 347, - 347, 347, 348, 321, 348, 348, 348, 348, 349, 349, - 349, 349, 350, 350, 350, 350, 350, 350, 350, 350, - 352, 352, 352, 352, 352, 352, 352, 352, 353, 353, - 353, 353, 353, 353, 353, 353, 354, 354, 354, 354, - 354, 354, 354, 354, 355, 320, 355, 355, 355, 355, - 355, 355, 356, 356, 317, 356, 358, 358, 358, 358, - 358, 358, 358, 358, 359, 359, 359, 359, 359, 359, - 359, 359, 316, 311, 310, 304, 302, 298, 296, 289, + 346, 346, 346, 347, 347, 347, 347, 347, 347, 347, + 347, 348, 348, 348, 348, 348, 348, 348, 348, 349, + 349, 320, 319, 349, 350, 350, 350, 350, 350, 350, + 350, 350, 351, 314, 351, 351, 351, 351, 352, 352, + 352, 352, 353, 353, 353, 353, 353, 353, 353, 353, + 355, 355, 355, 355, 355, 355, 355, 355, 356, 356, + 356, 356, 356, 356, 356, 356, 357, 357, 357, 357, + 357, 357, 357, 357, 358, 313, 358, 358, 358, 358, + 358, 358, 359, 359, 307, 359, 361, 361, 361, 361, + 361, 361, 361, 361, 362, 362, 362, 362, 362, 362, - 288, 283, 281, 280, 275, 273, 272, 269, 263, 261, - 260, 259, 258, 256, 246, 244, 243, 235, 234, 233, - 232, 227, 223, 218, 214, 210, 209, 207, 204, 197, - 196, 195, 194, 164, 157, 147, 145, 125, 124, 118, - 109, 108, 104, 91, 76, 75, 74, 67, 64, 62, - 39, 35, 32, 29, 16, 13, 9, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 362, 362, 305, 301, 299, 292, 291, 286, 284, 283, + 278, 276, 275, 272, 266, 264, 263, 262, 261, 259, + 249, 247, 246, 238, 237, 236, 235, 230, 226, 221, + 217, 213, 212, 210, 207, 200, 199, 198, 197, 167, + 160, 150, 148, 126, 125, 119, 110, 109, 105, 92, + 77, 76, 75, 67, 65, 62, 39, 35, 32, 29, + 16, 13, 9, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342 + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345 } ; /* The intent behind this definition is that it'll catch @@ -946,14 +948,14 @@ static const flex_int16_t yy_chk[831] = #line 25 "lexer.lpp" #define YY_USER_ACTION ctx->loc.columns(yyleng); -#line 949 "lexer.cpp" - #line 951 "lexer.cpp" + +#line 953 "lexer.cpp" #define INITIAL 0 -#define COMMENT_BLOCK_STATE 1 -#define DEVBLOCK_ON_STATE 2 -#define DEVBLOCK_OFF_STATE 3 +#define COMMENT_STATE 1 +#define DEV_OFF_STATE 2 +#define DEV_ON_STATE 3 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way @@ -1217,7 +1219,7 @@ YY_DECL ctx->loc.step(); -#line 1220 "lexer.cpp" +#line 1222 "lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1244,13 +1246,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 >= 343 ) + if ( yy_current_state >= 346 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 342 ); + while ( yy_current_state != 345 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -1278,567 +1280,586 @@ YY_RULE_SETUP case 2: /* rule 2 can match eol */ YY_RULE_SETUP -#line 52 "lexer.lpp" +#line 51 "lexer.lpp" { ctx->loc.lines(yyleng); ctx->loc.step(); } YY_BREAK case 3: YY_RULE_SETUP -#line 54 "lexer.lpp" +#line 53 "lexer.lpp" YY_BREAK case 4: YY_RULE_SETUP -#line 56 "lexer.lpp" -{ BEGIN(COMMENT_BLOCK_STATE); } +#line 55 "lexer.lpp" +{ BEGIN(COMMENT_STATE); } YY_BREAK case 5: YY_RULE_SETUP -#line 57 "lexer.lpp" +#line 56 "lexer.lpp" YY_BREAK case 6: /* rule 6 can match eol */ YY_RULE_SETUP -#line 58 "lexer.lpp" +#line 57 "lexer.lpp" { ctx->loc.lines(yyleng); ctx->loc.step(); } YY_BREAK case 7: YY_RULE_SETUP -#line 59 "lexer.lpp" +#line 58 "lexer.lpp" { BEGIN(INITIAL); } YY_BREAK +case YY_STATE_EOF(COMMENT_STATE): +#line 59 "lexer.lpp" +{ throw s4::parser::syntax_error(ctx->loc, "unmatched multiline comment start ('/*')"); } + YY_BREAK case 8: YY_RULE_SETUP -#line 61 "lexer.lpp" -{ BEGIN(ctx->mode == xsk::gsc::build::dev ? DEVBLOCK_ON_STATE : DEVBLOCK_OFF_STATE); } +#line 60 "lexer.lpp" +{ throw s4::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } YY_BREAK case 9: YY_RULE_SETUP #line 62 "lexer.lpp" - +{ throw s4::parser::syntax_error(ctx->loc, "cannot recurse devblock ('/#')"); } YY_BREAK case 10: -/* rule 10 can match eol */ YY_RULE_SETUP #line 63 "lexer.lpp" -{ ctx->loc.lines(yyleng); ctx->loc.step(); } +{ BEGIN(INITIAL); return s4::parser::make_DEVEND(ctx->loc); } + YY_BREAK +case YY_STATE_EOF(DEV_ON_STATE): +#line 64 "lexer.lpp" +{ throw s4::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } YY_BREAK case 11: YY_RULE_SETUP -#line 64 "lexer.lpp" -{ BEGIN(INITIAL); } +#line 66 "lexer.lpp" +{ BEGIN(ctx->mode == xsk::gsc::build::dev ? DEV_ON_STATE : DEV_OFF_STATE); if(ctx->mode == xsk::gsc::build::dev) return s4::parser::make_DEVBEGIN(ctx->loc); } YY_BREAK case 12: YY_RULE_SETUP -#line 66 "lexer.lpp" -{ throw s4::parser::syntax_error(ctx->loc, "unmatched multiline comment end ('*/')"); } +#line 67 "lexer.lpp" + YY_BREAK case 13: +/* rule 13 can match eol */ YY_RULE_SETUP -#line 67 "lexer.lpp" -{ throw s4::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } +#line 68 "lexer.lpp" +{ ctx->loc.lines(yyleng); ctx->loc.step(); } YY_BREAK case 14: YY_RULE_SETUP #line 69 "lexer.lpp" -{ return s4::parser::make_INLINE(ctx->loc); } +{ BEGIN(INITIAL); } + YY_BREAK +case YY_STATE_EOF(DEV_OFF_STATE): +#line 70 "lexer.lpp" +{ throw s4::parser::syntax_error(ctx->loc, "unmatched devblock start ('/#')"); } YY_BREAK case 15: YY_RULE_SETUP -#line 70 "lexer.lpp" -{ return s4::parser::make_INCLUDE(ctx->loc); } +#line 71 "lexer.lpp" +{ throw s4::parser::syntax_error(ctx->loc, "unmatched devblock end ('#/')"); } YY_BREAK case 16: YY_RULE_SETUP -#line 71 "lexer.lpp" -{ return s4::parser::make_USINGTREE(ctx->loc); } +#line 73 "lexer.lpp" +{ return s4::parser::make_INLINE(ctx->loc); } YY_BREAK case 17: YY_RULE_SETUP -#line 72 "lexer.lpp" -{ return s4::parser::make_ANIMTREE(ctx->loc); } +#line 74 "lexer.lpp" +{ return s4::parser::make_INCLUDE(ctx->loc); } YY_BREAK case 18: YY_RULE_SETUP -#line 73 "lexer.lpp" -{ return s4::parser::make_ENDON(ctx->loc); } +#line 75 "lexer.lpp" +{ return s4::parser::make_USINGTREE(ctx->loc); } YY_BREAK case 19: YY_RULE_SETUP -#line 74 "lexer.lpp" -{ return s4::parser::make_NOTIFY(ctx->loc); } +#line 76 "lexer.lpp" +{ return s4::parser::make_ANIMTREE(ctx->loc); } YY_BREAK case 20: YY_RULE_SETUP -#line 75 "lexer.lpp" -{ return s4::parser::make_WAIT(ctx->loc); } +#line 77 "lexer.lpp" +{ return s4::parser::make_ENDON(ctx->loc); } YY_BREAK case 21: YY_RULE_SETUP -#line 76 "lexer.lpp" -{ return s4::parser::make_WAITTILL(ctx->loc); } +#line 78 "lexer.lpp" +{ return s4::parser::make_NOTIFY(ctx->loc); } YY_BREAK case 22: YY_RULE_SETUP -#line 77 "lexer.lpp" -{ return s4::parser::make_WAITTILLMATCH(ctx->loc); } +#line 79 "lexer.lpp" +{ return s4::parser::make_WAIT(ctx->loc); } YY_BREAK case 23: YY_RULE_SETUP -#line 78 "lexer.lpp" -{ return s4::parser::make_WAITTILLFRAMEEND(ctx->loc); } +#line 80 "lexer.lpp" +{ return s4::parser::make_WAITTILL(ctx->loc); } YY_BREAK case 24: YY_RULE_SETUP -#line 79 "lexer.lpp" -{ return s4::parser::make_WAITFRAME(ctx->loc); } +#line 81 "lexer.lpp" +{ return s4::parser::make_WAITTILLMATCH(ctx->loc); } YY_BREAK case 25: YY_RULE_SETUP -#line 80 "lexer.lpp" -{ return s4::parser::make_IF(ctx->loc); } +#line 82 "lexer.lpp" +{ return s4::parser::make_WAITTILLFRAMEEND(ctx->loc); } YY_BREAK case 26: YY_RULE_SETUP -#line 81 "lexer.lpp" -{ return s4::parser::make_ELSE(ctx->loc); } +#line 83 "lexer.lpp" +{ return s4::parser::make_WAITFRAME(ctx->loc); } YY_BREAK case 27: YY_RULE_SETUP -#line 82 "lexer.lpp" -{ return s4::parser::make_DO(ctx->loc); } +#line 84 "lexer.lpp" +{ return s4::parser::make_IF(ctx->loc); } YY_BREAK case 28: YY_RULE_SETUP -#line 83 "lexer.lpp" -{ return s4::parser::make_WHILE(ctx->loc); } +#line 85 "lexer.lpp" +{ return s4::parser::make_ELSE(ctx->loc); } YY_BREAK case 29: YY_RULE_SETUP -#line 84 "lexer.lpp" -{ return s4::parser::make_FOR(ctx->loc); } +#line 86 "lexer.lpp" +{ return s4::parser::make_DO(ctx->loc); } YY_BREAK case 30: YY_RULE_SETUP -#line 85 "lexer.lpp" -{ return s4::parser::make_FOREACH(ctx->loc); } +#line 87 "lexer.lpp" +{ return s4::parser::make_WHILE(ctx->loc); } YY_BREAK case 31: YY_RULE_SETUP -#line 86 "lexer.lpp" -{ return s4::parser::make_IN(ctx->loc); } +#line 88 "lexer.lpp" +{ return s4::parser::make_FOR(ctx->loc); } YY_BREAK case 32: YY_RULE_SETUP -#line 87 "lexer.lpp" -{ return s4::parser::make_SWITCH(ctx->loc); } +#line 89 "lexer.lpp" +{ return s4::parser::make_FOREACH(ctx->loc); } YY_BREAK case 33: YY_RULE_SETUP -#line 88 "lexer.lpp" -{ return s4::parser::make_CASE(ctx->loc); } +#line 90 "lexer.lpp" +{ return s4::parser::make_IN(ctx->loc); } YY_BREAK case 34: YY_RULE_SETUP -#line 89 "lexer.lpp" -{ return s4::parser::make_DEFAULT(ctx->loc); } +#line 91 "lexer.lpp" +{ return s4::parser::make_SWITCH(ctx->loc); } YY_BREAK case 35: YY_RULE_SETUP -#line 90 "lexer.lpp" -{ return s4::parser::make_BREAK(ctx->loc); } +#line 92 "lexer.lpp" +{ return s4::parser::make_CASE(ctx->loc); } YY_BREAK case 36: YY_RULE_SETUP -#line 91 "lexer.lpp" -{ return s4::parser::make_CONTINUE(ctx->loc); } +#line 93 "lexer.lpp" +{ return s4::parser::make_DEFAULT(ctx->loc); } YY_BREAK case 37: YY_RULE_SETUP -#line 92 "lexer.lpp" -{ return s4::parser::make_RETURN(ctx->loc); } +#line 94 "lexer.lpp" +{ return s4::parser::make_BREAK(ctx->loc); } YY_BREAK case 38: YY_RULE_SETUP -#line 93 "lexer.lpp" -{ return s4::parser::make_BREAKPOINT(ctx->loc); } +#line 95 "lexer.lpp" +{ return s4::parser::make_CONTINUE(ctx->loc); } YY_BREAK case 39: YY_RULE_SETUP -#line 94 "lexer.lpp" -{ return s4::parser::make_PROFBEGIN(ctx->loc); } +#line 96 "lexer.lpp" +{ return s4::parser::make_RETURN(ctx->loc); } YY_BREAK case 40: YY_RULE_SETUP -#line 95 "lexer.lpp" -{ return s4::parser::make_PROFEND(ctx->loc); } +#line 97 "lexer.lpp" +{ return s4::parser::make_BREAKPOINT(ctx->loc); } YY_BREAK case 41: YY_RULE_SETUP -#line 96 "lexer.lpp" -{ return s4::parser::make_THREAD(ctx->loc); } +#line 98 "lexer.lpp" +{ return s4::parser::make_PROFBEGIN(ctx->loc); } YY_BREAK case 42: YY_RULE_SETUP -#line 97 "lexer.lpp" -{ return s4::parser::make_CHILDTHREAD(ctx->loc); } +#line 99 "lexer.lpp" +{ return s4::parser::make_PROFEND(ctx->loc); } YY_BREAK case 43: YY_RULE_SETUP -#line 98 "lexer.lpp" -{ return s4::parser::make_THISTHREAD(ctx->loc); } +#line 100 "lexer.lpp" +{ return s4::parser::make_THREAD(ctx->loc); } YY_BREAK case 44: YY_RULE_SETUP -#line 99 "lexer.lpp" -{ return s4::parser::make_CALL(ctx->loc); } +#line 101 "lexer.lpp" +{ return s4::parser::make_CHILDTHREAD(ctx->loc); } YY_BREAK case 45: YY_RULE_SETUP -#line 100 "lexer.lpp" -{ return s4::parser::make_TRUE(ctx->loc); } +#line 102 "lexer.lpp" +{ return s4::parser::make_THISTHREAD(ctx->loc); } YY_BREAK case 46: YY_RULE_SETUP -#line 101 "lexer.lpp" -{ return s4::parser::make_FALSE(ctx->loc); } +#line 103 "lexer.lpp" +{ return s4::parser::make_CALL(ctx->loc); } YY_BREAK case 47: YY_RULE_SETUP -#line 102 "lexer.lpp" -{ return s4::parser::make_UNDEFINED(ctx->loc); } +#line 104 "lexer.lpp" +{ return s4::parser::make_TRUE(ctx->loc); } YY_BREAK case 48: YY_RULE_SETUP -#line 103 "lexer.lpp" -{ return s4::parser::make_SIZE(ctx->loc); } +#line 105 "lexer.lpp" +{ return s4::parser::make_FALSE(ctx->loc); } YY_BREAK case 49: YY_RULE_SETUP -#line 104 "lexer.lpp" -{ return s4::parser::make_GAME(ctx->loc); } +#line 106 "lexer.lpp" +{ return s4::parser::make_UNDEFINED(ctx->loc); } YY_BREAK case 50: YY_RULE_SETUP -#line 105 "lexer.lpp" -{ return s4::parser::make_SELF(ctx->loc); } +#line 107 "lexer.lpp" +{ return s4::parser::make_SIZE(ctx->loc); } YY_BREAK case 51: YY_RULE_SETUP -#line 106 "lexer.lpp" -{ return s4::parser::make_ANIM(ctx->loc); } +#line 108 "lexer.lpp" +{ return s4::parser::make_GAME(ctx->loc); } YY_BREAK case 52: YY_RULE_SETUP -#line 107 "lexer.lpp" -{ return s4::parser::make_LEVEL(ctx->loc); } +#line 109 "lexer.lpp" +{ return s4::parser::make_SELF(ctx->loc); } YY_BREAK case 53: YY_RULE_SETUP -#line 108 "lexer.lpp" -{ return s4::parser::make_ISDEFINED(ctx->loc); } +#line 110 "lexer.lpp" +{ return s4::parser::make_ANIM(ctx->loc); } YY_BREAK case 54: YY_RULE_SETUP -#line 109 "lexer.lpp" -{ return s4::parser::make_ISTRUE(ctx->loc); } +#line 111 "lexer.lpp" +{ return s4::parser::make_LEVEL(ctx->loc); } YY_BREAK case 55: YY_RULE_SETUP -#line 110 "lexer.lpp" -{ return s4::parser::make_LPAREN(ctx->loc); } +#line 112 "lexer.lpp" +{ return s4::parser::make_ISDEFINED(ctx->loc); } YY_BREAK case 56: YY_RULE_SETUP -#line 111 "lexer.lpp" -{ return s4::parser::make_RPAREN(ctx->loc); } +#line 113 "lexer.lpp" +{ return s4::parser::make_ISTRUE(ctx->loc); } YY_BREAK case 57: YY_RULE_SETUP -#line 112 "lexer.lpp" -{ return s4::parser::make_LBRACE(ctx->loc); } +#line 114 "lexer.lpp" +{ return s4::parser::make_LPAREN(ctx->loc); } YY_BREAK case 58: YY_RULE_SETUP -#line 113 "lexer.lpp" -{ return s4::parser::make_RBRACE(ctx->loc); } +#line 115 "lexer.lpp" +{ return s4::parser::make_RPAREN(ctx->loc); } YY_BREAK case 59: YY_RULE_SETUP -#line 114 "lexer.lpp" -{ return s4::parser::make_LBRACKET(ctx->loc); } +#line 116 "lexer.lpp" +{ return s4::parser::make_LBRACE(ctx->loc); } YY_BREAK case 60: YY_RULE_SETUP -#line 115 "lexer.lpp" -{ return s4::parser::make_RBRACKET(ctx->loc); } +#line 117 "lexer.lpp" +{ return s4::parser::make_RBRACE(ctx->loc); } YY_BREAK case 61: YY_RULE_SETUP -#line 116 "lexer.lpp" -{ return s4::parser::make_COMMA(ctx->loc); } +#line 118 "lexer.lpp" +{ return s4::parser::make_LBRACKET(ctx->loc); } YY_BREAK case 62: YY_RULE_SETUP -#line 117 "lexer.lpp" -{ return s4::parser::make_DOT(ctx->loc); } +#line 119 "lexer.lpp" +{ return s4::parser::make_RBRACKET(ctx->loc); } YY_BREAK case 63: YY_RULE_SETUP -#line 118 "lexer.lpp" -{ return s4::parser::make_DOUBLECOLON(ctx->loc); } +#line 120 "lexer.lpp" +{ return s4::parser::make_COMMA(ctx->loc); } YY_BREAK case 64: YY_RULE_SETUP -#line 119 "lexer.lpp" -{ return s4::parser::make_COLON(ctx->loc); } +#line 121 "lexer.lpp" +{ return s4::parser::make_DOT(ctx->loc); } YY_BREAK case 65: YY_RULE_SETUP -#line 120 "lexer.lpp" -{ return s4::parser::make_SEMICOLON(ctx->loc); } +#line 122 "lexer.lpp" +{ return s4::parser::make_DOUBLECOLON(ctx->loc); } YY_BREAK case 66: YY_RULE_SETUP -#line 121 "lexer.lpp" -{ return s4::parser::make_QMARK(ctx->loc); } +#line 123 "lexer.lpp" +{ return s4::parser::make_COLON(ctx->loc); } YY_BREAK case 67: YY_RULE_SETUP -#line 122 "lexer.lpp" -{ return s4::parser::make_INCREMENT(ctx->loc); } +#line 124 "lexer.lpp" +{ return s4::parser::make_SEMICOLON(ctx->loc); } YY_BREAK case 68: YY_RULE_SETUP -#line 123 "lexer.lpp" -{ return s4::parser::make_DECREMENT(ctx->loc); } +#line 125 "lexer.lpp" +{ return s4::parser::make_QMARK(ctx->loc); } YY_BREAK case 69: YY_RULE_SETUP -#line 124 "lexer.lpp" -{ return s4::parser::make_ASSIGN_LSHIFT(ctx->loc); } +#line 126 "lexer.lpp" +{ return s4::parser::make_INCREMENT(ctx->loc); } YY_BREAK case 70: YY_RULE_SETUP -#line 125 "lexer.lpp" -{ return s4::parser::make_ASSIGN_RSHIFT(ctx->loc); } +#line 127 "lexer.lpp" +{ return s4::parser::make_DECREMENT(ctx->loc); } YY_BREAK case 71: YY_RULE_SETUP -#line 126 "lexer.lpp" -{ return s4::parser::make_LSHIFT(ctx->loc); } +#line 128 "lexer.lpp" +{ return s4::parser::make_ASSIGN_LSHIFT(ctx->loc); } YY_BREAK case 72: YY_RULE_SETUP -#line 127 "lexer.lpp" -{ return s4::parser::make_RSHIFT(ctx->loc); } +#line 129 "lexer.lpp" +{ return s4::parser::make_ASSIGN_RSHIFT(ctx->loc); } YY_BREAK case 73: YY_RULE_SETUP -#line 128 "lexer.lpp" -{ return s4::parser::make_OR(ctx->loc); } +#line 130 "lexer.lpp" +{ return s4::parser::make_LSHIFT(ctx->loc); } YY_BREAK case 74: YY_RULE_SETUP -#line 129 "lexer.lpp" -{ return s4::parser::make_AND(ctx->loc); } +#line 131 "lexer.lpp" +{ return s4::parser::make_RSHIFT(ctx->loc); } YY_BREAK case 75: YY_RULE_SETUP -#line 130 "lexer.lpp" -{ return s4::parser::make_EQUALITY(ctx->loc); } +#line 132 "lexer.lpp" +{ return s4::parser::make_OR(ctx->loc); } YY_BREAK case 76: YY_RULE_SETUP -#line 131 "lexer.lpp" -{ return s4::parser::make_INEQUALITY(ctx->loc); } +#line 133 "lexer.lpp" +{ return s4::parser::make_AND(ctx->loc); } YY_BREAK case 77: YY_RULE_SETUP -#line 132 "lexer.lpp" -{ return s4::parser::make_LESS_EQUAL(ctx->loc); } +#line 134 "lexer.lpp" +{ return s4::parser::make_EQUALITY(ctx->loc); } YY_BREAK case 78: YY_RULE_SETUP -#line 133 "lexer.lpp" -{ return s4::parser::make_GREATER_EQUAL(ctx->loc); } +#line 135 "lexer.lpp" +{ return s4::parser::make_INEQUALITY(ctx->loc); } YY_BREAK case 79: YY_RULE_SETUP -#line 134 "lexer.lpp" -{ return s4::parser::make_LESS(ctx->loc); } +#line 136 "lexer.lpp" +{ return s4::parser::make_LESS_EQUAL(ctx->loc); } YY_BREAK case 80: YY_RULE_SETUP -#line 135 "lexer.lpp" -{ return s4::parser::make_GREATER(ctx->loc); } +#line 137 "lexer.lpp" +{ return s4::parser::make_GREATER_EQUAL(ctx->loc); } YY_BREAK case 81: YY_RULE_SETUP -#line 136 "lexer.lpp" -{ return s4::parser::make_ASSIGN_ADD(ctx->loc); } +#line 138 "lexer.lpp" +{ return s4::parser::make_LESS(ctx->loc); } YY_BREAK case 82: YY_RULE_SETUP -#line 137 "lexer.lpp" -{ return s4::parser::make_ASSIGN_SUB(ctx->loc); } +#line 139 "lexer.lpp" +{ return s4::parser::make_GREATER(ctx->loc); } YY_BREAK case 83: YY_RULE_SETUP -#line 138 "lexer.lpp" -{ return s4::parser::make_ASSIGN_MUL(ctx->loc); } +#line 140 "lexer.lpp" +{ return s4::parser::make_ASSIGN_ADD(ctx->loc); } YY_BREAK case 84: YY_RULE_SETUP -#line 139 "lexer.lpp" -{ return s4::parser::make_ASSIGN_DIV(ctx->loc); } +#line 141 "lexer.lpp" +{ return s4::parser::make_ASSIGN_SUB(ctx->loc); } YY_BREAK case 85: YY_RULE_SETUP -#line 140 "lexer.lpp" -{ return s4::parser::make_ASSIGN_MOD(ctx->loc); } +#line 142 "lexer.lpp" +{ return s4::parser::make_ASSIGN_MUL(ctx->loc); } YY_BREAK case 86: YY_RULE_SETUP -#line 141 "lexer.lpp" -{ return s4::parser::make_ASSIGN_BW_OR(ctx->loc); } +#line 143 "lexer.lpp" +{ return s4::parser::make_ASSIGN_DIV(ctx->loc); } YY_BREAK case 87: YY_RULE_SETUP -#line 142 "lexer.lpp" -{ return s4::parser::make_ASSIGN_BW_AND(ctx->loc); } +#line 144 "lexer.lpp" +{ return s4::parser::make_ASSIGN_MOD(ctx->loc); } YY_BREAK case 88: YY_RULE_SETUP -#line 143 "lexer.lpp" -{ return s4::parser::make_ASSIGN_BW_EXOR(ctx->loc); } +#line 145 "lexer.lpp" +{ return s4::parser::make_ASSIGN_BW_OR(ctx->loc); } YY_BREAK case 89: YY_RULE_SETUP -#line 144 "lexer.lpp" -{ return s4::parser::make_ASSIGN(ctx->loc); } +#line 146 "lexer.lpp" +{ return s4::parser::make_ASSIGN_BW_AND(ctx->loc); } YY_BREAK case 90: YY_RULE_SETUP -#line 145 "lexer.lpp" -{ return s4::parser::make_ADD(ctx->loc); } +#line 147 "lexer.lpp" +{ return s4::parser::make_ASSIGN_BW_EXOR(ctx->loc); } YY_BREAK case 91: YY_RULE_SETUP -#line 146 "lexer.lpp" -{ return s4::parser::make_SUB(ctx->loc); } +#line 148 "lexer.lpp" +{ return s4::parser::make_ASSIGN(ctx->loc); } YY_BREAK case 92: YY_RULE_SETUP -#line 147 "lexer.lpp" -{ return s4::parser::make_MUL(ctx->loc); } +#line 149 "lexer.lpp" +{ return s4::parser::make_ADD(ctx->loc); } YY_BREAK case 93: YY_RULE_SETUP -#line 148 "lexer.lpp" -{ return s4::parser::make_DIV(ctx->loc); } +#line 150 "lexer.lpp" +{ return s4::parser::make_SUB(ctx->loc); } YY_BREAK case 94: YY_RULE_SETUP -#line 149 "lexer.lpp" -{ return s4::parser::make_MOD(ctx->loc); } +#line 151 "lexer.lpp" +{ return s4::parser::make_MUL(ctx->loc); } YY_BREAK case 95: YY_RULE_SETUP -#line 150 "lexer.lpp" -{ return s4::parser::make_NOT(ctx->loc); } +#line 152 "lexer.lpp" +{ return s4::parser::make_DIV(ctx->loc); } YY_BREAK case 96: YY_RULE_SETUP -#line 151 "lexer.lpp" -{ return s4::parser::make_COMPLEMENT(ctx->loc); } +#line 153 "lexer.lpp" +{ return s4::parser::make_MOD(ctx->loc); } YY_BREAK case 97: YY_RULE_SETUP -#line 152 "lexer.lpp" -{ return s4::parser::make_BITWISE_OR(ctx->loc); } +#line 154 "lexer.lpp" +{ return s4::parser::make_NOT(ctx->loc); } YY_BREAK case 98: YY_RULE_SETUP -#line 153 "lexer.lpp" -{ return s4::parser::make_BITWISE_AND(ctx->loc); } +#line 155 "lexer.lpp" +{ return s4::parser::make_COMPLEMENT(ctx->loc); } YY_BREAK case 99: YY_RULE_SETUP -#line 154 "lexer.lpp" -{ return s4::parser::make_BITWISE_EXOR(ctx->loc); } +#line 156 "lexer.lpp" +{ return s4::parser::make_BITWISE_OR(ctx->loc); } YY_BREAK case 100: YY_RULE_SETUP -#line 155 "lexer.lpp" -{ return s4::parser::make_PATH(xsk::utils::string::fordslash(yytext), ctx->loc); } +#line 157 "lexer.lpp" +{ return s4::parser::make_BITWISE_AND(ctx->loc); } YY_BREAK case 101: YY_RULE_SETUP -#line 156 "lexer.lpp" -{ return s4::parser::make_IDENTIFIER((std::string(yytext, 3) == "_ID") ? std::string(yytext) : xsk::utils::string::to_lower(yytext), ctx->loc); } +#line 158 "lexer.lpp" +{ return s4::parser::make_BITWISE_EXOR(ctx->loc); } YY_BREAK case 102: -/* rule 102 can match eol */ -YY_RULE_SETUP -#line 157 "lexer.lpp" -{ return s4::parser::make_ISTRING(std::string(yytext).substr(1), ctx->loc); } - YY_BREAK -case 103: -/* rule 103 can match eol */ -YY_RULE_SETUP -#line 158 "lexer.lpp" -{ return s4::parser::make_STRING(std::string(yytext), ctx->loc); } - YY_BREAK -case 104: YY_RULE_SETUP #line 159 "lexer.lpp" -{ return s4::parser::make_COLOR(std::string(yytext).substr(1), ctx->loc); } +{ return s4::parser::make_PATH(xsk::utils::string::fordslash(yytext), ctx->loc); } YY_BREAK -case 105: +case 103: YY_RULE_SETUP #line 160 "lexer.lpp" -{ return s4::parser::make_FLOAT(std::string(yytext), ctx->loc); } +{ return s4::parser::make_IDENTIFIER((std::string(yytext, 3) == "_ID") ? std::string(yytext) : xsk::utils::string::to_lower(yytext), ctx->loc); } + YY_BREAK +case 104: +/* rule 104 can match eol */ +YY_RULE_SETUP +#line 161 "lexer.lpp" +{ return s4::parser::make_ISTRING(std::string(yytext).substr(1), ctx->loc); } + YY_BREAK +case 105: +/* rule 105 can match eol */ +YY_RULE_SETUP +#line 162 "lexer.lpp" +{ return s4::parser::make_STRING(std::string(yytext), ctx->loc); } YY_BREAK case 106: YY_RULE_SETUP -#line 161 "lexer.lpp" -{ return s4::parser::make_INT_OCT(xsk::utils::string::oct_to_dec(yytext), ctx->loc); } +#line 163 "lexer.lpp" +{ return s4::parser::make_COLOR(std::string(yytext).substr(1), ctx->loc); } YY_BREAK case 107: YY_RULE_SETUP -#line 162 "lexer.lpp" -{ return s4::parser::make_INT_BIN(xsk::utils::string::bin_to_dec(yytext), ctx->loc); } +#line 164 "lexer.lpp" +{ return s4::parser::make_FLOAT(std::string(yytext), ctx->loc); } YY_BREAK case 108: YY_RULE_SETUP -#line 163 "lexer.lpp" -{ return s4::parser::make_INT_HEX(xsk::utils::string::hex_to_dec(yytext), ctx->loc); } +#line 165 "lexer.lpp" +{ return s4::parser::make_INT_OCT(xsk::utils::string::oct_to_dec(yytext), ctx->loc); } YY_BREAK case 109: YY_RULE_SETUP -#line 164 "lexer.lpp" -{ return s4::parser::make_INT_DEC(std::string(yytext), ctx->loc); } - YY_BREAK -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(COMMENT_BLOCK_STATE): -case YY_STATE_EOF(DEVBLOCK_ON_STATE): -case YY_STATE_EOF(DEVBLOCK_OFF_STATE): -#line 165 "lexer.lpp" -{ if(ctx->header_top > 0) s4_pop_header(ctx); else return s4::parser::make_S4EOF(ctx->loc); } +#line 166 "lexer.lpp" +{ return s4::parser::make_INT_BIN(xsk::utils::string::bin_to_dec(yytext), ctx->loc); } YY_BREAK case 110: -/* rule 110 can match eol */ YY_RULE_SETUP -#line 166 "lexer.lpp" -{ throw s4::parser::syntax_error(ctx->loc, "bad token: \'" + std::string(yytext) + "\'"); } +#line 167 "lexer.lpp" +{ return s4::parser::make_INT_HEX(xsk::utils::string::hex_to_dec(yytext), ctx->loc); } YY_BREAK case 111: YY_RULE_SETUP #line 168 "lexer.lpp" +{ return s4::parser::make_INT_DEC(std::string(yytext), ctx->loc); } + YY_BREAK +case YY_STATE_EOF(INITIAL): +#line 169 "lexer.lpp" +{ if(ctx->header_top > 0) s4_pop_header(ctx); else return s4::parser::make_S4EOF(ctx->loc); } + YY_BREAK +case 112: +/* rule 112 can match eol */ +YY_RULE_SETUP +#line 170 "lexer.lpp" +{ throw s4::parser::syntax_error(ctx->loc, "bad token: \'" + std::string(yytext) + "\'"); } + YY_BREAK +case 113: +YY_RULE_SETUP +#line 172 "lexer.lpp" ECHO; YY_BREAK -#line 1841 "lexer.cpp" +#line 1862 "lexer.cpp" case YY_END_OF_BUFFER: { @@ -2136,7 +2157,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 >= 343 ) + if ( yy_current_state >= 346 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2165,11 +2186,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 >= 343 ) + if ( yy_current_state >= 346 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 342); + yy_is_jam = (yy_current_state == 345); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -2968,7 +2989,7 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 168 "lexer.lpp" +#line 172 "lexer.lpp" void s4_push_header(xsk::gsc::context* ctx, const std::string& file) diff --git a/src/s4/xsk/lexer.hpp b/src/s4/xsk/lexer.hpp index 78827a01..55d3c816 100644 --- a/src/s4/xsk/lexer.hpp +++ b/src/s4/xsk/lexer.hpp @@ -439,9 +439,9 @@ void yyfree ( void * , yyscan_t yyscanner ); #ifdef YY_HEADER_EXPORT_START_CONDITIONS #define INITIAL 0 -#define COMMENT_BLOCK_STATE 1 -#define DEVBLOCK_ON_STATE 2 -#define DEVBLOCK_OFF_STATE 3 +#define COMMENT_STATE 1 +#define DEV_OFF_STATE 2 +#define DEV_ON_STATE 3 #endif @@ -703,7 +703,7 @@ extern int yylex (yyscan_t yyscanner); #undef yyTABLES_NAME #endif -#line 168 "lexer.lpp" +#line 172 "lexer.lpp" #line 709 "lexer.hpp" diff --git a/src/s4/xsk/parser.cpp b/src/s4/xsk/parser.cpp index a0c6e8c0..87c6c2e7 100644 --- a/src/s4/xsk/parser.cpp +++ b/src/s4/xsk/parser.cpp @@ -450,6 +450,7 @@ namespace xsk { namespace gsc { namespace s4 { value.YY_MOVE_OR_COPY< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.YY_MOVE_OR_COPY< ast::stmt_list::ptr > (YY_MOVE (that.value)); @@ -761,6 +762,7 @@ namespace xsk { namespace gsc { namespace s4 { value.move< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (YY_MOVE (that.value)); @@ -1072,6 +1074,7 @@ namespace xsk { namespace gsc { namespace s4 { value.copy< ast::stmt_ifelse::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.copy< ast::stmt_list::ptr > (that.value); @@ -1382,6 +1385,7 @@ namespace xsk { namespace gsc { namespace s4 { value.move< ast::stmt_ifelse::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (that.value); @@ -1947,6 +1951,7 @@ namespace xsk { namespace gsc { namespace s4 { yylhs.value.emplace< ast::stmt_ifelse::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list yylhs.value.emplace< ast::stmt_list::ptr > (); @@ -2030,1315 +2035,1345 @@ namespace xsk { namespace gsc { namespace s4 { switch (yyn) { case 2: // root: program -#line 255 "parser.ypp" +#line 258 "parser.ypp" { ast = std::move(yystack_[0].value.as < ast::program::ptr > ()); } -#line 2036 "parser.cpp" +#line 2041 "parser.cpp" break; case 3: // root: %empty -#line 256 "parser.ypp" +#line 259 "parser.ypp" { ast = std::make_unique(yylhs.location); } -#line 2042 "parser.cpp" +#line 2047 "parser.cpp" break; case 4: // program: program inline -#line 261 "parser.ypp" +#line 264 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); } -#line 2048 "parser.cpp" +#line 2053 "parser.cpp" break; case 5: // program: program include -#line 263 "parser.ypp" +#line 266 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 2054 "parser.cpp" +#line 2059 "parser.cpp" break; case 6: // program: program declaration -#line 265 "parser.ypp" +#line 268 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2060 "parser.cpp" +#line 2065 "parser.cpp" break; case 7: // program: inline -#line 267 "parser.ypp" +#line 270 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); } -#line 2066 "parser.cpp" +#line 2071 "parser.cpp" break; case 8: // program: include -#line 269 "parser.ypp" +#line 272 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 2072 "parser.cpp" +#line 2077 "parser.cpp" break; case 9: // program: declaration -#line 271 "parser.ypp" +#line 274 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2078 "parser.cpp" +#line 2083 "parser.cpp" break; case 10: // inline: "#inline" expr_path ";" -#line 275 "parser.ypp" +#line 278 "parser.ypp" { s4_push_header(ctx, yystack_[1].value.as < ast::expr_path::ptr > ()->value); } -#line 2084 "parser.cpp" +#line 2089 "parser.cpp" break; case 11: // include: "#include" expr_path ";" -#line 280 "parser.ypp" +#line 283 "parser.ypp" { yylhs.value.as < ast::include::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_path::ptr > ())); } -#line 2090 "parser.cpp" +#line 2095 "parser.cpp" break; - case 12: // declaration: decl_usingtree -#line 284 "parser.ypp" + case 12: // declaration: "/#" +#line 287 "parser.ypp" + { yylhs.value.as < ast::decl > ().as_dev_begin = std::make_unique(yylhs.location); } +#line 2101 "parser.cpp" + break; + + case 13: // declaration: "#/" +#line 288 "parser.ypp" + { yylhs.value.as < ast::decl > ().as_dev_end = std::make_unique(yylhs.location); } +#line 2107 "parser.cpp" + break; + + case 14: // declaration: decl_usingtree +#line 289 "parser.ypp" { yylhs.value.as < ast::decl > ().as_usingtree = std::move(yystack_[0].value.as < ast::decl_usingtree::ptr > ()); } -#line 2096 "parser.cpp" +#line 2113 "parser.cpp" break; - case 13: // declaration: decl_constant -#line 285 "parser.ypp" + case 15: // declaration: decl_constant +#line 290 "parser.ypp" { yylhs.value.as < ast::decl > ().as_constant = std::move(yystack_[0].value.as < ast::decl_constant::ptr > ()); } -#line 2102 "parser.cpp" +#line 2119 "parser.cpp" break; - case 14: // declaration: decl_thread -#line 286 "parser.ypp" - { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } -#line 2108 "parser.cpp" - break; - - case 15: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" + case 16: // declaration: decl_thread #line 291 "parser.ypp" - { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_usingtree::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_string::ptr > ())); } -#line 2114 "parser.cpp" + { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } +#line 2125 "parser.cpp" break; - case 16: // decl_constant: expr_identifier "=" expr ";" + case 17: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" #line 296 "parser.ypp" - { yylhs.value.as < ast::decl_constant::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2120 "parser.cpp" + { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_usingtree::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_string::ptr > ())); } +#line 2131 "parser.cpp" break; - case 17: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block + case 18: // decl_constant: expr_identifier "=" expr ";" #line 301 "parser.ypp" - { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_thread::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2126 "parser.cpp" + { yylhs.value.as < ast::decl_constant::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } +#line 2137 "parser.cpp" break; - case 18: // stmt: stmt_block -#line 305 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } -#line 2132 "parser.cpp" - break; - - case 19: // stmt: stmt_call + case 19: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block #line 306 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } -#line 2138 "parser.cpp" + { ctx->restrict_header(yylhs.location); yylhs.value.as < ast::decl_thread::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } +#line 2143 "parser.cpp" break; - case 20: // stmt: stmt_assign -#line 307 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } -#line 2144 "parser.cpp" - break; - - case 21: // stmt: stmt_endon -#line 308 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } -#line 2150 "parser.cpp" - break; - - case 22: // stmt: stmt_notify -#line 309 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } -#line 2156 "parser.cpp" - break; - - case 23: // stmt: stmt_wait + case 20: // stmt: stmt_dev #line 310 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } -#line 2162 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } +#line 2149 "parser.cpp" break; - case 24: // stmt: stmt_waittill + case 21: // stmt: stmt_block #line 311 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } -#line 2168 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } +#line 2155 "parser.cpp" break; - case 25: // stmt: stmt_waittillmatch + case 22: // stmt: stmt_call #line 312 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } -#line 2174 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } +#line 2161 "parser.cpp" break; - case 26: // stmt: stmt_waittillframeend + case 23: // stmt: stmt_assign #line 313 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } -#line 2180 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } +#line 2167 "parser.cpp" break; - case 27: // stmt: stmt_waitframe + case 24: // stmt: stmt_endon #line 314 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waitframe = std::move(yystack_[0].value.as < ast::stmt_waitframe::ptr > ()); } -#line 2186 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } +#line 2173 "parser.cpp" break; - case 28: // stmt: stmt_if + case 25: // stmt: stmt_notify #line 315 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } -#line 2192 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } +#line 2179 "parser.cpp" break; - case 29: // stmt: stmt_ifelse + case 26: // stmt: stmt_wait #line 316 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } -#line 2198 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } +#line 2185 "parser.cpp" break; - case 30: // stmt: stmt_while + case 27: // stmt: stmt_waittill #line 317 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } -#line 2204 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } +#line 2191 "parser.cpp" break; - case 31: // stmt: stmt_dowhile + case 28: // stmt: stmt_waittillmatch #line 318 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } -#line 2210 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } +#line 2197 "parser.cpp" break; - case 32: // stmt: stmt_for + case 29: // stmt: stmt_waittillframeend #line 319 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } -#line 2216 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } +#line 2203 "parser.cpp" break; - case 33: // stmt: stmt_foreach + case 30: // stmt: stmt_waitframe #line 320 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } -#line 2222 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waitframe = std::move(yystack_[0].value.as < ast::stmt_waitframe::ptr > ()); } +#line 2209 "parser.cpp" break; - case 34: // stmt: stmt_switch + case 31: // stmt: stmt_if #line 321 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } -#line 2228 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } +#line 2215 "parser.cpp" break; - case 35: // stmt: stmt_case + case 32: // stmt: stmt_ifelse #line 322 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } -#line 2234 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } +#line 2221 "parser.cpp" break; - case 36: // stmt: stmt_default + case 33: // stmt: stmt_while #line 323 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } -#line 2240 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } +#line 2227 "parser.cpp" break; - case 37: // stmt: stmt_break + case 34: // stmt: stmt_dowhile #line 324 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } -#line 2246 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } +#line 2233 "parser.cpp" break; - case 38: // stmt: stmt_continue + case 35: // stmt: stmt_for #line 325 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } -#line 2252 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } +#line 2239 "parser.cpp" break; - case 39: // stmt: stmt_return + case 36: // stmt: stmt_foreach #line 326 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } -#line 2258 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } +#line 2245 "parser.cpp" break; - case 40: // stmt: stmt_breakpoint + case 37: // stmt: stmt_switch #line 327 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } -#line 2264 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } +#line 2251 "parser.cpp" break; - case 41: // stmt: stmt_prof_begin + case 38: // stmt: stmt_case #line 328 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } -#line 2270 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } +#line 2257 "parser.cpp" break; - case 42: // stmt: stmt_prof_end + case 39: // stmt: stmt_default #line 329 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } -#line 2276 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } +#line 2263 "parser.cpp" break; - case 43: // stmt_block: "{" stmt_list "}" + case 40: // stmt: stmt_break +#line 330 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } +#line 2269 "parser.cpp" + break; + + case 41: // stmt: stmt_continue +#line 331 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } +#line 2275 "parser.cpp" + break; + + case 42: // stmt: stmt_return +#line 332 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } +#line 2281 "parser.cpp" + break; + + case 43: // stmt: stmt_breakpoint #line 333 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } -#line 2282 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } +#line 2287 "parser.cpp" break; - case 44: // stmt_block: "{" "}" + case 44: // stmt: stmt_prof_begin #line 334 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } -#line 2288 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } +#line 2293 "parser.cpp" break; - case 45: // stmt_list: stmt_list stmt + case 45: // stmt: stmt_prof_end +#line 335 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } +#line 2299 "parser.cpp" + break; + + case 46: // stmt_dev: "/#" stmt_list "#/" #line 339 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2294 "parser.cpp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } +#line 2305 "parser.cpp" break; - case 46: // stmt_list: stmt -#line 341 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2300 "parser.cpp" + case 47: // stmt_dev: "/#" "#/" +#line 340 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } +#line 2311 "parser.cpp" break; - case 47: // stmt_expr: expr_assign -#line 346 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2306 "parser.cpp" + case 48: // stmt_block: "{" stmt_list "}" +#line 344 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } +#line 2317 "parser.cpp" break; - case 48: // stmt_expr: expr_increment -#line 348 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2312 "parser.cpp" + case 49: // stmt_block: "{" "}" +#line 345 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } +#line 2323 "parser.cpp" break; - case 49: // stmt_expr: expr_decrement + case 50: // stmt_list: stmt_list stmt #line 350 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2318 "parser.cpp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2329 "parser.cpp" break; - case 50: // stmt_expr: %empty + case 51: // stmt_list: stmt #line 352 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2324 "parser.cpp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2335 "parser.cpp" break; - case 51: // stmt_call: expr_call ";" + case 52: // stmt_expr: expr_assign #line 357 "parser.ypp" - { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } -#line 2330 "parser.cpp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2341 "parser.cpp" break; - case 52: // stmt_call: expr_method ";" + case 53: // stmt_expr: expr_increment #line 359 "parser.ypp" - { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_method::ptr > ()))); } -#line 2336 "parser.cpp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2347 "parser.cpp" break; - case 53: // stmt_assign: expr_assign ";" -#line 364 "parser.ypp" - { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2342 "parser.cpp" + case 54: // stmt_expr: expr_decrement +#line 361 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2353 "parser.cpp" break; - case 54: // stmt_assign: expr_increment ";" -#line 366 "parser.ypp" - { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2348 "parser.cpp" + case 55: // stmt_expr: %empty +#line 363 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } +#line 2359 "parser.cpp" break; - case 55: // stmt_assign: expr_decrement ";" + case 56: // stmt_call: expr_call ";" #line 368 "parser.ypp" + { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } +#line 2365 "parser.cpp" + break; + + case 57: // stmt_call: expr_method ";" +#line 370 "parser.ypp" + { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_method::ptr > ()))); } +#line 2371 "parser.cpp" + break; + + case 58: // stmt_assign: expr_assign ";" +#line 375 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2354 "parser.cpp" +#line 2377 "parser.cpp" break; - case 56: // stmt_endon: expr_object "endon" "(" expr ")" ";" -#line 373 "parser.ypp" + case 59: // stmt_assign: expr_increment ";" +#line 377 "parser.ypp" + { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 2383 "parser.cpp" + break; + + case 60: // stmt_assign: expr_decrement ";" +#line 379 "parser.ypp" + { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 2389 "parser.cpp" + break; + + case 61: // stmt_endon: expr_object "endon" "(" expr ")" ";" +#line 384 "parser.ypp" { yylhs.value.as < ast::stmt_endon::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ())); } -#line 2360 "parser.cpp" +#line 2395 "parser.cpp" break; - case 57: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" -#line 378 "parser.ypp" + case 62: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" +#line 389 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2366 "parser.cpp" +#line 2401 "parser.cpp" break; - case 58: // stmt_notify: expr_object "notify" "(" expr ")" ";" -#line 380 "parser.ypp" + case 63: // stmt_notify: expr_object "notify" "(" expr ")" ";" +#line 391 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2372 "parser.cpp" +#line 2407 "parser.cpp" break; - case 59: // stmt_wait: "wait" expr ";" -#line 385 "parser.ypp" + case 64: // stmt_wait: "wait" expr ";" +#line 396 "parser.ypp" { yylhs.value.as < ast::stmt_wait::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2378 "parser.cpp" +#line 2413 "parser.cpp" break; - case 60: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" -#line 390 "parser.ypp" + case 65: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" +#line 401 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2384 "parser.cpp" +#line 2419 "parser.cpp" break; - case 61: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" -#line 392 "parser.ypp" + case 66: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" +#line 403 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2390 "parser.cpp" +#line 2425 "parser.cpp" break; - case 62: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" -#line 397 "parser.ypp" + case 67: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" +#line 408 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2396 "parser.cpp" +#line 2431 "parser.cpp" break; - case 63: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" -#line 399 "parser.ypp" + case 68: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" +#line 410 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2402 "parser.cpp" +#line 2437 "parser.cpp" break; - case 64: // stmt_waittillframeend: "waittillframeend" ";" -#line 404 "parser.ypp" + case 69: // stmt_waittillframeend: "waittillframeend" ";" +#line 415 "parser.ypp" { yylhs.value.as < ast::stmt_waittillframeend::ptr > () = std::make_unique(yylhs.location); } -#line 2408 "parser.cpp" +#line 2443 "parser.cpp" break; - case 65: // stmt_waitframe: "waitframe" ";" -#line 409 "parser.ypp" + case 70: // stmt_waitframe: "waitframe" ";" +#line 420 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } -#line 2414 "parser.cpp" +#line 2449 "parser.cpp" break; - case 66: // stmt_waitframe: "waitframe" "(" ")" ";" -#line 411 "parser.ypp" + case 71: // stmt_waitframe: "waitframe" "(" ")" ";" +#line 422 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } -#line 2420 "parser.cpp" +#line 2455 "parser.cpp" break; - case 67: // stmt_if: "if" "(" expr ")" stmt -#line 416 "parser.ypp" + case 72: // stmt_if: "if" "(" expr ")" stmt +#line 427 "parser.ypp" { yylhs.value.as < ast::stmt_if::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2426 "parser.cpp" +#line 2461 "parser.cpp" break; - case 68: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 421 "parser.ypp" + case 73: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 432 "parser.ypp" { yylhs.value.as < ast::stmt_ifelse::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::stmt > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2432 "parser.cpp" +#line 2467 "parser.cpp" break; - case 69: // stmt_while: "while" "(" expr ")" stmt -#line 426 "parser.ypp" + case 74: // stmt_while: "while" "(" expr ")" stmt +#line 437 "parser.ypp" { yylhs.value.as < ast::stmt_while::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2438 "parser.cpp" +#line 2473 "parser.cpp" break; - case 70: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" -#line 431 "parser.ypp" + case 75: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" +#line 442 "parser.ypp" { yylhs.value.as < ast::stmt_dowhile::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[5].value.as < ast::stmt > ())); } -#line 2444 "parser.cpp" +#line 2479 "parser.cpp" break; - case 71: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt -#line 436 "parser.ypp" + case 76: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt +#line 447 "parser.ypp" { yylhs.value.as < ast::stmt_for::ptr > () = std::make_unique(yylhs.location, ast::stmt(std::move(yystack_[6].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[4].value.as < ast::expr > ()), ast::stmt(std::move(yystack_[2].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2450 "parser.cpp" +#line 2485 "parser.cpp" break; - case 72: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt -#line 441 "parser.ypp" + case 77: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt +#line 452 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2456 "parser.cpp" +#line 2491 "parser.cpp" break; - case 73: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt -#line 443 "parser.ypp" + case 78: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt +#line 454 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[6].value.as < ast::expr_identifier::ptr > ())), ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2462 "parser.cpp" +#line 2497 "parser.cpp" break; - case 74: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 448 "parser.ypp" + case 79: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 459 "parser.ypp" { yylhs.value.as < ast::stmt_switch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2468 "parser.cpp" +#line 2503 "parser.cpp" break; - case 75: // stmt_case: "case" expr_integer ":" -#line 453 "parser.ypp" + case 80: // stmt_case: "case" expr_integer ":" +#line 464 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_integer::ptr > ())), std::make_unique(yylhs.location)); } -#line 2474 "parser.cpp" +#line 2509 "parser.cpp" break; - case 76: // stmt_case: "case" expr_string ":" -#line 455 "parser.ypp" + case 81: // stmt_case: "case" expr_string ":" +#line 466 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_string::ptr > ())), std::make_unique(yylhs.location)); } -#line 2480 "parser.cpp" +#line 2515 "parser.cpp" break; - case 77: // stmt_default: "default" ":" -#line 460 "parser.ypp" + case 82: // stmt_default: "default" ":" +#line 471 "parser.ypp" { yylhs.value.as < ast::stmt_default::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2486 "parser.cpp" +#line 2521 "parser.cpp" break; - case 78: // stmt_break: "break" ";" -#line 465 "parser.ypp" + case 83: // stmt_break: "break" ";" +#line 476 "parser.ypp" { yylhs.value.as < ast::stmt_break::ptr > () = std::make_unique(yylhs.location); } -#line 2492 "parser.cpp" +#line 2527 "parser.cpp" break; - case 79: // stmt_continue: "continue" ";" -#line 470 "parser.ypp" + case 84: // stmt_continue: "continue" ";" +#line 481 "parser.ypp" { yylhs.value.as < ast::stmt_continue::ptr > () = std::make_unique(yylhs.location); } -#line 2498 "parser.cpp" +#line 2533 "parser.cpp" break; - case 80: // stmt_return: "return" expr ";" -#line 475 "parser.ypp" + case 85: // stmt_return: "return" expr ";" +#line 486 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2504 "parser.cpp" +#line 2539 "parser.cpp" break; - case 81: // stmt_return: "return" ";" -#line 477 "parser.ypp" + case 86: // stmt_return: "return" ";" +#line 488 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2510 "parser.cpp" +#line 2545 "parser.cpp" break; - case 82: // stmt_breakpoint: "breakpoint" ";" -#line 482 "parser.ypp" + case 87: // stmt_breakpoint: "breakpoint" ";" +#line 493 "parser.ypp" { yylhs.value.as < ast::stmt_breakpoint::ptr > () = std::make_unique(yylhs.location); } -#line 2516 "parser.cpp" +#line 2551 "parser.cpp" break; - case 83: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 487 "parser.ypp" - { yylhs.value.as < ast::stmt_prof_begin::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2522 "parser.cpp" - break; - - case 84: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 492 "parser.ypp" - { yylhs.value.as < ast::stmt_prof_end::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2528 "parser.cpp" - break; - - case 85: // expr: expr_ternary -#line 496 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2534 "parser.cpp" - break; - - case 86: // expr: expr_binary -#line 497 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2540 "parser.cpp" - break; - - case 87: // expr: expr_primitive + case 88: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" #line 498 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2546 "parser.cpp" + { yylhs.value.as < ast::stmt_prof_begin::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } +#line 2557 "parser.cpp" break; - case 88: // expr_or_empty: expr -#line 502 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2552 "parser.cpp" - break; - - case 89: // expr_or_empty: %empty + case 89: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" #line 503 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } -#line 2558 "parser.cpp" + { yylhs.value.as < ast::stmt_prof_end::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } +#line 2563 "parser.cpp" break; - case 90: // expr_assign: expr_object "=" expr + case 90: // expr: expr_ternary +#line 507 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2569 "parser.cpp" + break; + + case 91: // expr: expr_binary #line 508 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2564 "parser.cpp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2575 "parser.cpp" break; - case 91: // expr_assign: expr_object "|=" expr -#line 510 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2570 "parser.cpp" + case 92: // expr: expr_primitive +#line 509 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2581 "parser.cpp" break; - case 92: // expr_assign: expr_object "&=" expr -#line 512 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2576 "parser.cpp" + case 93: // expr_or_empty: expr +#line 513 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2587 "parser.cpp" break; - case 93: // expr_assign: expr_object "^=" expr + case 94: // expr_or_empty: %empty #line 514 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } +#line 2593 "parser.cpp" + break; + + case 95: // expr_assign: expr_object "=" expr +#line 519 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2599 "parser.cpp" + break; + + case 96: // expr_assign: expr_object "|=" expr +#line 521 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2605 "parser.cpp" + break; + + case 97: // expr_assign: expr_object "&=" expr +#line 523 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2611 "parser.cpp" + break; + + case 98: // expr_assign: expr_object "^=" expr +#line 525 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2582 "parser.cpp" +#line 2617 "parser.cpp" break; - case 94: // expr_assign: expr_object "<<=" expr -#line 516 "parser.ypp" + case 99: // expr_assign: expr_object "<<=" expr +#line 527 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()),std::move( yystack_[0].value.as < ast::expr > ())); } -#line 2588 "parser.cpp" +#line 2623 "parser.cpp" break; - case 95: // expr_assign: expr_object ">>=" expr -#line 518 "parser.ypp" + case 100: // expr_assign: expr_object ">>=" expr +#line 529 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2594 "parser.cpp" +#line 2629 "parser.cpp" break; - case 96: // expr_assign: expr_object "+=" expr -#line 520 "parser.ypp" + case 101: // expr_assign: expr_object "+=" expr +#line 531 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2600 "parser.cpp" +#line 2635 "parser.cpp" break; - case 97: // expr_assign: expr_object "-=" expr -#line 522 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2606 "parser.cpp" - break; - - case 98: // expr_assign: expr_object "*=" expr -#line 524 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2612 "parser.cpp" - break; - - case 99: // expr_assign: expr_object "/=" expr -#line 526 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2618 "parser.cpp" - break; - - case 100: // expr_assign: expr_object "%=" expr -#line 528 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2624 "parser.cpp" - break; - - case 101: // expr_increment: "++" expr_object + case 102: // expr_assign: expr_object "-=" expr #line 533 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2630 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2641 "parser.cpp" break; - case 102: // expr_increment: expr_object "++" + case 103: // expr_assign: expr_object "*=" expr #line 535 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2647 "parser.cpp" + break; + + case 104: // expr_assign: expr_object "/=" expr +#line 537 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2653 "parser.cpp" + break; + + case 105: // expr_assign: expr_object "%=" expr +#line 539 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2659 "parser.cpp" + break; + + case 106: // expr_increment: "++" expr_object +#line 544 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } +#line 2665 "parser.cpp" + break; + + case 107: // expr_increment: expr_object "++" +#line 546 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2636 "parser.cpp" +#line 2671 "parser.cpp" break; - case 103: // expr_decrement: "--" expr_object -#line 540 "parser.ypp" + case 108: // expr_decrement: "--" expr_object +#line 551 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2642 "parser.cpp" +#line 2677 "parser.cpp" break; - case 104: // expr_decrement: expr_object "--" -#line 542 "parser.ypp" + case 109: // expr_decrement: expr_object "--" +#line 553 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2648 "parser.cpp" +#line 2683 "parser.cpp" break; - case 105: // expr_ternary: expr "?" expr ":" expr -#line 547 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2654 "parser.cpp" - break; - - case 106: // expr_binary: expr "||" expr -#line 552 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2660 "parser.cpp" - break; - - case 107: // expr_binary: expr "&&" expr -#line 554 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2666 "parser.cpp" - break; - - case 108: // expr_binary: expr "==" expr -#line 556 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2672 "parser.cpp" - break; - - case 109: // expr_binary: expr "!=" expr + case 110: // expr_ternary: expr "?" expr ":" expr #line 558 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2689 "parser.cpp" + break; + + case 111: // expr_binary: expr "||" expr +#line 563 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2695 "parser.cpp" + break; + + case 112: // expr_binary: expr "&&" expr +#line 565 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2701 "parser.cpp" + break; + + case 113: // expr_binary: expr "==" expr +#line 567 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2707 "parser.cpp" + break; + + case 114: // expr_binary: expr "!=" expr +#line 569 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2678 "parser.cpp" +#line 2713 "parser.cpp" break; - case 110: // expr_binary: expr "<=" expr -#line 560 "parser.ypp" + case 115: // expr_binary: expr "<=" expr +#line 571 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2684 "parser.cpp" +#line 2719 "parser.cpp" break; - case 111: // expr_binary: expr ">=" expr -#line 562 "parser.ypp" + case 116: // expr_binary: expr ">=" expr +#line 573 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2690 "parser.cpp" +#line 2725 "parser.cpp" break; - case 112: // expr_binary: expr "<" expr -#line 564 "parser.ypp" + case 117: // expr_binary: expr "<" expr +#line 575 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2696 "parser.cpp" +#line 2731 "parser.cpp" break; - case 113: // expr_binary: expr ">" expr -#line 566 "parser.ypp" + case 118: // expr_binary: expr ">" expr +#line 577 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2702 "parser.cpp" +#line 2737 "parser.cpp" break; - case 114: // expr_binary: expr "|" expr -#line 568 "parser.ypp" + case 119: // expr_binary: expr "|" expr +#line 579 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2708 "parser.cpp" +#line 2743 "parser.cpp" break; - case 115: // expr_binary: expr "&" expr -#line 570 "parser.ypp" + case 120: // expr_binary: expr "&" expr +#line 581 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2714 "parser.cpp" +#line 2749 "parser.cpp" break; - case 116: // expr_binary: expr "^" expr -#line 572 "parser.ypp" + case 121: // expr_binary: expr "^" expr +#line 583 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2720 "parser.cpp" +#line 2755 "parser.cpp" break; - case 117: // expr_binary: expr "<<" expr -#line 574 "parser.ypp" + case 122: // expr_binary: expr "<<" expr +#line 585 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2726 "parser.cpp" +#line 2761 "parser.cpp" break; - case 118: // expr_binary: expr ">>" expr -#line 576 "parser.ypp" + case 123: // expr_binary: expr ">>" expr +#line 587 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2732 "parser.cpp" +#line 2767 "parser.cpp" break; - case 119: // expr_binary: expr "+" expr -#line 578 "parser.ypp" + case 124: // expr_binary: expr "+" expr +#line 589 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2738 "parser.cpp" +#line 2773 "parser.cpp" break; - case 120: // expr_binary: expr "-" expr -#line 580 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2744 "parser.cpp" - break; - - case 121: // expr_binary: expr "*" expr -#line 582 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2750 "parser.cpp" - break; - - case 122: // expr_binary: expr "/" expr -#line 584 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2756 "parser.cpp" - break; - - case 123: // expr_binary: expr "%" expr -#line 586 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2762 "parser.cpp" - break; - - case 124: // expr_primitive: expr_complement -#line 590 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } -#line 2768 "parser.cpp" - break; - - case 125: // expr_primitive: expr_not + case 125: // expr_binary: expr "-" expr #line 591 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } -#line 2774 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2779 "parser.cpp" break; - case 126: // expr_primitive: expr_call -#line 592 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 2780 "parser.cpp" - break; - - case 127: // expr_primitive: expr_method + case 126: // expr_binary: expr "*" expr #line 593 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 2786 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2785 "parser.cpp" break; - case 128: // expr_primitive: expr_add_array -#line 594 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } -#line 2792 "parser.cpp" - break; - - case 129: // expr_primitive: expr_isdefined + case 127: // expr_binary: expr "/" expr #line 595 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_isdefined::ptr > ()); } -#line 2798 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2791 "parser.cpp" break; - case 130: // expr_primitive: expr_istrue -#line 596 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istrue::ptr > ()); } -#line 2804 "parser.cpp" - break; - - case 131: // expr_primitive: expr_reference + case 128: // expr_binary: expr "%" expr #line 597 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } -#line 2810 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2797 "parser.cpp" break; - case 132: // expr_primitive: expr_array -#line 598 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 2816 "parser.cpp" - break; - - case 133: // expr_primitive: expr_field -#line 599 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 2822 "parser.cpp" - break; - - case 134: // expr_primitive: expr_size -#line 600 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } -#line 2828 "parser.cpp" - break; - - case 135: // expr_primitive: expr_paren + case 129: // expr_primitive: expr_complement #line 601 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } -#line 2834 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } +#line 2803 "parser.cpp" break; - case 136: // expr_primitive: expr_thisthread + case 130: // expr_primitive: expr_not #line 602 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } -#line 2840 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } +#line 2809 "parser.cpp" break; - case 137: // expr_primitive: expr_empty_array + case 131: // expr_primitive: expr_call #line 603 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } -#line 2846 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 2815 "parser.cpp" break; - case 138: // expr_primitive: expr_undefined + case 132: // expr_primitive: expr_method #line 604 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } -#line 2852 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 2821 "parser.cpp" break; - case 139: // expr_primitive: expr_game + case 133: // expr_primitive: expr_add_array #line 605 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 2858 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } +#line 2827 "parser.cpp" break; - case 140: // expr_primitive: expr_self + case 134: // expr_primitive: expr_isdefined #line 606 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 2864 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_isdefined::ptr > ()); } +#line 2833 "parser.cpp" break; - case 141: // expr_primitive: expr_anim + case 135: // expr_primitive: expr_istrue #line 607 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 2870 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istrue::ptr > ()); } +#line 2839 "parser.cpp" break; - case 142: // expr_primitive: expr_level + case 136: // expr_primitive: expr_reference #line 608 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 2876 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } +#line 2845 "parser.cpp" break; - case 143: // expr_primitive: expr_animation + case 137: // expr_primitive: expr_array #line 609 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } -#line 2882 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 2851 "parser.cpp" break; - case 144: // expr_primitive: expr_animtree + case 138: // expr_primitive: expr_field #line 610 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } -#line 2888 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 2857 "parser.cpp" break; - case 145: // expr_primitive: expr_identifier + case 139: // expr_primitive: expr_size #line 611 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 2894 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } +#line 2863 "parser.cpp" break; - case 146: // expr_primitive: expr_istring + case 140: // expr_primitive: expr_paren #line 612 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } -#line 2900 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } +#line 2869 "parser.cpp" break; - case 147: // expr_primitive: expr_string + case 141: // expr_primitive: expr_thisthread #line 613 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } -#line 2906 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } +#line 2875 "parser.cpp" break; - case 148: // expr_primitive: expr_color + case 142: // expr_primitive: expr_empty_array #line 614 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } -#line 2912 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } +#line 2881 "parser.cpp" break; - case 149: // expr_primitive: expr_vector + case 143: // expr_primitive: expr_undefined #line 615 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } -#line 2918 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } +#line 2887 "parser.cpp" break; - case 150: // expr_primitive: expr_float + case 144: // expr_primitive: expr_game #line 616 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } -#line 2924 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 2893 "parser.cpp" break; - case 151: // expr_primitive: expr_integer + case 145: // expr_primitive: expr_self #line 617 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } -#line 2930 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 2899 "parser.cpp" break; - case 152: // expr_primitive: expr_false + case 146: // expr_primitive: expr_anim #line 618 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } -#line 2936 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 2905 "parser.cpp" break; - case 153: // expr_primitive: expr_true + case 147: // expr_primitive: expr_level #line 619 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } -#line 2942 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 2911 "parser.cpp" break; - case 154: // expr_complement: "~" expr + case 148: // expr_primitive: expr_animation +#line 620 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } +#line 2917 "parser.cpp" + break; + + case 149: // expr_primitive: expr_animtree +#line 621 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } +#line 2923 "parser.cpp" + break; + + case 150: // expr_primitive: expr_identifier +#line 622 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 2929 "parser.cpp" + break; + + case 151: // expr_primitive: expr_istring +#line 623 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } +#line 2935 "parser.cpp" + break; + + case 152: // expr_primitive: expr_string #line 624 "parser.ypp" - { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2948 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } +#line 2941 "parser.cpp" break; - case 155: // expr_not: "!" expr + case 153: // expr_primitive: expr_color +#line 625 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } +#line 2947 "parser.cpp" + break; + + case 154: // expr_primitive: expr_vector +#line 626 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } +#line 2953 "parser.cpp" + break; + + case 155: // expr_primitive: expr_float +#line 627 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } +#line 2959 "parser.cpp" + break; + + case 156: // expr_primitive: expr_integer +#line 628 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } +#line 2965 "parser.cpp" + break; + + case 157: // expr_primitive: expr_false #line 629 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } +#line 2971 "parser.cpp" + break; + + case 158: // expr_primitive: expr_true +#line 630 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } +#line 2977 "parser.cpp" + break; + + case 159: // expr_complement: "~" expr +#line 635 "parser.ypp" + { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2983 "parser.cpp" + break; + + case 160: // expr_not: "!" expr +#line 640 "parser.ypp" { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2954 "parser.cpp" +#line 2989 "parser.cpp" break; - case 156: // expr_call: expr_function -#line 633 "parser.ypp" + case 161: // expr_call: expr_function +#line 644 "parser.ypp" { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2960 "parser.cpp" +#line 2995 "parser.cpp" break; - case 157: // expr_call: expr_pointer -#line 634 "parser.ypp" - { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2966 "parser.cpp" - break; - - case 158: // expr_method: expr_object expr_function -#line 637 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2972 "parser.cpp" - break; - - case 159: // expr_method: expr_object expr_pointer -#line 638 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2978 "parser.cpp" - break; - - case 160: // expr_function: expr_identifier "(" expr_arguments ")" -#line 643 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2984 "parser.cpp" - break; - - case 161: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" + case 162: // expr_call: expr_pointer #line 645 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2990 "parser.cpp" + { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } +#line 3001 "parser.cpp" break; - case 162: // expr_function: "thread" expr_identifier "(" expr_arguments ")" -#line 647 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2996 "parser.cpp" + case 163: // expr_method: expr_object expr_function +#line 648 "parser.ypp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 3007 "parser.cpp" break; - case 163: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" + case 164: // expr_method: expr_object expr_pointer #line 649 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 3002 "parser.cpp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 3013 "parser.cpp" break; - case 164: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" -#line 651 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 3008 "parser.cpp" + case 165: // expr_function: expr_identifier "(" expr_arguments ")" +#line 654 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 3019 "parser.cpp" break; - case 165: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 653 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 3014 "parser.cpp" + case 166: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" +#line 656 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 3025 "parser.cpp" break; - case 166: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" + case 167: // expr_function: "thread" expr_identifier "(" expr_arguments ")" #line 658 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 3020 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 3031 "parser.cpp" break; - case 167: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 168: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" #line 660 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 3026 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 3037 "parser.cpp" break; - case 168: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 169: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" #line 662 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 3032 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 3043 "parser.cpp" break; - case 169: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 170: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" #line 664 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::builtin); } -#line 3038 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 3049 "parser.cpp" break; - case 170: // expr_add_array: "[" expr_arguments_no_empty "]" + case 171: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" #line 669 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 3055 "parser.cpp" + break; + + case 172: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 671 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 3061 "parser.cpp" + break; + + case 173: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 673 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 3067 "parser.cpp" + break; + + case 174: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 675 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::builtin); } +#line 3073 "parser.cpp" + break; + + case 175: // expr_add_array: "[" expr_arguments_no_empty "]" +#line 680 "parser.ypp" { yylhs.value.as < ast::expr_add_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ())); } -#line 3044 "parser.cpp" +#line 3079 "parser.cpp" break; - case 171: // expr_parameters: expr_parameters "," expr_identifier -#line 674 "parser.ypp" - { yylhs.value.as < ast::expr_parameters::ptr > () = std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3050 "parser.cpp" - break; - - case 172: // expr_parameters: expr_identifier -#line 676 "parser.ypp" - { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3056 "parser.cpp" - break; - - case 173: // expr_parameters: %empty -#line 678 "parser.ypp" - { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } -#line 3062 "parser.cpp" - break; - - case 174: // expr_arguments: expr_arguments_no_empty -#line 683 "parser.ypp" - { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } -#line 3068 "parser.cpp" - break; - - case 175: // expr_arguments: %empty + case 176: // expr_parameters: expr_parameters "," expr_identifier #line 685 "parser.ypp" + { yylhs.value.as < ast::expr_parameters::ptr > () = std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } +#line 3085 "parser.cpp" + break; + + case 177: // expr_parameters: expr_identifier +#line 687 "parser.ypp" + { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } +#line 3091 "parser.cpp" + break; + + case 178: // expr_parameters: %empty +#line 689 "parser.ypp" + { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } +#line 3097 "parser.cpp" + break; + + case 179: // expr_arguments: expr_arguments_no_empty +#line 694 "parser.ypp" + { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } +#line 3103 "parser.cpp" + break; + + case 180: // expr_arguments: %empty +#line 696 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); } -#line 3074 "parser.cpp" +#line 3109 "parser.cpp" break; - case 176: // expr_arguments_no_empty: expr_arguments "," expr -#line 690 "parser.ypp" + case 181: // expr_arguments_no_empty: expr_arguments "," expr +#line 701 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ()); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 3080 "parser.cpp" +#line 3115 "parser.cpp" break; - case 177: // expr_arguments_no_empty: expr -#line 692 "parser.ypp" + case 182: // expr_arguments_no_empty: expr +#line 703 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 3086 "parser.cpp" +#line 3121 "parser.cpp" break; - case 178: // expr_isdefined: "isdefined" "(" expr ")" -#line 697 "parser.ypp" + case 183: // expr_isdefined: "isdefined" "(" expr ")" +#line 708 "parser.ypp" { yylhs.value.as < ast::expr_isdefined::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3092 "parser.cpp" +#line 3127 "parser.cpp" break; - case 179: // expr_istrue: "istrue" "(" expr ")" -#line 702 "parser.ypp" + case 184: // expr_istrue: "istrue" "(" expr ")" +#line 713 "parser.ypp" { yylhs.value.as < ast::expr_istrue::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3098 "parser.cpp" +#line 3133 "parser.cpp" break; - case 180: // expr_reference: "::" expr_identifier -#line 707 "parser.ypp" + case 185: // expr_reference: "::" expr_identifier +#line 718 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3104 "parser.cpp" +#line 3139 "parser.cpp" break; - case 181: // expr_reference: expr_path "::" expr_identifier -#line 709 "parser.ypp" + case 186: // expr_reference: expr_path "::" expr_identifier +#line 720 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_path::ptr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3110 "parser.cpp" +#line 3145 "parser.cpp" break; - case 182: // expr_array: expr_object "[" expr "]" -#line 714 "parser.ypp" + case 187: // expr_array: expr_object "[" expr "]" +#line 725 "parser.ypp" { yylhs.value.as < ast::expr_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3116 "parser.cpp" +#line 3151 "parser.cpp" break; - case 183: // expr_field: expr_object "." expr_identifier -#line 719 "parser.ypp" + case 188: // expr_field: expr_object "." expr_identifier +#line 730 "parser.ypp" { yylhs.value.as < ast::expr_field::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3122 "parser.cpp" +#line 3157 "parser.cpp" break; - case 184: // expr_size: expr_object ".size" -#line 724 "parser.ypp" - { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3128 "parser.cpp" - break; - - case 185: // expr_paren: "(" expr ")" -#line 729 "parser.ypp" - { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3134 "parser.cpp" - break; - - case 186: // expr_object: expr_call -#line 733 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 3140 "parser.cpp" - break; - - case 187: // expr_object: expr_method -#line 734 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 3146 "parser.cpp" - break; - - case 188: // expr_object: expr_array + case 189: // expr_size: expr_object ".size" #line 735 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 3152 "parser.cpp" + { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3163 "parser.cpp" break; - case 189: // expr_object: expr_field -#line 736 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 3158 "parser.cpp" - break; - - case 190: // expr_object: expr_game -#line 737 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 3164 "parser.cpp" - break; - - case 191: // expr_object: expr_self -#line 738 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 3170 "parser.cpp" - break; - - case 192: // expr_object: expr_anim -#line 739 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 3176 "parser.cpp" - break; - - case 193: // expr_object: expr_level + case 190: // expr_paren: "(" expr ")" #line 740 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 3182 "parser.cpp" + { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3169 "parser.cpp" break; - case 194: // expr_object: expr_identifier -#line 741 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 3188 "parser.cpp" + case 191: // expr_object: expr_call +#line 744 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 3175 "parser.cpp" break; - case 195: // expr_thisthread: "thisthread" + case 192: // expr_object: expr_method +#line 745 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 3181 "parser.cpp" + break; + + case 193: // expr_object: expr_array #line 746 "parser.ypp" - { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } -#line 3194 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 3187 "parser.cpp" break; - case 196: // expr_empty_array: "[" "]" + case 194: // expr_object: expr_field +#line 747 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 3193 "parser.cpp" + break; + + case 195: // expr_object: expr_game +#line 748 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 3199 "parser.cpp" + break; + + case 196: // expr_object: expr_self +#line 749 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 3205 "parser.cpp" + break; + + case 197: // expr_object: expr_anim +#line 750 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 3211 "parser.cpp" + break; + + case 198: // expr_object: expr_level #line 751 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 3217 "parser.cpp" + break; + + case 199: // expr_object: expr_identifier +#line 752 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 3223 "parser.cpp" + break; + + case 200: // expr_thisthread: "thisthread" +#line 757 "parser.ypp" + { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } +#line 3229 "parser.cpp" + break; + + case 201: // expr_empty_array: "[" "]" +#line 762 "parser.ypp" { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } -#line 3200 "parser.cpp" +#line 3235 "parser.cpp" break; - case 197: // expr_undefined: "undefined" -#line 756 "parser.ypp" + case 202: // expr_undefined: "undefined" +#line 767 "parser.ypp" { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } -#line 3206 "parser.cpp" +#line 3241 "parser.cpp" break; - case 198: // expr_game: "game" -#line 761 "parser.ypp" + case 203: // expr_game: "game" +#line 772 "parser.ypp" { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } -#line 3212 "parser.cpp" +#line 3247 "parser.cpp" break; - case 199: // expr_self: "self" -#line 766 "parser.ypp" + case 204: // expr_self: "self" +#line 777 "parser.ypp" { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } -#line 3218 "parser.cpp" +#line 3253 "parser.cpp" break; - case 200: // expr_anim: "anim" -#line 771 "parser.ypp" + case 205: // expr_anim: "anim" +#line 782 "parser.ypp" { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } -#line 3224 "parser.cpp" +#line 3259 "parser.cpp" break; - case 201: // expr_level: "level" -#line 776 "parser.ypp" + case 206: // expr_level: "level" +#line 787 "parser.ypp" { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } -#line 3230 "parser.cpp" +#line 3265 "parser.cpp" break; - case 202: // expr_animation: "%" "identifier" -#line 781 "parser.ypp" + case 207: // expr_animation: "%" "identifier" +#line 792 "parser.ypp" { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3236 "parser.cpp" +#line 3271 "parser.cpp" break; - case 203: // expr_animtree: "#animtree" -#line 786 "parser.ypp" + case 208: // expr_animtree: "#animtree" +#line 797 "parser.ypp" { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } -#line 3242 "parser.cpp" +#line 3277 "parser.cpp" break; - case 204: // expr_identifier: "identifier" -#line 791 "parser.ypp" + case 209: // expr_identifier: "identifier" +#line 802 "parser.ypp" { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3248 "parser.cpp" +#line 3283 "parser.cpp" break; - case 205: // expr_path: "path" -#line 796 "parser.ypp" + case 210: // expr_path: "path" +#line 807 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3254 "parser.cpp" +#line 3289 "parser.cpp" break; - case 206: // expr_path: expr_identifier -#line 798 "parser.ypp" + case 211: // expr_path: expr_identifier +#line 809 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < ast::expr_identifier::ptr > ()->value); } -#line 3260 "parser.cpp" +#line 3295 "parser.cpp" break; - case 207: // expr_istring: "localized string" -#line 803 "parser.ypp" + case 212: // expr_istring: "localized string" +#line 814 "parser.ypp" { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3266 "parser.cpp" +#line 3301 "parser.cpp" break; - case 208: // expr_string: "string literal" -#line 808 "parser.ypp" + case 213: // expr_string: "string literal" +#line 819 "parser.ypp" { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3272 "parser.cpp" +#line 3307 "parser.cpp" break; - case 209: // expr_color: "color" -#line 813 "parser.ypp" + case 214: // expr_color: "color" +#line 824 "parser.ypp" { yylhs.value.as < ast::expr_color::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3278 "parser.cpp" +#line 3313 "parser.cpp" break; - case 210: // expr_vector: "(" expr "," expr "," expr ")" -#line 818 "parser.ypp" + case 215: // expr_vector: "(" expr "," expr "," expr ")" +#line 829 "parser.ypp" { yylhs.value.as < ast::expr_vector::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3284 "parser.cpp" +#line 3319 "parser.cpp" break; - case 211: // expr_float: "-" "float" -#line 823 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3290 "parser.cpp" - break; - - case 212: // expr_float: "float" -#line 825 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3296 "parser.cpp" - break; - - case 213: // expr_integer: "-" "int" -#line 830 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3302 "parser.cpp" - break; - - case 214: // expr_integer: "int" -#line 832 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3308 "parser.cpp" - break; - - case 215: // expr_integer: "octal int" + case 216: // expr_float: "-" "float" #line 834 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3314 "parser.cpp" + { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 3325 "parser.cpp" break; - case 216: // expr_integer: "binary int" + case 217: // expr_float: "float" #line 836 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3320 "parser.cpp" + { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3331 "parser.cpp" break; - case 217: // expr_integer: "hexadecimal int" -#line 838 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3326 "parser.cpp" + case 218: // expr_integer: "-" "int" +#line 841 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 3337 "parser.cpp" break; - case 218: // expr_false: "false" + case 219: // expr_integer: "int" #line 843 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3343 "parser.cpp" + break; + + case 220: // expr_integer: "octal int" +#line 845 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3349 "parser.cpp" + break; + + case 221: // expr_integer: "binary int" +#line 847 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3355 "parser.cpp" + break; + + case 222: // expr_integer: "hexadecimal int" +#line 849 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3361 "parser.cpp" + break; + + case 223: // expr_false: "false" +#line 854 "parser.ypp" { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } -#line 3332 "parser.cpp" +#line 3367 "parser.cpp" break; - case 219: // expr_true: "true" -#line 848 "parser.ypp" + case 224: // expr_true: "true" +#line 859 "parser.ypp" { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } -#line 3338 "parser.cpp" +#line 3373 "parser.cpp" break; -#line 3342 "parser.cpp" +#line 3377 "parser.cpp" default: break; @@ -3522,36 +3557,37 @@ namespace xsk { namespace gsc { namespace s4 { { static const char *const yy_sname[] = { - "end of file", "error", "invalid token", "#inline", "#include", - "#using_animtree", "#animtree", "endon", "notify", "wait", "waittill", - "waittillmatch", "waittillframeend", "waitframe", "if", "else", "do", - "while", "for", "foreach", "in", "switch", "case", "default", "break", - "continue", "return", "breakpoint", "prof_begin", "prof_end", "thread", - "childthread", "thisthread", "call", "true", "false", "undefined", - ".size", "game", "self", "anim", "level", "isdefined", "istrue", "(", - ")", "{", "}", "[", "]", ",", ".", "::", ":", ";", "?", "++", "--", "<<", - ">>", "||", "&&", "==", "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", - "-=", "*=", "/=", "%=", "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", - "+", "-", "*", "/", "%", "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", - "inline", "include", "declaration", "decl_usingtree", "decl_constant", - "decl_thread", "stmt", "stmt_block", "stmt_list", "stmt_expr", - "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", "stmt_wait", - "stmt_waittill", "stmt_waittillmatch", "stmt_waittillframeend", - "stmt_waitframe", "stmt_if", "stmt_ifelse", "stmt_while", "stmt_dowhile", - "stmt_for", "stmt_foreach", "stmt_switch", "stmt_case", "stmt_default", - "stmt_break", "stmt_continue", "stmt_return", "stmt_breakpoint", - "stmt_prof_begin", "stmt_prof_end", "expr", "expr_or_empty", - "expr_assign", "expr_increment", "expr_decrement", "expr_ternary", - "expr_binary", "expr_primitive", "expr_complement", "expr_not", - "expr_call", "expr_method", "expr_function", "expr_pointer", - "expr_add_array", "expr_parameters", "expr_arguments", - "expr_arguments_no_empty", "expr_isdefined", "expr_istrue", - "expr_reference", "expr_array", "expr_field", "expr_size", "expr_paren", - "expr_object", "expr_thisthread", "expr_empty_array", "expr_undefined", - "expr_game", "expr_self", "expr_anim", "expr_level", "expr_animation", + "end of file", "error", "invalid token", "/#", "#/", "#inline", + "#include", "#using_animtree", "#animtree", "endon", "notify", "wait", + "waittill", "waittillmatch", "waittillframeend", "waitframe", "if", + "else", "do", "while", "for", "foreach", "in", "switch", "case", + "default", "break", "continue", "return", "breakpoint", "prof_begin", + "prof_end", "thread", "childthread", "thisthread", "call", "true", + "false", "undefined", ".size", "game", "self", "anim", "level", + "isdefined", "istrue", "(", ")", "{", "}", "[", "]", ",", ".", "::", ":", + ";", "?", "++", "--", "<<", ">>", "||", "&&", "==", "!=", "<=", ">=", + "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", "|=", "&=", "^=", + ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", "%", "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", "inline", "include", "declaration", + "decl_usingtree", "decl_constant", "decl_thread", "stmt", "stmt_dev", + "stmt_block", "stmt_list", "stmt_expr", "stmt_call", "stmt_assign", + "stmt_endon", "stmt_notify", "stmt_wait", "stmt_waittill", + "stmt_waittillmatch", "stmt_waittillframeend", "stmt_waitframe", + "stmt_if", "stmt_ifelse", "stmt_while", "stmt_dowhile", "stmt_for", + "stmt_foreach", "stmt_switch", "stmt_case", "stmt_default", "stmt_break", + "stmt_continue", "stmt_return", "stmt_breakpoint", "stmt_prof_begin", + "stmt_prof_end", "expr", "expr_or_empty", "expr_assign", + "expr_increment", "expr_decrement", "expr_ternary", "expr_binary", + "expr_primitive", "expr_complement", "expr_not", "expr_call", + "expr_method", "expr_function", "expr_pointer", "expr_add_array", + "expr_parameters", "expr_arguments", "expr_arguments_no_empty", + "expr_isdefined", "expr_istrue", "expr_reference", "expr_array", + "expr_field", "expr_size", "expr_paren", "expr_object", + "expr_thisthread", "expr_empty_array", "expr_undefined", "expr_game", + "expr_self", "expr_anim", "expr_level", "expr_animation", "expr_animtree", "expr_identifier", "expr_path", "expr_istring", "expr_string", "expr_color", "expr_vector", "expr_float", "expr_integer", "expr_false", "expr_true", YY_NULLPTR @@ -3819,664 +3855,723 @@ namespace xsk { namespace gsc { namespace s4 { } - const short parser::yypact_ninf_ = -270; + const short parser::yypact_ninf_ = -273; - const short parser::yytable_ninf_ = -207; + const short parser::yytable_ninf_ = -212; const short parser::yypact_[] = { - 11, -44, -44, -22, -270, 24, 11, -270, -270, -270, - -270, -270, -270, -27, -270, -270, -23, -13, -33, -270, - -270, -270, -270, -26, 786, -270, -270, -270, 29, 9, - -270, -270, -29, 2, -270, 36, -270, -270, -270, -270, - -270, -270, -270, 59, 60, 786, 648, -26, 786, 786, - -1, 20, -270, -270, -270, -270, -270, -270, -270, 1784, - -270, -270, -270, -270, -270, 65, 489, -270, -270, -270, - -270, -270, -270, 535, 540, -270, -270, 572, -270, -270, - -270, 609, 673, 678, 742, -270, -270, 18, 63, -270, - -270, -270, -270, -270, -270, -270, -270, 78, 89, -26, - 71, 90, 92, 97, 103, 110, 115, 786, 786, 1078, - 648, -270, 1867, 114, 116, -270, -270, -270, -270, -270, - -270, -270, 786, 786, 786, 786, 786, 786, 786, 786, - 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, - 786, -270, 855, -26, -270, -270, 135, 132, 786, -26, - -270, 945, -270, -270, 786, 786, -26, 786, 786, -26, - 786, 1244, 1278, -270, 786, 851, 786, -270, 782, 181, - 181, 1898, 1908, 402, 402, 83, 83, 83, 83, 1939, - 1980, 1949, 88, 88, -270, -270, -270, 1590, -270, -26, - 28, -270, 136, 786, 133, -24, 142, 1037, 147, 150, - 158, 160, 155, 146, 151, 156, 717, 161, 165, 170, - -270, 169, 49, 49, -270, -270, 991, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, 166, 167, 171, 172, 174, -270, -270, 473, -270, - -270, -270, -270, 13, 1630, 31, 179, 1670, 55, 185, - 1710, -270, -270, 1749, 175, 1867, 786, -270, 136, -270, - 786, 1819, -270, 187, -270, 786, 217, 786, -4, -26, - 786, 141, 184, 190, -270, -270, -270, -270, 1854, -270, - 786, 786, 786, -270, -270, 422, 422, -270, -270, -270, - -270, -270, -270, -270, 194, 200, 201, 205, -270, -270, - 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, - 786, 206, -270, 786, 207, -270, 786, 209, 786, 216, - 1867, 61, -270, 210, 1312, 226, 1346, 218, -270, -270, - -270, 1041, -8, 1380, -270, -270, -270, 67, 73, 851, - 786, 786, 786, 786, 1867, 1867, 1867, 1867, 1867, 1867, - 1867, 1867, 1867, 1867, 1867, 227, 76, 231, 77, 236, - 1414, 786, -270, -270, 1037, 786, 1037, 786, 786, -26, - 89, 228, 229, 1448, 1122, 1166, 1210, 786, -270, 786, - -270, 786, -270, 86, 266, 1482, -270, 1867, 240, 1516, - 265, -270, -270, -270, 245, 246, 786, 249, 786, 269, - 786, 108, 127, 128, -270, 1037, 271, -4, 1037, 786, - -270, -270, 281, -270, 283, -270, 288, -270, -270, -270, - -270, -270, 292, -270, 1550, 284, 286, 295, 1037, 1037, - -270, -270, -270, -270, -270 + 15, -273, -273, -40, -40, -33, -273, 27, 15, -273, + -273, -273, -273, -273, -273, -35, -273, -273, -25, -17, + -48, -273, -273, -273, -273, -45, 888, -273, -273, -273, + 19, 43, -273, -273, -21, -8, -273, 17, -273, -273, + -273, -273, -273, -273, -273, 28, 31, 888, 749, -45, + 888, 888, -34, -14, -273, -273, -273, -273, -273, -273, + -273, 2040, -273, -273, -273, -273, -273, 11, 325, -273, + -273, -273, -273, -273, -273, 515, 520, -273, -273, 601, + -273, -273, -273, 623, 775, 849, 913, -273, -273, 408, + 26, -273, -273, -273, -273, -273, -273, -273, -273, 41, + 56, -45, 62, 60, 67, 74, 93, 78, 80, 888, + 888, 1294, 749, -273, 2123, 88, 91, -273, -273, -273, + -273, -273, -273, -273, 888, 888, 888, 888, 888, 888, + 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, + 888, 888, 888, -273, 957, -45, -273, -273, 103, 96, + 888, -45, -273, 1055, -273, -273, 888, 888, -45, 888, + 888, -45, 888, 1460, 1494, -273, 888, 1806, 888, -273, + 953, 97, 97, 2154, 2164, 2246, 2246, 157, 157, 157, + 157, 2195, 2236, 2205, -30, -30, -273, -273, -273, 1846, + -273, -45, 44, -273, 117, 1108, 888, 100, -18, 118, + 1253, 120, 127, 129, 130, -11, 122, 132, 137, 819, + 138, 150, 152, -273, 153, 139, 139, -273, -273, -273, + 1154, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, 151, 154, 155, 158, 163, + -273, -273, 672, -273, -273, -273, -273, -22, 1886, 46, + 162, 1926, 47, 167, 1966, -273, -273, 2005, 172, 2123, + 888, -273, 117, -273, 888, -273, 1207, 2075, -273, 177, + -273, 888, 190, 888, 76, -45, 888, 128, 178, 180, + -273, -273, -273, -273, 2110, -273, 888, 888, 888, -273, + -273, 22, 22, -273, -273, -273, -273, -273, -273, -273, + 186, 191, 196, 202, -273, -273, 888, 888, 888, 888, + 888, 888, 888, 888, 888, 888, 888, 198, -273, 888, + 204, -273, 888, 205, 888, 211, 2123, 53, -273, -273, + 207, 1528, 213, 1562, 208, -273, -273, -273, 1257, 4, + 1596, -273, -273, -273, 63, 73, 1806, 888, 888, 888, + 888, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 214, 75, 220, 84, 222, 1630, 888, -273, + -273, 1253, 888, 1253, 888, 888, -45, 56, 209, 216, + 1664, 1338, 1382, 1426, 888, -273, 888, -273, 888, -273, + 86, 253, 1698, -273, 2123, 217, 1732, 257, -273, -273, + -273, 224, 225, 888, 227, 888, 231, 888, 94, 110, + 113, -273, 1253, 232, 76, 1253, 888, -273, -273, 244, + -273, 245, -273, 246, -273, -273, -273, -273, -273, 247, + -273, 1766, 239, 240, 241, 1253, 1253, -273, -273, -273, + -273, -273 }; const unsigned char parser::yydefact_[] = { - 3, 0, 0, 0, 204, 0, 2, 7, 8, 9, - 12, 13, 14, 0, 205, 206, 0, 0, 0, 1, - 4, 5, 6, 173, 0, 10, 11, 208, 0, 0, - 172, 203, 0, 0, 195, 0, 219, 218, 197, 198, - 199, 200, 201, 0, 0, 0, 175, 0, 0, 0, - 0, 0, 207, 209, 212, 214, 215, 216, 217, 0, - 85, 86, 87, 124, 125, 126, 127, 156, 157, 128, - 129, 130, 131, 132, 133, 134, 135, 0, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 0, 146, - 147, 148, 149, 150, 151, 152, 153, 0, 0, 0, - 0, 206, 0, 0, 206, 0, 0, 0, 0, 0, - 175, 196, 177, 0, 174, 180, 155, 154, 211, 213, - 202, 16, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 12, 13, 0, 0, 0, 209, 0, 2, 7, + 8, 9, 14, 15, 16, 0, 210, 211, 0, 0, + 0, 1, 4, 5, 6, 178, 0, 10, 11, 213, + 0, 0, 177, 208, 0, 0, 200, 0, 224, 223, + 202, 203, 204, 205, 206, 0, 0, 0, 180, 0, + 0, 0, 0, 0, 212, 214, 217, 219, 220, 221, + 222, 0, 90, 91, 92, 129, 130, 131, 132, 161, + 162, 133, 134, 135, 136, 137, 138, 139, 140, 0, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 0, 151, 152, 153, 154, 155, 156, 157, 158, 0, + 0, 0, 0, 211, 0, 0, 211, 0, 0, 0, + 0, 0, 180, 201, 182, 0, 179, 185, 160, 159, + 216, 218, 207, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 184, 0, 0, 158, 159, 206, 0, 175, 0, - 15, 0, 17, 171, 0, 175, 0, 0, 175, 0, - 0, 0, 0, 185, 0, 177, 0, 170, 0, 117, - 118, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 119, 120, 121, 122, 123, 0, 183, 0, - 0, 174, 181, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 189, 0, 0, 163, 164, 211, 0, + 180, 0, 17, 0, 19, 176, 0, 180, 0, 0, + 180, 0, 0, 0, 0, 190, 0, 182, 0, 175, + 0, 122, 123, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 124, 125, 126, 127, 128, 0, + 188, 0, 0, 179, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 44, 0, 0, 0, 46, 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, - 42, 0, 0, 0, 186, 187, 188, 189, 0, 190, - 191, 192, 193, 194, 0, 0, 0, 0, 0, 0, - 0, 178, 179, 0, 0, 176, 0, 182, 0, 160, - 175, 0, 64, 0, 65, 0, 0, 0, 50, 0, - 0, 0, 0, 0, 77, 78, 79, 81, 0, 82, - 175, 175, 0, 186, 187, 101, 103, 43, 45, 53, - 54, 55, 51, 52, 0, 0, 0, 0, 102, 104, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 162, 175, 0, 164, 175, 0, 0, 0, - 105, 0, 59, 0, 0, 0, 0, 0, 47, 48, - 49, 0, 0, 0, 76, 75, 80, 0, 0, 0, - 0, 0, 0, 0, 90, 96, 97, 98, 99, 100, - 91, 92, 93, 95, 94, 0, 0, 0, 0, 0, - 0, 175, 161, 66, 0, 0, 0, 89, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 175, 163, 175, - 165, 175, 210, 0, 67, 0, 69, 88, 0, 0, - 0, 74, 83, 84, 0, 0, 175, 0, 175, 0, - 175, 0, 0, 0, 166, 0, 0, 50, 0, 0, - 56, 58, 174, 61, 174, 63, 174, 167, 168, 169, - 68, 70, 0, 72, 0, 0, 0, 0, 0, 0, - 57, 60, 62, 71, 73 + 0, 0, 0, 49, 0, 0, 0, 51, 20, 21, + 0, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 0, 0, 0, 191, 192, + 193, 194, 0, 195, 196, 197, 198, 199, 0, 0, + 0, 0, 0, 0, 0, 183, 184, 0, 0, 181, + 0, 187, 0, 165, 180, 47, 0, 0, 69, 0, + 70, 0, 0, 0, 55, 0, 0, 0, 0, 0, + 82, 83, 84, 86, 0, 87, 180, 180, 0, 191, + 192, 106, 108, 48, 50, 58, 59, 60, 56, 57, + 0, 0, 0, 0, 107, 109, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 167, 180, + 0, 169, 180, 0, 0, 0, 110, 0, 46, 64, + 0, 0, 0, 0, 0, 52, 53, 54, 0, 0, + 0, 81, 80, 85, 0, 0, 0, 0, 0, 0, + 0, 95, 101, 102, 103, 104, 105, 96, 97, 98, + 100, 99, 0, 0, 0, 0, 0, 0, 180, 166, + 71, 0, 0, 0, 94, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 180, 168, 180, 170, 180, 215, + 0, 72, 0, 74, 93, 0, 0, 0, 79, 88, + 89, 0, 0, 180, 0, 180, 0, 180, 0, 0, + 0, 171, 0, 0, 55, 0, 0, 61, 63, 179, + 66, 179, 68, 179, 172, 173, 174, 73, 75, 0, + 77, 0, 0, 0, 0, 0, 0, 62, 65, 67, + 76, 78 }; const short parser::yypgoto_[] = { - -270, -270, -270, 346, 347, 351, -270, -270, -270, -176, - -93, -270, -59, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, 182, -270, -269, - -267, -265, -270, -270, -270, -270, -270, -141, -88, 106, - 124, -270, -270, -130, -43, -270, -270, -270, -83, -31, - -270, -270, -5, -270, -270, -270, 180, 193, 230, 238, - -270, -270, 0, 6, -270, -14, -270, -270, -270, 157, - -270, -270 + -273, -273, -273, 292, 295, 297, -273, -273, -273, -184, + -273, -98, 109, -118, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, 203, -273, + -272, -270, -269, -273, -273, -273, -273, -273, -147, -72, + -74, -62, -273, -273, -127, -47, -273, -273, -273, 193, + 219, -273, -273, 265, -273, -273, -273, 296, 315, 351, + 452, -273, -273, 0, 6, -273, -13, -273, -273, -273, + 105, -273, -273 }; const short parser::yydefgoto_[] = { - 0, 5, 6, 7, 8, 9, 10, 11, 12, 214, - 215, 216, 337, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 112, 398, 241, - 242, 243, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 29, 113, 191, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96 + 0, 7, 8, 9, 10, 11, 12, 13, 14, 217, + 218, 219, 220, 344, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 114, 405, + 245, 246, 247, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 31, 115, 193, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98 }; const short parser::yytable_[] = { - 13, 15, 15, 114, 28, 152, 13, 16, 17, 338, - 244, 339, 378, 340, 1, 2, 3, 23, 190, 100, - 273, 276, 18, 30, 19, 255, 32, 33, 258, 35, - 274, 25, 101, 104, 39, 40, 41, 42, 102, 105, - 298, 26, 379, 24, 211, 14, 4, 115, -194, -194, - 103, -194, 212, 213, 98, -194, 244, 148, 27, 99, - 14, 4, 148, 245, 4, -206, -194, 114, 246, -194, - -206, 293, 293, 269, 97, 244, 322, 146, 166, 32, - 33, 166, 35, 147, 106, 14, 4, 39, 40, 41, - 42, 14, 4, 118, 119, -186, -186, 211, -186, 153, - 325, 4, -186, 107, 108, 166, 372, -194, -194, 245, - 120, 166, 381, -186, 246, 149, -186, 166, 382, 154, - 247, 388, 390, 166, 294, 294, 166, 166, 245, 246, - 246, 414, 150, 246, 155, 151, 166, 293, 14, 4, - 331, 123, 124, 188, 156, 157, 248, 158, 338, 192, - 339, 253, 340, 427, -186, -186, 256, 147, 166, 259, - 347, 348, 159, 160, 166, 167, 247, 136, 137, 138, - 139, 140, 428, 429, 138, 139, 140, 166, 166, 148, - 270, 247, 247, 144, 189, 247, 275, 272, 282, 268, - 294, 277, 248, 366, 278, 246, 368, 253, 394, 284, - 396, 145, 279, 147, 280, 285, 59, 295, 296, 290, - 286, 248, 253, 253, 291, 289, 253, 292, 147, 147, - 299, 300, 147, 323, 329, 301, 302, 109, 303, 326, - 116, 117, 333, 244, 335, 244, 119, 344, 350, 430, - 281, 393, 433, 345, 351, 352, 27, 247, 146, 353, - 55, 56, 57, 58, 147, 365, 367, 411, 369, 412, - 371, 413, 443, 444, 373, 136, 137, 138, 139, 140, - 375, 387, 377, 341, 244, 389, 293, 244, 253, 342, - 391, 415, 402, 403, 147, 419, 245, 401, 245, 161, - 162, 246, 165, 246, 417, 146, 146, 244, 244, 420, - 421, 147, 147, 423, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 425, 187, 431, 435, 245, 436, 294, - 245, 249, 246, 437, 246, 246, 254, 438, 440, 257, - 441, 146, 260, 247, 250, 247, 263, 147, 265, 442, - 245, 245, 20, 21, 144, 246, 246, 22, 432, 283, - 0, 0, 0, 422, 0, 424, 0, 426, 0, 248, - 0, 248, 145, 0, 253, 271, 253, 249, 0, 400, - 147, 251, 147, 0, 247, 0, 247, 247, 288, 252, - 250, 0, 249, 249, 0, 0, 249, 0, 0, 0, - 0, 144, 144, 0, 0, 250, 250, 247, 247, 250, - 248, 0, 341, 248, 0, 253, 0, 253, 253, 145, - 145, 147, 0, 147, 147, 0, 0, 251, 0, 0, - 0, 0, 0, 248, 248, 252, 0, 0, 253, 253, - 0, 0, 251, 251, 147, 147, 251, 144, 330, 0, - 252, 252, 32, 33, 252, 35, 0, 334, 249, 336, - 123, 124, 343, 0, 0, 145, 129, 130, 131, 132, - 142, 250, 0, 143, 349, 0, 0, 0, 0, 0, - 304, 305, 0, 306, 307, 0, 136, 137, 138, 139, - 140, 0, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 32, 33, 0, 35, 0, 251, 0, - 370, 14, 4, 0, 0, 0, 252, 0, 0, -187, - -187, 142, -187, 0, 143, 0, -187, 0, 0, 308, - 309, 0, 383, 384, 385, 386, 0, -187, 0, 0, - -187, 0, 0, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 249, 0, 249, 395, 0, 397, - 399, 0, 14, 4, 0, -188, -188, 250, -188, 250, - -189, -189, -188, -189, 0, 0, 0, -189, -187, -187, - 0, 0, 0, -188, 0, 0, -188, 0, -189, 0, - 0, -189, 0, 0, 0, 249, 0, 249, 249, 0, - 0, 434, 32, 33, 251, 35, 251, 0, 250, 141, - 250, 250, 252, 0, 252, 0, 0, 0, 249, 249, - 142, 0, 0, 143, -188, -188, 0, 0, 0, -189, - -189, 250, 250, 0, 0, 0, 0, 0, 0, -190, - -190, 0, -190, 0, 0, 251, -190, 251, 251, 0, - 0, 0, 0, 252, 31, 252, 252, -190, 0, 0, - -190, 14, 4, 0, 0, 0, 0, 0, 251, 251, - 0, 0, 0, 0, 0, 0, 252, 252, 32, 33, - 34, 35, 36, 37, 38, 0, 39, 40, 41, 42, - 43, 44, 45, 0, 0, 0, 110, 111, -190, -190, - 47, 0, 0, -191, -191, 0, -191, 0, -192, -192, - -191, -192, 0, 0, 0, -192, 48, 49, 0, 0, - 0, -191, 0, 31, -191, 0, -192, 0, 0, -192, - 0, 0, 0, 50, 0, 0, 51, 14, 4, 27, - 52, 53, 54, 55, 56, 57, 58, 32, 33, 34, - 35, 36, 37, 38, 0, 39, 40, 41, 42, 43, - 44, 45, -191, -191, 0, 46, 0, -192, -192, 47, - 0, 287, -193, -193, 0, -193, 0, 0, 0, -193, - 0, 0, 0, 0, 0, 48, 49, 0, 0, 0, - -193, 0, 31, -193, 0, 0, 0, 0, 0, 0, - 0, 0, 50, 0, 0, 51, 14, 4, 27, 52, - 53, 54, 55, 56, 57, 58, 32, 33, 34, 35, - 36, 37, 38, 0, 39, 40, 41, 42, 43, 44, - 45, -193, -193, 0, 46, 266, 0, 122, 47, 0, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 0, 0, 0, 0, 48, 49, 0, 0, 0, 0, - 0, 31, 0, 133, 134, 135, 136, 137, 138, 139, - 140, 50, 0, 0, 51, 14, 4, 27, 52, 53, - 54, 55, 56, 57, 58, 32, 33, 34, 35, 36, - 37, 38, 0, 39, 40, 41, 42, 43, 44, 45, - 264, 0, 0, 110, 0, 0, 122, 47, 0, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 0, - 0, 0, 0, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, - 50, 0, 0, 51, 14, 4, 27, 52, 53, 54, - 55, 56, 57, 58, 193, 0, 0, 194, 195, 196, - 0, 197, 198, 199, 200, 0, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 32, 33, 0, 35, 0, - 0, 0, 0, 39, 40, 41, 42, 0, 0, 0, - 0, 151, 210, 211, 0, 0, 0, 0, 0, 0, - 193, 212, 213, 194, 195, 196, 0, 197, 198, 199, - 200, 0, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 32, 33, 0, 35, 0, 0, 0, 0, 39, - 40, 41, 42, 0, 14, 4, 0, 151, 297, 211, - 0, 0, 0, 0, 0, 0, 193, 212, 213, 194, - 195, 196, 0, 197, 198, 199, 200, 0, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 32, 33, 0, - 35, 32, 33, 0, 35, 39, 40, 41, 42, 0, - 14, 4, 0, 151, 0, 211, 0, 0, 0, 142, - 0, 0, 143, 212, 213, 0, 0, 308, 309, 0, + 15, 116, 154, 17, 17, 146, 248, 30, 15, 18, + 19, 25, 345, 20, 346, 347, 282, 147, 1, 2, + 3, 4, 5, 192, 150, 32, 385, 21, 279, 102, + 259, 27, -211, 262, 103, 106, 304, 26, 280, 28, + 104, 107, 105, -191, -191, 29, -191, 6, 248, 117, + -191, 16, 6, 248, 34, 35, 386, 37, 140, 141, + 142, -191, 120, 121, -191, 116, 99, 108, 299, 299, + 16, 6, 144, 248, 109, 145, 287, 110, 122, 148, + 151, 249, 29, 16, 6, 149, 57, 58, 59, 60, + 100, 273, 304, 328, 331, 101, 168, 152, 168, 168, + 379, 155, -191, -191, 153, 168, 157, 6, 34, 35, + 388, 37, 156, 16, 6, 168, 41, 42, 43, 44, + 389, 158, 395, 249, 159, 168, 214, 168, 249, 248, + 162, 397, 161, 421, 215, 216, 168, 299, 168, 160, + 168, 434, 169, 300, 300, 190, 168, 337, 249, 150, + 191, 194, 345, 257, 346, 347, 278, 435, 260, 149, + 436, 263, 168, 274, 281, 168, 283, 16, 6, 354, + 355, 34, 35, 284, 37, 285, 286, 290, 146, 41, + 42, 43, 44, 138, 139, 140, 141, 142, 291, 214, + 147, 272, 288, 292, 295, 257, 296, 401, 297, 403, + 257, 149, 373, 298, 249, 375, 149, 305, 329, 342, + 306, 307, 300, 332, 308, 257, 257, 125, 126, 309, + 257, 149, 149, 335, 340, 121, 149, 146, 146, 61, + 16, 6, 357, 351, 248, 352, 248, 358, 437, 147, + 147, 440, 359, 138, 139, 140, 141, 142, 360, 372, + 111, 400, 148, 118, 119, 374, 376, 378, 149, 382, + 394, 450, 451, 380, 384, 409, 396, 418, 398, 419, + 422, 420, 410, 424, 146, 248, 257, 299, 248, 426, + 427, 428, 149, 430, 257, 349, 147, 432, 438, 408, + 149, 442, 443, 444, 445, 447, 448, 449, 248, 248, + 22, 148, 148, 23, 276, 24, 439, 149, 149, 249, + 289, 249, 163, 164, 0, 167, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 250, 189, 148, 0, + 249, 0, 300, 249, 149, 0, 0, -192, -192, 258, + -192, 0, 261, 0, -192, 264, 429, 0, 431, 267, + 433, 269, 251, 249, 249, -192, 0, 0, -192, 0, + 0, 257, 0, 257, 0, 0, 407, 149, 250, 149, + 0, 0, 0, 250, 0, 0, 0, 0, 0, 277, + 0, 0, 0, 0, 0, 0, 0, 0, 250, 250, + 0, 0, 294, 250, 251, 0, -192, -192, 252, 251, + 0, 0, 257, 0, 257, 257, 0, 0, 149, 0, + 149, 149, 0, 0, 251, 251, 0, 0, 0, 251, + -199, -199, 0, -199, 0, 257, 257, -199, 0, 253, + 0, 149, 149, 0, 150, 0, 0, 0, -199, 0, + 252, -199, -211, 0, 0, 252, 0, 0, 254, 250, + 0, 0, 0, 336, 0, 0, 0, 250, 0, 0, + 301, 302, 0, 0, 341, 252, 343, 0, 0, 350, + 0, 253, 0, 0, 0, 251, 253, 0, 0, -199, + -199, 356, 0, 251, 255, 0, 0, 0, 0, 0, + 254, 253, 253, 0, 0, 254, 253, 0, 0, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 254, 254, 0, 0, 0, 254, 0, 377, 0, 0, + 0, 252, 0, 0, 0, 0, 255, -193, -193, 348, + -193, 255, -194, -194, -193, -194, 0, 0, 0, -194, + 390, 391, 392, 393, 0, -193, 255, 255, -193, 0, + -194, 255, 253, -194, 250, 0, 250, 0, 0, 0, + 253, 0, 0, 0, 0, 402, 0, 404, 406, 0, + 0, 254, 0, 0, 0, 0, 0, 0, 0, 254, + 251, 0, 251, 0, 0, 256, -193, -193, 0, 0, + 0, -194, -194, 0, 0, 250, 0, 250, 250, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 0, 441, + 0, 0, 0, 34, 35, 255, 37, 0, 250, 250, + 143, 251, 0, 251, 251, 0, 252, 256, 252, 0, + 0, 144, 256, 0, 145, -195, -195, 0, -195, 0, + 0, 0, -195, 0, 251, 251, 0, 256, 256, 0, + 0, 0, 256, -195, 0, 0, -195, 253, 0, 253, + 0, 310, 311, 0, 312, 313, 0, 252, 0, 348, + 252, 0, 16, 6, 0, 0, 254, 0, 254, 0, + 0, 0, 0, 0, 34, 35, 0, 37, 0, 0, + 252, 252, 0, 0, -195, -195, 0, 0, 253, 0, + 253, 253, 144, 0, 0, 145, 0, 0, 256, 0, + 314, 315, 255, 0, 255, 0, 256, 254, 0, 254, + 254, 253, 253, 0, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 0, 0, 33, 0, 0, + 254, 254, 0, 16, 6, 0, 0, 0, 0, 0, + 0, 0, 0, 255, 0, 255, 255, 0, 0, 0, + 0, 34, 35, 36, 37, 38, 39, 40, 0, 41, + 42, 43, 44, 45, 46, 47, 255, 255, 0, 112, + 113, 0, 0, 49, 0, 0, 0, -196, -196, 0, + -196, 0, 0, 0, -196, 0, 0, 0, 0, 50, + 51, 0, 0, 0, 0, -196, 0, 33, -196, 0, + 0, 0, 0, 256, 0, 256, 52, 0, 0, 53, + 16, 6, 29, 54, 55, 56, 57, 58, 59, 60, + 0, 34, 35, 36, 37, 38, 39, 40, 0, 41, + 42, 43, 44, 45, 46, 47, -196, -196, 0, 48, + 0, 0, 0, 49, 256, 293, 256, 256, 0, 0, + 0, -197, -197, 0, -197, 0, 0, 0, -197, 50, + 51, 0, 0, 0, 0, 0, 33, 256, 256, -197, + 0, 0, -197, 0, 0, 0, 52, 0, 0, 53, + 16, 6, 29, 54, 55, 56, 57, 58, 59, 60, + 34, 35, 36, 37, 38, 39, 40, 0, 41, 42, + 43, 44, 45, 46, 47, 0, 0, 0, 48, 0, + -197, -197, 49, 0, 0, -198, -198, 0, -198, 0, + 0, 0, -198, 0, 0, 0, 0, 0, 50, 51, + 0, 0, 0, -198, 0, 33, -198, 0, 0, 0, + 0, 0, 0, 0, 0, 52, 0, 0, 53, 16, + 6, 29, 54, 55, 56, 57, 58, 59, 60, 34, + 35, 36, 37, 38, 39, 40, 0, 41, 42, 43, + 44, 45, 46, 47, -198, -198, 0, 112, 270, 0, + 124, 49, 0, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 0, 0, 0, 0, 50, 51, 0, + 0, 0, 0, 0, 0, 0, 135, 136, 137, 138, + 139, 140, 141, 142, 52, 0, 0, 53, 16, 6, + 29, 54, 55, 56, 57, 58, 59, 60, 195, 0, + 0, 0, 0, 0, 0, 0, 196, 0, 0, 197, + 198, 199, 0, 200, 201, 202, 203, 0, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 34, 35, 0, + 37, 0, 0, 0, 0, 41, 42, 43, 44, 0, + 0, 0, 0, 153, 213, 214, 0, 0, 0, 0, + 0, 195, 275, 215, 216, 0, 0, 0, 0, 196, + 0, 0, 197, 198, 199, 0, 200, 201, 202, 203, + 0, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 34, 35, 0, 37, 0, 0, 16, 6, 41, 42, + 43, 44, 0, 0, 0, 0, 153, 195, 214, 0, + 0, 0, 0, 0, 0, 196, 215, 216, 197, 198, + 199, 0, 200, 201, 202, 203, 0, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 34, 35, 0, 37, + 0, 0, 0, 0, 41, 42, 43, 44, 0, 16, + 6, 0, 153, 303, 214, 0, 0, 0, 0, 0, + 195, 338, 215, 216, 0, 0, 0, 0, 196, 0, + 0, 197, 198, 199, 0, 200, 201, 202, 203, 0, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 34, + 35, 0, 37, 0, 0, 16, 6, 41, 42, 43, + 44, 0, 0, 0, 0, 153, 195, 214, 0, 0, + 0, 0, 0, 0, 196, 215, 216, 197, 198, 199, + 0, 200, 201, 202, 203, 0, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 34, 35, 0, 37, 34, + 35, 0, 37, 41, 42, 43, 44, 0, 16, 6, + 0, 153, 0, 214, 0, 0, 0, 144, 0, 0, + 145, 215, 216, 0, 0, 314, 315, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 0, 165, 0, 0, 16, 6, 166, 0, 16, 6, + 0, 124, 0, 0, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 135, 136, 137, + 138, 139, 140, 141, 142, 412, 0, 0, 0, 0, + 413, 0, 0, 0, 0, 124, 0, 0, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 0, 163, 0, 0, 14, 4, 164, 0, - 14, 4, 0, 122, 0, 0, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, - 134, 135, 136, 137, 138, 139, 140, 405, 0, 0, - 0, 0, 406, 0, 0, 0, 0, 122, 0, 0, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 0, 135, 136, 137, 138, 139, 140, 141, 142, 414, + 0, 0, 0, 0, 415, 0, 0, 0, 0, 124, + 0, 0, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 135, 136, 137, 138, 139, + 140, 141, 142, 416, 0, 0, 0, 0, 417, 0, + 0, 0, 0, 124, 0, 0, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 265, 0, 135, + 136, 137, 138, 139, 140, 141, 142, 124, 0, 0, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 133, 134, 135, 136, 137, 138, 139, - 140, 407, 0, 0, 0, 0, 408, 0, 0, 0, - 0, 122, 0, 0, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 133, 134, 135, - 136, 137, 138, 139, 140, 409, 0, 0, 0, 0, - 410, 0, 0, 0, 0, 122, 0, 0, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 261, - 0, 133, 134, 135, 136, 137, 138, 139, 140, 122, - 0, 0, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 262, 0, 133, 134, 135, 136, 137, - 138, 139, 140, 122, 0, 0, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 374, 0, 133, - 134, 135, 136, 137, 138, 139, 140, 122, 0, 0, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 0, 266, 0, 135, 136, 137, 138, 139, 140, 141, + 142, 124, 0, 0, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 381, 0, 135, 136, 137, + 138, 139, 140, 141, 142, 124, 0, 0, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 383, + 0, 135, 136, 137, 138, 139, 140, 141, 142, 124, + 0, 0, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 387, 0, 135, 136, 137, 138, 139, + 140, 141, 142, 124, 0, 0, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 399, 0, 135, + 136, 137, 138, 139, 140, 141, 142, 124, 0, 0, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 376, 0, 133, 134, 135, 136, 137, 138, 139, - 140, 122, 0, 0, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 380, 0, 133, 134, 135, - 136, 137, 138, 139, 140, 122, 0, 0, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, - 0, 133, 134, 135, 136, 137, 138, 139, 140, 122, - 0, 0, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 404, 0, 133, 134, 135, 136, 137, - 138, 139, 140, 122, 0, 0, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 416, 0, 133, - 134, 135, 136, 137, 138, 139, 140, 122, 0, 0, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 0, 411, 0, 135, 136, 137, 138, 139, 140, 141, + 142, 124, 0, 0, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 423, 0, 135, 136, 137, + 138, 139, 140, 141, 142, 124, 0, 0, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 425, + 0, 135, 136, 137, 138, 139, 140, 141, 142, 124, + 0, 0, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 446, 0, 135, 136, 137, 138, 139, + 140, 141, 142, 124, 0, 0, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, + 136, 137, 138, 139, 140, 141, 142, 268, 0, 0, + 0, 0, 0, 124, 0, 0, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, + 136, 137, 138, 139, 140, 141, 142, 271, 0, 0, + 0, 0, 0, 124, 0, 0, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, + 136, 137, 138, 139, 140, 141, 142, 327, 0, 0, + 0, 0, 0, 124, 0, 0, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, + 136, 137, 138, 139, 140, 141, 142, 330, 0, 0, + 0, 0, 0, 124, 0, 0, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, + 136, 137, 138, 139, 140, 141, 142, 333, 0, 0, + 0, 0, 0, 124, 0, 0, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, + 136, 137, 138, 139, 140, 141, 142, 334, 0, 0, + 0, 0, 124, 0, 0, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 135, 136, + 137, 138, 139, 140, 141, 142, 123, 124, 0, 0, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 418, 0, 133, 134, 135, 136, 137, 138, 139, - 140, 122, 0, 0, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 439, 0, 133, 134, 135, - 136, 137, 138, 139, 140, 122, 0, 0, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 133, 134, 135, 136, 137, 138, 139, 140, 267, - 0, 0, 0, 0, 0, 122, 0, 0, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 133, 134, 135, 136, 137, 138, 139, 140, 321, - 0, 0, 0, 0, 0, 122, 0, 0, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 133, 134, 135, 136, 137, 138, 139, 140, 324, - 0, 0, 0, 0, 0, 122, 0, 0, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 133, 134, 135, 136, 137, 138, 139, 140, 327, - 0, 0, 0, 0, 0, 122, 0, 0, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 133, 134, 135, 136, 137, 138, 139, 140, 328, - 0, 0, 0, 0, 122, 0, 0, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 133, 134, 135, 136, 137, 138, 139, 140, 121, 122, - 0, 0, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 133, 134, 135, 136, 137, - 138, 139, 140, 332, 122, 0, 0, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 133, 134, 135, 136, 137, 138, 139, 140, 346, 122, - 0, 0, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 122, 0, 0, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 0, 0, 0, 0, 0, 133, 134, - 135, 136, 137, 138, 139, 140, 123, 124, 0, 126, - 127, 128, 129, 130, 131, 132, 123, 124, 0, 0, - 127, 128, 129, 130, 131, 132, 0, 0, 0, 133, - 134, 135, 136, 137, 138, 139, 140, 0, 0, 133, - 134, 135, 136, 137, 138, 139, 140, 123, 124, 0, - 0, 127, 128, 129, 130, 131, 132, 123, 124, 0, - 0, 127, 128, 129, 130, 131, 132, 0, 0, 0, - 0, 134, 135, 136, 137, 138, 139, 140, 0, 0, - 0, 134, 0, 136, 137, 138, 139, 140, 123, 124, - 0, 0, 127, 128, 129, 130, 131, 132, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 136, 137, 138, 139, 140 + 0, 0, 0, 135, 136, 137, 138, 139, 140, 141, + 142, 339, 124, 0, 0, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 135, 136, + 137, 138, 139, 140, 141, 142, 353, 124, 0, 0, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 124, 0, 0, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 0, 0, 0, 0, 0, 135, 136, 137, 138, + 139, 140, 141, 142, 125, 126, 0, 128, 129, 130, + 131, 132, 133, 134, 125, 126, 0, 0, 129, 130, + 131, 132, 133, 134, 0, 0, 0, 135, 136, 137, + 138, 139, 140, 141, 142, 0, 0, 135, 136, 137, + 138, 139, 140, 141, 142, 125, 126, 0, 0, 129, + 130, 131, 132, 133, 134, 125, 126, 0, 0, 129, + 130, 131, 132, 133, 134, 0, 0, 0, 0, 136, + 137, 138, 139, 140, 141, 142, 0, 0, 0, 136, + 0, 138, 139, 140, 141, 142, 125, 126, 0, 0, + 129, 130, 131, 132, 133, 134, 125, 126, 0, 0, + 0, 0, 131, 132, 133, 134, 0, 0, 0, 0, + 0, 0, 138, 139, 140, 141, 142, 0, 0, 0, + 0, 0, 138, 139, 140, 141, 142 }; const short parser::yycheck_[] = { - 0, 1, 2, 46, 18, 98, 6, 1, 2, 278, - 151, 278, 20, 278, 3, 4, 5, 44, 148, 48, - 44, 197, 44, 23, 0, 155, 30, 31, 158, 33, - 54, 54, 32, 33, 38, 39, 40, 41, 32, 33, - 216, 54, 50, 70, 48, 89, 90, 47, 30, 31, - 48, 33, 56, 57, 45, 37, 197, 44, 91, 50, - 89, 90, 44, 151, 90, 52, 48, 110, 151, 51, - 52, 212, 213, 45, 45, 216, 45, 77, 50, 30, - 31, 50, 33, 77, 48, 89, 90, 38, 39, 40, - 41, 89, 90, 94, 95, 30, 31, 48, 33, 99, - 45, 90, 37, 44, 44, 50, 45, 89, 90, 197, - 90, 50, 45, 48, 197, 52, 51, 50, 45, 48, - 151, 45, 45, 50, 212, 213, 50, 50, 216, 212, - 213, 45, 54, 216, 44, 46, 50, 278, 89, 90, - 270, 58, 59, 143, 52, 48, 151, 44, 417, 149, - 417, 151, 417, 45, 89, 90, 156, 151, 50, 159, - 290, 291, 52, 48, 50, 49, 197, 84, 85, 86, - 87, 88, 45, 45, 86, 87, 88, 50, 50, 44, - 44, 212, 213, 77, 52, 216, 44, 54, 202, 189, - 278, 44, 197, 323, 44, 278, 326, 197, 374, 53, - 376, 77, 44, 197, 44, 54, 24, 212, 213, 44, - 54, 216, 212, 213, 44, 54, 216, 48, 212, 213, - 54, 54, 216, 44, 49, 54, 54, 45, 54, 44, - 48, 49, 45, 374, 17, 376, 95, 53, 44, 415, - 85, 371, 418, 53, 44, 44, 91, 278, 248, 44, - 95, 96, 97, 98, 248, 49, 49, 387, 49, 389, - 44, 391, 438, 439, 54, 84, 85, 86, 87, 88, - 44, 44, 54, 278, 415, 44, 417, 418, 278, 279, - 44, 15, 54, 54, 278, 20, 374, 380, 376, 107, - 108, 374, 110, 376, 54, 295, 296, 438, 439, 54, - 54, 295, 296, 54, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 54, 142, 54, 45, 415, 45, 417, - 418, 151, 415, 45, 417, 418, 154, 45, 54, 157, - 54, 341, 160, 374, 151, 376, 164, 341, 166, 54, - 438, 439, 6, 6, 248, 438, 439, 6, 417, 202, - -1, -1, -1, 406, -1, 408, -1, 410, -1, 374, - -1, 376, 248, -1, 374, 193, 376, 197, -1, 379, - 374, 151, 376, -1, 415, -1, 417, 418, 206, 151, - 197, -1, 212, 213, -1, -1, 216, -1, -1, -1, - -1, 295, 296, -1, -1, 212, 213, 438, 439, 216, - 415, -1, 417, 418, -1, 415, -1, 417, 418, 295, - 296, 415, -1, 417, 418, -1, -1, 197, -1, -1, - -1, -1, -1, 438, 439, 197, -1, -1, 438, 439, - -1, -1, 212, 213, 438, 439, 216, 341, 266, -1, - 212, 213, 30, 31, 216, 33, -1, 275, 278, 277, - 58, 59, 280, -1, -1, 341, 64, 65, 66, 67, - 48, 278, -1, 51, 292, -1, -1, -1, -1, -1, - 7, 8, -1, 10, 11, -1, 84, 85, 86, 87, - 88, -1, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 30, 31, -1, 33, -1, 278, -1, - 328, 89, 90, -1, -1, -1, 278, -1, -1, 30, - 31, 48, 33, -1, 51, -1, 37, -1, -1, 56, - 57, -1, 350, 351, 352, 353, -1, 48, -1, -1, - 51, -1, -1, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 374, -1, 376, 375, -1, 377, - 378, -1, 89, 90, -1, 30, 31, 374, 33, 376, - 30, 31, 37, 33, -1, -1, -1, 37, 89, 90, - -1, -1, -1, 48, -1, -1, 51, -1, 48, -1, - -1, 51, -1, -1, -1, 415, -1, 417, 418, -1, - -1, 419, 30, 31, 374, 33, 376, -1, 415, 37, - 417, 418, 374, -1, 376, -1, -1, -1, 438, 439, - 48, -1, -1, 51, 89, 90, -1, -1, -1, 89, - 90, 438, 439, -1, -1, -1, -1, -1, -1, 30, - 31, -1, 33, -1, -1, 415, 37, 417, 418, -1, - -1, -1, -1, 415, 6, 417, 418, 48, -1, -1, - 51, 89, 90, -1, -1, -1, -1, -1, 438, 439, - -1, -1, -1, -1, -1, -1, 438, 439, 30, 31, - 32, 33, 34, 35, 36, -1, 38, 39, 40, 41, - 42, 43, 44, -1, -1, -1, 48, 49, 89, 90, - 52, -1, -1, 30, 31, -1, 33, -1, 30, 31, - 37, 33, -1, -1, -1, 37, 68, 69, -1, -1, - -1, 48, -1, 6, 51, -1, 48, -1, -1, 51, - -1, -1, -1, 85, -1, -1, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 30, 31, 32, - 33, 34, 35, 36, -1, 38, 39, 40, 41, 42, - 43, 44, 89, 90, -1, 48, -1, 89, 90, 52, - -1, 54, 30, 31, -1, 33, -1, -1, -1, 37, - -1, -1, -1, -1, -1, 68, 69, -1, -1, -1, - 48, -1, 6, 51, -1, -1, -1, -1, -1, -1, - -1, -1, 85, -1, -1, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 30, 31, 32, 33, - 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, - 44, 89, 90, -1, 48, 53, -1, 55, 52, -1, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - -1, -1, -1, -1, 68, 69, -1, -1, -1, -1, - -1, 6, -1, 81, 82, 83, 84, 85, 86, 87, - 88, 85, -1, -1, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 30, 31, 32, 33, 34, - 35, 36, -1, 38, 39, 40, 41, 42, 43, 44, - 49, -1, -1, 48, -1, -1, 55, 52, -1, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, - -1, -1, -1, 68, 69, -1, -1, -1, -1, -1, - -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, - 85, -1, -1, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 9, -1, -1, 12, 13, 14, - -1, 16, 17, 18, 19, -1, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, -1, 33, -1, - -1, -1, -1, 38, 39, 40, 41, -1, -1, -1, - -1, 46, 47, 48, -1, -1, -1, -1, -1, -1, - 9, 56, 57, 12, 13, 14, -1, 16, 17, 18, - 19, -1, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, -1, 33, -1, -1, -1, -1, 38, - 39, 40, 41, -1, 89, 90, -1, 46, 47, 48, - -1, -1, -1, -1, -1, -1, 9, 56, 57, 12, - 13, 14, -1, 16, 17, 18, 19, -1, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, -1, - 33, 30, 31, -1, 33, 38, 39, 40, 41, -1, - 89, 90, -1, 46, -1, 48, -1, -1, -1, 48, - -1, -1, 51, 56, 57, -1, -1, 56, 57, -1, + 0, 48, 100, 3, 4, 79, 153, 20, 8, 3, + 4, 46, 284, 46, 284, 284, 200, 79, 3, 4, + 5, 6, 7, 150, 46, 25, 22, 0, 46, 50, + 157, 56, 54, 160, 34, 35, 220, 72, 56, 56, + 34, 35, 50, 32, 33, 93, 35, 92, 195, 49, + 39, 91, 92, 200, 32, 33, 52, 35, 88, 89, + 90, 50, 96, 97, 53, 112, 47, 50, 215, 216, + 91, 92, 50, 220, 46, 53, 87, 46, 92, 79, + 54, 153, 93, 91, 92, 79, 97, 98, 99, 100, + 47, 47, 276, 47, 47, 52, 52, 56, 52, 52, + 47, 101, 91, 92, 48, 52, 46, 92, 32, 33, + 47, 35, 50, 91, 92, 52, 40, 41, 42, 43, + 47, 54, 47, 195, 50, 52, 50, 52, 200, 276, + 50, 47, 54, 47, 58, 59, 52, 284, 52, 46, + 52, 47, 51, 215, 216, 145, 52, 274, 220, 46, + 54, 151, 424, 153, 424, 424, 56, 47, 158, 153, + 47, 161, 52, 46, 46, 52, 46, 91, 92, 296, + 297, 32, 33, 46, 35, 46, 46, 55, 252, 40, + 41, 42, 43, 86, 87, 88, 89, 90, 56, 50, + 252, 191, 205, 56, 56, 195, 46, 381, 46, 383, + 200, 195, 329, 50, 276, 332, 200, 56, 46, 19, + 56, 56, 284, 46, 56, 215, 216, 60, 61, 56, + 220, 215, 216, 51, 47, 97, 220, 301, 302, 26, + 91, 92, 46, 55, 381, 55, 383, 46, 422, 301, + 302, 425, 46, 86, 87, 88, 89, 90, 46, 51, + 47, 378, 252, 50, 51, 51, 51, 46, 252, 46, + 46, 445, 446, 56, 56, 56, 46, 394, 46, 396, + 17, 398, 56, 56, 348, 422, 276, 424, 425, 22, + 56, 56, 276, 56, 284, 285, 348, 56, 56, 387, + 284, 47, 47, 47, 47, 56, 56, 56, 445, 446, + 8, 301, 302, 8, 195, 8, 424, 301, 302, 381, + 205, 383, 109, 110, -1, 112, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 153, 144, 348, -1, + 422, -1, 424, 425, 348, -1, -1, 32, 33, 156, + 35, -1, 159, -1, 39, 162, 413, -1, 415, 166, + 417, 168, 153, 445, 446, 50, -1, -1, 53, -1, + -1, 381, -1, 383, -1, -1, 386, 381, 195, 383, + -1, -1, -1, 200, -1, -1, -1, -1, -1, 196, + -1, -1, -1, -1, -1, -1, -1, -1, 215, 216, + -1, -1, 209, 220, 195, -1, 91, 92, 153, 200, + -1, -1, 422, -1, 424, 425, -1, -1, 422, -1, + 424, 425, -1, -1, 215, 216, -1, -1, -1, 220, + 32, 33, -1, 35, -1, 445, 446, 39, -1, 153, + -1, 445, 446, -1, 46, -1, -1, -1, 50, -1, + 195, 53, 54, -1, -1, 200, -1, -1, 153, 276, + -1, -1, -1, 270, -1, -1, -1, 284, -1, -1, + 215, 216, -1, -1, 281, 220, 283, -1, -1, 286, + -1, 195, -1, -1, -1, 276, 200, -1, -1, 91, + 92, 298, -1, 284, 153, -1, -1, -1, -1, -1, + 195, 215, 216, -1, -1, 200, 220, -1, -1, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 215, 216, -1, -1, -1, 220, -1, 334, -1, -1, + -1, 276, -1, -1, -1, -1, 195, 32, 33, 284, + 35, 200, 32, 33, 39, 35, -1, -1, -1, 39, + 357, 358, 359, 360, -1, 50, 215, 216, 53, -1, + 50, 220, 276, 53, 381, -1, 383, -1, -1, -1, + 284, -1, -1, -1, -1, 382, -1, 384, 385, -1, + -1, 276, -1, -1, -1, -1, -1, -1, -1, 284, + 381, -1, 383, -1, -1, 153, 91, 92, -1, -1, + -1, 91, 92, -1, -1, 422, -1, 424, 425, -1, + -1, -1, -1, -1, -1, -1, -1, 276, -1, 426, + -1, -1, -1, 32, 33, 284, 35, -1, 445, 446, + 39, 422, -1, 424, 425, -1, 381, 195, 383, -1, + -1, 50, 200, -1, 53, 32, 33, -1, 35, -1, + -1, -1, 39, -1, 445, 446, -1, 215, 216, -1, + -1, -1, 220, 50, -1, -1, 53, 381, -1, 383, + -1, 9, 10, -1, 12, 13, -1, 422, -1, 424, + 425, -1, 91, 92, -1, -1, 381, -1, 383, -1, + -1, -1, -1, -1, 32, 33, -1, 35, -1, -1, + 445, 446, -1, -1, 91, 92, -1, -1, 422, -1, + 424, 425, 50, -1, -1, 53, -1, -1, 276, -1, + 58, 59, 381, -1, 383, -1, 284, 422, -1, 424, + 425, 445, 446, -1, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, -1, -1, 8, -1, -1, + 445, 446, -1, 91, 92, -1, -1, -1, -1, -1, + -1, -1, -1, 422, -1, 424, 425, -1, -1, -1, + -1, 32, 33, 34, 35, 36, 37, 38, -1, 40, + 41, 42, 43, 44, 45, 46, 445, 446, -1, 50, + 51, -1, -1, 54, -1, -1, -1, 32, 33, -1, + 35, -1, -1, -1, 39, -1, -1, -1, -1, 70, + 71, -1, -1, -1, -1, 50, -1, 8, 53, -1, + -1, -1, -1, 381, -1, 383, 87, -1, -1, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + -1, 32, 33, 34, 35, 36, 37, 38, -1, 40, + 41, 42, 43, 44, 45, 46, 91, 92, -1, 50, + -1, -1, -1, 54, 422, 56, 424, 425, -1, -1, + -1, 32, 33, -1, 35, -1, -1, -1, 39, 70, + 71, -1, -1, -1, -1, -1, 8, 445, 446, 50, + -1, -1, 53, -1, -1, -1, 87, -1, -1, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 32, 33, 34, 35, 36, 37, 38, -1, 40, 41, + 42, 43, 44, 45, 46, -1, -1, -1, 50, -1, + 91, 92, 54, -1, -1, 32, 33, -1, 35, -1, + -1, -1, 39, -1, -1, -1, -1, -1, 70, 71, + -1, -1, -1, 50, -1, 8, 53, -1, -1, -1, + -1, -1, -1, -1, -1, 87, -1, -1, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 32, + 33, 34, 35, 36, 37, 38, -1, 40, 41, 42, + 43, 44, 45, 46, 91, 92, -1, 50, 55, -1, + 57, 54, -1, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, -1, -1, -1, -1, 70, 71, -1, + -1, -1, -1, -1, -1, -1, 83, 84, 85, 86, + 87, 88, 89, 90, 87, -1, -1, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 3, -1, + -1, -1, -1, -1, -1, -1, 11, -1, -1, 14, + 15, 16, -1, 18, 19, 20, 21, -1, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, + 35, -1, -1, -1, -1, 40, 41, 42, 43, -1, + -1, -1, -1, 48, 49, 50, -1, -1, -1, -1, + -1, 3, 4, 58, 59, -1, -1, -1, -1, 11, + -1, -1, 14, 15, 16, -1, 18, 19, 20, 21, + -1, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, -1, 35, -1, -1, 91, 92, 40, 41, + 42, 43, -1, -1, -1, -1, 48, 3, 50, -1, + -1, -1, -1, -1, -1, 11, 58, 59, 14, 15, + 16, -1, 18, 19, 20, 21, -1, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, -1, 35, + -1, -1, -1, -1, 40, 41, 42, 43, -1, 91, + 92, -1, 48, 49, 50, -1, -1, -1, -1, -1, + 3, 4, 58, 59, -1, -1, -1, -1, 11, -1, + -1, 14, 15, 16, -1, 18, 19, 20, 21, -1, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, -1, 35, -1, -1, 91, 92, 40, 41, 42, + 43, -1, -1, -1, -1, 48, 3, 50, -1, -1, + -1, -1, -1, -1, 11, 58, 59, 14, 15, 16, + -1, 18, 19, 20, 21, -1, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, -1, 35, 32, + 33, -1, 35, 40, 41, 42, 43, -1, 91, 92, + -1, 48, -1, 50, -1, -1, -1, 50, -1, -1, + 53, 58, 59, -1, -1, 58, 59, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + -1, 47, -1, -1, 91, 92, 52, -1, 91, 92, + -1, 57, -1, -1, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 83, 84, 85, + 86, 87, 88, 89, 90, 47, -1, -1, -1, -1, + 52, -1, -1, -1, -1, 57, -1, -1, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, -1, 45, -1, -1, 89, 90, 50, -1, - 89, 90, -1, 55, -1, -1, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, - 82, 83, 84, 85, 86, 87, 88, 45, -1, -1, - -1, -1, 50, -1, -1, -1, -1, 55, -1, -1, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + -1, 83, 84, 85, 86, 87, 88, 89, 90, 47, + -1, -1, -1, -1, 52, -1, -1, -1, -1, 57, + -1, -1, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 83, 84, 85, 86, 87, + 88, 89, 90, 47, -1, -1, -1, -1, 52, -1, + -1, -1, -1, 57, -1, -1, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 47, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 57, -1, -1, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 81, 82, 83, 84, 85, 86, 87, - 88, 45, -1, -1, -1, -1, 50, -1, -1, -1, - -1, 55, -1, -1, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 81, 82, 83, - 84, 85, 86, 87, 88, 45, -1, -1, -1, -1, - 50, -1, -1, -1, -1, 55, -1, -1, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, - -1, 81, 82, 83, 84, 85, 86, 87, 88, 55, - -1, -1, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 45, -1, 81, 82, 83, 84, 85, - 86, 87, 88, 55, -1, -1, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 45, -1, 81, - 82, 83, 84, 85, 86, 87, 88, 55, -1, -1, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + -1, 47, -1, 83, 84, 85, 86, 87, 88, 89, + 90, 57, -1, -1, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 47, -1, 83, 84, 85, + 86, 87, 88, 89, 90, 57, -1, -1, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 47, + -1, 83, 84, 85, 86, 87, 88, 89, 90, 57, + -1, -1, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 47, -1, 83, 84, 85, 86, 87, + 88, 89, 90, 57, -1, -1, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 47, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 57, -1, -1, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 45, -1, 81, 82, 83, 84, 85, 86, 87, - 88, 55, -1, -1, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 45, -1, 81, 82, 83, - 84, 85, 86, 87, 88, 55, -1, -1, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, - -1, 81, 82, 83, 84, 85, 86, 87, 88, 55, - -1, -1, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 45, -1, 81, 82, 83, 84, 85, - 86, 87, 88, 55, -1, -1, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 45, -1, 81, - 82, 83, 84, 85, 86, 87, 88, 55, -1, -1, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + -1, 47, -1, 83, 84, 85, 86, 87, 88, 89, + 90, 57, -1, -1, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 47, -1, 83, 84, 85, + 86, 87, 88, 89, 90, 57, -1, -1, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 47, + -1, 83, 84, 85, 86, 87, 88, 89, 90, 57, + -1, -1, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 47, -1, 83, 84, 85, 86, 87, + 88, 89, 90, 57, -1, -1, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 51, -1, -1, + -1, -1, -1, 57, -1, -1, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 51, -1, -1, + -1, -1, -1, 57, -1, -1, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 51, -1, -1, + -1, -1, -1, 57, -1, -1, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 51, -1, -1, + -1, -1, -1, 57, -1, -1, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 51, -1, -1, + -1, -1, -1, 57, -1, -1, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 90, 52, -1, -1, + -1, -1, 57, -1, -1, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 83, 84, + 85, 86, 87, 88, 89, 90, 56, 57, -1, -1, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 45, -1, 81, 82, 83, 84, 85, 86, 87, - 88, 55, -1, -1, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 45, -1, 81, 82, 83, - 84, 85, 86, 87, 88, 55, -1, -1, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 81, 82, 83, 84, 85, 86, 87, 88, 49, - -1, -1, -1, -1, -1, 55, -1, -1, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 81, 82, 83, 84, 85, 86, 87, 88, 49, - -1, -1, -1, -1, -1, 55, -1, -1, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 81, 82, 83, 84, 85, 86, 87, 88, 49, - -1, -1, -1, -1, -1, 55, -1, -1, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 81, 82, 83, 84, 85, 86, 87, 88, 49, - -1, -1, -1, -1, -1, 55, -1, -1, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 81, 82, 83, 84, 85, 86, 87, 88, 50, - -1, -1, -1, -1, 55, -1, -1, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 81, 82, 83, 84, 85, 86, 87, 88, 54, 55, - -1, -1, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 81, 82, 83, 84, 85, - 86, 87, 88, 54, 55, -1, -1, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 81, 82, 83, 84, 85, 86, 87, 88, 54, 55, - -1, -1, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 55, -1, -1, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 81, 82, 83, 84, 85, - 86, 87, 88, -1, -1, -1, -1, -1, 81, 82, - 83, 84, 85, 86, 87, 88, 58, 59, -1, 61, - 62, 63, 64, 65, 66, 67, 58, 59, -1, -1, - 62, 63, 64, 65, 66, 67, -1, -1, -1, 81, - 82, 83, 84, 85, 86, 87, 88, -1, -1, 81, - 82, 83, 84, 85, 86, 87, 88, 58, 59, -1, - -1, 62, 63, 64, 65, 66, 67, 58, 59, -1, - -1, 62, 63, 64, 65, 66, 67, -1, -1, -1, - -1, 82, 83, 84, 85, 86, 87, 88, -1, -1, - -1, 82, -1, 84, 85, 86, 87, 88, 58, 59, - -1, -1, 62, 63, 64, 65, 66, 67, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 84, 85, 86, 87, 88 + -1, -1, -1, 83, 84, 85, 86, 87, 88, 89, + 90, 56, 57, -1, -1, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 83, 84, + 85, 86, 87, 88, 89, 90, 56, 57, -1, -1, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 57, -1, -1, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 83, 84, 85, 86, 87, 88, 89, + 90, -1, -1, -1, -1, -1, 83, 84, 85, 86, + 87, 88, 89, 90, 60, 61, -1, 63, 64, 65, + 66, 67, 68, 69, 60, 61, -1, -1, 64, 65, + 66, 67, 68, 69, -1, -1, -1, 83, 84, 85, + 86, 87, 88, 89, 90, -1, -1, 83, 84, 85, + 86, 87, 88, 89, 90, 60, 61, -1, -1, 64, + 65, 66, 67, 68, 69, 60, 61, -1, -1, 64, + 65, 66, 67, 68, 69, -1, -1, -1, -1, 84, + 85, 86, 87, 88, 89, 90, -1, -1, -1, 84, + -1, 86, 87, 88, 89, 90, 60, 61, -1, -1, + 64, 65, 66, 67, 68, 69, 60, 61, -1, -1, + -1, -1, 66, 67, 68, 69, -1, -1, -1, -1, + -1, -1, 86, 87, 88, 89, 90, -1, -1, -1, + -1, -1, 86, 87, 88, 89, 90 }; const unsigned char parser::yystos_[] = { - 0, 3, 4, 5, 90, 109, 110, 111, 112, 113, - 114, 115, 116, 180, 89, 180, 181, 181, 44, 0, - 111, 112, 113, 44, 70, 54, 54, 91, 183, 160, - 180, 6, 30, 31, 32, 33, 34, 35, 36, 38, - 39, 40, 41, 42, 43, 44, 48, 52, 68, 69, - 85, 88, 92, 93, 94, 95, 96, 97, 98, 145, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 45, 45, 50, - 48, 180, 181, 48, 180, 181, 48, 44, 44, 145, - 48, 49, 145, 161, 162, 180, 145, 145, 94, 95, - 90, 54, 55, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 81, 82, 83, 84, 85, 86, 87, - 88, 37, 48, 51, 157, 158, 180, 181, 44, 52, - 54, 46, 118, 180, 48, 44, 52, 48, 44, 52, - 48, 145, 145, 45, 50, 145, 50, 49, 145, 145, - 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, - 145, 145, 145, 145, 145, 145, 145, 145, 180, 52, - 161, 162, 180, 9, 12, 13, 14, 16, 17, 18, - 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 47, 48, 56, 57, 117, 118, 119, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 147, 148, 149, 155, 156, 166, 167, 170, 174, - 175, 176, 177, 180, 145, 161, 180, 145, 161, 180, - 145, 45, 45, 145, 49, 145, 53, 49, 180, 45, - 44, 145, 54, 44, 54, 44, 117, 44, 44, 44, - 44, 85, 183, 187, 53, 54, 54, 54, 145, 54, - 44, 44, 48, 155, 156, 170, 170, 47, 117, 54, - 54, 54, 54, 54, 7, 8, 10, 11, 56, 57, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 49, 45, 44, 49, 45, 44, 49, 50, 49, - 145, 161, 54, 45, 145, 17, 145, 120, 147, 148, - 149, 170, 180, 145, 53, 53, 54, 161, 161, 145, - 44, 44, 44, 44, 145, 145, 145, 145, 145, 145, - 145, 145, 145, 145, 145, 49, 161, 49, 161, 49, - 145, 44, 45, 54, 45, 44, 45, 54, 20, 50, - 45, 45, 45, 145, 145, 145, 145, 44, 45, 44, - 45, 44, 45, 161, 117, 145, 117, 145, 146, 145, - 180, 118, 54, 54, 45, 45, 50, 45, 50, 45, - 50, 161, 161, 161, 45, 15, 45, 54, 45, 20, - 54, 54, 162, 54, 162, 54, 162, 45, 45, 45, - 117, 54, 120, 117, 145, 45, 45, 45, 45, 45, - 54, 54, 54, 117, 117 + 0, 3, 4, 5, 6, 7, 92, 111, 112, 113, + 114, 115, 116, 117, 118, 183, 91, 183, 184, 184, + 46, 0, 113, 114, 115, 46, 72, 56, 56, 93, + 186, 163, 183, 8, 32, 33, 34, 35, 36, 37, + 38, 40, 41, 42, 43, 44, 45, 46, 50, 54, + 70, 71, 87, 90, 94, 95, 96, 97, 98, 99, + 100, 148, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 47, + 47, 52, 50, 183, 184, 50, 183, 184, 50, 46, + 46, 148, 50, 51, 148, 164, 165, 183, 148, 148, + 96, 97, 92, 56, 57, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 83, 84, 85, 86, 87, + 88, 89, 90, 39, 50, 53, 160, 161, 183, 184, + 46, 54, 56, 48, 121, 183, 50, 46, 54, 50, + 46, 54, 50, 148, 148, 47, 52, 148, 52, 51, + 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, + 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, + 183, 54, 164, 165, 183, 3, 11, 14, 15, 16, + 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 49, 50, 58, 59, 119, 120, 121, + 122, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 150, 151, 152, 158, 159, + 169, 170, 173, 177, 178, 179, 180, 183, 148, 164, + 183, 148, 164, 183, 148, 47, 47, 148, 51, 148, + 55, 51, 183, 47, 46, 4, 122, 148, 56, 46, + 56, 46, 119, 46, 46, 46, 46, 87, 186, 190, + 55, 56, 56, 56, 148, 56, 46, 46, 50, 158, + 159, 173, 173, 49, 119, 56, 56, 56, 56, 56, + 9, 10, 12, 13, 58, 59, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 51, 47, 46, + 51, 47, 46, 51, 52, 51, 148, 164, 4, 56, + 47, 148, 19, 148, 123, 150, 151, 152, 173, 183, + 148, 55, 55, 56, 164, 164, 148, 46, 46, 46, + 46, 148, 148, 148, 148, 148, 148, 148, 148, 148, + 148, 148, 51, 164, 51, 164, 51, 148, 46, 47, + 56, 47, 46, 47, 56, 22, 52, 47, 47, 47, + 148, 148, 148, 148, 46, 47, 46, 47, 46, 47, + 164, 119, 148, 119, 148, 149, 148, 183, 121, 56, + 56, 47, 47, 52, 47, 52, 47, 52, 164, 164, + 164, 47, 17, 47, 56, 47, 22, 56, 56, 165, + 56, 165, 56, 165, 47, 47, 47, 119, 56, 123, + 119, 148, 47, 47, 47, 47, 47, 56, 56, 56, + 119, 119 }; const unsigned char parser::yyr1_[] = { - 0, 108, 109, 109, 110, 110, 110, 110, 110, 110, - 111, 112, 113, 113, 113, 114, 115, 116, 117, 117, - 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, - 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, - 117, 117, 117, 118, 118, 119, 119, 120, 120, 120, - 120, 121, 121, 122, 122, 122, 123, 124, 124, 125, - 126, 126, 127, 127, 128, 129, 129, 130, 131, 132, - 133, 134, 135, 135, 136, 137, 137, 138, 139, 140, - 141, 141, 142, 143, 144, 145, 145, 145, 146, 146, - 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, - 147, 148, 148, 149, 149, 150, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, - 151, 151, 151, 151, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 153, 154, 155, 155, 156, 156, - 157, 157, 157, 157, 157, 157, 158, 158, 158, 158, - 159, 160, 160, 160, 161, 161, 162, 162, 163, 164, - 165, 165, 166, 167, 168, 169, 170, 170, 170, 170, - 170, 170, 170, 170, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 181, 182, 183, 184, - 185, 186, 186, 187, 187, 187, 187, 187, 188, 189 + 0, 110, 111, 111, 112, 112, 112, 112, 112, 112, + 113, 114, 115, 115, 115, 115, 115, 116, 117, 118, + 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 120, 120, 121, 121, + 122, 122, 123, 123, 123, 123, 124, 124, 125, 125, + 125, 126, 127, 127, 128, 129, 129, 130, 130, 131, + 132, 132, 133, 134, 135, 136, 137, 138, 138, 139, + 140, 140, 141, 142, 143, 144, 144, 145, 146, 147, + 148, 148, 148, 149, 149, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 151, 151, 152, 152, + 153, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 156, + 157, 158, 158, 159, 159, 160, 160, 160, 160, 160, + 160, 161, 161, 161, 161, 162, 163, 163, 163, 164, + 164, 165, 165, 166, 167, 168, 168, 169, 170, 171, + 172, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 184, 185, 186, 187, 188, 189, 189, 190, 190, + 190, 190, 190, 191, 192 }; const signed char parser::yyr2_[] = { 0, 2, 1, 0, 2, 2, 2, 1, 1, 1, - 3, 3, 1, 1, 1, 5, 4, 5, 1, 1, + 3, 3, 1, 1, 1, 1, 1, 5, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 3, 2, 2, 1, 1, 1, 1, - 0, 2, 2, 2, 2, 2, 6, 8, 6, 3, - 8, 6, 8, 6, 2, 2, 4, 5, 7, 5, - 7, 9, 7, 9, 5, 3, 3, 2, 2, 2, - 3, 2, 2, 5, 5, 1, 1, 1, 1, 0, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 2, 2, 2, 2, 5, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 3, 2, 3, 2, + 2, 1, 1, 1, 1, 0, 2, 2, 2, 2, + 2, 6, 8, 6, 3, 8, 6, 8, 6, 2, + 2, 4, 5, 7, 5, 7, 9, 7, 9, 5, + 3, 3, 2, 2, 2, 3, 2, 2, 5, 5, + 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, + 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 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, 1, 1, 2, 2, - 4, 6, 5, 7, 5, 7, 8, 9, 9, 9, - 3, 3, 1, 0, 1, 0, 3, 1, 4, 4, - 2, 3, 4, 3, 2, 3, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, - 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 7, 2, 1, 2, 1, 1, 1, 1, 1, 1 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 2, 1, 1, 2, 2, 4, 6, 5, 7, 5, + 7, 8, 9, 9, 9, 3, 3, 1, 0, 1, + 0, 3, 1, 4, 4, 2, 3, 4, 3, 2, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, + 1, 1, 1, 1, 1, 7, 2, 1, 2, 1, + 1, 1, 1, 1, 1 }; @@ -4486,28 +4581,29 @@ namespace xsk { namespace gsc { namespace s4 { const short parser::yyrline_[] = { - 0, 255, 255, 256, 260, 262, 264, 266, 268, 270, - 275, 279, 284, 285, 286, 290, 295, 300, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 333, 334, 338, 340, 345, 347, 349, - 352, 356, 358, 363, 365, 367, 372, 377, 379, 384, - 389, 391, 396, 398, 403, 408, 410, 415, 420, 425, - 430, 435, 440, 442, 447, 452, 454, 459, 464, 469, - 474, 476, 481, 486, 491, 496, 497, 498, 502, 503, - 507, 509, 511, 513, 515, 517, 519, 521, 523, 525, - 527, 532, 534, 539, 541, 546, 551, 553, 555, 557, - 559, 561, 563, 565, 567, 569, 571, 573, 575, 577, - 579, 581, 583, 585, 590, 591, 592, 593, 594, 595, - 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, - 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, - 616, 617, 618, 619, 623, 628, 633, 634, 637, 638, - 642, 644, 646, 648, 650, 652, 657, 659, 661, 663, - 668, 673, 675, 678, 682, 685, 689, 691, 696, 701, - 706, 708, 713, 718, 723, 728, 733, 734, 735, 736, - 737, 738, 739, 740, 741, 745, 750, 755, 760, 765, - 770, 775, 780, 785, 790, 795, 797, 802, 807, 812, - 817, 822, 824, 829, 831, 833, 835, 837, 842, 847 + 0, 258, 258, 259, 263, 265, 267, 269, 271, 273, + 278, 282, 287, 288, 289, 290, 291, 295, 300, 305, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 334, 335, 339, 340, 344, 345, + 349, 351, 356, 358, 360, 363, 367, 369, 374, 376, + 378, 383, 388, 390, 395, 400, 402, 407, 409, 414, + 419, 421, 426, 431, 436, 441, 446, 451, 453, 458, + 463, 465, 470, 475, 480, 485, 487, 492, 497, 502, + 507, 508, 509, 513, 514, 518, 520, 522, 524, 526, + 528, 530, 532, 534, 536, 538, 543, 545, 550, 552, + 557, 562, 564, 566, 568, 570, 572, 574, 576, 578, + 580, 582, 584, 586, 588, 590, 592, 594, 596, 601, + 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, + 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, + 622, 623, 624, 625, 626, 627, 628, 629, 630, 634, + 639, 644, 645, 648, 649, 653, 655, 657, 659, 661, + 663, 668, 670, 672, 674, 679, 684, 686, 689, 693, + 696, 700, 702, 707, 712, 717, 719, 724, 729, 734, + 739, 744, 745, 746, 747, 748, 749, 750, 751, 752, + 756, 761, 766, 771, 776, 781, 786, 791, 796, 801, + 806, 808, 813, 818, 823, 828, 833, 835, 840, 842, + 844, 846, 848, 853, 858 }; void @@ -4540,9 +4636,9 @@ namespace xsk { namespace gsc { namespace s4 { #line 13 "parser.ypp" } } } // xsk::gsc::s4 -#line 4544 "parser.cpp" +#line 4640 "parser.cpp" -#line 851 "parser.ypp" +#line 862 "parser.ypp" void xsk::gsc::s4::parser::error(const xsk::gsc::location& loc, const std::string& msg) diff --git a/src/s4/xsk/parser.hpp b/src/s4/xsk/parser.hpp index ec0454b1..8a85866e 100644 --- a/src/s4/xsk/parser.hpp +++ b/src/s4/xsk/parser.hpp @@ -586,6 +586,7 @@ namespace xsk { namespace gsc { namespace s4 { // stmt_ifelse char dummy56[sizeof (ast::stmt_ifelse::ptr)]; + // stmt_dev // stmt_block // stmt_list char dummy57[sizeof (ast::stmt_list::ptr)]; @@ -685,111 +686,113 @@ namespace xsk { namespace gsc { namespace s4 { S4EOF = 0, // "end of file" S4error = 1, // error S4UNDEF = 2, // "invalid token" - INLINE = 3, // "#inline" - INCLUDE = 4, // "#include" - USINGTREE = 5, // "#using_animtree" - ANIMTREE = 6, // "#animtree" - ENDON = 7, // "endon" - NOTIFY = 8, // "notify" - WAIT = 9, // "wait" - WAITTILL = 10, // "waittill" - WAITTILLMATCH = 11, // "waittillmatch" - WAITTILLFRAMEEND = 12, // "waittillframeend" - WAITFRAME = 13, // "waitframe" - IF = 14, // "if" - ELSE = 15, // "else" - DO = 16, // "do" - WHILE = 17, // "while" - FOR = 18, // "for" - FOREACH = 19, // "foreach" - IN = 20, // "in" - SWITCH = 21, // "switch" - CASE = 22, // "case" - DEFAULT = 23, // "default" - BREAK = 24, // "break" - CONTINUE = 25, // "continue" - RETURN = 26, // "return" - BREAKPOINT = 27, // "breakpoint" - PROFBEGIN = 28, // "prof_begin" - PROFEND = 29, // "prof_end" - THREAD = 30, // "thread" - CHILDTHREAD = 31, // "childthread" - THISTHREAD = 32, // "thisthread" - CALL = 33, // "call" - TRUE = 34, // "true" - FALSE = 35, // "false" - UNDEFINED = 36, // "undefined" - SIZE = 37, // ".size" - GAME = 38, // "game" - SELF = 39, // "self" - ANIM = 40, // "anim" - LEVEL = 41, // "level" - ISDEFINED = 42, // "isdefined" - ISTRUE = 43, // "istrue" - LPAREN = 44, // "(" - RPAREN = 45, // ")" - LBRACE = 46, // "{" - RBRACE = 47, // "}" - LBRACKET = 48, // "[" - RBRACKET = 49, // "]" - COMMA = 50, // "," - DOT = 51, // "." - DOUBLECOLON = 52, // "::" - COLON = 53, // ":" - SEMICOLON = 54, // ";" - QMARK = 55, // "?" - INCREMENT = 56, // "++" - DECREMENT = 57, // "--" - LSHIFT = 58, // "<<" - RSHIFT = 59, // ">>" - OR = 60, // "||" - AND = 61, // "&&" - EQUALITY = 62, // "==" - INEQUALITY = 63, // "!=" - LESS_EQUAL = 64, // "<=" - GREATER_EQUAL = 65, // ">=" - LESS = 66, // "<" - GREATER = 67, // ">" - NOT = 68, // "!" - COMPLEMENT = 69, // "~" - ASSIGN = 70, // "=" - ASSIGN_ADD = 71, // "+=" - ASSIGN_SUB = 72, // "-=" - ASSIGN_MUL = 73, // "*=" - ASSIGN_DIV = 74, // "/=" - ASSIGN_MOD = 75, // "%=" - ASSIGN_BW_OR = 76, // "|=" - ASSIGN_BW_AND = 77, // "&=" - ASSIGN_BW_EXOR = 78, // "^=" - ASSIGN_RSHIFT = 79, // ">>=" - ASSIGN_LSHIFT = 80, // "<<=" - BITWISE_OR = 81, // "|" - BITWISE_AND = 82, // "&" - BITWISE_EXOR = 83, // "^" - ADD = 84, // "+" - SUB = 85, // "-" - MUL = 86, // "*" - DIV = 87, // "/" - MOD = 88, // "%" - PATH = 89, // "path" - IDENTIFIER = 90, // "identifier" - STRING = 91, // "string literal" - ISTRING = 92, // "localized string" - COLOR = 93, // "color" - FLOAT = 94, // "float" - INT_DEC = 95, // "int" - INT_OCT = 96, // "octal int" - INT_BIN = 97, // "binary int" - INT_HEX = 98, // "hexadecimal int" - ADD_ARRAY = 99, // ADD_ARRAY - THEN = 100, // THEN - TERN = 101, // TERN - NEG = 102, // NEG - ANIMREF = 103, // ANIMREF - PREINC = 104, // PREINC - PREDEC = 105, // PREDEC - POSTINC = 106, // POSTINC - POSTDEC = 107 // POSTDEC + DEVBEGIN = 3, // "/#" + DEVEND = 4, // "#/" + INLINE = 5, // "#inline" + INCLUDE = 6, // "#include" + USINGTREE = 7, // "#using_animtree" + ANIMTREE = 8, // "#animtree" + ENDON = 9, // "endon" + NOTIFY = 10, // "notify" + WAIT = 11, // "wait" + WAITTILL = 12, // "waittill" + WAITTILLMATCH = 13, // "waittillmatch" + WAITTILLFRAMEEND = 14, // "waittillframeend" + WAITFRAME = 15, // "waitframe" + IF = 16, // "if" + ELSE = 17, // "else" + DO = 18, // "do" + WHILE = 19, // "while" + FOR = 20, // "for" + FOREACH = 21, // "foreach" + IN = 22, // "in" + SWITCH = 23, // "switch" + CASE = 24, // "case" + DEFAULT = 25, // "default" + BREAK = 26, // "break" + CONTINUE = 27, // "continue" + RETURN = 28, // "return" + BREAKPOINT = 29, // "breakpoint" + PROFBEGIN = 30, // "prof_begin" + PROFEND = 31, // "prof_end" + THREAD = 32, // "thread" + CHILDTHREAD = 33, // "childthread" + THISTHREAD = 34, // "thisthread" + CALL = 35, // "call" + TRUE = 36, // "true" + FALSE = 37, // "false" + UNDEFINED = 38, // "undefined" + SIZE = 39, // ".size" + GAME = 40, // "game" + SELF = 41, // "self" + ANIM = 42, // "anim" + LEVEL = 43, // "level" + ISDEFINED = 44, // "isdefined" + ISTRUE = 45, // "istrue" + LPAREN = 46, // "(" + RPAREN = 47, // ")" + LBRACE = 48, // "{" + RBRACE = 49, // "}" + LBRACKET = 50, // "[" + RBRACKET = 51, // "]" + COMMA = 52, // "," + DOT = 53, // "." + DOUBLECOLON = 54, // "::" + COLON = 55, // ":" + SEMICOLON = 56, // ";" + QMARK = 57, // "?" + INCREMENT = 58, // "++" + DECREMENT = 59, // "--" + LSHIFT = 60, // "<<" + RSHIFT = 61, // ">>" + OR = 62, // "||" + AND = 63, // "&&" + EQUALITY = 64, // "==" + INEQUALITY = 65, // "!=" + LESS_EQUAL = 66, // "<=" + GREATER_EQUAL = 67, // ">=" + LESS = 68, // "<" + GREATER = 69, // ">" + NOT = 70, // "!" + COMPLEMENT = 71, // "~" + ASSIGN = 72, // "=" + ASSIGN_ADD = 73, // "+=" + ASSIGN_SUB = 74, // "-=" + ASSIGN_MUL = 75, // "*=" + ASSIGN_DIV = 76, // "/=" + ASSIGN_MOD = 77, // "%=" + ASSIGN_BW_OR = 78, // "|=" + ASSIGN_BW_AND = 79, // "&=" + ASSIGN_BW_EXOR = 80, // "^=" + ASSIGN_RSHIFT = 81, // ">>=" + ASSIGN_LSHIFT = 82, // "<<=" + BITWISE_OR = 83, // "|" + BITWISE_AND = 84, // "&" + BITWISE_EXOR = 85, // "^" + ADD = 86, // "+" + SUB = 87, // "-" + MUL = 88, // "*" + DIV = 89, // "/" + MOD = 90, // "%" + PATH = 91, // "path" + IDENTIFIER = 92, // "identifier" + STRING = 93, // "string literal" + ISTRING = 94, // "localized string" + COLOR = 95, // "color" + FLOAT = 96, // "float" + INT_DEC = 97, // "int" + INT_OCT = 98, // "octal int" + INT_BIN = 99, // "binary int" + INT_HEX = 100, // "hexadecimal int" + ADD_ARRAY = 101, // ADD_ARRAY + THEN = 102, // THEN + TERN = 103, // TERN + NEG = 104, // NEG + ANIMREF = 105, // ANIMREF + PREINC = 106, // PREINC + PREDEC = 107, // PREDEC + POSTINC = 108, // POSTINC + POSTDEC = 109 // POSTDEC }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; @@ -806,198 +809,201 @@ namespace xsk { namespace gsc { namespace s4 { { enum symbol_kind_type { - YYNTOKENS = 108, ///< Number of tokens. + YYNTOKENS = 110, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error S_YYUNDEF = 2, // "invalid token" - S_INLINE = 3, // "#inline" - S_INCLUDE = 4, // "#include" - S_USINGTREE = 5, // "#using_animtree" - S_ANIMTREE = 6, // "#animtree" - S_ENDON = 7, // "endon" - S_NOTIFY = 8, // "notify" - S_WAIT = 9, // "wait" - S_WAITTILL = 10, // "waittill" - S_WAITTILLMATCH = 11, // "waittillmatch" - S_WAITTILLFRAMEEND = 12, // "waittillframeend" - S_WAITFRAME = 13, // "waitframe" - S_IF = 14, // "if" - S_ELSE = 15, // "else" - S_DO = 16, // "do" - S_WHILE = 17, // "while" - S_FOR = 18, // "for" - S_FOREACH = 19, // "foreach" - S_IN = 20, // "in" - S_SWITCH = 21, // "switch" - S_CASE = 22, // "case" - S_DEFAULT = 23, // "default" - S_BREAK = 24, // "break" - S_CONTINUE = 25, // "continue" - S_RETURN = 26, // "return" - S_BREAKPOINT = 27, // "breakpoint" - S_PROFBEGIN = 28, // "prof_begin" - S_PROFEND = 29, // "prof_end" - S_THREAD = 30, // "thread" - S_CHILDTHREAD = 31, // "childthread" - S_THISTHREAD = 32, // "thisthread" - S_CALL = 33, // "call" - S_TRUE = 34, // "true" - S_FALSE = 35, // "false" - S_UNDEFINED = 36, // "undefined" - S_SIZE = 37, // ".size" - S_GAME = 38, // "game" - S_SELF = 39, // "self" - S_ANIM = 40, // "anim" - S_LEVEL = 41, // "level" - S_ISDEFINED = 42, // "isdefined" - S_ISTRUE = 43, // "istrue" - S_LPAREN = 44, // "(" - S_RPAREN = 45, // ")" - S_LBRACE = 46, // "{" - S_RBRACE = 47, // "}" - S_LBRACKET = 48, // "[" - S_RBRACKET = 49, // "]" - S_COMMA = 50, // "," - S_DOT = 51, // "." - S_DOUBLECOLON = 52, // "::" - S_COLON = 53, // ":" - S_SEMICOLON = 54, // ";" - S_QMARK = 55, // "?" - S_INCREMENT = 56, // "++" - S_DECREMENT = 57, // "--" - S_LSHIFT = 58, // "<<" - S_RSHIFT = 59, // ">>" - S_OR = 60, // "||" - S_AND = 61, // "&&" - S_EQUALITY = 62, // "==" - S_INEQUALITY = 63, // "!=" - S_LESS_EQUAL = 64, // "<=" - S_GREATER_EQUAL = 65, // ">=" - S_LESS = 66, // "<" - S_GREATER = 67, // ">" - S_NOT = 68, // "!" - S_COMPLEMENT = 69, // "~" - S_ASSIGN = 70, // "=" - S_ASSIGN_ADD = 71, // "+=" - S_ASSIGN_SUB = 72, // "-=" - S_ASSIGN_MUL = 73, // "*=" - S_ASSIGN_DIV = 74, // "/=" - S_ASSIGN_MOD = 75, // "%=" - S_ASSIGN_BW_OR = 76, // "|=" - S_ASSIGN_BW_AND = 77, // "&=" - S_ASSIGN_BW_EXOR = 78, // "^=" - S_ASSIGN_RSHIFT = 79, // ">>=" - S_ASSIGN_LSHIFT = 80, // "<<=" - S_BITWISE_OR = 81, // "|" - S_BITWISE_AND = 82, // "&" - S_BITWISE_EXOR = 83, // "^" - S_ADD = 84, // "+" - S_SUB = 85, // "-" - S_MUL = 86, // "*" - S_DIV = 87, // "/" - S_MOD = 88, // "%" - S_PATH = 89, // "path" - S_IDENTIFIER = 90, // "identifier" - S_STRING = 91, // "string literal" - S_ISTRING = 92, // "localized string" - S_COLOR = 93, // "color" - S_FLOAT = 94, // "float" - S_INT_DEC = 95, // "int" - S_INT_OCT = 96, // "octal int" - S_INT_BIN = 97, // "binary int" - S_INT_HEX = 98, // "hexadecimal int" - S_ADD_ARRAY = 99, // ADD_ARRAY - S_THEN = 100, // THEN - S_TERN = 101, // TERN - S_NEG = 102, // NEG - S_ANIMREF = 103, // ANIMREF - S_PREINC = 104, // PREINC - S_PREDEC = 105, // PREDEC - S_POSTINC = 106, // POSTINC - S_POSTDEC = 107, // POSTDEC - S_YYACCEPT = 108, // $accept - S_root = 109, // root - S_program = 110, // program - S_inline = 111, // inline - S_include = 112, // include - S_declaration = 113, // declaration - S_decl_usingtree = 114, // decl_usingtree - S_decl_constant = 115, // decl_constant - S_decl_thread = 116, // decl_thread - S_stmt = 117, // stmt - S_stmt_block = 118, // stmt_block - S_stmt_list = 119, // stmt_list - S_stmt_expr = 120, // stmt_expr - S_stmt_call = 121, // stmt_call - S_stmt_assign = 122, // stmt_assign - S_stmt_endon = 123, // stmt_endon - S_stmt_notify = 124, // stmt_notify - S_stmt_wait = 125, // stmt_wait - S_stmt_waittill = 126, // stmt_waittill - S_stmt_waittillmatch = 127, // stmt_waittillmatch - S_stmt_waittillframeend = 128, // stmt_waittillframeend - S_stmt_waitframe = 129, // stmt_waitframe - S_stmt_if = 130, // stmt_if - S_stmt_ifelse = 131, // stmt_ifelse - S_stmt_while = 132, // stmt_while - S_stmt_dowhile = 133, // stmt_dowhile - S_stmt_for = 134, // stmt_for - S_stmt_foreach = 135, // stmt_foreach - S_stmt_switch = 136, // stmt_switch - S_stmt_case = 137, // stmt_case - S_stmt_default = 138, // stmt_default - S_stmt_break = 139, // stmt_break - S_stmt_continue = 140, // stmt_continue - S_stmt_return = 141, // stmt_return - S_stmt_breakpoint = 142, // stmt_breakpoint - S_stmt_prof_begin = 143, // stmt_prof_begin - S_stmt_prof_end = 144, // stmt_prof_end - S_expr = 145, // expr - S_expr_or_empty = 146, // expr_or_empty - S_expr_assign = 147, // expr_assign - S_expr_increment = 148, // expr_increment - S_expr_decrement = 149, // expr_decrement - S_expr_ternary = 150, // expr_ternary - S_expr_binary = 151, // expr_binary - S_expr_primitive = 152, // expr_primitive - S_expr_complement = 153, // expr_complement - S_expr_not = 154, // expr_not - S_expr_call = 155, // expr_call - S_expr_method = 156, // expr_method - S_expr_function = 157, // expr_function - S_expr_pointer = 158, // expr_pointer - S_expr_add_array = 159, // expr_add_array - S_expr_parameters = 160, // expr_parameters - S_expr_arguments = 161, // expr_arguments - S_expr_arguments_no_empty = 162, // expr_arguments_no_empty - S_expr_isdefined = 163, // expr_isdefined - S_expr_istrue = 164, // expr_istrue - S_expr_reference = 165, // expr_reference - S_expr_array = 166, // expr_array - S_expr_field = 167, // expr_field - S_expr_size = 168, // expr_size - S_expr_paren = 169, // expr_paren - S_expr_object = 170, // expr_object - S_expr_thisthread = 171, // expr_thisthread - S_expr_empty_array = 172, // expr_empty_array - S_expr_undefined = 173, // expr_undefined - S_expr_game = 174, // expr_game - S_expr_self = 175, // expr_self - S_expr_anim = 176, // expr_anim - S_expr_level = 177, // expr_level - S_expr_animation = 178, // expr_animation - S_expr_animtree = 179, // expr_animtree - S_expr_identifier = 180, // expr_identifier - S_expr_path = 181, // expr_path - S_expr_istring = 182, // expr_istring - S_expr_string = 183, // expr_string - S_expr_color = 184, // expr_color - S_expr_vector = 185, // expr_vector - S_expr_float = 186, // expr_float - S_expr_integer = 187, // expr_integer - S_expr_false = 188, // expr_false - S_expr_true = 189 // expr_true + S_DEVBEGIN = 3, // "/#" + S_DEVEND = 4, // "#/" + S_INLINE = 5, // "#inline" + S_INCLUDE = 6, // "#include" + S_USINGTREE = 7, // "#using_animtree" + S_ANIMTREE = 8, // "#animtree" + S_ENDON = 9, // "endon" + S_NOTIFY = 10, // "notify" + S_WAIT = 11, // "wait" + S_WAITTILL = 12, // "waittill" + S_WAITTILLMATCH = 13, // "waittillmatch" + S_WAITTILLFRAMEEND = 14, // "waittillframeend" + S_WAITFRAME = 15, // "waitframe" + S_IF = 16, // "if" + S_ELSE = 17, // "else" + S_DO = 18, // "do" + S_WHILE = 19, // "while" + S_FOR = 20, // "for" + S_FOREACH = 21, // "foreach" + S_IN = 22, // "in" + S_SWITCH = 23, // "switch" + S_CASE = 24, // "case" + S_DEFAULT = 25, // "default" + S_BREAK = 26, // "break" + S_CONTINUE = 27, // "continue" + S_RETURN = 28, // "return" + S_BREAKPOINT = 29, // "breakpoint" + S_PROFBEGIN = 30, // "prof_begin" + S_PROFEND = 31, // "prof_end" + S_THREAD = 32, // "thread" + S_CHILDTHREAD = 33, // "childthread" + S_THISTHREAD = 34, // "thisthread" + S_CALL = 35, // "call" + S_TRUE = 36, // "true" + S_FALSE = 37, // "false" + S_UNDEFINED = 38, // "undefined" + S_SIZE = 39, // ".size" + S_GAME = 40, // "game" + S_SELF = 41, // "self" + S_ANIM = 42, // "anim" + S_LEVEL = 43, // "level" + S_ISDEFINED = 44, // "isdefined" + S_ISTRUE = 45, // "istrue" + S_LPAREN = 46, // "(" + S_RPAREN = 47, // ")" + S_LBRACE = 48, // "{" + S_RBRACE = 49, // "}" + S_LBRACKET = 50, // "[" + S_RBRACKET = 51, // "]" + S_COMMA = 52, // "," + S_DOT = 53, // "." + S_DOUBLECOLON = 54, // "::" + S_COLON = 55, // ":" + S_SEMICOLON = 56, // ";" + S_QMARK = 57, // "?" + S_INCREMENT = 58, // "++" + S_DECREMENT = 59, // "--" + S_LSHIFT = 60, // "<<" + S_RSHIFT = 61, // ">>" + S_OR = 62, // "||" + S_AND = 63, // "&&" + S_EQUALITY = 64, // "==" + S_INEQUALITY = 65, // "!=" + S_LESS_EQUAL = 66, // "<=" + S_GREATER_EQUAL = 67, // ">=" + S_LESS = 68, // "<" + S_GREATER = 69, // ">" + S_NOT = 70, // "!" + S_COMPLEMENT = 71, // "~" + S_ASSIGN = 72, // "=" + S_ASSIGN_ADD = 73, // "+=" + S_ASSIGN_SUB = 74, // "-=" + S_ASSIGN_MUL = 75, // "*=" + S_ASSIGN_DIV = 76, // "/=" + S_ASSIGN_MOD = 77, // "%=" + S_ASSIGN_BW_OR = 78, // "|=" + S_ASSIGN_BW_AND = 79, // "&=" + S_ASSIGN_BW_EXOR = 80, // "^=" + S_ASSIGN_RSHIFT = 81, // ">>=" + S_ASSIGN_LSHIFT = 82, // "<<=" + S_BITWISE_OR = 83, // "|" + S_BITWISE_AND = 84, // "&" + S_BITWISE_EXOR = 85, // "^" + S_ADD = 86, // "+" + S_SUB = 87, // "-" + S_MUL = 88, // "*" + S_DIV = 89, // "/" + S_MOD = 90, // "%" + S_PATH = 91, // "path" + S_IDENTIFIER = 92, // "identifier" + S_STRING = 93, // "string literal" + S_ISTRING = 94, // "localized string" + S_COLOR = 95, // "color" + S_FLOAT = 96, // "float" + S_INT_DEC = 97, // "int" + S_INT_OCT = 98, // "octal int" + S_INT_BIN = 99, // "binary int" + S_INT_HEX = 100, // "hexadecimal int" + S_ADD_ARRAY = 101, // ADD_ARRAY + S_THEN = 102, // THEN + S_TERN = 103, // TERN + S_NEG = 104, // NEG + S_ANIMREF = 105, // ANIMREF + S_PREINC = 106, // PREINC + S_PREDEC = 107, // PREDEC + S_POSTINC = 108, // POSTINC + S_POSTDEC = 109, // POSTDEC + S_YYACCEPT = 110, // $accept + S_root = 111, // root + S_program = 112, // program + S_inline = 113, // inline + S_include = 114, // include + S_declaration = 115, // declaration + S_decl_usingtree = 116, // decl_usingtree + S_decl_constant = 117, // decl_constant + S_decl_thread = 118, // decl_thread + S_stmt = 119, // stmt + S_stmt_dev = 120, // stmt_dev + S_stmt_block = 121, // stmt_block + S_stmt_list = 122, // stmt_list + S_stmt_expr = 123, // stmt_expr + S_stmt_call = 124, // stmt_call + S_stmt_assign = 125, // stmt_assign + S_stmt_endon = 126, // stmt_endon + S_stmt_notify = 127, // stmt_notify + S_stmt_wait = 128, // stmt_wait + S_stmt_waittill = 129, // stmt_waittill + S_stmt_waittillmatch = 130, // stmt_waittillmatch + S_stmt_waittillframeend = 131, // stmt_waittillframeend + S_stmt_waitframe = 132, // stmt_waitframe + S_stmt_if = 133, // stmt_if + S_stmt_ifelse = 134, // stmt_ifelse + S_stmt_while = 135, // stmt_while + S_stmt_dowhile = 136, // stmt_dowhile + S_stmt_for = 137, // stmt_for + S_stmt_foreach = 138, // stmt_foreach + S_stmt_switch = 139, // stmt_switch + S_stmt_case = 140, // stmt_case + S_stmt_default = 141, // stmt_default + S_stmt_break = 142, // stmt_break + S_stmt_continue = 143, // stmt_continue + S_stmt_return = 144, // stmt_return + S_stmt_breakpoint = 145, // stmt_breakpoint + S_stmt_prof_begin = 146, // stmt_prof_begin + S_stmt_prof_end = 147, // stmt_prof_end + S_expr = 148, // expr + S_expr_or_empty = 149, // expr_or_empty + S_expr_assign = 150, // expr_assign + S_expr_increment = 151, // expr_increment + S_expr_decrement = 152, // expr_decrement + S_expr_ternary = 153, // expr_ternary + S_expr_binary = 154, // expr_binary + S_expr_primitive = 155, // expr_primitive + S_expr_complement = 156, // expr_complement + S_expr_not = 157, // expr_not + S_expr_call = 158, // expr_call + S_expr_method = 159, // expr_method + S_expr_function = 160, // expr_function + S_expr_pointer = 161, // expr_pointer + S_expr_add_array = 162, // expr_add_array + S_expr_parameters = 163, // expr_parameters + S_expr_arguments = 164, // expr_arguments + S_expr_arguments_no_empty = 165, // expr_arguments_no_empty + S_expr_isdefined = 166, // expr_isdefined + S_expr_istrue = 167, // expr_istrue + S_expr_reference = 168, // expr_reference + S_expr_array = 169, // expr_array + S_expr_field = 170, // expr_field + S_expr_size = 171, // expr_size + S_expr_paren = 172, // expr_paren + S_expr_object = 173, // expr_object + S_expr_thisthread = 174, // expr_thisthread + S_expr_empty_array = 175, // expr_empty_array + S_expr_undefined = 176, // expr_undefined + S_expr_game = 177, // expr_game + S_expr_self = 178, // expr_self + S_expr_anim = 179, // expr_anim + S_expr_level = 180, // expr_level + S_expr_animation = 181, // expr_animation + S_expr_animtree = 182, // expr_animtree + S_expr_identifier = 183, // expr_identifier + S_expr_path = 184, // expr_path + S_expr_istring = 185, // expr_istring + S_expr_string = 186, // expr_string + S_expr_color = 187, // expr_color + S_expr_vector = 188, // expr_vector + S_expr_float = 189, // expr_float + S_expr_integer = 190, // expr_integer + S_expr_false = 191, // expr_false + S_expr_true = 192 // expr_true }; }; @@ -1268,6 +1274,7 @@ namespace xsk { namespace gsc { namespace s4 { value.move< ast::stmt_ifelse::ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (std::move (that.value)); @@ -2575,6 +2582,7 @@ switch (yykind) value.template destroy< ast::stmt_ifelse::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.template destroy< ast::stmt_list::ptr > (); @@ -2838,6 +2846,36 @@ switch (yykind) return symbol_type (token::S4UNDEF, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_DEVBEGIN (location_type l) + { + return symbol_type (token::DEVBEGIN, std::move (l)); + } +#else + static + symbol_type + make_DEVBEGIN (const location_type& l) + { + return symbol_type (token::DEVBEGIN, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_DEVEND (location_type l) + { + return symbol_type (token::DEVEND, std::move (l)); + } +#else + static + symbol_type + make_DEVEND (const location_type& l) + { + return symbol_type (token::DEVEND, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4757,9 +4795,9 @@ switch (yykind) /// Constants. enum { - yylast_ = 2068, ///< Last index in yytable_. - yynnts_ = 82, ///< Number of nonterminal symbols. - yyfinal_ = 19 ///< Termination state number. + yylast_ = 2336, ///< Last index in yytable_. + yynnts_ = 83, ///< Number of nonterminal symbols. + yyfinal_ = 21 ///< Termination state number. }; @@ -5020,6 +5058,7 @@ switch (yykind) value.copy< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.copy< ast::stmt_list::ptr > (YY_MOVE (that.value)); @@ -5345,6 +5384,7 @@ switch (yykind) value.move< ast::stmt_ifelse::ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list value.move< ast::stmt_list::ptr > (YY_MOVE (s.value)); @@ -5470,7 +5510,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::s4 -#line 5474 "parser.hpp" +#line 5514 "parser.hpp" diff --git a/src/utils/xsk/gsc/nodetree.cpp b/src/utils/xsk/gsc/nodetree.cpp index 3cf3c6ba..d7d5554f 100644 --- a/src/utils/xsk/gsc/nodetree.cpp +++ b/src/utils/xsk/gsc/nodetree.cpp @@ -407,6 +407,12 @@ decl_constant::decl_constant(const location& loc, expr_identifier::ptr name, exp decl_usingtree::decl_usingtree(expr_string::ptr name) : node(kind::decl_usingtree), name(std::move(name)) {} decl_usingtree::decl_usingtree(const location& loc, expr_string::ptr name) : node(kind::decl_usingtree, loc), name(std::move(name)) {} +decl_dev_begin::decl_dev_begin() : node(kind::decl_dev_begin) {} +decl_dev_begin::decl_dev_begin(const location& loc) : node(kind::decl_dev_begin, loc) {} + +decl_dev_end::decl_dev_end() : node(kind::decl_dev_end) {} +decl_dev_end::decl_dev_end(const location& loc) : node(kind::decl_dev_end, loc) {} + include::include(expr_path::ptr path) : node(kind::include), path(std::move(path)) {} include::include(const location& loc, expr_path::ptr path) : node(kind::include, loc), path(std::move(path)) {} @@ -1178,6 +1184,16 @@ auto decl_usingtree::print() const -> std::string return "#using_animtree"s + "(" + name->print() + ");\n"; } +auto decl_dev_begin::print() const -> std::string +{ + return "/#"; +} + +auto decl_dev_end::print() const -> std::string +{ + return "#/"; +} + auto include::print() const -> std::string { return "#include"s + " " + path->print() + ";\n"; @@ -1705,6 +1721,8 @@ decl::~decl() switch (as_node->kind()) { case kind::null: as_node.~unique_ptr(); return; + case kind::decl_dev_begin: as_dev_begin.~unique_ptr(); return; + case kind::decl_dev_end: as_dev_end.~unique_ptr(); return; case kind::decl_thread: as_thread.~unique_ptr(); return; case kind::decl_constant: as_constant.~unique_ptr(); return; case kind::decl_usingtree: as_usingtree.~unique_ptr(); return; diff --git a/src/utils/xsk/gsc/nodetree.hpp b/src/utils/xsk/gsc/nodetree.hpp index 73cea7de..1d31fa7f 100644 --- a/src/utils/xsk/gsc/nodetree.hpp +++ b/src/utils/xsk/gsc/nodetree.hpp @@ -107,6 +107,8 @@ enum class kind decl_thread, decl_constant, decl_usingtree, + decl_dev_begin, + decl_dev_end, include, program, // DECOMPILER @@ -225,6 +227,8 @@ struct stmt_prof_end; struct decl_thread; struct decl_constant; struct decl_usingtree; +struct decl_dev_begin; +struct decl_dev_end; struct include; struct program; struct asm_loc; @@ -407,6 +411,8 @@ union stmt union decl { std::unique_ptr as_node; + std::unique_ptr as_dev_begin; + std::unique_ptr as_dev_end; std::unique_ptr as_usingtree; std::unique_ptr as_constant; std::unique_ptr as_thread; @@ -1541,6 +1547,24 @@ struct decl_usingtree : public node auto print() const -> std::string override; }; +struct decl_dev_begin : public node +{ + using ptr = std::unique_ptr; + + decl_dev_begin(); + decl_dev_begin(const location& loc); + auto print() const -> std::string override; +}; + +struct decl_dev_end : public node +{ + using ptr = std::unique_ptr; + + decl_dev_end(); + decl_dev_end(const location& loc); + auto print() const -> std::string override; +}; + struct include : public node { using ptr = std::unique_ptr;