diff --git a/gen/gsc/parser.ypp b/gen/gsc/parser.ypp index a1df368e..e68cfdee 100644 --- a/gen/gsc/parser.ypp +++ b/gen/gsc/parser.ypp @@ -80,6 +80,9 @@ namespace xsk::gsc %token BREAKPOINT "breakpoint" %token PROFBEGIN "prof_begin" %token PROFEND "prof_end" +%token ASSERT "assert" +%token ASSERTEX "assertex" +%token ASSERTMSG "assertmsg" %token THREAD "thread" %token CHILDTHREAD "childthread" %token THISTHREAD "thisthread" @@ -151,6 +154,7 @@ namespace xsk::gsc %type include %type declaration %type decl_usingtree +%type decl_constant %type decl_function %type stmt %type stmt_or_dev @@ -183,6 +187,9 @@ namespace xsk::gsc %type stmt_breakpoint %type stmt_prof_begin %type stmt_prof_end +%type stmt_assert +%type stmt_assertex +%type stmt_assertmsg %type expr %type expr_or_empty %type expr_assign @@ -296,6 +303,7 @@ declaration : DEVBEGIN { $$.as_dev_begin = make_decl_dev_begin(@$); } | DEVEND { $$.as_dev_end = make_decl_dev_end(@$); } | decl_usingtree { $$.as_usingtree = std::move($1); } + | decl_constant { $$.as_constant = std::move($1); } | decl_function { $$.as_function = std::move($1); } ; @@ -304,6 +312,14 @@ decl_usingtree { ppr.ban_header(@$); $$ = make_decl_usingtree(@$, std::move($3)); } ; +decl_constant + : expr_identifier ASSIGN expr SEMICOLON + { + ppr.ban_header(@$); $$ = make_decl_constant(@$, std::move($1), std::move($3)); + printf("%s" , fmt::format("{}: constants deprecated, use #define instead\n", @$.print()).data()); + } + ; + decl_function : expr_identifier LPAREN expr_parameters RPAREN stmt_comp { ppr.ban_header(@$); $$ = make_decl_function(@$, std::move($1), std::move($3), std::move($5)); } @@ -335,6 +351,9 @@ stmt | stmt_breakpoint { $$.as_breakpoint = std::move($1); } | stmt_prof_begin { $$.as_prof_begin = std::move($1); } | stmt_prof_end { $$.as_prof_end = std::move($1); } + | stmt_assert { $$.as_assert = std::move($1); } + | stmt_assertex { $$.as_assertex = std::move($1); } + | stmt_assertmsg { $$.as_assertmsg = std::move($1); } ; stmt_or_dev @@ -534,6 +553,21 @@ stmt_prof_end { $$ = make_stmt_prof_end(@$, std::move($3)); } ; +stmt_assert + : ASSERT LPAREN expr_arguments RPAREN SEMICOLON + { $$ = make_stmt_assert(@$, std::move($3)); } + ; + +stmt_assertex + : ASSERTEX LPAREN expr_arguments RPAREN SEMICOLON + { $$ = make_stmt_assertex(@$, std::move($3)); } + ; + +stmt_assertmsg + : ASSERTMSG LPAREN expr_arguments RPAREN SEMICOLON + { $$ = make_stmt_assertmsg(@$, std::move($3)); } + ; + expr : expr_ternary { $$ = std::move($1); } | expr_binary { $$ = std::move($1); } @@ -1126,6 +1160,9 @@ std::unordered_map const tok_to_par { token::BREAKPOINT, parser::token::BREAKPOINT }, { token::PROFBEGIN, parser::token::PROFBEGIN }, { token::PROFEND, parser::token::PROFEND }, + { token::ASSERT, parser::token::ASSERT }, + { token::ASSERTEX, parser::token::ASSERTEX }, + { token::ASSERTMSG, parser::token::ASSERTMSG }, { token::THREAD, parser::token::THREAD }, { token::CHILDTHREAD, parser::token::CHILDTHREAD }, { token::THISTHREAD, parser::token::THISTHREAD }, @@ -1169,6 +1206,9 @@ std::unordered_map const keywo { "breakpoint", parser::token::BREAKPOINT }, { "prof_begin", parser::token::PROFBEGIN }, { "prof_end", parser::token::PROFEND }, + { "assert", parser::token::ASSERT }, + { "assertex", parser::token::ASSERTEX }, + { "assertmsg", parser::token::ASSERTMSG }, { "thread", parser::token::THREAD }, { "childthread", parser::token::CHILDTHREAD }, { "thisthread", parser::token::THISTHREAD }, diff --git a/src/gsc/compiler.cpp b/src/gsc/compiler.cpp index 9b71040c..a33155c6 100644 --- a/src/gsc/compiler.cpp +++ b/src/gsc/compiler.cpp @@ -30,6 +30,7 @@ auto compiler::emit_program(program const& prog) -> void { assembly_ = make_assembly(); localfuncs_.clear(); + constants_.clear(); developer_thread_ = false; animload_ = false; animname_ = {}; @@ -87,6 +88,9 @@ auto compiler::emit_decl(decl const& dec) -> void case node::decl_usingtree: emit_decl_usingtree(*dec.as_usingtree); break; + case node::decl_constant: + emit_decl_constant(*dec.as_constant); + break; case node::decl_function: emit_decl_function(*dec.as_function); break; @@ -104,6 +108,16 @@ auto compiler::emit_decl_usingtree(decl_usingtree const& animtree) -> void animload_ = false; } +auto compiler::emit_decl_constant(decl_constant const& constant) -> void +{ + auto const it = constants_.find(constant.name->value); + + if (it != constants_.end()) + throw comp_error(constant.loc(), fmt::format("duplicated constant '{}'", constant.name->value)); + + constants_.insert({ constant.name->value, &constant.value }); +} + auto compiler::emit_decl_function(decl_function const& func) -> void { label_idx_ = 0; @@ -218,6 +232,15 @@ auto compiler::emit_stmt(stmt const& stm, scope& scp, bool last) -> void case node::stmt_prof_end: emit_stmt_prof_end(*stm.as_prof_end, scp); break; + case node::stmt_assert: + emit_stmt_assert(*stm.as_assert, scp); + break; + case node::stmt_assertex: + emit_stmt_assertex(*stm.as_assertex, scp); + break; + case node::stmt_assertmsg: + emit_stmt_assertmsg(*stm.as_assertmsg, scp); + break; default: throw comp_error(stm.loc(), "unknown statement"); } @@ -939,6 +962,21 @@ auto compiler::emit_stmt_prof_end(stmt_prof_end const&, scope&) -> void // TODO: } +auto compiler::emit_stmt_assert(stmt_assert const&, scope&) -> void +{ + // TODO: +} + +auto compiler::emit_stmt_assertex(stmt_assertex const&, scope&) -> void +{ + // TODO: +} + +auto compiler::emit_stmt_assertmsg(stmt_assertmsg const&, scope&) -> void +{ + // TODO: +} + auto compiler::emit_expr(expr const& exp, scope& scp) -> void { switch (exp.kind()) @@ -1378,12 +1416,6 @@ auto compiler::emit_expr_call_pointer(expr_pointer const& exp, scope& scp, bool auto compiler::emit_expr_call_function(expr_function const& exp, scope& scp, bool is_stmt) -> void { - if (is_stmt && ctx_->build() == build::prod) - { - auto const& name = exp.name->value; - if (name == "assert" || name == "assertex" || name == "assertmsg") return; - } - auto path = std::string{}; auto type = resolve_function_type(exp, path); @@ -1869,6 +1901,13 @@ auto compiler::emit_expr_field_ref(expr_field const& exp, scope& scp, bool set) auto compiler::emit_expr_local_ref(expr_identifier const& exp, scope& scp, bool set) -> void { + auto const it = constants_.find(exp.value); + + if (it != constants_.end()) + { + throw comp_error(exp.loc(), fmt::format("variable name already defined as constant '{}'", exp.value)); + } + if (set) { if (!variable_initialized(exp, scp)) @@ -1976,6 +2015,15 @@ auto compiler::emit_expr_field(expr_field const& exp, scope& scp) -> void auto compiler::emit_expr_local(expr_identifier const& exp, scope& scp) -> void { + auto const it = constants_.find(exp.value); + + if (it != constants_.end()) + { + // should only allow: string, loc string, number, vector + emit_expr(*it->second, scp); + return; + } + auto index = variable_access(exp, scp); switch (index) @@ -2333,6 +2381,9 @@ auto compiler::process_stmt(stmt const& stm, scope& scp) -> void case node::stmt_breakpoint: case node::stmt_prof_begin: case node::stmt_prof_end: + case node::stmt_assert: + case node::stmt_assertex: + case node::stmt_assertmsg: break; default: throw comp_error(stm.loc(), "unknown statement"); diff --git a/src/gsc/compiler.hpp b/src/gsc/compiler.hpp index 619ad711..f7832961 100644 --- a/src/gsc/compiler.hpp +++ b/src/gsc/compiler.hpp @@ -17,6 +17,7 @@ class compiler function::ptr function_; std::vector stackframe_; std::vector localfuncs_; + std::unordered_map constants_; std::unordered_map scopes_; std::vector break_blks_; std::vector continue_blks_; @@ -37,6 +38,7 @@ private: auto emit_program(program const& prog) -> void; auto emit_decl(decl const& dec) -> void; auto emit_decl_usingtree(decl_usingtree const& animtree) -> void; + auto emit_decl_constant(decl_constant const& constant) -> void; auto emit_decl_function(decl_function const& func) -> void; auto emit_stmt(stmt const& stm, scope& scp, bool last) -> void; auto emit_stmt_list(stmt_list const& stm, scope& scp, bool last) -> void; @@ -67,6 +69,9 @@ private: auto emit_stmt_breakpoint(stmt_breakpoint const& stm, scope& scp) -> void; auto emit_stmt_prof_begin(stmt_prof_begin const& stm, scope& scp) -> void; auto emit_stmt_prof_end(stmt_prof_end const& stm, scope& scp) -> void; + auto emit_stmt_assert(stmt_assert const& stm, scope& scp) -> void; + auto emit_stmt_assertex(stmt_assertex const& stm, scope& scp) -> void; + auto emit_stmt_assertmsg(stmt_assertmsg const& stm, scope& scp) -> void; auto emit_expr(expr const& exp, scope& scp) -> void; auto emit_expr_assign(expr_assign const& exp, scope& scp) -> void; auto emit_expr_clear(expr const& exp, scope& scp) -> void; diff --git a/src/gsc/misc/ast.cpp b/src/gsc/misc/ast.cpp index b411aa4c..b31f7a76 100644 --- a/src/gsc/misc/ast.cpp +++ b/src/gsc/misc/ast.cpp @@ -530,10 +530,26 @@ stmt_prof_end::stmt_prof_end(location const& loc, expr_arguments::ptr args) : no { } +stmt_assert::stmt_assert(location const& loc, expr_arguments::ptr args) : node{ type::stmt_assert, loc }, args{ std::move(args) } +{ +} + +stmt_assertex::stmt_assertex(location const& loc, expr_arguments::ptr args) : node{ type::stmt_assertex, loc }, args{ std::move(args) } +{ +} + +stmt_assertmsg::stmt_assertmsg(location const& loc, expr_arguments::ptr args) : node{ type::stmt_assertmsg, loc }, args{ std::move(args) } +{ +} + decl_function::decl_function(location const& loc, expr_identifier::ptr name, expr_parameters::ptr params, stmt_comp::ptr body) : node{ type::decl_function, loc }, name{ std::move(name) }, params{ std::move(params) }, body{ std::move(body) } { } +decl_constant::decl_constant(location const& loc, expr_identifier::ptr name, expr value) : node{ type::decl_constant, loc }, name{ std::move(name) }, value{ std::move(value) } +{ +} + decl_usingtree::decl_usingtree(location const& loc, expr_string::ptr name) : node{ type::decl_usingtree, loc }, name{ std::move(name) } { } @@ -985,6 +1001,9 @@ stmt::~stmt() case node::stmt_breakpoint: as_breakpoint.~unique_ptr(); return; case node::stmt_prof_begin: as_prof_begin.~unique_ptr(); return; case node::stmt_prof_end: as_prof_end.~unique_ptr(); return; + case node::stmt_assert: as_assert.~unique_ptr(); return; + case node::stmt_assertex: as_assertex.~unique_ptr(); return; + case node::stmt_assertmsg: as_assertmsg.~unique_ptr(); return; case node::asm_jmp: as_jump.~unique_ptr(); return; case node::asm_jmp_back: as_jump_back.~unique_ptr(); return; case node::asm_jmp_cond: as_cond.~unique_ptr(); return; @@ -1047,6 +1066,7 @@ decl::~decl() case node::decl_dev_begin: as_dev_begin.~unique_ptr(); return; case node::decl_dev_end: as_dev_end.~unique_ptr(); return; case node::decl_function: as_function.~unique_ptr(); return; + case node::decl_constant: as_constant.~unique_ptr(); return; case node::decl_usingtree: as_usingtree.~unique_ptr(); return; default: return; } diff --git a/src/gsc/misc/ast.hpp b/src/gsc/misc/ast.hpp index 976605fb..5d1e00fa 100644 --- a/src/gsc/misc/ast.hpp +++ b/src/gsc/misc/ast.hpp @@ -111,7 +111,11 @@ struct node stmt_breakpoint, stmt_prof_begin, stmt_prof_end, + stmt_assert, + stmt_assertex, + stmt_assertmsg, decl_function, + decl_constant, decl_usingtree, decl_dev_begin, decl_dev_end, @@ -256,7 +260,11 @@ struct stmt_return; struct stmt_breakpoint; struct stmt_prof_begin; struct stmt_prof_end; +struct stmt_assert; +struct stmt_assertex; +struct stmt_assertmsg; struct decl_function; +struct decl_constant; struct decl_usingtree; struct decl_dev_begin; struct decl_dev_end; @@ -419,6 +427,9 @@ union stmt std::unique_ptr as_breakpoint; std::unique_ptr as_prof_begin; std::unique_ptr as_prof_end; + std::unique_ptr as_assert; + std::unique_ptr as_assertex; + std::unique_ptr as_assertmsg; std::unique_ptr as_cond; std::unique_ptr as_jump; std::unique_ptr as_jump_back; @@ -448,6 +459,7 @@ union decl 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_function; decl(); @@ -1323,6 +1335,33 @@ struct stmt_prof_end : public node stmt_prof_end(location const& loc, expr_arguments::ptr args); }; +struct stmt_assert : public node +{ + using ptr = std::unique_ptr; + + expr_arguments::ptr args; + + stmt_assert(location const& loc, expr_arguments::ptr args); +}; + +struct stmt_assertex : public node +{ + using ptr = std::unique_ptr; + + expr_arguments::ptr args; + + stmt_assertex(location const& loc, expr_arguments::ptr args); +}; + +struct stmt_assertmsg : public node +{ + using ptr = std::unique_ptr; + + expr_arguments::ptr args; + + stmt_assertmsg(location const& loc, expr_arguments::ptr args); +}; + struct decl_function : public node { using ptr = std::unique_ptr; @@ -1334,6 +1373,16 @@ struct decl_function : public node decl_function(location const& loc, expr_identifier::ptr name, expr_parameters::ptr params, stmt_comp::ptr body); }; +struct decl_constant : public node +{ + using ptr = std::unique_ptr; + + expr_identifier::ptr name; + expr value; + + decl_constant(location const& loc, expr_identifier::ptr name, expr value); +}; + struct decl_usingtree : public node { using ptr = std::unique_ptr; @@ -1599,7 +1648,11 @@ XSK_GSC_MAKE_GENERIC(stmt_return) XSK_GSC_MAKE_GENERIC(stmt_breakpoint) XSK_GSC_MAKE_GENERIC(stmt_prof_begin) XSK_GSC_MAKE_GENERIC(stmt_prof_end) +XSK_GSC_MAKE_GENERIC(stmt_assert) +XSK_GSC_MAKE_GENERIC(stmt_assertex) +XSK_GSC_MAKE_GENERIC(stmt_assertmsg) XSK_GSC_MAKE_GENERIC(decl_function) +XSK_GSC_MAKE_GENERIC(decl_constant) XSK_GSC_MAKE_GENERIC(decl_usingtree) XSK_GSC_MAKE_GENERIC(decl_dev_begin) XSK_GSC_MAKE_GENERIC(decl_dev_end) diff --git a/src/gsc/misc/token.hpp b/src/gsc/misc/token.hpp index 4c794685..3e8868a3 100644 --- a/src/gsc/misc/token.hpp +++ b/src/gsc/misc/token.hpp @@ -22,8 +22,8 @@ struct token DEVBEGIN, DEVEND, INLINE, INCLUDE, USINGTREE, ANIMTREE, ENDON, NOTIFY, WAIT, WAITTILL, WAITTILLMATCH, WAITTILLFRAMEEND, WAITFRAME, IF, ELSE, DO, WHILE, FOR, FOREACH, IN, SWITCH, CASE, DEFAULT, BREAK, CONTINUE, RETURN, BREAKPOINT, - PROFBEGIN, PROFEND, THREAD, CHILDTHREAD, THISTHREAD, CALL, TRUE, FALSE, UNDEFINED, - SIZE, GAME, SELF, ANIM, LEVEL, ISDEFINED, ISTRUE, + PROFBEGIN, PROFEND, ASSERT, ASSERTEX, ASSERTMSG, THREAD, CHILDTHREAD, THISTHREAD, + CALL, TRUE, FALSE, UNDEFINED, SIZE, GAME, SELF, ANIM, LEVEL, ISDEFINED, ISTRUE, HASH, NEWLINE, EOS, DEFINED, MACROBEGIN, MACROEND, }; diff --git a/src/gsc/parser.cpp b/src/gsc/parser.cpp index bee29b1a..7192f170 100644 --- a/src/gsc/parser.cpp +++ b/src/gsc/parser.cpp @@ -230,6 +230,10 @@ namespace xsk { namespace gsc { value.YY_MOVE_OR_COPY< decl > (YY_MOVE (that.value)); break; + case symbol_kind::S_decl_constant: // decl_constant + value.YY_MOVE_OR_COPY< decl_constant::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_decl_function: // decl_function value.YY_MOVE_OR_COPY< decl_function::ptr > (YY_MOVE (that.value)); break; @@ -412,6 +416,18 @@ namespace xsk { namespace gsc { value.YY_MOVE_OR_COPY< stmt > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_assert: // stmt_assert + value.YY_MOVE_OR_COPY< stmt_assert::ptr > (YY_MOVE (that.value)); + break; + + case symbol_kind::S_stmt_assertex: // stmt_assertex + value.YY_MOVE_OR_COPY< stmt_assertex::ptr > (YY_MOVE (that.value)); + break; + + case symbol_kind::S_stmt_assertmsg: // stmt_assertmsg + value.YY_MOVE_OR_COPY< stmt_assertmsg::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_assign: // stmt_assign value.YY_MOVE_OR_COPY< stmt_assign::ptr > (YY_MOVE (that.value)); break; @@ -549,6 +565,10 @@ namespace xsk { namespace gsc { value.move< decl > (YY_MOVE (that.value)); break; + case symbol_kind::S_decl_constant: // decl_constant + value.move< decl_constant::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_decl_function: // decl_function value.move< decl_function::ptr > (YY_MOVE (that.value)); break; @@ -731,6 +751,18 @@ namespace xsk { namespace gsc { value.move< stmt > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_assert: // stmt_assert + value.move< stmt_assert::ptr > (YY_MOVE (that.value)); + break; + + case symbol_kind::S_stmt_assertex: // stmt_assertex + value.move< stmt_assertex::ptr > (YY_MOVE (that.value)); + break; + + case symbol_kind::S_stmt_assertmsg: // stmt_assertmsg + value.move< stmt_assertmsg::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_assign: // stmt_assign value.move< stmt_assign::ptr > (YY_MOVE (that.value)); break; @@ -868,6 +900,10 @@ namespace xsk { namespace gsc { value.copy< decl > (that.value); break; + case symbol_kind::S_decl_constant: // decl_constant + value.copy< decl_constant::ptr > (that.value); + break; + case symbol_kind::S_decl_function: // decl_function value.copy< decl_function::ptr > (that.value); break; @@ -1050,6 +1086,18 @@ namespace xsk { namespace gsc { value.copy< stmt > (that.value); break; + case symbol_kind::S_stmt_assert: // stmt_assert + value.copy< stmt_assert::ptr > (that.value); + break; + + case symbol_kind::S_stmt_assertex: // stmt_assertex + value.copy< stmt_assertex::ptr > (that.value); + break; + + case symbol_kind::S_stmt_assertmsg: // stmt_assertmsg + value.copy< stmt_assertmsg::ptr > (that.value); + break; + case symbol_kind::S_stmt_assign: // stmt_assign value.copy< stmt_assign::ptr > (that.value); break; @@ -1186,6 +1234,10 @@ namespace xsk { namespace gsc { value.move< decl > (that.value); break; + case symbol_kind::S_decl_constant: // decl_constant + value.move< decl_constant::ptr > (that.value); + break; + case symbol_kind::S_decl_function: // decl_function value.move< decl_function::ptr > (that.value); break; @@ -1368,6 +1420,18 @@ namespace xsk { namespace gsc { value.move< stmt > (that.value); break; + case symbol_kind::S_stmt_assert: // stmt_assert + value.move< stmt_assert::ptr > (that.value); + break; + + case symbol_kind::S_stmt_assertex: // stmt_assertex + value.move< stmt_assertex::ptr > (that.value); + break; + + case symbol_kind::S_stmt_assertmsg: // stmt_assertmsg + value.move< stmt_assertmsg::ptr > (that.value); + break; + case symbol_kind::S_stmt_assign: // stmt_assign value.move< stmt_assign::ptr > (that.value); break; @@ -1759,6 +1823,10 @@ namespace xsk { namespace gsc { yylhs.value.emplace< decl > (); break; + case symbol_kind::S_decl_constant: // decl_constant + yylhs.value.emplace< decl_constant::ptr > (); + break; + case symbol_kind::S_decl_function: // decl_function yylhs.value.emplace< decl_function::ptr > (); break; @@ -1941,6 +2009,18 @@ namespace xsk { namespace gsc { yylhs.value.emplace< stmt > (); break; + case symbol_kind::S_stmt_assert: // stmt_assert + yylhs.value.emplace< stmt_assert::ptr > (); + break; + + case symbol_kind::S_stmt_assertex: // stmt_assertex + yylhs.value.emplace< stmt_assertex::ptr > (); + break; + + case symbol_kind::S_stmt_assertmsg: // stmt_assertmsg + yylhs.value.emplace< stmt_assertmsg::ptr > (); + break; + case symbol_kind::S_stmt_assign: // stmt_assign yylhs.value.emplace< stmt_assign::ptr > (); break; @@ -2075,1446 +2155,1497 @@ namespace xsk { namespace gsc { switch (yyn) { case 2: // root: program -#line 267 "parser.ypp" +#line 274 "parser.ypp" { ast = std::move(yystack_[0].value.as < program::ptr > ()); } -#line 2081 "parser.cpp" +#line 2161 "parser.cpp" break; case 3: // root: %empty -#line 268 "parser.ypp" +#line 275 "parser.ypp" { ast = make_program(yylhs.location); } -#line 2087 "parser.cpp" +#line 2167 "parser.cpp" break; case 4: // program: program inline -#line 273 "parser.ypp" +#line 280 "parser.ypp" { yylhs.value.as < program::ptr > () = std::move(yystack_[1].value.as < program::ptr > ()); } -#line 2093 "parser.cpp" +#line 2173 "parser.cpp" break; case 5: // program: program include -#line 275 "parser.ypp" +#line 282 "parser.ypp" { yylhs.value.as < program::ptr > () = std::move(yystack_[1].value.as < program::ptr > ()); yylhs.value.as < program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include::ptr > ())); } -#line 2099 "parser.cpp" +#line 2179 "parser.cpp" break; case 6: // program: program declaration -#line 277 "parser.ypp" +#line 284 "parser.ypp" { yylhs.value.as < program::ptr > () = std::move(yystack_[1].value.as < program::ptr > ()); yylhs.value.as < program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < decl > ())); } -#line 2105 "parser.cpp" +#line 2185 "parser.cpp" break; case 7: // program: inline -#line 279 "parser.ypp" +#line 286 "parser.ypp" { yylhs.value.as < program::ptr > () = make_program(yylhs.location); } -#line 2111 "parser.cpp" +#line 2191 "parser.cpp" break; case 8: // program: include -#line 281 "parser.ypp" +#line 288 "parser.ypp" { yylhs.value.as < program::ptr > () = make_program(yylhs.location); yylhs.value.as < program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include::ptr > ())); } -#line 2117 "parser.cpp" +#line 2197 "parser.cpp" break; case 9: // program: declaration -#line 283 "parser.ypp" +#line 290 "parser.ypp" { yylhs.value.as < program::ptr > () = make_program(yylhs.location); yylhs.value.as < program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < decl > ())); } -#line 2123 "parser.cpp" +#line 2203 "parser.cpp" break; case 10: // inline: "#inline" expr_path ";" -#line 287 "parser.ypp" +#line 294 "parser.ypp" { ppr.push_header(yystack_[1].value.as < expr_path::ptr > ()->value); } -#line 2129 "parser.cpp" +#line 2209 "parser.cpp" break; case 11: // include: "#include" expr_path ";" -#line 292 "parser.ypp" +#line 299 "parser.ypp" { yylhs.value.as < include::ptr > () = make_include(yylhs.location, std::move(yystack_[1].value.as < expr_path::ptr > ())); } -#line 2135 "parser.cpp" +#line 2215 "parser.cpp" break; case 12: // declaration: "/#" -#line 296 "parser.ypp" +#line 303 "parser.ypp" { yylhs.value.as < decl > ().as_dev_begin = make_decl_dev_begin(yylhs.location); } -#line 2141 "parser.cpp" +#line 2221 "parser.cpp" break; case 13: // declaration: "#/" -#line 297 "parser.ypp" +#line 304 "parser.ypp" { yylhs.value.as < decl > ().as_dev_end = make_decl_dev_end(yylhs.location); } -#line 2147 "parser.cpp" +#line 2227 "parser.cpp" break; case 14: // declaration: decl_usingtree -#line 298 "parser.ypp" +#line 305 "parser.ypp" { yylhs.value.as < decl > ().as_usingtree = std::move(yystack_[0].value.as < decl_usingtree::ptr > ()); } -#line 2153 "parser.cpp" +#line 2233 "parser.cpp" break; - case 15: // declaration: decl_function -#line 299 "parser.ypp" + case 15: // declaration: decl_constant +#line 306 "parser.ypp" + { yylhs.value.as < decl > ().as_constant = std::move(yystack_[0].value.as < decl_constant::ptr > ()); } +#line 2239 "parser.cpp" + break; + + case 16: // declaration: decl_function +#line 307 "parser.ypp" { yylhs.value.as < decl > ().as_function = std::move(yystack_[0].value.as < decl_function::ptr > ()); } -#line 2159 "parser.cpp" +#line 2245 "parser.cpp" break; - case 16: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" -#line 304 "parser.ypp" + case 17: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" +#line 312 "parser.ypp" { ppr.ban_header(yylhs.location); yylhs.value.as < decl_usingtree::ptr > () = make_decl_usingtree(yylhs.location, std::move(yystack_[2].value.as < expr_string::ptr > ())); } -#line 2165 "parser.cpp" +#line 2251 "parser.cpp" break; - case 17: // decl_function: expr_identifier "(" expr_parameters ")" stmt_comp -#line 309 "parser.ypp" - { ppr.ban_header(yylhs.location); yylhs.value.as < decl_function::ptr > () = make_decl_function(yylhs.location, std::move(yystack_[4].value.as < expr_identifier::ptr > ()), std::move(yystack_[2].value.as < expr_parameters::ptr > ()), std::move(yystack_[0].value.as < stmt_comp::ptr > ())); } -#line 2171 "parser.cpp" - break; - - case 18: // stmt: stmt_comp -#line 313 "parser.ypp" - { yylhs.value.as < stmt > ().as_comp = std::move(yystack_[0].value.as < stmt_comp::ptr > ()); } -#line 2177 "parser.cpp" - break; - - case 19: // stmt: stmt_call -#line 314 "parser.ypp" - { yylhs.value.as < stmt > ().as_call = std::move(yystack_[0].value.as < stmt_call::ptr > ()); } -#line 2183 "parser.cpp" - break; - - case 20: // stmt: stmt_assign -#line 315 "parser.ypp" - { yylhs.value.as < stmt > ().as_assign = std::move(yystack_[0].value.as < stmt_assign::ptr > ()); } -#line 2189 "parser.cpp" - break; - - case 21: // stmt: stmt_endon -#line 316 "parser.ypp" - { yylhs.value.as < stmt > ().as_endon = std::move(yystack_[0].value.as < stmt_endon::ptr > ()); } -#line 2195 "parser.cpp" - break; - - case 22: // stmt: stmt_notify + case 18: // decl_constant: expr_identifier "=" expr ";" #line 317 "parser.ypp" - { yylhs.value.as < stmt > ().as_notify = std::move(yystack_[0].value.as < stmt_notify::ptr > ()); } -#line 2201 "parser.cpp" + { + ppr.ban_header(yylhs.location); yylhs.value.as < decl_constant::ptr > () = make_decl_constant(yylhs.location, std::move(yystack_[3].value.as < expr_identifier::ptr > ()), std::move(yystack_[1].value.as < expr > ())); + printf("%s" , fmt::format("{}: constants deprecated, use #define instead\n", yylhs.location.print()).data()); + } +#line 2260 "parser.cpp" break; - case 23: // stmt: stmt_wait -#line 318 "parser.ypp" - { yylhs.value.as < stmt > ().as_wait = std::move(yystack_[0].value.as < stmt_wait::ptr > ()); } -#line 2207 "parser.cpp" - break; - - case 24: // stmt: stmt_waittill -#line 319 "parser.ypp" - { yylhs.value.as < stmt > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill::ptr > ()); } -#line 2213 "parser.cpp" - break; - - case 25: // stmt: stmt_waittillmatch -#line 320 "parser.ypp" - { yylhs.value.as < stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch::ptr > ()); } -#line 2219 "parser.cpp" - break; - - case 26: // stmt: stmt_waittillframeend -#line 321 "parser.ypp" - { yylhs.value.as < stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend::ptr > ()); } -#line 2225 "parser.cpp" - break; - - case 27: // stmt: stmt_waitframe -#line 322 "parser.ypp" - { yylhs.value.as < stmt > ().as_waitframe = std::move(yystack_[0].value.as < stmt_waitframe::ptr > ()); } -#line 2231 "parser.cpp" - break; - - case 28: // stmt: stmt_if -#line 323 "parser.ypp" - { yylhs.value.as < stmt > ().as_if = std::move(yystack_[0].value.as < stmt_if::ptr > ()); } -#line 2237 "parser.cpp" - break; - - case 29: // stmt: stmt_ifelse -#line 324 "parser.ypp" - { yylhs.value.as < stmt > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse::ptr > ()); } -#line 2243 "parser.cpp" - break; - - case 30: // stmt: stmt_while + case 19: // decl_function: expr_identifier "(" expr_parameters ")" stmt_comp #line 325 "parser.ypp" - { yylhs.value.as < stmt > ().as_while = std::move(yystack_[0].value.as < stmt_while::ptr > ()); } -#line 2249 "parser.cpp" + { ppr.ban_header(yylhs.location); yylhs.value.as < decl_function::ptr > () = make_decl_function(yylhs.location, std::move(yystack_[4].value.as < expr_identifier::ptr > ()), std::move(yystack_[2].value.as < expr_parameters::ptr > ()), std::move(yystack_[0].value.as < stmt_comp::ptr > ())); } +#line 2266 "parser.cpp" break; - case 31: // stmt: stmt_dowhile -#line 326 "parser.ypp" - { yylhs.value.as < stmt > ().as_dowhile = std::move(yystack_[0].value.as < stmt_dowhile::ptr > ()); } -#line 2255 "parser.cpp" - break; - - case 32: // stmt: stmt_for -#line 327 "parser.ypp" - { yylhs.value.as < stmt > ().as_for = std::move(yystack_[0].value.as < stmt_for::ptr > ()); } -#line 2261 "parser.cpp" - break; - - case 33: // stmt: stmt_foreach -#line 328 "parser.ypp" - { yylhs.value.as < stmt > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach::ptr > ()); } -#line 2267 "parser.cpp" - break; - - case 34: // stmt: stmt_switch + case 20: // stmt: stmt_comp #line 329 "parser.ypp" - { yylhs.value.as < stmt > ().as_switch = std::move(yystack_[0].value.as < stmt_switch::ptr > ()); } -#line 2273 "parser.cpp" + { yylhs.value.as < stmt > ().as_comp = std::move(yystack_[0].value.as < stmt_comp::ptr > ()); } +#line 2272 "parser.cpp" break; - case 35: // stmt: stmt_case + case 21: // stmt: stmt_call #line 330 "parser.ypp" - { yylhs.value.as < stmt > ().as_case = std::move(yystack_[0].value.as < stmt_case::ptr > ()); } -#line 2279 "parser.cpp" + { yylhs.value.as < stmt > ().as_call = std::move(yystack_[0].value.as < stmt_call::ptr > ()); } +#line 2278 "parser.cpp" break; - case 36: // stmt: stmt_default + case 22: // stmt: stmt_assign #line 331 "parser.ypp" - { yylhs.value.as < stmt > ().as_default = std::move(yystack_[0].value.as < stmt_default::ptr > ()); } -#line 2285 "parser.cpp" + { yylhs.value.as < stmt > ().as_assign = std::move(yystack_[0].value.as < stmt_assign::ptr > ()); } +#line 2284 "parser.cpp" break; - case 37: // stmt: stmt_break + case 23: // stmt: stmt_endon #line 332 "parser.ypp" - { yylhs.value.as < stmt > ().as_break = std::move(yystack_[0].value.as < stmt_break::ptr > ()); } -#line 2291 "parser.cpp" + { yylhs.value.as < stmt > ().as_endon = std::move(yystack_[0].value.as < stmt_endon::ptr > ()); } +#line 2290 "parser.cpp" break; - case 38: // stmt: stmt_continue + case 24: // stmt: stmt_notify #line 333 "parser.ypp" - { yylhs.value.as < stmt > ().as_continue = std::move(yystack_[0].value.as < stmt_continue::ptr > ()); } -#line 2297 "parser.cpp" + { yylhs.value.as < stmt > ().as_notify = std::move(yystack_[0].value.as < stmt_notify::ptr > ()); } +#line 2296 "parser.cpp" break; - case 39: // stmt: stmt_return + case 25: // stmt: stmt_wait #line 334 "parser.ypp" - { yylhs.value.as < stmt > ().as_return = std::move(yystack_[0].value.as < stmt_return::ptr > ()); } -#line 2303 "parser.cpp" + { yylhs.value.as < stmt > ().as_wait = std::move(yystack_[0].value.as < stmt_wait::ptr > ()); } +#line 2302 "parser.cpp" break; - case 40: // stmt: stmt_breakpoint + case 26: // stmt: stmt_waittill #line 335 "parser.ypp" - { yylhs.value.as < stmt > ().as_breakpoint = std::move(yystack_[0].value.as < stmt_breakpoint::ptr > ()); } -#line 2309 "parser.cpp" + { yylhs.value.as < stmt > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill::ptr > ()); } +#line 2308 "parser.cpp" break; - case 41: // stmt: stmt_prof_begin + case 27: // stmt: stmt_waittillmatch #line 336 "parser.ypp" - { yylhs.value.as < stmt > ().as_prof_begin = std::move(yystack_[0].value.as < stmt_prof_begin::ptr > ()); } -#line 2315 "parser.cpp" + { yylhs.value.as < stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch::ptr > ()); } +#line 2314 "parser.cpp" break; - case 42: // stmt: stmt_prof_end + case 28: // stmt: stmt_waittillframeend #line 337 "parser.ypp" - { yylhs.value.as < stmt > ().as_prof_end = std::move(yystack_[0].value.as < stmt_prof_end::ptr > ()); } -#line 2321 "parser.cpp" + { yylhs.value.as < stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend::ptr > ()); } +#line 2320 "parser.cpp" break; - case 43: // stmt_or_dev: stmt + case 29: // stmt: stmt_waitframe +#line 338 "parser.ypp" + { yylhs.value.as < stmt > ().as_waitframe = std::move(yystack_[0].value.as < stmt_waitframe::ptr > ()); } +#line 2326 "parser.cpp" + break; + + case 30: // stmt: stmt_if +#line 339 "parser.ypp" + { yylhs.value.as < stmt > ().as_if = std::move(yystack_[0].value.as < stmt_if::ptr > ()); } +#line 2332 "parser.cpp" + break; + + case 31: // stmt: stmt_ifelse +#line 340 "parser.ypp" + { yylhs.value.as < stmt > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse::ptr > ()); } +#line 2338 "parser.cpp" + break; + + case 32: // stmt: stmt_while #line 341 "parser.ypp" - { yylhs.value.as < stmt > () = std::move(yystack_[0].value.as < stmt > ()); } -#line 2327 "parser.cpp" + { yylhs.value.as < stmt > ().as_while = std::move(yystack_[0].value.as < stmt_while::ptr > ()); } +#line 2344 "parser.cpp" break; - case 44: // stmt_or_dev: stmt_dev + case 33: // stmt: stmt_dowhile #line 342 "parser.ypp" - { yylhs.value.as < stmt > ().as_dev = std::move(yystack_[0].value.as < stmt_dev::ptr > ()); } -#line 2333 "parser.cpp" + { yylhs.value.as < stmt > ().as_dowhile = std::move(yystack_[0].value.as < stmt_dowhile::ptr > ()); } +#line 2350 "parser.cpp" break; - case 45: // stmt_list: stmt_list stmt + case 34: // stmt: stmt_for +#line 343 "parser.ypp" + { yylhs.value.as < stmt > ().as_for = std::move(yystack_[0].value.as < stmt_for::ptr > ()); } +#line 2356 "parser.cpp" + break; + + case 35: // stmt: stmt_foreach +#line 344 "parser.ypp" + { yylhs.value.as < stmt > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach::ptr > ()); } +#line 2362 "parser.cpp" + break; + + case 36: // stmt: stmt_switch +#line 345 "parser.ypp" + { yylhs.value.as < stmt > ().as_switch = std::move(yystack_[0].value.as < stmt_switch::ptr > ()); } +#line 2368 "parser.cpp" + break; + + case 37: // stmt: stmt_case +#line 346 "parser.ypp" + { yylhs.value.as < stmt > ().as_case = std::move(yystack_[0].value.as < stmt_case::ptr > ()); } +#line 2374 "parser.cpp" + break; + + case 38: // stmt: stmt_default #line 347 "parser.ypp" - { yylhs.value.as < stmt_list::ptr > () = std::move(yystack_[1].value.as < stmt_list::ptr > ()); yylhs.value.as < stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < stmt > ())); } -#line 2339 "parser.cpp" + { yylhs.value.as < stmt > ().as_default = std::move(yystack_[0].value.as < stmt_default::ptr > ()); } +#line 2380 "parser.cpp" break; - case 46: // stmt_list: stmt + case 39: // stmt: stmt_break +#line 348 "parser.ypp" + { yylhs.value.as < stmt > ().as_break = std::move(yystack_[0].value.as < stmt_break::ptr > ()); } +#line 2386 "parser.cpp" + break; + + case 40: // stmt: stmt_continue #line 349 "parser.ypp" - { yylhs.value.as < stmt_list::ptr > () = make_stmt_list(yylhs.location); yylhs.value.as < stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < stmt > ())); } -#line 2345 "parser.cpp" + { yylhs.value.as < stmt > ().as_continue = std::move(yystack_[0].value.as < stmt_continue::ptr > ()); } +#line 2392 "parser.cpp" break; - case 47: // stmt_list: stmt_list ";" + case 41: // stmt: stmt_return +#line 350 "parser.ypp" + { yylhs.value.as < stmt > ().as_return = std::move(yystack_[0].value.as < stmt_return::ptr > ()); } +#line 2398 "parser.cpp" + break; + + case 42: // stmt: stmt_breakpoint #line 351 "parser.ypp" - { yylhs.value.as < stmt_list::ptr > () = std::move(yystack_[1].value.as < stmt_list::ptr > ()); } -#line 2351 "parser.cpp" + { yylhs.value.as < stmt > ().as_breakpoint = std::move(yystack_[0].value.as < stmt_breakpoint::ptr > ()); } +#line 2404 "parser.cpp" break; - case 48: // stmt_list: ";" + case 43: // stmt: stmt_prof_begin +#line 352 "parser.ypp" + { yylhs.value.as < stmt > ().as_prof_begin = std::move(yystack_[0].value.as < stmt_prof_begin::ptr > ()); } +#line 2410 "parser.cpp" + break; + + case 44: // stmt: stmt_prof_end #line 353 "parser.ypp" - { yylhs.value.as < stmt_list::ptr > () = make_stmt_list(yylhs.location); } -#line 2357 "parser.cpp" + { yylhs.value.as < stmt > ().as_prof_end = std::move(yystack_[0].value.as < stmt_prof_end::ptr > ()); } +#line 2416 "parser.cpp" break; - case 49: // stmt_or_dev_list: stmt_or_dev_list stmt_or_dev -#line 358 "parser.ypp" - { yylhs.value.as < stmt_list::ptr > () = std::move(yystack_[1].value.as < stmt_list::ptr > ()); yylhs.value.as < stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < stmt > ())); } -#line 2363 "parser.cpp" + case 45: // stmt: stmt_assert +#line 354 "parser.ypp" + { yylhs.value.as < stmt > ().as_assert = std::move(yystack_[0].value.as < stmt_assert::ptr > ()); } +#line 2422 "parser.cpp" break; - case 50: // stmt_or_dev_list: stmt_or_dev + case 46: // stmt: stmt_assertex +#line 355 "parser.ypp" + { yylhs.value.as < stmt > ().as_assertex = std::move(yystack_[0].value.as < stmt_assertex::ptr > ()); } +#line 2428 "parser.cpp" + break; + + case 47: // stmt: stmt_assertmsg +#line 356 "parser.ypp" + { yylhs.value.as < stmt > ().as_assertmsg = std::move(yystack_[0].value.as < stmt_assertmsg::ptr > ()); } +#line 2434 "parser.cpp" + break; + + case 48: // stmt_or_dev: stmt #line 360 "parser.ypp" - { yylhs.value.as < stmt_list::ptr > () = make_stmt_list(yylhs.location); yylhs.value.as < stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < stmt > ())); } -#line 2369 "parser.cpp" + { yylhs.value.as < stmt > () = std::move(yystack_[0].value.as < stmt > ()); } +#line 2440 "parser.cpp" break; - case 51: // stmt_or_dev_list: stmt_or_dev_list ";" -#line 362 "parser.ypp" - { yylhs.value.as < stmt_list::ptr > () = std::move(yystack_[1].value.as < stmt_list::ptr > ()); } -#line 2375 "parser.cpp" + case 49: // stmt_or_dev: stmt_dev +#line 361 "parser.ypp" + { yylhs.value.as < stmt > ().as_dev = std::move(yystack_[0].value.as < stmt_dev::ptr > ()); } +#line 2446 "parser.cpp" break; - case 52: // stmt_or_dev_list: ";" -#line 364 "parser.ypp" - { yylhs.value.as < stmt_list::ptr > () = make_stmt_list(yylhs.location); } -#line 2381 "parser.cpp" + case 50: // stmt_list: stmt_list stmt +#line 366 "parser.ypp" + { yylhs.value.as < stmt_list::ptr > () = std::move(yystack_[1].value.as < stmt_list::ptr > ()); yylhs.value.as < stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < stmt > ())); } +#line 2452 "parser.cpp" break; - case 53: // stmt_dev: "/#" stmt_list "#/" + case 51: // stmt_list: stmt #line 368 "parser.ypp" - { yylhs.value.as < stmt_dev::ptr > () = make_stmt_dev(yylhs.location, std::move(yystack_[1].value.as < stmt_list::ptr > ())); } -#line 2387 "parser.cpp" + { yylhs.value.as < stmt_list::ptr > () = make_stmt_list(yylhs.location); yylhs.value.as < stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < stmt > ())); } +#line 2458 "parser.cpp" break; - case 54: // stmt_dev: "/#" "#/" -#line 369 "parser.ypp" - { yylhs.value.as < stmt_dev::ptr > () = make_stmt_dev(yylhs.location, make_stmt_list(yylhs.location)); } -#line 2393 "parser.cpp" + case 52: // stmt_list: stmt_list ";" +#line 370 "parser.ypp" + { yylhs.value.as < stmt_list::ptr > () = std::move(yystack_[1].value.as < stmt_list::ptr > ()); } +#line 2464 "parser.cpp" break; - case 55: // stmt_comp: "{" stmt_or_dev_list "}" -#line 373 "parser.ypp" - { yylhs.value.as < stmt_comp::ptr > () = make_stmt_comp(yylhs.location, std::move(yystack_[1].value.as < stmt_list::ptr > ())); } -#line 2399 "parser.cpp" + case 53: // stmt_list: ";" +#line 372 "parser.ypp" + { yylhs.value.as < stmt_list::ptr > () = make_stmt_list(yylhs.location); } +#line 2470 "parser.cpp" break; - case 56: // stmt_comp: "{" "}" -#line 374 "parser.ypp" - { yylhs.value.as < stmt_comp::ptr > () = make_stmt_comp(yylhs.location, make_stmt_list(yylhs.location)); } -#line 2405 "parser.cpp" + case 54: // stmt_or_dev_list: stmt_or_dev_list stmt_or_dev +#line 377 "parser.ypp" + { yylhs.value.as < stmt_list::ptr > () = std::move(yystack_[1].value.as < stmt_list::ptr > ()); yylhs.value.as < stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < stmt > ())); } +#line 2476 "parser.cpp" break; - case 57: // stmt_expr: expr_assign + case 55: // stmt_or_dev_list: stmt_or_dev #line 379 "parser.ypp" - { yylhs.value.as < stmt_expr::ptr > () = make_stmt_expr(yylhs.location, std::move(yystack_[0].value.as < expr > ())); } -#line 2411 "parser.cpp" + { yylhs.value.as < stmt_list::ptr > () = make_stmt_list(yylhs.location); yylhs.value.as < stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < stmt > ())); } +#line 2482 "parser.cpp" break; - case 58: // stmt_expr: expr_increment + case 56: // stmt_or_dev_list: stmt_or_dev_list ";" #line 381 "parser.ypp" - { yylhs.value.as < stmt_expr::ptr > () = make_stmt_expr(yylhs.location, std::move(yystack_[0].value.as < expr > ())); } -#line 2417 "parser.cpp" + { yylhs.value.as < stmt_list::ptr > () = std::move(yystack_[1].value.as < stmt_list::ptr > ()); } +#line 2488 "parser.cpp" break; - case 59: // stmt_expr: expr_decrement + case 57: // stmt_or_dev_list: ";" #line 383 "parser.ypp" - { yylhs.value.as < stmt_expr::ptr > () = make_stmt_expr(yylhs.location, std::move(yystack_[0].value.as < expr > ())); } -#line 2423 "parser.cpp" + { yylhs.value.as < stmt_list::ptr > () = make_stmt_list(yylhs.location); } +#line 2494 "parser.cpp" break; - case 60: // stmt_expr: %empty -#line 385 "parser.ypp" - { yylhs.value.as < stmt_expr::ptr > () = make_stmt_expr(yylhs.location, make_node(yylhs.location)); } -#line 2429 "parser.cpp" + case 58: // stmt_dev: "/#" stmt_list "#/" +#line 387 "parser.ypp" + { yylhs.value.as < stmt_dev::ptr > () = make_stmt_dev(yylhs.location, std::move(yystack_[1].value.as < stmt_list::ptr > ())); } +#line 2500 "parser.cpp" break; - case 61: // stmt_call: expr_call ";" -#line 390 "parser.ypp" - { yylhs.value.as < stmt_call::ptr > () = make_stmt_call(yylhs.location, expr{ std::move(yystack_[1].value.as < expr_call::ptr > ()) }); } -#line 2435 "parser.cpp" + case 59: // stmt_dev: "/#" "#/" +#line 388 "parser.ypp" + { yylhs.value.as < stmt_dev::ptr > () = make_stmt_dev(yylhs.location, make_stmt_list(yylhs.location)); } +#line 2506 "parser.cpp" break; - case 62: // stmt_call: expr_method ";" + case 60: // stmt_comp: "{" stmt_or_dev_list "}" #line 392 "parser.ypp" - { yylhs.value.as < stmt_call::ptr > () = make_stmt_call(yylhs.location, expr{ std::move(yystack_[1].value.as < expr_method::ptr > ()) }); } -#line 2441 "parser.cpp" + { yylhs.value.as < stmt_comp::ptr > () = make_stmt_comp(yylhs.location, std::move(yystack_[1].value.as < stmt_list::ptr > ())); } +#line 2512 "parser.cpp" break; - case 63: // stmt_assign: expr_assign ";" -#line 397 "parser.ypp" - { yylhs.value.as < stmt_assign::ptr > () = make_stmt_assign(yylhs.location, std::move(yystack_[1].value.as < expr > ())); } -#line 2447 "parser.cpp" + case 61: // stmt_comp: "{" "}" +#line 393 "parser.ypp" + { yylhs.value.as < stmt_comp::ptr > () = make_stmt_comp(yylhs.location, make_stmt_list(yylhs.location)); } +#line 2518 "parser.cpp" break; - case 64: // stmt_assign: expr_increment ";" -#line 399 "parser.ypp" - { yylhs.value.as < stmt_assign::ptr > () = make_stmt_assign(yylhs.location, std::move(yystack_[1].value.as < expr > ())); } -#line 2453 "parser.cpp" + case 62: // stmt_expr: expr_assign +#line 398 "parser.ypp" + { yylhs.value.as < stmt_expr::ptr > () = make_stmt_expr(yylhs.location, std::move(yystack_[0].value.as < expr > ())); } +#line 2524 "parser.cpp" break; - case 65: // stmt_assign: expr_decrement ";" -#line 401 "parser.ypp" - { yylhs.value.as < stmt_assign::ptr > () = make_stmt_assign(yylhs.location, std::move(yystack_[1].value.as < expr > ())); } -#line 2459 "parser.cpp" + case 63: // stmt_expr: expr_increment +#line 400 "parser.ypp" + { yylhs.value.as < stmt_expr::ptr > () = make_stmt_expr(yylhs.location, std::move(yystack_[0].value.as < expr > ())); } +#line 2530 "parser.cpp" break; - case 66: // stmt_endon: expr_object "endon" "(" expr ")" ";" -#line 406 "parser.ypp" - { yylhs.value.as < stmt_endon::ptr > () = make_stmt_endon(yylhs.location, std::move(yystack_[5].value.as < expr > ()), std::move(yystack_[2].value.as < expr > ())); } -#line 2465 "parser.cpp" + case 64: // stmt_expr: expr_decrement +#line 402 "parser.ypp" + { yylhs.value.as < stmt_expr::ptr > () = make_stmt_expr(yylhs.location, std::move(yystack_[0].value.as < expr > ())); } +#line 2536 "parser.cpp" break; - case 67: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" + case 65: // stmt_expr: %empty +#line 404 "parser.ypp" + { yylhs.value.as < stmt_expr::ptr > () = make_stmt_expr(yylhs.location, make_node(yylhs.location)); } +#line 2542 "parser.cpp" + break; + + case 66: // stmt_call: expr_call ";" +#line 409 "parser.ypp" + { yylhs.value.as < stmt_call::ptr > () = make_stmt_call(yylhs.location, expr{ std::move(yystack_[1].value.as < expr_call::ptr > ()) }); } +#line 2548 "parser.cpp" + break; + + case 67: // stmt_call: expr_method ";" #line 411 "parser.ypp" - { yylhs.value.as < stmt_notify::ptr > () = make_stmt_notify(yylhs.location, std::move(yystack_[7].value.as < expr > ()), std::move(yystack_[4].value.as < expr > ()), std::move(yystack_[2].value.as < expr_arguments::ptr > ())); } -#line 2471 "parser.cpp" + { yylhs.value.as < stmt_call::ptr > () = make_stmt_call(yylhs.location, expr{ std::move(yystack_[1].value.as < expr_method::ptr > ()) }); } +#line 2554 "parser.cpp" break; - case 68: // stmt_notify: expr_object "notify" "(" expr ")" ";" -#line 413 "parser.ypp" - { yylhs.value.as < stmt_notify::ptr > () = make_stmt_notify(yylhs.location, std::move(yystack_[5].value.as < expr > ()), std::move(yystack_[2].value.as < expr > ()), make_expr_arguments(yylhs.location)); } -#line 2477 "parser.cpp" + case 68: // stmt_assign: expr_assign ";" +#line 416 "parser.ypp" + { yylhs.value.as < stmt_assign::ptr > () = make_stmt_assign(yylhs.location, std::move(yystack_[1].value.as < expr > ())); } +#line 2560 "parser.cpp" break; - case 69: // stmt_wait: "wait" expr ";" + case 69: // stmt_assign: expr_increment ";" #line 418 "parser.ypp" - { yylhs.value.as < stmt_wait::ptr > () = make_stmt_wait(yylhs.location, std::move(yystack_[1].value.as < expr > ())); } -#line 2483 "parser.cpp" + { yylhs.value.as < stmt_assign::ptr > () = make_stmt_assign(yylhs.location, std::move(yystack_[1].value.as < expr > ())); } +#line 2566 "parser.cpp" break; - case 70: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" -#line 423 "parser.ypp" - { yylhs.value.as < stmt_waittill::ptr > () = make_stmt_waittill(yylhs.location, std::move(yystack_[7].value.as < expr > ()), std::move(yystack_[4].value.as < expr > ()), std::move(yystack_[2].value.as < expr_arguments::ptr > ())); } -#line 2489 "parser.cpp" + case 70: // stmt_assign: expr_decrement ";" +#line 420 "parser.ypp" + { yylhs.value.as < stmt_assign::ptr > () = make_stmt_assign(yylhs.location, std::move(yystack_[1].value.as < expr > ())); } +#line 2572 "parser.cpp" break; - case 71: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" + case 71: // stmt_endon: expr_object "endon" "(" expr ")" ";" #line 425 "parser.ypp" - { yylhs.value.as < stmt_waittill::ptr > () = make_stmt_waittill(yylhs.location, std::move(yystack_[5].value.as < expr > ()), std::move(yystack_[2].value.as < expr > ()), make_expr_arguments(yylhs.location)); } -#line 2495 "parser.cpp" + { yylhs.value.as < stmt_endon::ptr > () = make_stmt_endon(yylhs.location, std::move(yystack_[5].value.as < expr > ()), std::move(yystack_[2].value.as < expr > ())); } +#line 2578 "parser.cpp" break; - case 72: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" + case 72: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" #line 430 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch::ptr > () = make_stmt_waittillmatch(yylhs.location, std::move(yystack_[7].value.as < expr > ()), std::move(yystack_[4].value.as < expr > ()), std::move(yystack_[2].value.as < expr_arguments::ptr > ())); } -#line 2501 "parser.cpp" + { yylhs.value.as < stmt_notify::ptr > () = make_stmt_notify(yylhs.location, std::move(yystack_[7].value.as < expr > ()), std::move(yystack_[4].value.as < expr > ()), std::move(yystack_[2].value.as < expr_arguments::ptr > ())); } +#line 2584 "parser.cpp" break; - case 73: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" + case 73: // stmt_notify: expr_object "notify" "(" expr ")" ";" #line 432 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch::ptr > () = make_stmt_waittillmatch(yylhs.location, std::move(yystack_[5].value.as < expr > ()), std::move(yystack_[2].value.as < expr > ()), make_expr_arguments(yylhs.location)); } -#line 2507 "parser.cpp" + { yylhs.value.as < stmt_notify::ptr > () = make_stmt_notify(yylhs.location, std::move(yystack_[5].value.as < expr > ()), std::move(yystack_[2].value.as < expr > ()), make_expr_arguments(yylhs.location)); } +#line 2590 "parser.cpp" break; - case 74: // stmt_waittillframeend: "waittillframeend" ";" + case 74: // stmt_wait: "wait" expr ";" #line 437 "parser.ypp" - { yylhs.value.as < stmt_waittillframeend::ptr > () = make_stmt_waittillframeend(yylhs.location); } -#line 2513 "parser.cpp" + { yylhs.value.as < stmt_wait::ptr > () = make_stmt_wait(yylhs.location, std::move(yystack_[1].value.as < expr > ())); } +#line 2596 "parser.cpp" break; - case 75: // stmt_waitframe: "waitframe" ";" + case 75: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" #line 442 "parser.ypp" - { yylhs.value.as < stmt_waitframe::ptr > () = make_stmt_waitframe(yylhs.location); } -#line 2519 "parser.cpp" + { yylhs.value.as < stmt_waittill::ptr > () = make_stmt_waittill(yylhs.location, std::move(yystack_[7].value.as < expr > ()), std::move(yystack_[4].value.as < expr > ()), std::move(yystack_[2].value.as < expr_arguments::ptr > ())); } +#line 2602 "parser.cpp" break; - case 76: // stmt_waitframe: "waitframe" "(" ")" ";" + case 76: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" #line 444 "parser.ypp" - { yylhs.value.as < stmt_waitframe::ptr > () = make_stmt_waitframe(yylhs.location); } -#line 2525 "parser.cpp" + { yylhs.value.as < stmt_waittill::ptr > () = make_stmt_waittill(yylhs.location, std::move(yystack_[5].value.as < expr > ()), std::move(yystack_[2].value.as < expr > ()), make_expr_arguments(yylhs.location)); } +#line 2608 "parser.cpp" break; - case 77: // stmt_if: "if" "(" expr ")" stmt + case 77: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" #line 449 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch::ptr > () = make_stmt_waittillmatch(yylhs.location, std::move(yystack_[7].value.as < expr > ()), std::move(yystack_[4].value.as < expr > ()), std::move(yystack_[2].value.as < expr_arguments::ptr > ())); } +#line 2614 "parser.cpp" + break; + + case 78: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" +#line 451 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch::ptr > () = make_stmt_waittillmatch(yylhs.location, std::move(yystack_[5].value.as < expr > ()), std::move(yystack_[2].value.as < expr > ()), make_expr_arguments(yylhs.location)); } +#line 2620 "parser.cpp" + break; + + case 79: // stmt_waittillframeend: "waittillframeend" ";" +#line 456 "parser.ypp" + { yylhs.value.as < stmt_waittillframeend::ptr > () = make_stmt_waittillframeend(yylhs.location); } +#line 2626 "parser.cpp" + break; + + case 80: // stmt_waitframe: "waitframe" ";" +#line 461 "parser.ypp" + { yylhs.value.as < stmt_waitframe::ptr > () = make_stmt_waitframe(yylhs.location); } +#line 2632 "parser.cpp" + break; + + case 81: // stmt_waitframe: "waitframe" "(" ")" ";" +#line 463 "parser.ypp" + { yylhs.value.as < stmt_waitframe::ptr > () = make_stmt_waitframe(yylhs.location); } +#line 2638 "parser.cpp" + break; + + case 82: // stmt_if: "if" "(" expr ")" stmt +#line 468 "parser.ypp" { yylhs.value.as < stmt_if::ptr > () = make_stmt_if(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < stmt > ())); } -#line 2531 "parser.cpp" +#line 2644 "parser.cpp" break; - case 78: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 454 "parser.ypp" + case 83: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 473 "parser.ypp" { yylhs.value.as < stmt_ifelse::ptr > () = make_stmt_ifelse(yylhs.location, std::move(yystack_[4].value.as < expr > ()), std::move(yystack_[2].value.as < stmt > ()), std::move(yystack_[0].value.as < stmt > ())); } -#line 2537 "parser.cpp" +#line 2650 "parser.cpp" break; - case 79: // stmt_while: "while" "(" expr ")" stmt -#line 459 "parser.ypp" + case 84: // stmt_while: "while" "(" expr ")" stmt +#line 478 "parser.ypp" { yylhs.value.as < stmt_while::ptr > () = make_stmt_while(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < stmt > ())); } -#line 2543 "parser.cpp" +#line 2656 "parser.cpp" break; - case 80: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" -#line 464 "parser.ypp" + case 85: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" +#line 483 "parser.ypp" { yylhs.value.as < stmt_dowhile::ptr > () = make_stmt_dowhile(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[5].value.as < stmt > ())); } -#line 2549 "parser.cpp" +#line 2662 "parser.cpp" break; - case 81: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt -#line 469 "parser.ypp" + case 86: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt +#line 488 "parser.ypp" { yylhs.value.as < stmt_for::ptr > () = make_stmt_for(yylhs.location, stmt{ std::move(yystack_[6].value.as < stmt_expr::ptr > ()) }, std::move(yystack_[4].value.as < expr > ()), stmt{ std::move(yystack_[2].value.as < stmt_expr::ptr > ()) }, std::move(yystack_[0].value.as < stmt > ())); } -#line 2555 "parser.cpp" +#line 2668 "parser.cpp" break; - case 82: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt -#line 474 "parser.ypp" + case 87: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt +#line 493 "parser.ypp" { auto array = expr{ make_expr_identifier(yylhs.location, fmt::format("_temp_{}", ++index)) }; auto key = expr{ make_expr_identifier(yylhs.location, fmt::format("_temp_{}", ++index)) }; yylhs.value.as < stmt_foreach::ptr > () = make_stmt_foreach(yylhs.location, std::move(yystack_[2].value.as < expr > ()), expr{ std::move(yystack_[4].value.as < expr_identifier::ptr > ()) }, expr{ make_node(yylhs.location) }, std::move(array), std::move(key), std::move(yystack_[0].value.as < stmt > ()), false); } -#line 2564 "parser.cpp" +#line 2677 "parser.cpp" break; - case 83: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt -#line 479 "parser.ypp" + case 88: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt +#line 498 "parser.ypp" { auto array = expr{ make_expr_identifier(yylhs.location, fmt::format("_temp_{}", ++index)) }; auto key = (ctx_->props() & props::foreach) ? expr{ make_expr_identifier(yylhs.location, fmt::format("_temp_{}", ++index)) } : expr{ std::move(yystack_[6].value.as < expr_identifier::ptr > ()) }; yylhs.value.as < stmt_foreach::ptr > () = make_stmt_foreach(yylhs.location, std::move(yystack_[2].value.as < expr > ()), expr{ std::move(yystack_[4].value.as < expr_identifier::ptr > ()) }, (ctx_->props() & props::foreach) ? expr{ std::move(yystack_[6].value.as < expr_identifier::ptr > ()) } : expr{ make_node(yylhs.location) }, std::move(array), std::move(key), std::move(yystack_[0].value.as < stmt > ()), true); } -#line 2574 "parser.cpp" +#line 2687 "parser.cpp" break; - case 84: // stmt_switch: "switch" "(" expr ")" stmt_comp -#line 488 "parser.ypp" + case 89: // stmt_switch: "switch" "(" expr ")" stmt_comp +#line 507 "parser.ypp" { yylhs.value.as < stmt_switch::ptr > () = make_stmt_switch(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < stmt_comp::ptr > ())); parse_switch(*yylhs.value.as < stmt_switch::ptr > ()); } -#line 2582 "parser.cpp" +#line 2695 "parser.cpp" break; - case 85: // stmt_case: "case" expr_integer ":" -#line 495 "parser.ypp" + case 90: // stmt_case: "case" expr_integer ":" +#line 514 "parser.ypp" { yylhs.value.as < stmt_case::ptr > () = make_stmt_case(yylhs.location, expr{ std::move(yystack_[1].value.as < expr_integer::ptr > ()) }, make_stmt_list(yylhs.location)); } -#line 2588 "parser.cpp" +#line 2701 "parser.cpp" break; - case 86: // stmt_case: "case" expr_string ":" -#line 497 "parser.ypp" + case 91: // stmt_case: "case" expr_string ":" +#line 516 "parser.ypp" { yylhs.value.as < stmt_case::ptr > () = make_stmt_case(yylhs.location, expr{ std::move(yystack_[1].value.as < expr_string::ptr > ()) }, make_stmt_list(yylhs.location)); } -#line 2594 "parser.cpp" +#line 2707 "parser.cpp" break; - case 87: // stmt_default: "default" ":" -#line 502 "parser.ypp" + case 92: // stmt_default: "default" ":" +#line 521 "parser.ypp" { yylhs.value.as < stmt_default::ptr > () = make_stmt_default(yylhs.location, make_stmt_list(yylhs.location)); } -#line 2600 "parser.cpp" +#line 2713 "parser.cpp" break; - case 88: // stmt_break: "break" ";" -#line 507 "parser.ypp" + case 93: // stmt_break: "break" ";" +#line 526 "parser.ypp" { yylhs.value.as < stmt_break::ptr > () = make_stmt_break(yylhs.location); } -#line 2606 "parser.cpp" +#line 2719 "parser.cpp" break; - case 89: // stmt_continue: "continue" ";" -#line 512 "parser.ypp" + case 94: // stmt_continue: "continue" ";" +#line 531 "parser.ypp" { yylhs.value.as < stmt_continue::ptr > () = make_stmt_continue(yylhs.location); } -#line 2612 "parser.cpp" +#line 2725 "parser.cpp" break; - case 90: // stmt_return: "return" expr ";" -#line 517 "parser.ypp" + case 95: // stmt_return: "return" expr ";" +#line 536 "parser.ypp" { yylhs.value.as < stmt_return::ptr > () = make_stmt_return(yylhs.location, std::move(yystack_[1].value.as < expr > ())); } -#line 2618 "parser.cpp" +#line 2731 "parser.cpp" break; - case 91: // stmt_return: "return" ";" -#line 519 "parser.ypp" - { yylhs.value.as < stmt_return::ptr > () = make_stmt_return(yylhs.location, make_node(yylhs.location)); } -#line 2624 "parser.cpp" - break; - - case 92: // stmt_breakpoint: "breakpoint" ";" -#line 524 "parser.ypp" - { yylhs.value.as < stmt_breakpoint::ptr > () = make_stmt_breakpoint(yylhs.location); } -#line 2630 "parser.cpp" - break; - - case 93: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 529 "parser.ypp" - { yylhs.value.as < stmt_prof_begin::ptr > () = make_stmt_prof_begin(yylhs.location, std::move(yystack_[2].value.as < expr_arguments::ptr > ())); } -#line 2636 "parser.cpp" - break; - - case 94: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 534 "parser.ypp" - { yylhs.value.as < stmt_prof_end::ptr > () = make_stmt_prof_end(yylhs.location, std::move(yystack_[2].value.as < expr_arguments::ptr > ())); } -#line 2642 "parser.cpp" - break; - - case 95: // expr: expr_ternary + case 96: // stmt_return: "return" ";" #line 538 "parser.ypp" - { yylhs.value.as < expr > () = std::move(yystack_[0].value.as < expr > ()); } -#line 2648 "parser.cpp" + { yylhs.value.as < stmt_return::ptr > () = make_stmt_return(yylhs.location, make_node(yylhs.location)); } +#line 2737 "parser.cpp" break; - case 96: // expr: expr_binary -#line 539 "parser.ypp" - { yylhs.value.as < expr > () = std::move(yystack_[0].value.as < expr > ()); } -#line 2654 "parser.cpp" + case 97: // stmt_breakpoint: "breakpoint" ";" +#line 543 "parser.ypp" + { yylhs.value.as < stmt_breakpoint::ptr > () = make_stmt_breakpoint(yylhs.location); } +#line 2743 "parser.cpp" break; - case 97: // expr: expr_primitive -#line 540 "parser.ypp" - { yylhs.value.as < expr > () = std::move(yystack_[0].value.as < expr > ()); } -#line 2660 "parser.cpp" + case 98: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" +#line 548 "parser.ypp" + { yylhs.value.as < stmt_prof_begin::ptr > () = make_stmt_prof_begin(yylhs.location, std::move(yystack_[2].value.as < expr_arguments::ptr > ())); } +#line 2749 "parser.cpp" break; - case 98: // expr_or_empty: expr -#line 544 "parser.ypp" - { yylhs.value.as < expr > () = std::move(yystack_[0].value.as < expr > ()); } -#line 2666 "parser.cpp" + case 99: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" +#line 553 "parser.ypp" + { yylhs.value.as < stmt_prof_end::ptr > () = make_stmt_prof_end(yylhs.location, std::move(yystack_[2].value.as < expr_arguments::ptr > ())); } +#line 2755 "parser.cpp" break; - case 99: // expr_or_empty: %empty -#line 545 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_node(yylhs.location); } -#line 2672 "parser.cpp" - break; - - case 100: // expr_assign: expr_tuple "=" expr -#line 550 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_assign_equal(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2678 "parser.cpp" - break; - - case 101: // expr_assign: expr_object "=" expr -#line 552 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_assign_equal(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2684 "parser.cpp" - break; - - case 102: // expr_assign: expr_object "|=" expr -#line 554 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_assign_bitwise_or(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2690 "parser.cpp" - break; - - case 103: // expr_assign: expr_object "&=" expr -#line 556 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_assign_bitwise_and(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2696 "parser.cpp" - break; - - case 104: // expr_assign: expr_object "^=" expr + case 100: // stmt_assert: "assert" "(" expr_arguments ")" ";" #line 558 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_assign_bitwise_exor(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2702 "parser.cpp" + { yylhs.value.as < stmt_assert::ptr > () = make_stmt_assert(yylhs.location, std::move(yystack_[2].value.as < expr_arguments::ptr > ())); } +#line 2761 "parser.cpp" break; - case 105: // expr_assign: expr_object "<<=" expr -#line 560 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_assign_shift_left(yylhs.location, std::move(yystack_[2].value.as < expr > ()),std::move( yystack_[0].value.as < expr > ())); } -#line 2708 "parser.cpp" + case 101: // stmt_assertex: "assertex" "(" expr_arguments ")" ";" +#line 563 "parser.ypp" + { yylhs.value.as < stmt_assertex::ptr > () = make_stmt_assertex(yylhs.location, std::move(yystack_[2].value.as < expr_arguments::ptr > ())); } +#line 2767 "parser.cpp" break; - case 106: // expr_assign: expr_object ">>=" expr -#line 562 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_assign_shift_right(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2714 "parser.cpp" - break; - - case 107: // expr_assign: expr_object "+=" expr -#line 564 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_assign_add(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2720 "parser.cpp" - break; - - case 108: // expr_assign: expr_object "-=" expr -#line 566 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_assign_sub(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2726 "parser.cpp" - break; - - case 109: // expr_assign: expr_object "*=" expr + case 102: // stmt_assertmsg: "assertmsg" "(" expr_arguments ")" ";" #line 568 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_assign_mul(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2732 "parser.cpp" + { yylhs.value.as < stmt_assertmsg::ptr > () = make_stmt_assertmsg(yylhs.location, std::move(yystack_[2].value.as < expr_arguments::ptr > ())); } +#line 2773 "parser.cpp" break; - case 110: // expr_assign: expr_object "/=" expr -#line 570 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_assign_div(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2738 "parser.cpp" - break; - - case 111: // expr_assign: expr_object "%=" expr + case 103: // expr: expr_ternary #line 572 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_assign_mod(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2744 "parser.cpp" + { yylhs.value.as < expr > () = std::move(yystack_[0].value.as < expr > ()); } +#line 2779 "parser.cpp" break; - case 112: // expr_increment: "++" expr_object -#line 577 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_increment(yylhs.location, std::move(yystack_[0].value.as < expr > ()), true); } -#line 2750 "parser.cpp" + case 104: // expr: expr_binary +#line 573 "parser.ypp" + { yylhs.value.as < expr > () = std::move(yystack_[0].value.as < expr > ()); } +#line 2785 "parser.cpp" break; - case 113: // expr_increment: expr_object "++" + case 105: // expr: expr_primitive +#line 574 "parser.ypp" + { yylhs.value.as < expr > () = std::move(yystack_[0].value.as < expr > ()); } +#line 2791 "parser.cpp" + break; + + case 106: // expr_or_empty: expr +#line 578 "parser.ypp" + { yylhs.value.as < expr > () = std::move(yystack_[0].value.as < expr > ()); } +#line 2797 "parser.cpp" + break; + + case 107: // expr_or_empty: %empty #line 579 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_increment(yylhs.location, std::move(yystack_[1].value.as < expr > ()), false); } -#line 2756 "parser.cpp" + { yylhs.value.as < expr > ().as_node = make_node(yylhs.location); } +#line 2803 "parser.cpp" break; - case 114: // expr_decrement: "--" expr_object + case 108: // expr_assign: expr_tuple "=" expr #line 584 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_decrement(yylhs.location, std::move(yystack_[0].value.as < expr > ()), true); } -#line 2762 "parser.cpp" + { yylhs.value.as < expr > ().as_node = make_expr_assign_equal(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 2809 "parser.cpp" break; - case 115: // expr_decrement: expr_object "--" + case 109: // expr_assign: expr_object "=" expr #line 586 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_decrement(yylhs.location, std::move(yystack_[1].value.as < expr > ()), false); } -#line 2768 "parser.cpp" + { yylhs.value.as < expr > ().as_node = make_expr_assign_equal(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 2815 "parser.cpp" break; - case 116: // expr_ternary: expr "?" expr ":" expr -#line 591 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_ternary(yylhs.location, std::move(yystack_[4].value.as < expr > ()), std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2774 "parser.cpp" + case 110: // expr_assign: expr_object "|=" expr +#line 588 "parser.ypp" + { yylhs.value.as < expr > ().as_node = make_expr_assign_bitwise_or(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 2821 "parser.cpp" break; - case 117: // expr_binary: expr "||" expr + case 111: // expr_assign: expr_object "&=" expr +#line 590 "parser.ypp" + { yylhs.value.as < expr > ().as_node = make_expr_assign_bitwise_and(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 2827 "parser.cpp" + break; + + case 112: // expr_assign: expr_object "^=" expr +#line 592 "parser.ypp" + { yylhs.value.as < expr > ().as_node = make_expr_assign_bitwise_exor(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 2833 "parser.cpp" + break; + + case 113: // expr_assign: expr_object "<<=" expr +#line 594 "parser.ypp" + { yylhs.value.as < expr > ().as_node = make_expr_assign_shift_left(yylhs.location, std::move(yystack_[2].value.as < expr > ()),std::move( yystack_[0].value.as < expr > ())); } +#line 2839 "parser.cpp" + break; + + case 114: // expr_assign: expr_object ">>=" expr #line 596 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_or(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2780 "parser.cpp" + { yylhs.value.as < expr > ().as_node = make_expr_assign_shift_right(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 2845 "parser.cpp" break; - case 118: // expr_binary: expr "&&" expr + case 115: // expr_assign: expr_object "+=" expr #line 598 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_and(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2786 "parser.cpp" + { yylhs.value.as < expr > ().as_node = make_expr_assign_add(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 2851 "parser.cpp" break; - case 119: // expr_binary: expr "==" expr + case 116: // expr_assign: expr_object "-=" expr #line 600 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_equality(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2792 "parser.cpp" + { yylhs.value.as < expr > ().as_node = make_expr_assign_sub(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 2857 "parser.cpp" break; - case 120: // expr_binary: expr "!=" expr + case 117: // expr_assign: expr_object "*=" expr #line 602 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_inequality(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2798 "parser.cpp" + { yylhs.value.as < expr > ().as_node = make_expr_assign_mul(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 2863 "parser.cpp" break; - case 121: // expr_binary: expr "<=" expr + case 118: // expr_assign: expr_object "/=" expr #line 604 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_less_equal(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2804 "parser.cpp" + { yylhs.value.as < expr > ().as_node = make_expr_assign_div(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 2869 "parser.cpp" break; - case 122: // expr_binary: expr ">=" expr + case 119: // expr_assign: expr_object "%=" expr #line 606 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_greater_equal(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2810 "parser.cpp" + { yylhs.value.as < expr > ().as_node = make_expr_assign_mod(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 2875 "parser.cpp" break; - case 123: // expr_binary: expr "<" expr -#line 608 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_less(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2816 "parser.cpp" + case 120: // expr_increment: "++" expr_object +#line 611 "parser.ypp" + { yylhs.value.as < expr > ().as_node = make_expr_increment(yylhs.location, std::move(yystack_[0].value.as < expr > ()), true); } +#line 2881 "parser.cpp" break; - case 124: // expr_binary: expr ">" expr -#line 610 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_greater(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2822 "parser.cpp" + case 121: // expr_increment: expr_object "++" +#line 613 "parser.ypp" + { yylhs.value.as < expr > ().as_node = make_expr_increment(yylhs.location, std::move(yystack_[1].value.as < expr > ()), false); } +#line 2887 "parser.cpp" break; - case 125: // expr_binary: expr "|" expr -#line 612 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_bitwise_or(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2828 "parser.cpp" - break; - - case 126: // expr_binary: expr "&" expr -#line 614 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_bitwise_and(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2834 "parser.cpp" - break; - - case 127: // expr_binary: expr "^" expr -#line 616 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_bitwise_exor(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2840 "parser.cpp" - break; - - case 128: // expr_binary: expr "<<" expr + case 122: // expr_decrement: "--" expr_object #line 618 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_shift_left(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2846 "parser.cpp" + { yylhs.value.as < expr > ().as_node = make_expr_decrement(yylhs.location, std::move(yystack_[0].value.as < expr > ()), true); } +#line 2893 "parser.cpp" break; - case 129: // expr_binary: expr ">>" expr + case 123: // expr_decrement: expr_object "--" #line 620 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_shift_right(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2852 "parser.cpp" + { yylhs.value.as < expr > ().as_node = make_expr_decrement(yylhs.location, std::move(yystack_[1].value.as < expr > ()), false); } +#line 2899 "parser.cpp" break; - case 130: // expr_binary: expr "+" expr -#line 622 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_add(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2858 "parser.cpp" + case 124: // expr_ternary: expr "?" expr ":" expr +#line 625 "parser.ypp" + { yylhs.value.as < expr > ().as_node = make_expr_ternary(yylhs.location, std::move(yystack_[4].value.as < expr > ()), std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 2905 "parser.cpp" break; - case 131: // expr_binary: expr "-" expr -#line 624 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_sub(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2864 "parser.cpp" - break; - - case 132: // expr_binary: expr "*" expr -#line 626 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_mul(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2870 "parser.cpp" - break; - - case 133: // expr_binary: expr "/" expr -#line 628 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_div(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2876 "parser.cpp" - break; - - case 134: // expr_binary: expr "%" expr + case 125: // expr_binary: expr "||" expr #line 630 "parser.ypp" - { yylhs.value.as < expr > ().as_node = make_expr_mod(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } -#line 2882 "parser.cpp" + { yylhs.value.as < expr > ().as_node = make_expr_or(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 2911 "parser.cpp" break; - case 135: // expr_primitive: expr_complement + case 126: // expr_binary: expr "&&" expr +#line 632 "parser.ypp" + { yylhs.value.as < expr > ().as_node = make_expr_and(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 2917 "parser.cpp" + break; + + case 127: // expr_binary: expr "==" expr #line 634 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_complement::ptr > ()); } -#line 2888 "parser.cpp" + { yylhs.value.as < expr > ().as_node = make_expr_equality(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 2923 "parser.cpp" break; - case 136: // expr_primitive: expr_negate -#line 635 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_negate::ptr > ()); } -#line 2894 "parser.cpp" - break; - - case 137: // expr_primitive: expr_not + case 128: // expr_binary: expr "!=" expr #line 636 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_not::ptr > ()); } -#line 2900 "parser.cpp" + { yylhs.value.as < expr > ().as_node = make_expr_inequality(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 2929 "parser.cpp" break; - case 138: // expr_primitive: expr_call -#line 637 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_call::ptr > ()); } -#line 2906 "parser.cpp" - break; - - case 139: // expr_primitive: expr_method + case 129: // expr_binary: expr "<=" expr #line 638 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_method::ptr > ()); } -#line 2912 "parser.cpp" + { yylhs.value.as < expr > ().as_node = make_expr_less_equal(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 2935 "parser.cpp" break; - case 140: // expr_primitive: expr_add_array -#line 639 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_add_array::ptr > ()); } -#line 2918 "parser.cpp" - break; - - case 141: // expr_primitive: expr_isdefined + case 130: // expr_binary: expr ">=" expr #line 640 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_isdefined::ptr > ()); } -#line 2924 "parser.cpp" + { yylhs.value.as < expr > ().as_node = make_expr_greater_equal(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 2941 "parser.cpp" break; - case 142: // expr_primitive: expr_istrue -#line 641 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_istrue::ptr > ()); } -#line 2930 "parser.cpp" - break; - - case 143: // expr_primitive: expr_reference + case 131: // expr_binary: expr "<" expr #line 642 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_reference::ptr > ()); } -#line 2936 "parser.cpp" + { yylhs.value.as < expr > ().as_node = make_expr_less(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 2947 "parser.cpp" break; - case 144: // expr_primitive: expr_array -#line 643 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_array::ptr > ()); } -#line 2942 "parser.cpp" - break; - - case 145: // expr_primitive: expr_field + case 132: // expr_binary: expr ">" expr #line 644 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_field::ptr > ()); } -#line 2948 "parser.cpp" + { yylhs.value.as < expr > ().as_node = make_expr_greater(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 2953 "parser.cpp" break; - case 146: // expr_primitive: expr_size -#line 645 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_size::ptr > ()); } -#line 2954 "parser.cpp" - break; - - case 147: // expr_primitive: expr_paren + case 133: // expr_binary: expr "|" expr #line 646 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_paren::ptr > ()); } -#line 2960 "parser.cpp" + { yylhs.value.as < expr > ().as_node = make_expr_bitwise_or(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 2959 "parser.cpp" break; - case 148: // expr_primitive: expr_thisthread -#line 647 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_thisthread::ptr > ()); } -#line 2966 "parser.cpp" - break; - - case 149: // expr_primitive: expr_empty_array + case 134: // expr_binary: expr "&" expr #line 648 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_empty_array::ptr > ()); } -#line 2972 "parser.cpp" + { yylhs.value.as < expr > ().as_node = make_expr_bitwise_and(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 2965 "parser.cpp" break; - case 150: // expr_primitive: expr_undefined -#line 649 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_undefined::ptr > ()); } -#line 2978 "parser.cpp" - break; - - case 151: // expr_primitive: expr_game + case 135: // expr_binary: expr "^" expr #line 650 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_game::ptr > ()); } -#line 2984 "parser.cpp" + { yylhs.value.as < expr > ().as_node = make_expr_bitwise_exor(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 2971 "parser.cpp" break; - case 152: // expr_primitive: expr_self -#line 651 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_self::ptr > ()); } -#line 2990 "parser.cpp" - break; - - case 153: // expr_primitive: expr_anim + case 136: // expr_binary: expr "<<" expr #line 652 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_anim::ptr > ()); } -#line 2996 "parser.cpp" + { yylhs.value.as < expr > ().as_node = make_expr_shift_left(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 2977 "parser.cpp" break; - case 154: // expr_primitive: expr_level -#line 653 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_level::ptr > ()); } -#line 3002 "parser.cpp" - break; - - case 155: // expr_primitive: expr_animation + case 137: // expr_binary: expr ">>" expr #line 654 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_animation::ptr > ()); } -#line 3008 "parser.cpp" + { yylhs.value.as < expr > ().as_node = make_expr_shift_right(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 2983 "parser.cpp" break; - case 156: // expr_primitive: expr_animtree -#line 655 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_animtree::ptr > ()); } -#line 3014 "parser.cpp" - break; - - case 157: // expr_primitive: expr_identifier + case 138: // expr_binary: expr "+" expr #line 656 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_identifier::ptr > ()); } -#line 3020 "parser.cpp" + { yylhs.value.as < expr > ().as_node = make_expr_add(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 2989 "parser.cpp" break; - case 158: // expr_primitive: expr_istring -#line 657 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_istring::ptr > ()); } -#line 3026 "parser.cpp" - break; - - case 159: // expr_primitive: expr_string + case 139: // expr_binary: expr "-" expr #line 658 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_string::ptr > ()); } -#line 3032 "parser.cpp" + { yylhs.value.as < expr > ().as_node = make_expr_sub(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 2995 "parser.cpp" break; - case 160: // expr_primitive: expr_vector -#line 659 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_vector::ptr > ()); } -#line 3038 "parser.cpp" - break; - - case 161: // expr_primitive: expr_float + case 140: // expr_binary: expr "*" expr #line 660 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_float::ptr > ()); } -#line 3044 "parser.cpp" + { yylhs.value.as < expr > ().as_node = make_expr_mul(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 3001 "parser.cpp" break; - case 162: // expr_primitive: expr_integer -#line 661 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_integer::ptr > ()); } -#line 3050 "parser.cpp" - break; - - case 163: // expr_primitive: expr_false + case 141: // expr_binary: expr "/" expr #line 662 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_false::ptr > ()); } -#line 3056 "parser.cpp" + { yylhs.value.as < expr > ().as_node = make_expr_div(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 3007 "parser.cpp" break; - case 164: // expr_primitive: expr_true -#line 663 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_true::ptr > ()); } -#line 3062 "parser.cpp" + case 142: // expr_binary: expr "%" expr +#line 664 "parser.ypp" + { yylhs.value.as < expr > ().as_node = make_expr_mod(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr > ())); } +#line 3013 "parser.cpp" break; - case 165: // expr_complement: "~" expr + case 143: // expr_primitive: expr_complement #line 668 "parser.ypp" - { yylhs.value.as < expr_complement::ptr > () = make_expr_complement(yylhs.location, std::move(yystack_[0].value.as < expr > ())); } -#line 3068 "parser.cpp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_complement::ptr > ()); } +#line 3019 "parser.cpp" break; - case 166: // expr_negate: "-" expr_identifier + case 144: // expr_primitive: expr_negate +#line 669 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_negate::ptr > ()); } +#line 3025 "parser.cpp" + break; + + case 145: // expr_primitive: expr_not +#line 670 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_not::ptr > ()); } +#line 3031 "parser.cpp" + break; + + case 146: // expr_primitive: expr_call +#line 671 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_call::ptr > ()); } +#line 3037 "parser.cpp" + break; + + case 147: // expr_primitive: expr_method +#line 672 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_method::ptr > ()); } +#line 3043 "parser.cpp" + break; + + case 148: // expr_primitive: expr_add_array #line 673 "parser.ypp" - { yylhs.value.as < expr_negate::ptr > () = make_expr_negate(yylhs.location, expr{ std::move(yystack_[0].value.as < expr_identifier::ptr > ()) }); } -#line 3074 "parser.cpp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_add_array::ptr > ()); } +#line 3049 "parser.cpp" break; - case 167: // expr_negate: "-" expr_paren + case 149: // expr_primitive: expr_isdefined +#line 674 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_isdefined::ptr > ()); } +#line 3055 "parser.cpp" + break; + + case 150: // expr_primitive: expr_istrue #line 675 "parser.ypp" - { yylhs.value.as < expr_negate::ptr > () = make_expr_negate(yylhs.location, expr{ std::move(yystack_[0].value.as < expr_paren::ptr > ()) }); } -#line 3080 "parser.cpp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_istrue::ptr > ()); } +#line 3061 "parser.cpp" break; - case 168: // expr_negate: "-" expr_array + case 151: // expr_primitive: expr_reference +#line 676 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_reference::ptr > ()); } +#line 3067 "parser.cpp" + break; + + case 152: // expr_primitive: expr_array #line 677 "parser.ypp" - { yylhs.value.as < expr_negate::ptr > () = make_expr_negate(yylhs.location, expr{ std::move(yystack_[0].value.as < expr_array::ptr > ()) }); } -#line 3086 "parser.cpp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_array::ptr > ()); } +#line 3073 "parser.cpp" break; - case 169: // expr_negate: "-" expr_field + case 153: // expr_primitive: expr_field +#line 678 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_field::ptr > ()); } +#line 3079 "parser.cpp" + break; + + case 154: // expr_primitive: expr_size #line 679 "parser.ypp" - { yylhs.value.as < expr_negate::ptr > () = make_expr_negate(yylhs.location, expr{ std::move(yystack_[0].value.as < expr_field::ptr > ()) }); } -#line 3092 "parser.cpp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_size::ptr > ()); } +#line 3085 "parser.cpp" break; - case 170: // expr_not: "!" expr + case 155: // expr_primitive: expr_paren +#line 680 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_paren::ptr > ()); } +#line 3091 "parser.cpp" + break; + + case 156: // expr_primitive: expr_thisthread +#line 681 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_thisthread::ptr > ()); } +#line 3097 "parser.cpp" + break; + + case 157: // expr_primitive: expr_empty_array +#line 682 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_empty_array::ptr > ()); } +#line 3103 "parser.cpp" + break; + + case 158: // expr_primitive: expr_undefined +#line 683 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_undefined::ptr > ()); } +#line 3109 "parser.cpp" + break; + + case 159: // expr_primitive: expr_game #line 684 "parser.ypp" - { yylhs.value.as < expr_not::ptr > () = make_expr_not(yylhs.location, std::move(yystack_[0].value.as < expr > ())); } -#line 3098 "parser.cpp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_game::ptr > ()); } +#line 3115 "parser.cpp" break; - case 171: // expr_call: expr_function + case 160: // expr_primitive: expr_self +#line 685 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_self::ptr > ()); } +#line 3121 "parser.cpp" + break; + + case 161: // expr_primitive: expr_anim +#line 686 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_anim::ptr > ()); } +#line 3127 "parser.cpp" + break; + + case 162: // expr_primitive: expr_level +#line 687 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_level::ptr > ()); } +#line 3133 "parser.cpp" + break; + + case 163: // expr_primitive: expr_animation #line 688 "parser.ypp" - { yylhs.value.as < expr_call::ptr > () = make_expr_call(yylhs.location, std::move(yystack_[0].value.as < call > ())); } -#line 3104 "parser.cpp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_animation::ptr > ()); } +#line 3139 "parser.cpp" break; - case 172: // expr_call: expr_pointer + case 164: // expr_primitive: expr_animtree #line 689 "parser.ypp" - { yylhs.value.as < expr_call::ptr > () = make_expr_call(yylhs.location, std::move(yystack_[0].value.as < call > ())); } -#line 3110 "parser.cpp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_animtree::ptr > ()); } +#line 3145 "parser.cpp" break; - case 173: // expr_method: expr_object expr_function + case 165: // expr_primitive: expr_identifier +#line 690 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_identifier::ptr > ()); } +#line 3151 "parser.cpp" + break; + + case 166: // expr_primitive: expr_istring +#line 691 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_istring::ptr > ()); } +#line 3157 "parser.cpp" + break; + + case 167: // expr_primitive: expr_string #line 692 "parser.ypp" - { yylhs.value.as < expr_method::ptr > () = make_expr_method(yylhs.location, std::move(yystack_[1].value.as < expr > ()), std::move(yystack_[0].value.as < call > ())); } -#line 3116 "parser.cpp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_string::ptr > ()); } +#line 3163 "parser.cpp" break; - case 174: // expr_method: expr_object expr_pointer + case 168: // expr_primitive: expr_vector #line 693 "parser.ypp" - { yylhs.value.as < expr_method::ptr > () = make_expr_method(yylhs.location, std::move(yystack_[1].value.as < expr > ()), std::move(yystack_[0].value.as < call > ())); } -#line 3122 "parser.cpp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_vector::ptr > ()); } +#line 3169 "parser.cpp" break; - case 175: // expr_function: expr_identifier "(" expr_arguments ")" -#line 698 "parser.ypp" - { yylhs.value.as < call > ().as_function = make_expr_function(yylhs.location, make_expr_path(yylhs.location), std::move(yystack_[3].value.as < expr_identifier::ptr > ()), std::move(yystack_[1].value.as < expr_arguments::ptr > ()), call::mode::normal); } -#line 3128 "parser.cpp" + case 169: // expr_primitive: expr_float +#line 694 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_float::ptr > ()); } +#line 3175 "parser.cpp" break; - case 176: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" -#line 700 "parser.ypp" - { yylhs.value.as < call > ().as_function = make_expr_function(yylhs.location, std::move(yystack_[5].value.as < expr_path::ptr > ()), std::move(yystack_[3].value.as < expr_identifier::ptr > ()), std::move(yystack_[1].value.as < expr_arguments::ptr > ()), call::mode::normal); } -#line 3134 "parser.cpp" + case 170: // expr_primitive: expr_integer +#line 695 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_integer::ptr > ()); } +#line 3181 "parser.cpp" break; - case 177: // expr_function: "thread" expr_identifier "(" expr_arguments ")" + case 171: // expr_primitive: expr_false +#line 696 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_false::ptr > ()); } +#line 3187 "parser.cpp" + break; + + case 172: // expr_primitive: expr_true +#line 697 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_true::ptr > ()); } +#line 3193 "parser.cpp" + break; + + case 173: // expr_complement: "~" expr #line 702 "parser.ypp" - { yylhs.value.as < call > ().as_function = make_expr_function(yylhs.location, make_expr_path(yylhs.location), std::move(yystack_[3].value.as < expr_identifier::ptr > ()), std::move(yystack_[1].value.as < expr_arguments::ptr > ()), call::mode::thread); } -#line 3140 "parser.cpp" + { yylhs.value.as < expr_complement::ptr > () = make_expr_complement(yylhs.location, std::move(yystack_[0].value.as < expr > ())); } +#line 3199 "parser.cpp" break; - case 178: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 704 "parser.ypp" - { yylhs.value.as < call > ().as_function = make_expr_function(yylhs.location, std::move(yystack_[5].value.as < expr_path::ptr > ()), std::move(yystack_[3].value.as < expr_identifier::ptr > ()), std::move(yystack_[1].value.as < expr_arguments::ptr > ()), call::mode::thread); } -#line 3146 "parser.cpp" + case 174: // expr_negate: "-" expr_identifier +#line 707 "parser.ypp" + { yylhs.value.as < expr_negate::ptr > () = make_expr_negate(yylhs.location, expr{ std::move(yystack_[0].value.as < expr_identifier::ptr > ()) }); } +#line 3205 "parser.cpp" break; - case 179: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" -#line 706 "parser.ypp" - { yylhs.value.as < call > ().as_function = make_expr_function(yylhs.location, make_expr_path(yylhs.location), std::move(yystack_[3].value.as < expr_identifier::ptr > ()), std::move(yystack_[1].value.as < expr_arguments::ptr > ()), call::mode::childthread); } -#line 3152 "parser.cpp" + case 175: // expr_negate: "-" expr_paren +#line 709 "parser.ypp" + { yylhs.value.as < expr_negate::ptr > () = make_expr_negate(yylhs.location, expr{ std::move(yystack_[0].value.as < expr_paren::ptr > ()) }); } +#line 3211 "parser.cpp" break; - case 180: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 708 "parser.ypp" - { yylhs.value.as < call > ().as_function = make_expr_function(yylhs.location, std::move(yystack_[5].value.as < expr_path::ptr > ()), std::move(yystack_[3].value.as < expr_identifier::ptr > ()), std::move(yystack_[1].value.as < expr_arguments::ptr > ()), call::mode::childthread); } -#line 3158 "parser.cpp" + case 176: // expr_negate: "-" expr_array +#line 711 "parser.ypp" + { yylhs.value.as < expr_negate::ptr > () = make_expr_negate(yylhs.location, expr{ std::move(yystack_[0].value.as < expr_array::ptr > ()) }); } +#line 3217 "parser.cpp" break; - case 181: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" + case 177: // expr_negate: "-" expr_field #line 713 "parser.ypp" - { yylhs.value.as < call > ().as_pointer = make_expr_pointer(yylhs.location, std::move(yystack_[5].value.as < expr > ()), std::move(yystack_[1].value.as < expr_arguments::ptr > ()), call::mode::normal); } -#line 3164 "parser.cpp" + { yylhs.value.as < expr_negate::ptr > () = make_expr_negate(yylhs.location, expr{ std::move(yystack_[0].value.as < expr_field::ptr > ()) }); } +#line 3223 "parser.cpp" break; - case 182: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 715 "parser.ypp" - { yylhs.value.as < call > ().as_pointer = make_expr_pointer(yylhs.location, std::move(yystack_[5].value.as < expr > ()), std::move(yystack_[1].value.as < expr_arguments::ptr > ()), call::mode::thread); } -#line 3170 "parser.cpp" + case 178: // expr_not: "!" expr +#line 718 "parser.ypp" + { yylhs.value.as < expr_not::ptr > () = make_expr_not(yylhs.location, std::move(yystack_[0].value.as < expr > ())); } +#line 3229 "parser.cpp" break; - case 183: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 717 "parser.ypp" - { yylhs.value.as < call > ().as_pointer = make_expr_pointer(yylhs.location, std::move(yystack_[5].value.as < expr > ()), std::move(yystack_[1].value.as < expr_arguments::ptr > ()), call::mode::childthread); } -#line 3176 "parser.cpp" + case 179: // expr_call: expr_function +#line 722 "parser.ypp" + { yylhs.value.as < expr_call::ptr > () = make_expr_call(yylhs.location, std::move(yystack_[0].value.as < call > ())); } +#line 3235 "parser.cpp" break; - case 184: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 719 "parser.ypp" - { yylhs.value.as < call > ().as_pointer = make_expr_pointer(yylhs.location, std::move(yystack_[5].value.as < expr > ()), std::move(yystack_[1].value.as < expr_arguments::ptr > ()), call::mode::builtin); } -#line 3182 "parser.cpp" + case 180: // expr_call: expr_pointer +#line 723 "parser.ypp" + { yylhs.value.as < expr_call::ptr > () = make_expr_call(yylhs.location, std::move(yystack_[0].value.as < call > ())); } +#line 3241 "parser.cpp" break; - case 185: // expr_add_array: "[" expr_arguments_no_empty "]" -#line 724 "parser.ypp" - { yylhs.value.as < expr_add_array::ptr > () = make_expr_add_array(yylhs.location, std::move(yystack_[1].value.as < expr_arguments::ptr > ())); } -#line 3188 "parser.cpp" + case 181: // expr_method: expr_object expr_function +#line 726 "parser.ypp" + { yylhs.value.as < expr_method::ptr > () = make_expr_method(yylhs.location, std::move(yystack_[1].value.as < expr > ()), std::move(yystack_[0].value.as < call > ())); } +#line 3247 "parser.cpp" break; - case 186: // expr_parameters: expr_parameters "," expr_identifier -#line 729 "parser.ypp" - { yylhs.value.as < expr_parameters::ptr > () = std::move(yystack_[2].value.as < expr_parameters::ptr > ()); yylhs.value.as < expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_identifier::ptr > ())); } -#line 3194 "parser.cpp" + case 182: // expr_method: expr_object expr_pointer +#line 727 "parser.ypp" + { yylhs.value.as < expr_method::ptr > () = make_expr_method(yylhs.location, std::move(yystack_[1].value.as < expr > ()), std::move(yystack_[0].value.as < call > ())); } +#line 3253 "parser.cpp" break; - case 187: // expr_parameters: expr_identifier -#line 731 "parser.ypp" - { yylhs.value.as < expr_parameters::ptr > () = make_expr_parameters(yylhs.location); yylhs.value.as < expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_identifier::ptr > ())); } -#line 3200 "parser.cpp" + case 183: // expr_function: expr_identifier "(" expr_arguments ")" +#line 732 "parser.ypp" + { yylhs.value.as < call > ().as_function = make_expr_function(yylhs.location, make_expr_path(yylhs.location), std::move(yystack_[3].value.as < expr_identifier::ptr > ()), std::move(yystack_[1].value.as < expr_arguments::ptr > ()), call::mode::normal); } +#line 3259 "parser.cpp" break; - case 188: // expr_parameters: %empty -#line 733 "parser.ypp" - { yylhs.value.as < expr_parameters::ptr > () = make_expr_parameters(yylhs.location); } -#line 3206 "parser.cpp" + case 184: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" +#line 734 "parser.ypp" + { yylhs.value.as < call > ().as_function = make_expr_function(yylhs.location, std::move(yystack_[5].value.as < expr_path::ptr > ()), std::move(yystack_[3].value.as < expr_identifier::ptr > ()), std::move(yystack_[1].value.as < expr_arguments::ptr > ()), call::mode::normal); } +#line 3265 "parser.cpp" break; - case 189: // expr_arguments: expr_arguments_no_empty + case 185: // expr_function: "thread" expr_identifier "(" expr_arguments ")" +#line 736 "parser.ypp" + { yylhs.value.as < call > ().as_function = make_expr_function(yylhs.location, make_expr_path(yylhs.location), std::move(yystack_[3].value.as < expr_identifier::ptr > ()), std::move(yystack_[1].value.as < expr_arguments::ptr > ()), call::mode::thread); } +#line 3271 "parser.cpp" + break; + + case 186: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" #line 738 "parser.ypp" - { yylhs.value.as < expr_arguments::ptr > () = std::move(yystack_[0].value.as < expr_arguments::ptr > ()); } -#line 3212 "parser.cpp" + { yylhs.value.as < call > ().as_function = make_expr_function(yylhs.location, std::move(yystack_[5].value.as < expr_path::ptr > ()), std::move(yystack_[3].value.as < expr_identifier::ptr > ()), std::move(yystack_[1].value.as < expr_arguments::ptr > ()), call::mode::thread); } +#line 3277 "parser.cpp" break; - case 190: // expr_arguments: %empty + case 187: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" #line 740 "parser.ypp" - { yylhs.value.as < expr_arguments::ptr > () = make_expr_arguments(yylhs.location); } -#line 3218 "parser.cpp" + { yylhs.value.as < call > ().as_function = make_expr_function(yylhs.location, make_expr_path(yylhs.location), std::move(yystack_[3].value.as < expr_identifier::ptr > ()), std::move(yystack_[1].value.as < expr_arguments::ptr > ()), call::mode::childthread); } +#line 3283 "parser.cpp" break; - case 191: // expr_arguments_no_empty: expr_arguments "," expr -#line 745 "parser.ypp" - { yylhs.value.as < expr_arguments::ptr > () = std::move(yystack_[2].value.as < expr_arguments::ptr > ()); yylhs.value.as < expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr > ())); } -#line 3224 "parser.cpp" + case 188: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" +#line 742 "parser.ypp" + { yylhs.value.as < call > ().as_function = make_expr_function(yylhs.location, std::move(yystack_[5].value.as < expr_path::ptr > ()), std::move(yystack_[3].value.as < expr_identifier::ptr > ()), std::move(yystack_[1].value.as < expr_arguments::ptr > ()), call::mode::childthread); } +#line 3289 "parser.cpp" break; - case 192: // expr_arguments_no_empty: expr + case 189: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" #line 747 "parser.ypp" + { yylhs.value.as < call > ().as_pointer = make_expr_pointer(yylhs.location, std::move(yystack_[5].value.as < expr > ()), std::move(yystack_[1].value.as < expr_arguments::ptr > ()), call::mode::normal); } +#line 3295 "parser.cpp" + break; + + case 190: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 749 "parser.ypp" + { yylhs.value.as < call > ().as_pointer = make_expr_pointer(yylhs.location, std::move(yystack_[5].value.as < expr > ()), std::move(yystack_[1].value.as < expr_arguments::ptr > ()), call::mode::thread); } +#line 3301 "parser.cpp" + break; + + case 191: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 751 "parser.ypp" + { yylhs.value.as < call > ().as_pointer = make_expr_pointer(yylhs.location, std::move(yystack_[5].value.as < expr > ()), std::move(yystack_[1].value.as < expr_arguments::ptr > ()), call::mode::childthread); } +#line 3307 "parser.cpp" + break; + + case 192: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 753 "parser.ypp" + { yylhs.value.as < call > ().as_pointer = make_expr_pointer(yylhs.location, std::move(yystack_[5].value.as < expr > ()), std::move(yystack_[1].value.as < expr_arguments::ptr > ()), call::mode::builtin); } +#line 3313 "parser.cpp" + break; + + case 193: // expr_add_array: "[" expr_arguments_no_empty "]" +#line 758 "parser.ypp" + { yylhs.value.as < expr_add_array::ptr > () = make_expr_add_array(yylhs.location, std::move(yystack_[1].value.as < expr_arguments::ptr > ())); } +#line 3319 "parser.cpp" + break; + + case 194: // expr_parameters: expr_parameters "," expr_identifier +#line 763 "parser.ypp" + { yylhs.value.as < expr_parameters::ptr > () = std::move(yystack_[2].value.as < expr_parameters::ptr > ()); yylhs.value.as < expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_identifier::ptr > ())); } +#line 3325 "parser.cpp" + break; + + case 195: // expr_parameters: expr_identifier +#line 765 "parser.ypp" + { yylhs.value.as < expr_parameters::ptr > () = make_expr_parameters(yylhs.location); yylhs.value.as < expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_identifier::ptr > ())); } +#line 3331 "parser.cpp" + break; + + case 196: // expr_parameters: %empty +#line 767 "parser.ypp" + { yylhs.value.as < expr_parameters::ptr > () = make_expr_parameters(yylhs.location); } +#line 3337 "parser.cpp" + break; + + case 197: // expr_arguments: expr_arguments_no_empty +#line 772 "parser.ypp" + { yylhs.value.as < expr_arguments::ptr > () = std::move(yystack_[0].value.as < expr_arguments::ptr > ()); } +#line 3343 "parser.cpp" + break; + + case 198: // expr_arguments: %empty +#line 774 "parser.ypp" + { yylhs.value.as < expr_arguments::ptr > () = make_expr_arguments(yylhs.location); } +#line 3349 "parser.cpp" + break; + + case 199: // expr_arguments_no_empty: expr_arguments "," expr +#line 779 "parser.ypp" + { yylhs.value.as < expr_arguments::ptr > () = std::move(yystack_[2].value.as < expr_arguments::ptr > ()); yylhs.value.as < expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr > ())); } +#line 3355 "parser.cpp" + break; + + case 200: // expr_arguments_no_empty: expr +#line 781 "parser.ypp" { yylhs.value.as < expr_arguments::ptr > () = make_expr_arguments(yylhs.location); yylhs.value.as < expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr > ())); } -#line 3230 "parser.cpp" +#line 3361 "parser.cpp" break; - case 193: // expr_isdefined: "isdefined" "(" expr ")" -#line 752 "parser.ypp" + case 201: // expr_isdefined: "isdefined" "(" expr ")" +#line 786 "parser.ypp" { yylhs.value.as < expr_isdefined::ptr > () = make_expr_isdefined(yylhs.location, std::move(yystack_[1].value.as < expr > ())); } -#line 3236 "parser.cpp" +#line 3367 "parser.cpp" break; - case 194: // expr_istrue: "istrue" "(" expr ")" -#line 757 "parser.ypp" + case 202: // expr_istrue: "istrue" "(" expr ")" +#line 791 "parser.ypp" { yylhs.value.as < expr_istrue::ptr > () = make_expr_istrue(yylhs.location, std::move(yystack_[1].value.as < expr > ())); } -#line 3242 "parser.cpp" +#line 3373 "parser.cpp" break; - case 195: // expr_reference: "::" expr_identifier -#line 762 "parser.ypp" + case 203: // expr_reference: "::" expr_identifier +#line 796 "parser.ypp" { yylhs.value.as < expr_reference::ptr > () = make_expr_reference(yylhs.location, make_expr_path(yylhs.location), std::move(yystack_[0].value.as < expr_identifier::ptr > ())); } -#line 3248 "parser.cpp" +#line 3379 "parser.cpp" break; - case 196: // expr_reference: expr_path "::" expr_identifier -#line 764 "parser.ypp" + case 204: // expr_reference: expr_path "::" expr_identifier +#line 798 "parser.ypp" { yylhs.value.as < expr_reference::ptr > () = make_expr_reference(yylhs.location, std::move(yystack_[2].value.as < expr_path::ptr > ()), std::move(yystack_[0].value.as < expr_identifier::ptr > ())); } -#line 3254 "parser.cpp" +#line 3385 "parser.cpp" break; - case 197: // expr_tuple: "[" expr_tuple_arguments "]" -#line 769 "parser.ypp" + case 205: // expr_tuple: "[" expr_tuple_arguments "]" +#line 803 "parser.ypp" { yylhs.value.as < expr > ().as_node = std::move(yystack_[1].value.as < expr_tuple::ptr > ()); yylhs.value.as < expr > ().as_tuple->temp = expr{ std::make_unique(yylhs.value.as < expr > ().loc(), fmt::format("_temp_{}", ++index)) }; } -#line 3262 "parser.cpp" +#line 3393 "parser.cpp" break; - case 198: // expr_tuple_arguments: expr_tuple_arguments "," expr_tuple_types -#line 776 "parser.ypp" - { yylhs.value.as < expr_tuple::ptr > () = std::move(yystack_[2].value.as < expr_tuple::ptr > ()); yylhs.value.as < expr_tuple::ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr > ())); } -#line 3268 "parser.cpp" - break; - - case 199: // expr_tuple_arguments: expr_tuple_types -#line 778 "parser.ypp" - { yylhs.value.as < expr_tuple::ptr > () = make_expr_tuple(yylhs.location); yylhs.value.as < expr_tuple::ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr > ())); } -#line 3274 "parser.cpp" - break; - - case 200: // expr_tuple_types: expr_array -#line 782 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_array::ptr > ()); } -#line 3280 "parser.cpp" - break; - - case 201: // expr_tuple_types: expr_field -#line 783 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_field::ptr > ()); } -#line 3286 "parser.cpp" - break; - - case 202: // expr_tuple_types: expr_identifier -#line 784 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_identifier::ptr > ()); } -#line 3292 "parser.cpp" - break; - - case 203: // expr_array: expr_object "[" expr "]" -#line 789 "parser.ypp" - { yylhs.value.as < expr_array::ptr > () = make_expr_array(yylhs.location, std::move(yystack_[3].value.as < expr > ()), std::move(yystack_[1].value.as < expr > ())); } -#line 3298 "parser.cpp" - break; - - case 204: // expr_field: expr_object "." expr_identifier_nosize -#line 794 "parser.ypp" - { yylhs.value.as < expr_field::ptr > () = make_expr_field(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr_identifier::ptr > ())); } -#line 3304 "parser.cpp" - break; - - case 205: // expr_size: expr_object "." "size" -#line 799 "parser.ypp" - { yylhs.value.as < expr_size::ptr > () = make_expr_size(yylhs.location, std::move(yystack_[2].value.as < expr > ())); } -#line 3310 "parser.cpp" - break; - - case 206: // expr_paren: "(" expr ")" -#line 804 "parser.ypp" - { yylhs.value.as < expr_paren::ptr > () = make_expr_paren(yylhs.location, std::move(yystack_[1].value.as < expr > ())); } -#line 3316 "parser.cpp" - break; - - case 207: // expr_object: expr_call -#line 808 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_call::ptr > ()); } -#line 3322 "parser.cpp" - break; - - case 208: // expr_object: expr_method -#line 809 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_method::ptr > ()); } -#line 3328 "parser.cpp" - break; - - case 209: // expr_object: expr_array + case 206: // expr_tuple_arguments: expr_tuple_arguments "," expr_tuple_types #line 810 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_array::ptr > ()); } -#line 3334 "parser.cpp" + { yylhs.value.as < expr_tuple::ptr > () = std::move(yystack_[2].value.as < expr_tuple::ptr > ()); yylhs.value.as < expr_tuple::ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr > ())); } +#line 3399 "parser.cpp" break; - case 210: // expr_object: expr_field -#line 811 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_field::ptr > ()); } -#line 3340 "parser.cpp" - break; - - case 211: // expr_object: expr_game + case 207: // expr_tuple_arguments: expr_tuple_types #line 812 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_game::ptr > ()); } -#line 3346 "parser.cpp" + { yylhs.value.as < expr_tuple::ptr > () = make_expr_tuple(yylhs.location); yylhs.value.as < expr_tuple::ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr > ())); } +#line 3405 "parser.cpp" break; - case 212: // expr_object: expr_self -#line 813 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_self::ptr > ()); } -#line 3352 "parser.cpp" - break; - - case 213: // expr_object: expr_anim -#line 814 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_anim::ptr > ()); } -#line 3358 "parser.cpp" - break; - - case 214: // expr_object: expr_level -#line 815 "parser.ypp" - { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_level::ptr > ()); } -#line 3364 "parser.cpp" - break; - - case 215: // expr_object: expr_identifier + case 208: // expr_tuple_types: expr_array #line 816 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_array::ptr > ()); } +#line 3411 "parser.cpp" + break; + + case 209: // expr_tuple_types: expr_field +#line 817 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_field::ptr > ()); } +#line 3417 "parser.cpp" + break; + + case 210: // expr_tuple_types: expr_identifier +#line 818 "parser.ypp" { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_identifier::ptr > ()); } -#line 3370 "parser.cpp" +#line 3423 "parser.cpp" break; - case 216: // expr_thisthread: "thisthread" -#line 821 "parser.ypp" - { yylhs.value.as < expr_thisthread::ptr > () = make_expr_thisthread(yylhs.location); } -#line 3376 "parser.cpp" + case 211: // expr_array: expr_object "[" expr "]" +#line 823 "parser.ypp" + { yylhs.value.as < expr_array::ptr > () = make_expr_array(yylhs.location, std::move(yystack_[3].value.as < expr > ()), std::move(yystack_[1].value.as < expr > ())); } +#line 3429 "parser.cpp" break; - case 217: // expr_empty_array: "[" "]" -#line 826 "parser.ypp" - { yylhs.value.as < expr_empty_array::ptr > () = make_expr_empty_array(yylhs.location); } -#line 3382 "parser.cpp" + case 212: // expr_field: expr_object "." expr_identifier_nosize +#line 828 "parser.ypp" + { yylhs.value.as < expr_field::ptr > () = make_expr_field(yylhs.location, std::move(yystack_[2].value.as < expr > ()), std::move(yystack_[0].value.as < expr_identifier::ptr > ())); } +#line 3435 "parser.cpp" break; - case 218: // expr_undefined: "undefined" -#line 831 "parser.ypp" - { yylhs.value.as < expr_undefined::ptr > () = make_expr_undefined(yylhs.location); } -#line 3388 "parser.cpp" + case 213: // expr_size: expr_object "." "size" +#line 833 "parser.ypp" + { yylhs.value.as < expr_size::ptr > () = make_expr_size(yylhs.location, std::move(yystack_[2].value.as < expr > ())); } +#line 3441 "parser.cpp" break; - case 219: // expr_game: "game" -#line 836 "parser.ypp" - { yylhs.value.as < expr_game::ptr > () = make_expr_game(yylhs.location); } -#line 3394 "parser.cpp" + case 214: // expr_paren: "(" expr ")" +#line 838 "parser.ypp" + { yylhs.value.as < expr_paren::ptr > () = make_expr_paren(yylhs.location, std::move(yystack_[1].value.as < expr > ())); } +#line 3447 "parser.cpp" break; - case 220: // expr_self: "self" -#line 841 "parser.ypp" - { yylhs.value.as < expr_self::ptr > () = make_expr_self(yylhs.location); } -#line 3400 "parser.cpp" + case 215: // expr_object: expr_call +#line 842 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_call::ptr > ()); } +#line 3453 "parser.cpp" break; - case 221: // expr_anim: "anim" + case 216: // expr_object: expr_method +#line 843 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_method::ptr > ()); } +#line 3459 "parser.cpp" + break; + + case 217: // expr_object: expr_array +#line 844 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_array::ptr > ()); } +#line 3465 "parser.cpp" + break; + + case 218: // expr_object: expr_field +#line 845 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_field::ptr > ()); } +#line 3471 "parser.cpp" + break; + + case 219: // expr_object: expr_game #line 846 "parser.ypp" - { yylhs.value.as < expr_anim::ptr > () = make_expr_anim(yylhs.location); } -#line 3406 "parser.cpp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_game::ptr > ()); } +#line 3477 "parser.cpp" break; - case 222: // expr_level: "level" -#line 851 "parser.ypp" - { yylhs.value.as < expr_level::ptr > () = make_expr_level(yylhs.location); } -#line 3412 "parser.cpp" + case 220: // expr_object: expr_self +#line 847 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_self::ptr > ()); } +#line 3483 "parser.cpp" break; - case 223: // expr_animation: "%" "identifier" -#line 856 "parser.ypp" - { yylhs.value.as < expr_animation::ptr > () = make_expr_animation(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3418 "parser.cpp" + case 221: // expr_object: expr_anim +#line 848 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_anim::ptr > ()); } +#line 3489 "parser.cpp" break; - case 224: // expr_animtree: "#animtree" -#line 861 "parser.ypp" - { yylhs.value.as < expr_animtree::ptr > () = make_expr_animtree(yylhs.location); } -#line 3424 "parser.cpp" + case 222: // expr_object: expr_level +#line 849 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_level::ptr > ()); } +#line 3495 "parser.cpp" break; - case 225: // expr_identifier_nosize: "identifier" -#line 866 "parser.ypp" - { yylhs.value.as < expr_identifier::ptr > () = make_expr_identifier(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3430 "parser.cpp" + case 223: // expr_object: expr_identifier +#line 850 "parser.ypp" + { yylhs.value.as < expr > ().as_node = std::move(yystack_[0].value.as < expr_identifier::ptr > ()); } +#line 3501 "parser.cpp" break; - case 226: // expr_identifier: "identifier" -#line 871 "parser.ypp" - { yylhs.value.as < expr_identifier::ptr > () = make_expr_identifier(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3436 "parser.cpp" + case 224: // expr_thisthread: "thisthread" +#line 855 "parser.ypp" + { yylhs.value.as < expr_thisthread::ptr > () = make_expr_thisthread(yylhs.location); } +#line 3507 "parser.cpp" break; - case 227: // expr_identifier: "size" -#line 873 "parser.ypp" - { yylhs.value.as < expr_identifier::ptr > () = make_expr_identifier(yylhs.location, "size"); } -#line 3442 "parser.cpp" + case 225: // expr_empty_array: "[" "]" +#line 860 "parser.ypp" + { yylhs.value.as < expr_empty_array::ptr > () = make_expr_empty_array(yylhs.location); } +#line 3513 "parser.cpp" break; - case 228: // expr_path: "path" "/" "identifier" -#line 878 "parser.ypp" - { yylhs.value.as < expr_path::ptr > () = make_expr_path(yylhs.location, yystack_[2].value.as < std::string > () + "/" + yystack_[0].value.as < std::string > ()); } -#line 3448 "parser.cpp" + case 226: // expr_undefined: "undefined" +#line 865 "parser.ypp" + { yylhs.value.as < expr_undefined::ptr > () = make_expr_undefined(yylhs.location); } +#line 3519 "parser.cpp" break; - case 229: // expr_path: "identifier" + case 227: // expr_game: "game" +#line 870 "parser.ypp" + { yylhs.value.as < expr_game::ptr > () = make_expr_game(yylhs.location); } +#line 3525 "parser.cpp" + break; + + case 228: // expr_self: "self" +#line 875 "parser.ypp" + { yylhs.value.as < expr_self::ptr > () = make_expr_self(yylhs.location); } +#line 3531 "parser.cpp" + break; + + case 229: // expr_anim: "anim" #line 880 "parser.ypp" + { yylhs.value.as < expr_anim::ptr > () = make_expr_anim(yylhs.location); } +#line 3537 "parser.cpp" + break; + + case 230: // expr_level: "level" +#line 885 "parser.ypp" + { yylhs.value.as < expr_level::ptr > () = make_expr_level(yylhs.location); } +#line 3543 "parser.cpp" + break; + + case 231: // expr_animation: "%" "identifier" +#line 890 "parser.ypp" + { yylhs.value.as < expr_animation::ptr > () = make_expr_animation(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3549 "parser.cpp" + break; + + case 232: // expr_animtree: "#animtree" +#line 895 "parser.ypp" + { yylhs.value.as < expr_animtree::ptr > () = make_expr_animtree(yylhs.location); } +#line 3555 "parser.cpp" + break; + + case 233: // expr_identifier_nosize: "identifier" +#line 900 "parser.ypp" + { yylhs.value.as < expr_identifier::ptr > () = make_expr_identifier(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3561 "parser.cpp" + break; + + case 234: // expr_identifier: "identifier" +#line 905 "parser.ypp" + { yylhs.value.as < expr_identifier::ptr > () = make_expr_identifier(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3567 "parser.cpp" + break; + + case 235: // expr_identifier: "size" +#line 907 "parser.ypp" + { yylhs.value.as < expr_identifier::ptr > () = make_expr_identifier(yylhs.location, "size"); } +#line 3573 "parser.cpp" + break; + + case 236: // expr_path: "path" "/" "identifier" +#line 912 "parser.ypp" + { yylhs.value.as < expr_path::ptr > () = make_expr_path(yylhs.location, yystack_[2].value.as < std::string > () + "/" + yystack_[0].value.as < std::string > ()); } +#line 3579 "parser.cpp" + break; + + case 237: // expr_path: "identifier" +#line 914 "parser.ypp" { yylhs.value.as < expr_path::ptr > () = make_expr_path(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3454 "parser.cpp" +#line 3585 "parser.cpp" break; - case 230: // expr_path: "path" -#line 882 "parser.ypp" - { yylhs.value.as < expr_path::ptr > () = make_expr_path(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3460 "parser.cpp" - break; - - case 231: // expr_istring: "localized string" -#line 887 "parser.ypp" - { yylhs.value.as < expr_istring::ptr > () = make_expr_istring(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3466 "parser.cpp" - break; - - case 232: // expr_string: "string literal" -#line 892 "parser.ypp" - { yylhs.value.as < expr_string::ptr > () = make_expr_string(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3472 "parser.cpp" - break; - - case 233: // expr_vector: "(" expr "," expr "," expr ")" -#line 897 "parser.ypp" - { yylhs.value.as < expr_vector::ptr > () = make_expr_vector(yylhs.location, std::move(yystack_[5].value.as < expr > ()), std::move(yystack_[3].value.as < expr > ()), std::move(yystack_[1].value.as < expr > ())); } -#line 3478 "parser.cpp" - break; - - case 234: // expr_float: "-" "float" -#line 902 "parser.ypp" - { yylhs.value.as < expr_float::ptr > () = make_expr_float(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3484 "parser.cpp" - break; - - case 235: // expr_float: "float" -#line 904 "parser.ypp" - { yylhs.value.as < expr_float::ptr > () = make_expr_float(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3490 "parser.cpp" - break; - - case 236: // expr_integer: "-" "integer" -#line 909 "parser.ypp" - { yylhs.value.as < expr_integer::ptr > () = make_expr_integer(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3496 "parser.cpp" - break; - - case 237: // expr_integer: "integer" -#line 911 "parser.ypp" - { yylhs.value.as < expr_integer::ptr > () = make_expr_integer(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3502 "parser.cpp" - break; - - case 238: // expr_false: "false" + case 238: // expr_path: "path" #line 916 "parser.ypp" - { yylhs.value.as < expr_false::ptr > () = make_expr_false(yylhs.location); } -#line 3508 "parser.cpp" + { yylhs.value.as < expr_path::ptr > () = make_expr_path(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3591 "parser.cpp" break; - case 239: // expr_true: "true" + case 239: // expr_istring: "localized string" #line 921 "parser.ypp" + { yylhs.value.as < expr_istring::ptr > () = make_expr_istring(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3597 "parser.cpp" + break; + + case 240: // expr_string: "string literal" +#line 926 "parser.ypp" + { yylhs.value.as < expr_string::ptr > () = make_expr_string(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3603 "parser.cpp" + break; + + case 241: // expr_vector: "(" expr "," expr "," expr ")" +#line 931 "parser.ypp" + { yylhs.value.as < expr_vector::ptr > () = make_expr_vector(yylhs.location, std::move(yystack_[5].value.as < expr > ()), std::move(yystack_[3].value.as < expr > ()), std::move(yystack_[1].value.as < expr > ())); } +#line 3609 "parser.cpp" + break; + + case 242: // expr_float: "-" "float" +#line 936 "parser.ypp" + { yylhs.value.as < expr_float::ptr > () = make_expr_float(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 3615 "parser.cpp" + break; + + case 243: // expr_float: "float" +#line 938 "parser.ypp" + { yylhs.value.as < expr_float::ptr > () = make_expr_float(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3621 "parser.cpp" + break; + + case 244: // expr_integer: "-" "integer" +#line 943 "parser.ypp" + { yylhs.value.as < expr_integer::ptr > () = make_expr_integer(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 3627 "parser.cpp" + break; + + case 245: // expr_integer: "integer" +#line 945 "parser.ypp" + { yylhs.value.as < expr_integer::ptr > () = make_expr_integer(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 3633 "parser.cpp" + break; + + case 246: // expr_false: "false" +#line 950 "parser.ypp" + { yylhs.value.as < expr_false::ptr > () = make_expr_false(yylhs.location); } +#line 3639 "parser.cpp" + break; + + case 247: // expr_true: "true" +#line 955 "parser.ypp" { yylhs.value.as < expr_true::ptr > () = make_expr_true(yylhs.location); } -#line 3514 "parser.cpp" +#line 3645 "parser.cpp" break; -#line 3518 "parser.cpp" +#line 3649 "parser.cpp" default: break; @@ -3703,23 +3834,24 @@ namespace xsk { namespace gsc { "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", "float", "integer", - "SIZEOF", "ADD_ARRAY", "THEN", "TERN", "NEG", "ANIMREF", "PREINC", - "PREDEC", "POSTINC", "POSTDEC", "$accept", "root", "program", "inline", - "include", "declaration", "decl_usingtree", "decl_function", "stmt", - "stmt_or_dev", "stmt_list", "stmt_or_dev_list", "stmt_dev", "stmt_comp", - "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", + "prof_end", "assert", "assertex", "assertmsg", "thread", "childthread", + "thisthread", "call", "true", "false", "undefined", "size", "game", + "self", "anim", "level", "isdefined", "istrue", "(", ")", "{", "}", "[", + "]", ",", ".", "...", "::", ":", ";", "?", "++", "--", "<<", ">>", "||", + "&&", "==", "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", + "/=", "%=", "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", "+", "-", "*", + "/", "%", "path", "identifier", "string literal", "localized string", + "float", "integer", "SIZEOF", "ADD_ARRAY", "THEN", "TERN", "NEG", + "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", "$accept", "root", + "program", "inline", "include", "declaration", "decl_usingtree", + "decl_constant", "decl_function", "stmt", "stmt_or_dev", "stmt_list", + "stmt_or_dev_list", "stmt_dev", "stmt_comp", "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", "stmt_assert", "stmt_assertex", "stmt_assertmsg", "expr", "expr_or_empty", "expr_assign", "expr_increment", "expr_decrement", "expr_ternary", "expr_binary", "expr_primitive", "expr_complement", "expr_negate", "expr_not", "expr_call", "expr_method", @@ -4000,721 +4132,741 @@ namespace xsk { namespace gsc { } - const short parser::yypact_ninf_ = -178; + const short parser::yypact_ninf_ = -308; - const short parser::yytable_ninf_ = -230; + const short parser::yytable_ninf_ = -238; const short parser::yypact_[] = { - 14, -178, -178, -45, -45, -40, -178, -178, 17, 14, - -178, -178, -178, -178, -178, 4, -65, -178, -19, -3, - -58, -178, -178, -178, -178, -30, -29, -178, -178, -178, - 53, -21, -178, -178, 31, 13, -30, -178, 825, -178, - -178, 955, 1163, 56, -24, 71, 1357, 75, 83, 101, - 117, -32, 59, 109, 115, 1031, 118, 123, 133, -16, - -9, 47, -178, -178, -178, -178, -178, 784, -178, 860, - 860, 85, -178, -178, 908, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, 127, 128, 130, 134, 136, -178, -178, 121, -178, - -178, 1277, -178, -178, -178, -178, 142, 135, -178, -178, - -178, 1002, -178, -178, -178, -178, -178, 149, 150, 1163, - 1097, -30, 1163, 1163, 368, 108, -178, -178, -178, 2067, - -178, -178, -178, -178, -178, -178, 303, 484, -178, -178, - -178, -178, 625, 698, -178, -178, 745, -178, -178, -178, - 1057, 1065, 1127, 1189, -178, -178, 182, 152, -178, -178, - -178, -178, -178, -178, -178, -178, 162, -178, 1163, 194, - 1163, 592, -30, 1163, 119, 163, 166, -178, -178, -178, - -178, 2102, -178, 1163, 1163, 168, 179, 172, 176, 183, - 185, 181, 1229, -178, -178, 51, -178, 76, 105, 1369, - 40, 187, 1369, 1369, -178, -178, -178, -178, -178, -178, - -178, -178, 1163, 192, 195, 196, 197, 1229, 153, -178, - -178, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, - 1163, 1163, -178, -178, 142, 1163, -30, -178, -178, -178, - 1163, 1163, 1368, 1097, -178, 2115, 204, 218, -178, -178, - -178, 1163, -178, -178, 625, 698, -178, 182, -178, -178, - 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, - 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, -26, - -30, 216, 1516, 231, 1550, 223, -178, -178, -178, 530, - -10, 1563, -178, -178, -178, -8, -178, 42, 1163, 1163, - -30, 1163, 1163, -30, 1163, 1792, -178, 860, 1163, 2115, - 1163, 1163, 1163, 1163, 1833, -178, -178, 2115, 2115, 2115, - 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 46, 235, - 1597, 1610, -178, 1163, 1792, 1163, -178, 1644, 2032, 171, - 171, 2146, 2156, 2197, 2197, 63, 63, 63, 63, 2187, - 1469, 1424, -62, -62, -178, -178, -178, -178, 235, -178, - 1357, 1163, 1357, 1163, 1163, -30, 13, 225, 227, 1874, - 49, 240, 1915, 52, 241, 1956, 237, -178, 1657, 1413, - 1458, 1503, -178, -178, 1163, -178, -178, 1996, 2115, 1163, - 273, 1691, -178, 2115, 234, 1704, 271, -178, -178, -178, - 245, -178, 1163, 246, -178, 1163, 249, 256, 247, 250, - 1163, 251, 1163, 257, 1163, 84, 1163, 2115, 1357, 258, - 592, 1357, 1163, 260, 94, 267, 96, 272, 1163, -178, - -178, 274, -178, 276, -178, 277, -178, 1738, -178, -178, - 278, -178, 1751, 1163, -178, 1163, -178, 1163, 97, 263, - 269, 270, -178, 1357, 1357, 112, 113, 126, -178, -178, - -178, -178, -178, -178, -178, -178, -178 + 12, -308, -308, 6, 6, -16, -308, -308, 32, 12, + -308, -308, -308, -308, -308, -308, -37, -73, -308, -22, + -13, -35, -308, -308, -308, -308, -29, 1340, -3, -308, + -308, -308, 26, -18, -308, -308, -31, 21, -308, 42, + -308, -308, -308, -308, -308, -308, -308, 62, 101, 1340, + 1204, -29, 1340, 1340, 37, 44, 100, -308, -308, -308, + 2125, -308, -308, -308, -308, -308, -308, 56, 233, -308, + -308, -308, -308, -308, -308, 245, 368, -308, -308, 487, + -308, -308, -308, 550, 602, 643, 665, -308, -308, -8, + 112, -308, -308, -308, -308, -308, -308, -308, -308, 123, + 134, -29, 133, 140, 135, 138, 143, 141, 147, 1340, + 1340, 1508, 1204, -308, 2208, 148, 154, -308, -308, -308, + 1340, 156, -308, -308, -308, -308, 245, 368, -308, 802, + -308, -308, -308, -308, -8, 155, -308, -308, 1340, 1340, + 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, + 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1408, -19, -308, + -308, 161, 1340, -29, -308, 1010, -308, -308, 1340, 1340, + -29, 1340, 1340, -29, 1340, 1656, 1690, -308, 1340, 1336, + 1340, -308, 1703, 1340, 116, -29, 2090, 305, 305, 778, + 1195, 856, 856, 279, 279, 279, 279, 2239, 1564, 1519, + -24, -24, -308, -308, -308, 1404, -308, -308, -308, -4, + -308, 166, 1120, 1340, 159, -20, 171, 1498, 172, 173, + 176, 179, -42, 182, 178, 184, 1272, 185, 183, 200, + 201, 203, 209, -308, 152, -308, 779, 779, -308, -308, + 1065, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + 204, 206, 213, 214, 216, 202, -308, -308, 716, 161, + 1932, 34, 230, 1973, 60, 236, 2014, -308, -308, 2054, + 177, 2208, 1336, 166, 1340, -308, -308, 1340, -308, -308, + -308, 1175, 2160, -308, 232, -308, 1340, 269, 1340, 61, + -29, 1340, 193, 237, 238, -308, -308, -308, -308, 2195, + -308, 1340, 1340, 1340, 1340, 1340, 1408, 76, -308, 124, + 126, 64, 802, 802, -308, -308, -308, -308, -308, -308, + -308, -308, 1340, 246, 253, 254, 255, -308, -308, 1340, + 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, + 251, -308, 1340, 256, -308, 1340, 258, 1340, 265, 2208, + 70, -308, -308, -308, -308, 257, 1737, 272, 1750, 263, + -308, -308, -308, 899, 4, 1784, -308, -308, -308, 71, + 72, 79, 88, 89, -308, 779, 2208, 1340, 1340, 1340, + 1340, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, + 2208, 2208, 275, 91, 276, 92, 284, 1797, 1340, -308, + -308, 1498, 1340, 1498, 1340, 1340, -29, 134, 274, 282, + 285, 286, 287, -308, 1831, 1553, 1598, 1643, 1340, -308, + 1340, -308, 1340, -308, 98, 318, 1844, -308, 2208, 314, + 1878, 353, -308, -308, -308, -308, -308, -308, 316, 317, + 1340, 319, 1340, 320, 1340, 104, 110, 111, -308, 1498, + 326, 61, 1498, 1340, -308, -308, 337, -308, 341, -308, + 342, -308, -308, -308, -308, -308, 350, -308, 1891, 345, + 347, 348, 1498, 1498, -308, -308, -308, -308, -308 }; const unsigned char parser::yydefact_[] = { - 3, 12, 13, 0, 0, 0, 227, 226, 0, 2, - 7, 8, 9, 14, 15, 0, 230, 229, 0, 0, - 0, 1, 4, 5, 6, 188, 0, 10, 11, 232, - 0, 0, 187, 228, 0, 0, 0, 16, 0, 17, - 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 12, 13, 0, 0, 0, 235, 234, 0, 2, + 7, 8, 9, 14, 15, 16, 0, 238, 237, 0, + 0, 0, 1, 4, 5, 6, 196, 0, 0, 10, + 11, 240, 0, 0, 195, 232, 0, 0, 224, 0, + 247, 246, 226, 227, 228, 229, 230, 0, 0, 0, + 198, 0, 0, 0, 0, 0, 234, 239, 243, 245, + 0, 103, 104, 105, 143, 144, 145, 146, 147, 179, + 180, 148, 149, 150, 151, 152, 153, 154, 155, 0, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 0, 166, 167, 168, 169, 170, 171, 172, 236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 219, 220, 221, 222, 56, 0, 52, 0, - 0, 226, 43, 50, 0, 44, 18, 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, 207, 208, 171, 172, 0, 209, - 210, 0, 211, 212, 213, 214, 215, 0, 54, 48, - 46, 0, 224, 216, 239, 238, 218, 0, 0, 0, - 190, 0, 0, 0, 0, 0, 231, 235, 237, 0, - 95, 96, 97, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 0, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 0, 158, 159, - 160, 161, 162, 163, 164, 74, 0, 75, 0, 0, - 0, 60, 0, 0, 0, 0, 0, 87, 88, 89, - 91, 0, 92, 190, 190, 0, 0, 0, 0, 0, - 0, 0, 0, 207, 208, 0, 199, 209, 210, 0, - 215, 0, 112, 114, 55, 51, 49, 63, 64, 65, - 61, 62, 0, 0, 0, 0, 0, 0, 0, 113, - 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 173, 174, 0, 190, 0, 53, 47, 45, - 0, 0, 0, 190, 217, 192, 0, 189, 195, 170, - 165, 0, 234, 236, 168, 169, 167, 166, 223, 69, + 0, 0, 198, 225, 200, 0, 197, 203, 178, 173, + 0, 0, 242, 244, 215, 216, 176, 177, 175, 0, + 219, 220, 221, 222, 174, 0, 231, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, + 182, 0, 198, 0, 17, 0, 19, 194, 0, 198, + 0, 0, 198, 0, 0, 0, 0, 214, 0, 200, + 0, 193, 0, 0, 0, 0, 0, 136, 137, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 138, 139, 140, 141, 142, 0, 213, 233, 212, 0, + 197, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 57, 58, 59, 0, - 0, 0, 86, 85, 90, 0, 189, 0, 0, 190, - 0, 0, 190, 0, 0, 0, 197, 0, 0, 100, - 0, 0, 0, 0, 0, 225, 204, 101, 107, 108, - 109, 110, 111, 102, 103, 104, 106, 105, 0, 0, - 0, 0, 206, 0, 192, 0, 185, 0, 0, 128, - 129, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 130, 131, 132, 133, 134, 205, 196, 76, - 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, - 0, 0, 203, 175, 190, 193, 194, 0, 191, 0, - 77, 0, 79, 98, 0, 0, 0, 84, 93, 94, - 0, 177, 190, 0, 179, 190, 0, 0, 0, 0, - 190, 0, 190, 0, 190, 0, 0, 116, 0, 0, - 60, 0, 0, 0, 0, 0, 0, 0, 190, 66, - 68, 189, 71, 189, 73, 189, 176, 0, 78, 80, - 0, 82, 0, 190, 178, 190, 180, 190, 0, 0, - 0, 0, 233, 0, 0, 0, 0, 0, 181, 67, - 70, 72, 81, 83, 182, 183, 184 + 0, 0, 0, 61, 0, 57, 0, 0, 48, 55, + 0, 49, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 0, 0, 0, 215, 216, 0, 217, 218, 0, 223, + 0, 0, 0, 0, 0, 0, 0, 201, 202, 0, + 0, 199, 0, 0, 0, 211, 183, 198, 59, 53, + 51, 0, 0, 79, 0, 80, 0, 0, 0, 65, + 0, 0, 0, 0, 0, 92, 93, 94, 96, 0, + 97, 198, 198, 198, 198, 198, 0, 0, 207, 217, + 218, 223, 120, 122, 60, 56, 54, 68, 69, 70, + 66, 67, 0, 0, 0, 0, 0, 121, 123, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 185, 198, 0, 187, 198, 0, 0, 0, 124, + 0, 58, 52, 50, 74, 0, 0, 0, 0, 0, + 62, 63, 64, 0, 0, 0, 91, 90, 95, 0, + 0, 0, 0, 0, 205, 0, 108, 0, 0, 0, + 0, 109, 115, 116, 117, 118, 119, 110, 111, 112, + 114, 113, 0, 0, 0, 0, 0, 0, 198, 184, + 81, 0, 0, 0, 107, 0, 0, 0, 0, 0, + 0, 0, 0, 206, 0, 0, 0, 0, 198, 186, + 198, 188, 198, 241, 0, 82, 0, 84, 106, 0, + 0, 0, 89, 98, 99, 100, 101, 102, 0, 0, + 198, 0, 198, 0, 198, 0, 0, 0, 189, 0, + 0, 65, 0, 0, 71, 73, 197, 76, 197, 78, + 197, 190, 191, 192, 83, 85, 0, 87, 0, 0, + 0, 0, 0, 0, 72, 75, 77, 86, 88 }; const short parser::yypgoto_[] = { - -178, -178, -178, 321, 326, 329, -178, -178, -38, 266, - -178, -178, -178, -34, -89, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, 489, - -178, -177, -176, -175, -178, -178, -178, -178, -178, -178, - 6, 50, -100, -50, -178, -178, 41, -118, -178, -178, - -178, -178, -178, 28, 69, 131, -178, 212, 137, -178, - -178, -178, 199, 210, 226, 325, -178, -178, -178, 0, - 12, -178, -18, -178, -178, 297, -178, -178 + -308, -308, -308, 394, 401, 407, -308, -308, -308, -155, + 180, -308, -308, -308, -99, -53, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, 211, -308, -307, -303, -302, -308, -308, + -308, -308, -308, -308, -9, 18, -76, -71, -308, -308, + -147, -45, -308, -308, -308, -308, -308, 38, 219, 315, + -308, 373, 414, -308, -308, -308, 432, 441, 520, 531, + -308, -308, -308, 0, 7, -308, -17, -308, -308, 207, + -308, -308 }; const short parser::yydefgoto_[] = { - 0, 8, 9, 10, 11, 12, 13, 14, 72, 73, - 121, 74, 75, 76, 295, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 255, - 404, 101, 102, 103, 140, 141, 142, 143, 144, 145, - 146, 147, 106, 107, 148, 31, 256, 306, 149, 150, - 151, 108, 205, 206, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 326, 166, - 167, 168, 169, 170, 171, 172, 173, 174 + 0, 8, 9, 10, 11, 12, 13, 14, 15, 238, + 239, 301, 240, 241, 242, 379, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 114, 449, 270, 271, 272, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 33, + 115, 210, 72, 73, 74, 275, 327, 328, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 208, 89, 90, 91, 92, 93, 94, 95, + 96, 97 }; const short parser::yytable_[] = { - 15, 39, 30, 120, 296, 297, 298, 20, 179, 15, - 6, 242, 257, 374, 367, 18, 19, 21, 1, 2, - 3, 4, 5, 176, 6, 32, 26, 35, 286, 287, - 288, 6, 36, 185, 177, 195, 40, 29, 116, 27, - 377, 116, 198, 375, 104, 345, 116, 104, 16, 17, - 117, 25, 104, 117, 6, 28, 242, 184, 117, 196, - 199, 243, 38, 29, 7, 33, 138, 210, 325, 116, - 116, 197, 200, 203, 116, 203, 203, 16, 71, 117, - 104, 117, 117, 249, 16, 71, 117, 245, 105, 37, - 378, 105, -202, -202, 393, 345, 105, 411, 201, 345, - 414, 34, 345, 316, 317, 345, 243, 109, 7, 242, - 109, 244, 242, 242, 175, 109, 187, 204, 178, 204, - 204, 116, 180, 117, 105, 271, 272, 104, -200, -200, - 181, 258, 446, 117, 267, 257, 207, 345, 109, 109, - 203, -229, 454, 109, 456, 468, 117, 345, 182, 345, - 345, 284, 285, 286, 287, 288, 244, -201, -201, 243, - 474, 475, 243, 243, 183, 345, 345, 188, 117, 110, - 193, 105, 110, 189, 476, 111, 192, 110, 111, 345, - 194, 116, 300, 111, 204, 217, 218, 203, 219, 245, - 109, 246, 220, 117, 221, 222, 250, 251, 208, 242, - 110, 110, 268, 264, 209, 110, 212, 213, 290, 244, - 291, 111, 244, 244, 293, -215, -215, 263, -215, 308, - 302, 117, -215, 303, 117, 117, 309, 311, 310, 245, - 312, 204, 314, -215, 305, 307, -215, 112, 318, 320, - 112, 313, 321, 322, 323, 112, 339, 325, 113, 243, - 109, 113, 110, 296, 297, 298, 113, 345, 111, 284, - 285, 286, 287, 288, 114, 265, 112, 114, 112, 112, - 346, 209, 114, 112, 369, -215, -215, 113, 371, 113, - 113, 373, 394, 408, 113, 409, 338, 412, 415, 417, - 368, 428, 430, 114, 432, 114, 114, 433, 435, 244, - 114, 437, 441, 438, 443, 439, 445, 453, 440, 442, - 381, 117, 110, 384, 455, 444, 449, 210, 299, 457, - 112, 469, 459, 203, 460, 461, 463, 470, 471, 117, - 22, 113, 400, 112, 402, 23, -207, -207, 24, -207, - 216, 450, 407, -207, 113, 387, 266, 114, 186, 0, - 380, 0, 0, 383, -207, 0, 0, -207, 0, 0, - 114, 0, 0, 115, 0, 0, 115, 204, 0, 0, - 116, 115, 116, 0, 0, 406, 104, 0, 104, 0, - 112, 0, 117, 0, 117, 0, 207, 0, 0, 0, - 448, 113, 115, 451, 115, 115, -207, -207, 0, 115, - 0, 59, 60, 0, 61, 0, 0, 114, 6, 62, - 63, 64, 65, 0, 0, 261, 0, 0, 0, 211, - 105, 0, 105, 0, 0, 472, 473, 0, 116, 0, - 116, 116, 0, 0, 104, 425, 203, 104, 0, 109, - 117, 109, 117, 117, 0, 0, 115, 0, 208, 0, - 0, 0, 0, 434, 209, 0, 436, 0, 0, 115, - 0, 16, 71, 116, 116, 262, 263, 0, 0, 104, - 104, 0, 0, 0, 0, 117, 117, 0, 105, 458, - 204, 105, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 465, 0, 466, 109, 467, 109, - 109, 110, 0, 110, 0, 0, 115, 111, 0, 111, - 0, 0, 0, 105, 105, 0, 112, -208, -208, 0, - -208, 0, 0, 0, -208, 0, 0, 113, 0, 0, - 0, 139, 109, 109, 0, -208, 0, 0, -208, 0, - 0, 0, 0, 114, 191, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, - 0, 110, 110, 59, 60, 111, 61, 299, 111, 112, - 6, 112, 0, 0, 0, 0, 0, -208, -208, 0, - 113, 227, 113, 0, 228, 0, 0, 0, 0, 0, - 229, 230, 0, 0, 110, 110, 114, 0, 114, 0, - 111, 111, 0, 0, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 0, 0, 0, 252, 0, - 0, 259, 260, 16, 71, 59, 60, 112, 61, 112, - 112, 0, 6, 62, 63, 64, 65, 0, 113, 0, - 113, 113, 115, 67, 0, 0, 0, 0, 0, 0, - 0, 0, 69, 70, 114, 0, 114, 114, -209, -209, - 0, -209, 112, 112, 0, -209, 0, 292, 0, 294, - 0, 0, 301, 113, 113, 0, -209, 0, 0, -209, - 0, 0, 0, 0, 0, 16, 71, 0, 0, 114, - 114, 315, 0, 0, 0, 115, 0, 115, 0, 0, + 16, 166, 380, 159, 32, 116, 381, 382, 160, 16, + 19, 20, 6, 26, 6, 209, 1, 2, 3, 4, + 5, 28, 281, 102, 206, 284, 34, 425, -223, -223, + 304, -223, 22, 100, 21, -223, 103, 106, 101, 29, + 27, 305, 162, 104, 107, 124, -223, 296, 30, -223, + 312, 117, 180, 159, 134, 6, 31, 300, 160, 59, + 426, 135, 307, 31, 6, 17, 56, 116, 7, 154, + 155, 156, 125, 36, 37, 105, 39, 99, 207, 161, + 6, 43, 44, 45, 46, 361, 135, 120, -223, -223, + 180, 121, -215, -215, 98, -215, 108, 36, 37, -215, + 39, 167, 17, 18, 6, 43, 44, 45, 46, 7, + -215, 364, 109, -215, 162, 234, 180, 17, 56, -210, + -210, 419, 428, 429, 236, 237, 180, 180, 180, 161, + 430, 394, 395, 17, 56, 180, 135, 122, 123, 431, + 432, 136, 439, 441, 180, 180, 373, 180, 180, 468, + 370, 110, -215, -215, 180, 481, 273, 17, 56, -237, + 180, 482, 483, 211, 380, 279, 180, 180, 381, 382, + 282, 163, 135, 285, 389, 390, 391, 392, 393, -208, + -208, -209, -209, 274, 164, 293, 165, 168, 36, 37, + 169, 39, 171, 172, 170, 6, 43, 44, 45, 46, + 173, 174, 159, 273, 180, 313, 326, 160, 273, 181, + 183, 162, 279, 207, 185, 413, 297, 279, 415, 135, + 303, 306, 308, 309, 135, 124, 310, 124, 124, 311, + 274, 273, 368, 321, 331, 274, 279, 279, 60, 316, + 279, 135, 315, 135, 135, 317, 320, 135, 17, 56, + 322, 323, 125, 324, 125, 125, 159, 159, 274, 325, + 111, 160, 160, 118, 119, 337, 445, 338, 447, -216, + -216, 444, -216, 126, 339, 340, -216, 341, 161, 342, + 362, -217, -217, 375, -217, 135, 365, -216, -217, 377, + -216, 465, 273, 466, 123, 467, 397, 386, 387, -217, + 124, 279, -217, 398, 399, 400, 412, 159, 135, 279, + 384, 414, 160, 416, 484, 418, 135, 487, 420, 274, + 175, 176, 422, 179, 424, 438, 440, 125, 452, -216, + -216, 182, 161, 161, 442, 453, 469, 497, 498, 135, + 135, -217, -217, 454, 139, 140, 455, 456, 457, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 127, + 152, 153, 154, 155, 156, 471, 473, 474, 475, 280, + 477, 479, 283, 161, 276, 286, 124, 485, 489, 289, + 135, 291, 490, 491, 292, 331, 152, 153, 154, 155, + 156, 492, 135, 23, -218, -218, 494, -218, 495, 496, + 24, -218, 273, 125, 273, 476, 25, 478, 486, 480, + 336, 279, -218, 279, 302, -218, 451, 128, 135, 314, + 135, 276, 0, 433, 0, 0, 276, 319, 0, 274, + 0, 274, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 329, 0, 276, 276, 0, 0, 276, + 273, 0, 124, 273, -218, -218, 0, 0, 129, 279, + 0, 279, 279, 0, 0, 0, 135, 0, 135, 135, + 277, 0, 0, 273, 273, 0, 130, 274, 0, 125, + 274, 0, 279, 279, 0, 131, 0, 0, 0, 135, + 135, 0, 0, 0, 0, 369, 0, 0, 0, 0, + 274, 274, 0, 0, 0, 0, 0, 376, 0, 378, + 276, 0, 385, 36, 37, 0, 39, 277, 276, 0, + 6, 0, 277, 0, 0, 0, 0, 292, 0, 0, + 0, 157, 0, 0, 158, 0, 0, 0, 0, 330, + 0, 277, 277, 396, 0, 277, 0, 0, 0, 0, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 0, 0, 0, 132, 0, 0, 0, 417, 278, + 0, 0, 0, 17, 56, 133, -219, -219, 0, -219, + 0, 0, 0, -219, 0, 0, 0, 130, 0, 0, + 0, 0, 0, 0, -219, 0, 131, -219, 434, 435, + 436, 437, 0, 0, 329, 0, 277, 0, 0, 0, + 0, 0, 0, 0, 277, 0, 278, 0, 0, 0, + 0, 278, 0, 446, 0, 448, 450, 0, -220, -220, + 276, -220, 276, 0, 130, -220, -219, -219, 129, 130, + 332, 333, 0, 131, 278, 0, -220, 0, 131, -220, + 0, 0, 0, 0, 0, 0, 130, 0, 130, 130, + 0, 0, 130, 0, 0, 131, 0, 131, 131, -221, + -221, 131, -221, 0, 488, 132, -221, 0, 276, 0, + 276, 276, 0, 0, 0, 0, 133, -221, -220, -220, + -221, -222, -222, 0, -222, 0, 0, 0, -222, 0, + 330, 276, 276, 0, 0, 278, 0, 0, 0, -222, + 0, 0, -222, 383, 0, 0, 343, 344, 0, 345, + 346, 0, 132, 130, 0, 0, 277, 132, 277, -221, + -221, 130, 131, 133, 0, 0, 0, 0, 133, 0, + 131, 0, 36, 37, 132, 39, 132, 132, 0, 6, + 132, -222, -222, 0, 0, 133, 0, 133, 133, 0, + 157, 133, 0, 184, 0, 0, 0, 0, 0, 347, + 348, 0, 0, 0, 277, 0, 277, 277, 0, 0, + 0, 0, 0, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 0, 0, 0, 277, 277, 129, + 0, 0, 17, 56, 0, 36, 37, 0, 39, 0, + 0, 132, 6, 43, 44, 45, 46, 130, 0, 132, + 0, 0, 133, 121, 0, 278, 131, 278, 36, 37, + 133, 39, 0, 139, 140, 6, 142, 143, 144, 145, + 146, 147, 148, 130, 0, 130, 157, 0, 0, 184, + 0, 0, 131, 0, 131, 0, 149, 150, 151, 152, + 153, 154, 155, 156, 0, 17, 56, 0, 0, 0, + 0, 0, 0, 278, 0, 383, 278, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 17, 56, + 0, 130, 0, 130, 130, 0, 278, 278, 0, 0, + 131, 0, 131, 131, 0, 132, 0, 0, 0, 0, + 0, 139, 140, 0, 130, 130, 133, 145, 146, 147, + 148, 0, 0, 131, 131, 36, 37, 0, 39, 0, + 0, 132, 6, 132, 0, 0, 0, 152, 153, 154, + 155, 156, 133, 157, 133, 0, 184, 0, 0, 0, + 0, 0, 347, 348, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 0, 0, 132, + 0, 132, 132, 0, 0, 17, 56, 0, 0, 0, + 133, 0, 133, 133, 0, 0, 0, 0, 0, 0, + 0, 0, 132, 132, 212, 0, 0, 0, 0, 0, + 0, 0, 213, 133, 133, 214, 215, 216, 0, 217, + 218, 219, 220, 0, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 36, 37, 0, 39, + 0, 0, 0, 6, 43, 44, 45, 46, 0, 0, + 0, 0, 165, 233, 234, 0, 0, 0, 0, 212, + 0, 235, 0, 236, 237, 0, 0, 213, 0, 0, + 214, 215, 216, 0, 217, 218, 219, 220, 0, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 36, 37, 0, 39, 0, 17, 56, 6, 43, + 44, 45, 46, 0, 0, 0, 0, 165, 334, 234, + 0, 0, 0, 0, 0, 298, 335, 0, 236, 237, + 0, 0, 213, 0, 0, 214, 215, 216, 0, 217, + 218, 219, 220, 0, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 36, 37, 0, 39, + 0, 17, 56, 6, 43, 44, 45, 46, 0, 0, + 0, 0, 165, 0, 234, 0, 0, 0, 0, 0, + 371, 299, 0, 236, 237, 0, 0, 213, 0, 0, + 214, 215, 216, 0, 217, 218, 219, 220, 0, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 36, 37, 35, 39, 0, 17, 56, 6, 43, + 44, 45, 46, 0, 0, 0, 0, 165, 0, 234, + 0, 0, 0, 0, 0, 0, 372, 0, 236, 237, + 36, 37, 38, 39, 40, 41, 42, 6, 43, 44, + 45, 46, 47, 48, 49, 0, 0, 0, 112, 113, + 139, 140, 0, 51, 143, 144, 145, 146, 147, 148, + 0, 17, 56, 0, 0, 0, 0, 0, 0, 52, + 53, 35, 0, 149, 150, 151, 152, 153, 154, 155, + 156, 0, 0, 0, 0, 0, 54, 0, 0, 55, + 17, 56, 31, 57, 58, 59, 0, 0, 36, 37, + 38, 39, 40, 41, 42, 6, 43, 44, 45, 46, + 47, 48, 49, 0, 0, 0, 50, 0, 0, 0, + 0, 51, 0, 318, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 52, 53, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 319, 0, 0, 0, 0, 324, 0, -209, -209, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, -210, -210, 0, -210, 0, 0, 0, -210, 340, - 341, 0, 344, 0, 0, 0, 0, 0, 0, -210, - 347, 0, -210, 115, 0, 115, 115, 0, 0, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 59, 60, - 0, 61, 0, 0, 0, 6, 0, 0, 115, 115, - 0, -210, -210, 0, 0, 0, 227, 379, 0, 289, - 382, 0, 0, 385, 0, 0, 0, 315, 0, 388, - 389, 390, 391, 0, 0, 0, 0, 59, 60, 0, - 61, 0, 0, 0, 6, 62, 63, 64, 65, 41, - 0, 0, 397, 0, 398, 202, 0, 42, 16, 71, - 43, 44, 45, 0, 46, 47, 48, 49, 0, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 401, 61, 403, 405, 0, 6, 62, 63, 64, 65, - 0, 0, 0, 0, 38, 66, 67, 16, 71, 0, - 0, 0, 0, 68, 0, 69, 70, 0, 427, 0, - 0, 0, 0, 59, 60, 0, 61, 0, 0, 0, - 6, 62, 63, 64, 65, 0, 0, 0, 0, 0, - 0, 211, 41, 0, 0, 447, 0, 0, 16, 71, - 42, 452, 0, 43, 44, 45, 0, 46, 47, 48, - 49, 0, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 0, 61, 0, 0, 0, 6, 62, - 63, 64, 65, 16, 71, 0, 0, 38, 214, 67, - 118, 0, 0, 0, 0, 0, 215, 42, 69, 70, - 43, 44, 45, 0, 46, 47, 48, 49, 0, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 0, 61, 0, 0, 0, 6, 62, 63, 64, 65, - 0, 16, 71, 0, 38, 0, 67, 247, 0, 0, - 0, 0, 0, 119, 42, 69, 70, 43, 44, 45, - 0, 46, 47, 48, 49, 0, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 0, 61, 0, - 122, 0, 6, 62, 63, 64, 65, 0, 16, 71, - 0, 38, 0, 67, 0, 0, 0, 0, 0, 0, - 248, 0, 69, 70, 59, 60, 123, 61, 124, 125, - 126, 6, 62, 63, 64, 65, 127, 128, 129, 0, - 0, 0, 130, 0, 0, 0, 0, 131, 0, 190, - -211, -211, 0, -211, 0, 16, 71, -211, -212, -212, - 0, -212, 0, 132, 133, -212, 122, 0, -211, 0, - 0, -211, 0, 0, 0, 0, -212, 0, 0, -212, - 134, 0, 0, 135, 16, 71, 29, 136, 137, 138, - 59, 60, 123, 61, 124, 125, 126, 6, 62, 63, - 64, 65, 127, 128, 129, 0, 0, 0, 253, 254, - -211, -211, 0, 131, 0, 0, 0, 0, -212, -212, - -213, -213, 0, -213, 0, 0, 0, -213, 0, 132, - 133, 0, 122, 0, 0, 0, 0, 0, -213, 0, - 0, -213, 0, 0, 0, 0, 134, 0, 0, 135, - 16, 71, 29, 136, 137, 138, 59, 60, 123, 61, - 124, 125, 126, 6, 62, 63, 64, 65, 127, 128, - 129, 0, 0, 0, 130, 0, 0, 0, 0, 131, - -213, -213, -214, -214, 0, -214, 0, 0, 0, -214, - 0, 0, 0, 0, 0, 132, 133, 0, 122, 0, - -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, - 0, 0, 134, 0, 0, 135, 16, 71, 29, 136, - 137, 138, 59, 60, 123, 61, 124, 125, 126, 6, - 62, 63, 64, 65, 127, 128, 129, 0, 0, 0, - 253, 0, -214, -214, 0, 131, 0, 223, 224, 0, - 225, 226, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 132, 133, 0, 0, 0, 0, 0, 0, 0, - 59, 60, 0, 61, 0, 0, 0, 6, 134, 0, - 0, 135, 16, 71, 29, 136, 137, 138, 227, 0, - 0, 228, 0, 0, 0, 0, 0, 229, 230, 0, + 0, 0, 0, 0, 54, 0, 0, 55, 17, 56, + 31, 57, 58, 59, 0, 0, 36, 37, 38, 39, + 40, 41, 42, 6, 43, 44, 45, 46, 47, 48, + 49, 290, 0, 0, 50, 0, 0, 0, 138, 51, + 0, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 0, 0, 0, 0, 52, 53, 35, 0, 0, + 0, 0, 0, 0, 149, 150, 151, 152, 153, 154, + 155, 156, 54, 0, 0, 55, 17, 56, 31, 57, + 58, 59, 0, 0, 36, 37, 38, 39, 40, 41, + 42, 6, 43, 44, 45, 46, 47, 48, 49, 295, + 0, 0, 112, 0, 0, 0, 138, 51, 0, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 0, + 0, 0, 0, 52, 53, 0, 0, 0, 0, 0, + 0, 0, 149, 150, 151, 152, 153, 154, 155, 156, + 54, 0, 0, 55, 17, 56, 31, 57, 58, 59, + 213, 0, 0, 214, 215, 216, 0, 217, 218, 219, + 220, 0, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 36, 37, 0, 39, 0, 0, + 0, 6, 43, 44, 45, 46, 0, 0, 0, 0, + 165, 0, 234, 0, 0, 0, 0, 0, 0, 177, + 0, 236, 237, 0, 178, 0, 0, 0, 0, 0, + 138, 0, 0, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 0, 139, 140, 0, 0, 143, 144, + 145, 146, 147, 148, 17, 56, 149, 150, 151, 152, + 153, 154, 155, 156, 459, 0, 0, 0, 150, 460, + 152, 153, 154, 155, 156, 138, 0, 0, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 0, 139, + 140, 0, 0, 143, 144, 145, 146, 147, 148, 0, + 0, 149, 150, 151, 152, 153, 154, 155, 156, 461, + 0, 0, 0, 0, 462, 152, 153, 154, 155, 156, + 138, 0, 0, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 149, 150, 151, 152, + 153, 154, 155, 156, 463, 0, 0, 0, 0, 464, + 0, 0, 0, 0, 0, 138, 0, 287, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 138, 0, + 0, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 0, + 0, 288, 0, 0, 149, 150, 151, 152, 153, 154, + 155, 156, 138, 0, 177, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 138, 0, 0, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 0, 0, 421, 0, + 0, 149, 150, 151, 152, 153, 154, 155, 156, 138, + 0, 423, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 138, 0, 0, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 0, 0, 427, 0, 0, 149, 150, + 151, 152, 153, 154, 155, 156, 138, 0, 443, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 138, + 0, 0, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 0, 0, 458, 0, 0, 149, 150, 151, 152, 153, + 154, 155, 156, 138, 0, 470, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 138, 0, 0, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 0, 0, 472, + 0, 0, 149, 150, 151, 152, 153, 154, 155, 156, + 138, 0, 493, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 138, 0, 0, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 0, 0, 0, 0, 0, 149, + 150, 151, 152, 153, 154, 155, 156, 360, 0, 0, + 0, 0, 0, 0, 138, 0, 0, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 0, 0, 0, 0, 0, 0, 0, 42, - 16, 71, 43, 44, 45, 0, 46, 47, 48, 49, - 0, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 0, 61, 0, 0, 0, 6, 62, 63, - 64, 65, 59, 60, 0, 61, 38, 0, 67, 6, - 0, 0, 0, 0, 0, 0, 342, 69, 70, 0, - 227, 343, 0, 228, 0, 0, 0, 270, 0, 0, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 149, 150, 151, 152, 153, 154, 155, 156, 363, 0, + 0, 0, 0, 0, 0, 138, 0, 0, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 71, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 419, 16, 71, 0, 0, 420, 0, 0, 0, - 0, 0, 270, 0, 0, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 0, 271, 272, 0, 0, - 275, 276, 277, 278, 279, 280, 0, 0, 281, 282, - 283, 284, 285, 286, 287, 288, 421, 0, 0, 0, - 282, 422, 284, 285, 286, 287, 288, 270, 0, 0, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 0, 271, 272, 0, 0, 275, 276, 277, 278, 279, - 280, 0, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 423, 0, 0, 0, 0, 424, 284, 285, 286, - 287, 288, 270, 0, 370, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 270, 0, 0, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 0, 0, 372, 0, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 270, - 0, 376, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 270, 0, 0, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 0, 395, 0, 0, 281, 282, - 283, 284, 285, 286, 287, 288, 270, 0, 396, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 270, - 0, 0, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 0, 342, 0, 0, 281, 282, 283, 284, 285, - 286, 287, 288, 270, 0, 418, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 270, 0, 0, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 0, 429, - 0, 0, 281, 282, 283, 284, 285, 286, 287, 288, - 270, 0, 431, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 270, 0, 0, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 0, 462, 0, 0, 281, - 282, 283, 284, 285, 286, 287, 288, 270, 0, 464, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 270, 0, 0, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 0, 0, 0, 0, 281, 282, 283, 284, - 285, 286, 287, 288, 386, 0, 0, 0, 0, 0, - 0, 270, 0, 0, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, - 284, 285, 286, 287, 288, 392, 0, 0, 0, 0, - 0, 0, 270, 0, 0, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 281, 282, - 283, 284, 285, 286, 287, 288, 410, 0, 0, 0, - 0, 0, 0, 270, 0, 0, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 281, - 282, 283, 284, 285, 286, 287, 288, 413, 0, 0, - 0, 0, 0, 0, 270, 0, 0, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 0, 0, 0, + 0, 149, 150, 151, 152, 153, 154, 155, 156, 366, + 0, 0, 0, 0, 0, 0, 138, 0, 0, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 281, 282, 283, 284, 285, 286, 287, 288, 416, 0, - 0, 0, 0, 0, 0, 270, 0, 0, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 0, 0, + 0, 0, 149, 150, 151, 152, 153, 154, 155, 156, + 367, 0, 0, 0, 0, 0, 138, 0, 0, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 426, - 0, 0, 0, 0, 0, 270, 0, 0, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 0, 0, + 0, 0, 149, 150, 151, 152, 153, 154, 155, 156, + 294, 0, 138, 0, 0, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 149, 150, + 151, 152, 153, 154, 155, 156, 137, 138, 0, 0, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 399, - 0, 270, 0, 0, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, - 284, 285, 286, 287, 288, 269, 270, 0, 0, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 281, 282, 283, 284, 285, 286, 287, 288, - 304, 270, 0, 0, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 270, 0, 0, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 0, 0, 0, 0, - 281, 282, 283, 284, 285, 286, 287, 288, 271, 272, - 0, 274, 275, 276, 277, 278, 279, 280, 271, 272, - 0, 0, 275, 276, 277, 278, 279, 280, 0, 0, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 271, - 272, 0, 0, 275, 276, 277, 278, 279, 280, 271, - 272, 0, 0, 0, 0, 277, 278, 279, 280, 0, - 0, 0, 0, 282, 283, 284, 285, 286, 287, 288, - 0, 0, 0, 0, 0, 284, 285, 286, 287, 288 + 0, 0, 0, 149, 150, 151, 152, 153, 154, 155, + 156, 374, 138, 0, 0, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 149, 150, + 151, 152, 153, 154, 155, 156, 388, 138, 0, 0, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 138, 0, 0, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 0, 0, 0, 0, 0, 149, 150, 151, 152, + 153, 154, 155, 156, 139, 140, 0, 0, 143, 144, + 145, 146, 147, 148, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, + 152, 153, 154, 155, 156 }; const short parser::yycheck_[] = { - 0, 35, 20, 41, 181, 181, 181, 47, 46, 9, - 40, 111, 130, 23, 40, 3, 4, 0, 4, 5, - 6, 7, 8, 47, 40, 25, 91, 48, 90, 91, - 92, 40, 53, 51, 58, 51, 36, 95, 38, 58, - 48, 41, 51, 53, 38, 53, 46, 41, 93, 94, - 38, 47, 46, 41, 40, 58, 156, 89, 46, 59, - 60, 111, 49, 95, 94, 94, 98, 67, 94, 69, - 70, 59, 60, 67, 74, 69, 70, 93, 94, 67, - 74, 69, 70, 121, 93, 94, 74, 47, 38, 58, - 48, 41, 52, 53, 48, 53, 46, 48, 51, 53, - 48, 48, 53, 52, 53, 53, 156, 38, 94, 209, - 41, 111, 212, 213, 58, 46, 57, 67, 47, 69, - 70, 121, 47, 111, 74, 62, 63, 121, 52, 53, - 47, 131, 48, 121, 134, 253, 67, 53, 69, 70, - 134, 56, 48, 74, 48, 48, 134, 53, 47, 53, - 53, 88, 89, 90, 91, 92, 156, 52, 53, 209, - 48, 48, 212, 213, 47, 53, 53, 58, 156, 38, - 47, 121, 41, 58, 48, 38, 58, 46, 41, 53, - 47, 181, 182, 46, 134, 58, 58, 181, 58, 47, - 121, 56, 58, 181, 58, 74, 47, 47, 67, 299, - 69, 70, 94, 134, 67, 74, 69, 70, 56, 209, - 48, 74, 212, 213, 20, 33, 34, 98, 36, 51, - 57, 209, 40, 57, 212, 213, 47, 51, 56, 47, - 47, 181, 51, 51, 193, 194, 54, 38, 51, 47, - 41, 56, 47, 47, 47, 46, 246, 94, 38, 299, - 181, 41, 121, 430, 430, 430, 46, 53, 121, 88, - 89, 90, 91, 92, 38, 134, 67, 41, 69, 70, - 52, 134, 46, 74, 58, 93, 94, 67, 47, 69, - 70, 58, 47, 58, 74, 58, 245, 47, 47, 52, - 290, 18, 58, 67, 23, 69, 70, 52, 52, 299, - 74, 52, 420, 47, 422, 58, 424, 47, 58, 58, - 310, 299, 181, 313, 47, 58, 58, 317, 181, 47, - 121, 58, 48, 317, 48, 48, 48, 58, 58, 317, - 9, 121, 370, 134, 372, 9, 33, 34, 9, 36, - 74, 430, 376, 40, 134, 317, 134, 121, 51, -1, - 309, -1, -1, 312, 51, -1, -1, 54, -1, -1, - 134, -1, -1, 38, -1, -1, 41, 317, -1, -1, - 370, 46, 372, -1, -1, 375, 370, -1, 372, -1, - 181, -1, 370, -1, 372, -1, 317, -1, -1, -1, - 428, 181, 67, 431, 69, 70, 93, 94, -1, 74, - -1, 33, 34, -1, 36, -1, -1, 181, 40, 41, - 42, 43, 44, -1, -1, 47, -1, -1, -1, 51, - 370, -1, 372, -1, -1, 463, 464, -1, 428, -1, - 430, 431, -1, -1, 428, 394, 430, 431, -1, 370, - 428, 372, 430, 431, -1, -1, 121, -1, 317, -1, - -1, -1, -1, 412, 317, -1, 415, -1, -1, 134, - -1, 93, 94, 463, 464, 97, 98, -1, -1, 463, - 464, -1, -1, -1, -1, 463, 464, -1, 428, 438, - 430, 431, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 453, -1, 455, 428, 457, 430, - 431, 370, -1, 372, -1, -1, 181, 370, -1, 372, - -1, -1, -1, 463, 464, -1, 317, 33, 34, -1, - 36, -1, -1, -1, 40, -1, -1, 317, -1, -1, - -1, 42, 463, 464, -1, 51, -1, -1, 54, -1, - -1, -1, -1, 317, 55, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 428, - -1, 430, 431, 33, 34, 428, 36, 430, 431, 370, - 40, 372, -1, -1, -1, -1, -1, 93, 94, -1, - 370, 51, 372, -1, 54, -1, -1, -1, -1, -1, - 60, 61, -1, -1, 463, 464, 370, -1, 372, -1, - 463, 464, -1, -1, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, -1, -1, -1, 129, -1, - -1, 132, 133, 93, 94, 33, 34, 428, 36, 430, - 431, -1, 40, 41, 42, 43, 44, -1, 428, -1, - 430, 431, 317, 51, -1, -1, -1, -1, -1, -1, - -1, -1, 60, 61, 428, -1, 430, 431, 33, 34, - -1, 36, 463, 464, -1, 40, -1, 178, -1, 180, - -1, -1, 183, 463, 464, -1, 51, -1, -1, 54, - -1, -1, -1, -1, -1, 93, 94, -1, -1, 463, - 464, 202, -1, -1, -1, 370, -1, 372, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 222, -1, -1, -1, -1, 227, -1, 93, 94, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 33, 34, -1, 36, -1, -1, -1, 40, 250, - 251, -1, 253, -1, -1, -1, -1, -1, -1, 51, - 261, -1, 54, 428, -1, 430, 431, -1, -1, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 33, 34, - -1, 36, -1, -1, -1, 40, -1, -1, 463, 464, - -1, 93, 94, -1, -1, -1, 51, 308, -1, 54, - 311, -1, -1, 314, -1, -1, -1, 318, -1, 320, - 321, 322, 323, -1, -1, -1, -1, 33, 34, -1, - 36, -1, -1, -1, 40, 41, 42, 43, 44, 4, - -1, -1, 343, -1, 345, 51, -1, 12, 93, 94, + 0, 100, 309, 79, 21, 50, 309, 309, 79, 9, + 3, 4, 43, 50, 43, 162, 4, 5, 6, 7, + 8, 94, 169, 54, 43, 172, 26, 23, 36, 37, + 50, 39, 0, 51, 50, 43, 36, 37, 56, 61, + 77, 61, 50, 36, 37, 54, 54, 51, 61, 57, + 92, 51, 56, 129, 54, 43, 98, 212, 129, 101, + 56, 54, 217, 98, 43, 96, 97, 112, 97, 93, + 94, 95, 54, 36, 37, 54, 39, 51, 97, 79, + 43, 44, 45, 46, 47, 51, 79, 50, 96, 97, + 56, 54, 36, 37, 97, 39, 54, 36, 37, 43, + 39, 101, 96, 97, 43, 44, 45, 46, 47, 97, + 54, 51, 50, 57, 50, 54, 56, 96, 97, 55, + 56, 51, 51, 51, 63, 64, 56, 56, 56, 129, + 51, 55, 56, 96, 97, 56, 129, 100, 101, 51, + 51, 97, 51, 51, 56, 56, 301, 56, 56, 51, + 297, 50, 96, 97, 56, 51, 165, 96, 97, 59, + 56, 51, 51, 163, 471, 165, 56, 56, 471, 471, + 170, 59, 165, 173, 321, 322, 323, 324, 325, 55, + 56, 55, 56, 165, 61, 185, 52, 54, 36, 37, + 50, 39, 54, 50, 59, 43, 44, 45, 46, 47, + 59, 54, 278, 212, 56, 222, 54, 278, 217, 55, + 54, 50, 212, 97, 59, 362, 50, 217, 365, 212, + 61, 50, 50, 50, 217, 234, 50, 236, 237, 50, + 212, 240, 55, 50, 234, 217, 236, 237, 27, 61, + 240, 234, 60, 236, 237, 61, 61, 240, 96, 97, + 50, 50, 234, 50, 236, 237, 332, 333, 240, 50, + 49, 332, 333, 52, 53, 61, 421, 61, 423, 36, + 37, 418, 39, 54, 61, 61, 43, 61, 278, 77, + 50, 36, 37, 51, 39, 278, 50, 54, 43, 20, + 57, 438, 301, 440, 101, 442, 50, 60, 60, 54, + 309, 301, 57, 50, 50, 50, 55, 383, 301, 309, + 310, 55, 383, 55, 469, 50, 309, 472, 61, 301, + 109, 110, 50, 112, 61, 50, 50, 309, 427, 96, + 97, 120, 332, 333, 50, 61, 18, 492, 493, 332, + 333, 96, 97, 61, 65, 66, 61, 61, 61, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 54, + 91, 92, 93, 94, 95, 61, 23, 61, 61, 168, + 61, 61, 171, 383, 165, 174, 395, 61, 51, 178, + 383, 180, 51, 51, 183, 395, 91, 92, 93, 94, + 95, 51, 395, 9, 36, 37, 61, 39, 61, 61, + 9, 43, 421, 395, 423, 460, 9, 462, 471, 464, + 240, 421, 54, 423, 213, 57, 426, 54, 421, 222, + 423, 212, -1, 395, -1, -1, 217, 226, -1, 421, + -1, 423, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 234, -1, 236, 237, -1, -1, 240, + 469, -1, 471, 472, 96, 97, -1, -1, 54, 469, + -1, 471, 472, -1, -1, -1, 469, -1, 471, 472, + 165, -1, -1, 492, 493, -1, 54, 469, -1, 471, + 472, -1, 492, 493, -1, 54, -1, -1, -1, 492, + 493, -1, -1, -1, -1, 294, -1, -1, -1, -1, + 492, 493, -1, -1, -1, -1, -1, 306, -1, 308, + 301, -1, 311, 36, 37, -1, 39, 212, 309, -1, + 43, -1, 217, -1, -1, -1, -1, 326, -1, -1, + -1, 54, -1, -1, 57, -1, -1, -1, -1, 234, + -1, 236, 237, 342, -1, 240, -1, -1, -1, -1, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, -1, -1, 54, -1, -1, -1, 367, 165, + -1, -1, -1, 96, 97, 54, 36, 37, -1, 39, + -1, -1, -1, 43, -1, -1, -1, 165, -1, -1, + -1, -1, -1, -1, 54, -1, 165, 57, 397, 398, + 399, 400, -1, -1, 395, -1, 301, -1, -1, -1, + -1, -1, -1, -1, 309, -1, 212, -1, -1, -1, + -1, 217, -1, 422, -1, 424, 425, -1, 36, 37, + 421, 39, 423, -1, 212, 43, 96, 97, 234, 217, + 236, 237, -1, 212, 240, -1, 54, -1, 217, 57, + -1, -1, -1, -1, -1, -1, 234, -1, 236, 237, + -1, -1, 240, -1, -1, 234, -1, 236, 237, 36, + 37, 240, 39, -1, 473, 165, 43, -1, 469, -1, + 471, 472, -1, -1, -1, -1, 165, 54, 96, 97, + 57, 36, 37, -1, 39, -1, -1, -1, 43, -1, + 395, 492, 493, -1, -1, 301, -1, -1, -1, 54, + -1, -1, 57, 309, -1, -1, 10, 11, -1, 13, + 14, -1, 212, 301, -1, -1, 421, 217, 423, 96, + 97, 309, 301, 212, -1, -1, -1, -1, 217, -1, + 309, -1, 36, 37, 234, 39, 236, 237, -1, 43, + 240, 96, 97, -1, -1, 234, -1, 236, 237, -1, + 54, 240, -1, 57, -1, -1, -1, -1, -1, 63, + 64, -1, -1, -1, 469, -1, 471, 472, -1, -1, + -1, -1, -1, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, -1, -1, -1, 492, 493, 395, + -1, -1, 96, 97, -1, 36, 37, -1, 39, -1, + -1, 301, 43, 44, 45, 46, 47, 395, -1, 309, + -1, -1, 301, 54, -1, 421, 395, 423, 36, 37, + 309, 39, -1, 65, 66, 43, 68, 69, 70, 71, + 72, 73, 74, 421, -1, 423, 54, -1, -1, 57, + -1, -1, 421, -1, 423, -1, 88, 89, 90, 91, + 92, 93, 94, 95, -1, 96, 97, -1, -1, -1, + -1, -1, -1, 469, -1, 471, 472, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 96, 97, + -1, 469, -1, 471, 472, -1, 492, 493, -1, -1, + 469, -1, 471, 472, -1, 395, -1, -1, -1, -1, + -1, 65, 66, -1, 492, 493, 395, 71, 72, 73, + 74, -1, -1, 492, 493, 36, 37, -1, 39, -1, + -1, 421, 43, 423, -1, -1, -1, 91, 92, 93, + 94, 95, 421, 54, 423, -1, 57, -1, -1, -1, + -1, -1, 63, 64, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, -1, -1, 469, + -1, 471, 472, -1, -1, 96, 97, -1, -1, -1, + 469, -1, 471, 472, -1, -1, -1, -1, -1, -1, + -1, -1, 492, 493, 4, -1, -1, -1, -1, -1, + -1, -1, 12, 492, 493, 15, 16, 17, -1, 19, + 20, 21, 22, -1, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, -1, 39, + -1, -1, -1, 43, 44, 45, 46, 47, -1, -1, + -1, -1, 52, 53, 54, -1, -1, -1, -1, 4, + -1, 61, -1, 63, 64, -1, -1, 12, -1, -1, 15, 16, 17, -1, 19, 20, 21, 22, -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 371, 36, 373, 374, -1, 40, 41, 42, 43, 44, - -1, -1, -1, -1, 49, 50, 51, 93, 94, -1, - -1, -1, -1, 58, -1, 60, 61, -1, 399, -1, - -1, -1, -1, 33, 34, -1, 36, -1, -1, -1, - 40, 41, 42, 43, 44, -1, -1, -1, -1, -1, - -1, 51, 4, -1, -1, 426, -1, -1, 93, 94, - 12, 432, -1, 15, 16, 17, -1, 19, 20, 21, + 35, 36, 37, -1, 39, -1, 96, 97, 43, 44, + 45, 46, 47, -1, -1, -1, -1, 52, 53, 54, + -1, -1, -1, -1, -1, 5, 61, -1, 63, 64, + -1, -1, 12, -1, -1, 15, 16, 17, -1, 19, + 20, 21, 22, -1, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, -1, 39, + -1, 96, 97, 43, 44, 45, 46, 47, -1, -1, + -1, -1, 52, -1, 54, -1, -1, -1, -1, -1, + 5, 61, -1, 63, 64, -1, -1, 12, -1, -1, + 15, 16, 17, -1, 19, 20, 21, 22, -1, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 9, 39, -1, 96, 97, 43, 44, + 45, 46, 47, -1, -1, -1, -1, 52, -1, 54, + -1, -1, -1, -1, -1, -1, 61, -1, 63, 64, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, -1, -1, -1, 54, 55, + 65, 66, -1, 59, 69, 70, 71, 72, 73, 74, + -1, 96, 97, -1, -1, -1, -1, -1, -1, 75, + 76, 9, -1, 88, 89, 90, 91, 92, 93, 94, + 95, -1, -1, -1, -1, -1, 92, -1, -1, 95, + 96, 97, 98, 99, 100, 101, -1, -1, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, -1, -1, -1, 54, -1, -1, -1, + -1, 59, -1, 61, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 75, 76, 9, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 92, -1, -1, 95, 96, 97, + 98, 99, 100, 101, -1, -1, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 55, -1, -1, 54, -1, -1, -1, 62, 59, + -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, -1, -1, -1, -1, 75, 76, 9, -1, -1, + -1, -1, -1, -1, 88, 89, 90, 91, 92, 93, + 94, 95, 92, -1, -1, 95, 96, 97, 98, 99, + 100, 101, -1, -1, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 55, + -1, -1, 54, -1, -1, -1, 62, 59, -1, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, + -1, -1, -1, 75, 76, -1, -1, -1, -1, -1, + -1, -1, 88, 89, 90, 91, 92, 93, 94, 95, + 92, -1, -1, 95, 96, 97, 98, 99, 100, 101, + 12, -1, -1, 15, 16, 17, -1, 19, 20, 21, 22, -1, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, -1, 36, -1, -1, -1, 40, 41, - 42, 43, 44, 93, 94, -1, -1, 49, 50, 51, - 5, -1, -1, -1, -1, -1, 58, 12, 60, 61, - 15, 16, 17, -1, 19, 20, 21, 22, -1, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - -1, 36, -1, -1, -1, 40, 41, 42, 43, 44, - -1, 93, 94, -1, 49, -1, 51, 5, -1, -1, - -1, -1, -1, 58, 12, 60, 61, 15, 16, 17, - -1, 19, 20, 21, 22, -1, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, -1, 36, -1, - 9, -1, 40, 41, 42, 43, 44, -1, 93, 94, - -1, 49, -1, 51, -1, -1, -1, -1, -1, -1, - 58, -1, 60, 61, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, -1, - -1, -1, 51, -1, -1, -1, -1, 56, -1, 58, - 33, 34, -1, 36, -1, 93, 94, 40, 33, 34, - -1, 36, -1, 72, 73, 40, 9, -1, 51, -1, - -1, 54, -1, -1, -1, -1, 51, -1, -1, 54, - 89, -1, -1, 92, 93, 94, 95, 96, 97, 98, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, -1, -1, -1, 51, 52, - 93, 94, -1, 56, -1, -1, -1, -1, 93, 94, - 33, 34, -1, 36, -1, -1, -1, 40, -1, 72, - 73, -1, 9, -1, -1, -1, -1, -1, 51, -1, - -1, 54, -1, -1, -1, -1, 89, -1, -1, 92, - 93, 94, 95, 96, 97, 98, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, -1, -1, -1, 51, -1, -1, -1, -1, 56, - 93, 94, 33, 34, -1, 36, -1, -1, -1, 40, - -1, -1, -1, -1, -1, 72, 73, -1, 9, -1, - 51, -1, -1, 54, -1, -1, -1, -1, -1, -1, - -1, -1, 89, -1, -1, 92, 93, 94, 95, 96, - 97, 98, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, -1, -1, -1, - 51, -1, 93, 94, -1, 56, -1, 10, 11, -1, - 13, 14, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 72, 73, -1, -1, -1, -1, -1, -1, -1, - 33, 34, -1, 36, -1, -1, -1, 40, 89, -1, - -1, 92, 93, 94, 95, 96, 97, 98, 51, -1, - -1, 54, -1, -1, -1, -1, -1, 60, 61, -1, + 32, 33, 34, 35, 36, 37, -1, 39, -1, -1, + -1, 43, 44, 45, 46, 47, -1, -1, -1, -1, + 52, -1, 54, -1, -1, -1, -1, -1, -1, 51, + -1, 63, 64, -1, 56, -1, -1, -1, -1, -1, + 62, -1, -1, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, -1, 65, 66, -1, -1, 69, 70, + 71, 72, 73, 74, 96, 97, 88, 89, 90, 91, + 92, 93, 94, 95, 51, -1, -1, -1, 89, 56, + 91, 92, 93, 94, 95, 62, -1, -1, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, -1, 65, + 66, -1, -1, 69, 70, 71, 72, 73, 74, -1, + -1, 88, 89, 90, 91, 92, 93, 94, 95, 51, + -1, -1, -1, -1, 56, 91, 92, 93, 94, 95, + 62, -1, -1, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 88, 89, 90, 91, + 92, 93, 94, 95, 51, -1, -1, -1, -1, 56, + -1, -1, -1, -1, -1, 62, -1, 51, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 62, -1, + -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 88, 89, 90, 91, 92, 93, 94, 95, -1, + -1, 51, -1, -1, 88, 89, 90, 91, 92, 93, + 94, 95, 62, -1, 51, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 62, -1, -1, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 88, 89, + 90, 91, 92, 93, 94, 95, -1, -1, 51, -1, + -1, 88, 89, 90, 91, 92, 93, 94, 95, 62, + -1, 51, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 62, -1, -1, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 88, 89, 90, 91, 92, + 93, 94, 95, -1, -1, 51, -1, -1, 88, 89, + 90, 91, 92, 93, 94, 95, 62, -1, 51, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 62, + -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 88, 89, 90, 91, 92, 93, 94, 95, + -1, -1, 51, -1, -1, 88, 89, 90, 91, 92, + 93, 94, 95, 62, -1, 51, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 62, -1, -1, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 88, + 89, 90, 91, 92, 93, 94, 95, -1, -1, 51, + -1, -1, 88, 89, 90, 91, 92, 93, 94, 95, + 62, -1, 51, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 62, -1, -1, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 88, 89, 90, 91, + 92, 93, 94, 95, -1, -1, -1, -1, -1, 88, + 89, 90, 91, 92, 93, 94, 95, 55, -1, -1, + -1, -1, -1, -1, 62, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, -1, -1, -1, -1, -1, -1, -1, 12, - 93, 94, 15, 16, 17, -1, 19, 20, 21, 22, - -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, -1, 36, -1, -1, -1, 40, 41, 42, - 43, 44, 33, 34, -1, 36, 49, -1, 51, 40, - -1, -1, -1, -1, -1, -1, 48, 60, 61, -1, - 51, 53, -1, 54, -1, -1, -1, 59, -1, -1, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 88, 89, 90, 91, 92, 93, 94, 95, 55, -1, + -1, -1, -1, -1, -1, 62, -1, -1, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 93, 94, -1, 85, 86, 87, 88, 89, 90, 91, - 92, 48, 93, 94, -1, -1, 53, -1, -1, -1, - -1, -1, 59, -1, -1, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, -1, 62, 63, -1, -1, - 66, 67, 68, 69, 70, 71, -1, -1, 85, 86, - 87, 88, 89, 90, 91, 92, 48, -1, -1, -1, - 86, 53, 88, 89, 90, 91, 92, 59, -1, -1, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - -1, 62, 63, -1, -1, 66, 67, 68, 69, 70, - 71, -1, -1, 85, 86, 87, 88, 89, 90, 91, - 92, 48, -1, -1, -1, -1, 53, 88, 89, 90, - 91, 92, 59, -1, 48, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 59, -1, -1, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 85, 86, - 87, 88, 89, 90, 91, 92, -1, -1, 48, -1, - -1, 85, 86, 87, 88, 89, 90, 91, 92, 59, - -1, 48, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 59, -1, -1, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 85, 86, 87, 88, 89, - 90, 91, 92, -1, -1, 48, -1, -1, 85, 86, - 87, 88, 89, 90, 91, 92, 59, -1, 48, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 59, - -1, -1, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 85, 86, 87, 88, 89, 90, 91, 92, - -1, -1, 48, -1, -1, 85, 86, 87, 88, 89, - 90, 91, 92, 59, -1, 48, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 59, -1, -1, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 85, - 86, 87, 88, 89, 90, 91, 92, -1, -1, 48, - -1, -1, 85, 86, 87, 88, 89, 90, 91, 92, - 59, -1, 48, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 59, -1, -1, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 85, 86, 87, 88, - 89, 90, 91, 92, -1, -1, 48, -1, -1, 85, - 86, 87, 88, 89, 90, 91, 92, 59, -1, 48, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 59, -1, -1, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 85, 86, 87, 88, 89, 90, 91, - 92, -1, -1, -1, -1, -1, 85, 86, 87, 88, - 89, 90, 91, 92, 52, -1, -1, -1, -1, -1, - -1, 59, -1, -1, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 85, 86, 87, - 88, 89, 90, 91, 92, 52, -1, -1, -1, -1, - -1, -1, 59, -1, -1, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 85, 86, - 87, 88, 89, 90, 91, 92, 52, -1, -1, -1, - -1, -1, -1, 59, -1, -1, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, - 86, 87, 88, 89, 90, 91, 92, 52, -1, -1, - -1, -1, -1, -1, 59, -1, -1, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, -1, -1, -1, + -1, 88, 89, 90, 91, 92, 93, 94, 95, 55, + -1, -1, -1, -1, -1, -1, 62, -1, -1, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 85, 86, 87, 88, 89, 90, 91, 92, 52, -1, - -1, -1, -1, -1, -1, 59, -1, -1, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, -1, -1, + -1, -1, 88, 89, 90, 91, 92, 93, 94, 95, + 56, -1, -1, -1, -1, -1, 62, -1, -1, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 85, 86, 87, 88, 89, 90, 91, 92, 53, - -1, -1, -1, -1, -1, 59, -1, -1, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, -1, -1, + -1, -1, 88, 89, 90, 91, 92, 93, 94, 95, + 60, -1, 62, -1, -1, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, + 90, 91, 92, 93, 94, 95, 61, 62, -1, -1, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 85, 86, 87, 88, 89, 90, 91, 92, 57, - -1, 59, -1, -1, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 85, 86, 87, - 88, 89, 90, 91, 92, 58, 59, -1, -1, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 85, 86, 87, 88, 89, 90, 91, 92, - 58, 59, -1, -1, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 59, -1, -1, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 85, 86, 87, - 88, 89, 90, 91, 92, -1, -1, -1, -1, -1, - 85, 86, 87, 88, 89, 90, 91, 92, 62, 63, - -1, 65, 66, 67, 68, 69, 70, 71, 62, 63, - -1, -1, 66, 67, 68, 69, 70, 71, -1, -1, - -1, 85, 86, 87, 88, 89, 90, 91, 92, -1, - -1, 85, 86, 87, 88, 89, 90, 91, 92, 62, - 63, -1, -1, 66, 67, 68, 69, 70, 71, 62, - 63, -1, -1, -1, -1, 68, 69, 70, 71, -1, - -1, -1, -1, 86, 87, 88, 89, 90, 91, 92, - -1, -1, -1, -1, -1, 88, 89, 90, 91, 92 + -1, -1, -1, 88, 89, 90, 91, 92, 93, 94, + 95, 61, 62, -1, -1, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, + 90, 91, 92, 93, 94, 95, 61, 62, -1, -1, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 62, -1, -1, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 88, 89, 90, 91, 92, 93, 94, + 95, -1, -1, -1, -1, -1, 88, 89, 90, 91, + 92, 93, 94, 95, 65, 66, -1, -1, 69, 70, + 71, 72, 73, 74, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, + 91, 92, 93, 94, 95 }; const unsigned char parser::yystos_[] = { - 0, 4, 5, 6, 7, 8, 40, 94, 110, 111, - 112, 113, 114, 115, 116, 188, 93, 94, 189, 189, - 47, 0, 112, 113, 114, 47, 91, 58, 58, 95, - 191, 164, 188, 94, 48, 48, 53, 58, 49, 122, - 188, 4, 12, 15, 16, 17, 19, 20, 21, 22, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 36, 41, 42, 43, 44, 50, 51, 58, 60, - 61, 94, 117, 118, 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, 159, 160, 161, 162, 170, 173, - 174, 177, 181, 182, 183, 184, 188, 189, 5, 58, - 117, 119, 9, 35, 37, 38, 39, 45, 46, 47, - 51, 56, 72, 73, 89, 92, 96, 97, 98, 148, - 153, 154, 155, 156, 157, 158, 159, 160, 163, 167, - 168, 169, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 58, 47, 58, 47, 117, - 47, 47, 47, 47, 89, 191, 194, 57, 58, 58, - 58, 148, 58, 47, 47, 51, 188, 189, 51, 188, - 189, 51, 51, 159, 160, 171, 172, 173, 174, 177, - 188, 51, 177, 177, 50, 58, 118, 58, 58, 58, - 58, 58, 74, 10, 11, 13, 14, 51, 54, 60, - 61, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 161, 162, 188, 47, 56, 5, 58, 117, - 47, 47, 148, 51, 52, 148, 165, 166, 188, 148, - 148, 47, 97, 98, 173, 174, 176, 188, 94, 58, - 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 85, 86, 87, 88, 89, 90, 91, 92, 54, - 56, 48, 148, 20, 148, 123, 150, 151, 152, 177, - 188, 148, 57, 57, 58, 165, 166, 165, 51, 47, - 56, 51, 47, 56, 51, 148, 52, 53, 51, 148, - 47, 47, 47, 47, 148, 94, 187, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 165, 188, - 148, 148, 48, 53, 148, 53, 52, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 40, 188, 58, - 48, 47, 48, 58, 23, 53, 48, 48, 48, 148, - 165, 188, 148, 165, 188, 148, 52, 172, 148, 148, - 148, 148, 52, 48, 47, 48, 48, 148, 148, 57, - 117, 148, 117, 148, 149, 148, 188, 122, 58, 58, - 52, 48, 47, 52, 48, 47, 52, 52, 48, 48, - 53, 48, 53, 48, 53, 165, 53, 148, 18, 48, - 58, 48, 23, 52, 165, 52, 165, 52, 47, 58, - 58, 166, 58, 166, 58, 166, 48, 148, 117, 58, - 123, 117, 148, 47, 48, 47, 48, 47, 165, 48, - 48, 48, 48, 48, 48, 165, 165, 165, 48, 58, - 58, 58, 117, 117, 48, 48, 48 + 0, 4, 5, 6, 7, 8, 43, 97, 113, 114, + 115, 116, 117, 118, 119, 120, 195, 96, 97, 196, + 196, 50, 0, 115, 116, 117, 50, 77, 94, 61, + 61, 98, 198, 171, 195, 9, 36, 37, 38, 39, + 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, + 54, 59, 75, 76, 92, 95, 97, 99, 100, 101, + 155, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 174, 175, 176, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 97, 51, + 51, 56, 54, 195, 196, 54, 195, 196, 54, 50, + 50, 155, 54, 55, 155, 172, 173, 195, 155, 155, + 50, 54, 100, 101, 166, 167, 180, 181, 183, 184, + 188, 189, 190, 191, 195, 196, 97, 61, 62, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 88, + 89, 90, 91, 92, 93, 94, 95, 54, 57, 168, + 169, 195, 50, 59, 61, 52, 126, 195, 54, 50, + 59, 54, 50, 59, 54, 155, 155, 51, 56, 155, + 56, 55, 155, 54, 57, 59, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 43, 97, 194, 172, + 173, 195, 4, 12, 15, 16, 17, 19, 20, 21, + 22, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 53, 54, 61, 63, 64, 121, 122, + 124, 125, 126, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 157, 158, 159, 166, 167, 177, 180, 181, 184, 195, + 155, 172, 195, 155, 172, 195, 155, 51, 51, 155, + 55, 155, 155, 195, 60, 55, 51, 50, 5, 61, + 121, 123, 155, 61, 50, 61, 50, 121, 50, 50, + 50, 50, 92, 198, 201, 60, 61, 61, 61, 155, + 61, 50, 50, 50, 50, 50, 54, 178, 179, 180, + 181, 195, 184, 184, 53, 61, 122, 61, 61, 61, + 61, 61, 77, 10, 11, 13, 14, 63, 64, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 55, 51, 50, 55, 51, 50, 55, 56, 55, 155, + 172, 5, 61, 121, 61, 51, 155, 20, 155, 127, + 157, 158, 159, 184, 195, 155, 60, 60, 61, 172, + 172, 172, 172, 172, 55, 56, 155, 50, 50, 50, + 50, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 55, 172, 55, 172, 55, 155, 50, 51, + 61, 51, 50, 51, 61, 23, 56, 51, 51, 51, + 51, 51, 51, 179, 155, 155, 155, 155, 50, 51, + 50, 51, 50, 51, 172, 121, 155, 121, 155, 156, + 155, 195, 126, 61, 61, 61, 61, 61, 51, 51, + 56, 51, 56, 51, 56, 172, 172, 172, 51, 18, + 51, 61, 51, 23, 61, 61, 173, 61, 173, 61, + 173, 51, 51, 51, 121, 61, 127, 121, 155, 51, + 51, 51, 51, 51, 61, 61, 61, 121, 121 }; const unsigned char parser::yyr1_[] = { - 0, 109, 110, 110, 111, 111, 111, 111, 111, 111, - 112, 113, 114, 114, 114, 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, 119, 119, 120, - 120, 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, 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, 157, 157, 157, - 158, 159, 159, 160, 160, 161, 161, 161, 161, 161, - 161, 162, 162, 162, 162, 163, 164, 164, 164, 165, - 165, 166, 166, 167, 168, 169, 169, 170, 171, 171, - 172, 172, 172, 173, 174, 175, 176, 177, 177, 177, - 177, 177, 177, 177, 177, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 188, 189, 189, - 189, 190, 191, 192, 193, 193, 194, 194, 195, 196 + 0, 112, 113, 113, 114, 114, 114, 114, 114, 114, + 115, 116, 117, 117, 117, 117, 117, 118, 119, 120, + 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 122, 122, + 123, 123, 123, 123, 124, 124, 124, 124, 125, 125, + 126, 126, 127, 127, 127, 127, 128, 128, 129, 129, + 129, 130, 131, 131, 132, 133, 133, 134, 134, 135, + 136, 136, 137, 138, 139, 140, 141, 142, 142, 143, + 144, 144, 145, 146, 147, 148, 148, 149, 150, 151, + 152, 153, 154, 155, 155, 155, 156, 156, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 158, 158, 159, 159, 160, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 163, 164, 164, 164, 164, 165, 166, + 166, 167, 167, 168, 168, 168, 168, 168, 168, 169, + 169, 169, 169, 170, 171, 171, 171, 172, 172, 173, + 173, 174, 175, 176, 176, 177, 178, 178, 179, 179, + 179, 180, 181, 182, 183, 184, 184, 184, 184, 184, + 184, 184, 184, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 195, 196, 196, 196, 197, + 198, 199, 200, 200, 201, 201, 202, 203 }; const signed char parser::yyr2_[] = { 0, 2, 1, 0, 2, 2, 2, 1, 1, 1, - 3, 3, 1, 1, 1, 1, 5, 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, 1, 1, 2, 1, 2, 1, 2, - 1, 2, 1, 3, 2, 3, 2, 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, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 1, 2, 1, 2, 1, 2, 1, 3, 2, + 3, 2, 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, + 5, 5, 5, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 2, 2, 2, 2, 5, 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, 3, 3, 1, 1, 1, 1, 1, + 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, 1, 1, - 1, 1, 1, 1, 1, 2, 2, 2, 2, 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, 3, 3, 1, - 1, 1, 1, 4, 3, 3, 3, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, - 1, 1, 1, 2, 1, 1, 1, 1, 3, 1, - 1, 1, 1, 7, 2, 1, 2, 1, 1, 1 + 1, 1, 1, 2, 2, 2, 2, 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, 3, 3, 1, 1, 1, + 1, 4, 3, 3, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, + 1, 2, 1, 1, 1, 1, 3, 1, 1, 1, + 1, 7, 2, 1, 2, 1, 1, 1 }; @@ -4724,30 +4876,31 @@ namespace xsk { namespace gsc { const short parser::yyrline_[] = { - 0, 267, 267, 268, 272, 274, 276, 278, 280, 282, - 287, 291, 296, 297, 298, 299, 303, 308, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 341, 342, 346, 348, 350, 352, 357, - 359, 361, 363, 368, 369, 373, 374, 378, 380, 382, - 385, 389, 391, 396, 398, 400, 405, 410, 412, 417, - 422, 424, 429, 431, 436, 441, 443, 448, 453, 458, - 463, 468, 473, 478, 487, 494, 496, 501, 506, 511, - 516, 518, 523, 528, 533, 538, 539, 540, 544, 545, - 549, 551, 553, 555, 557, 559, 561, 563, 565, 567, - 569, 571, 576, 578, 583, 585, 590, 595, 597, 599, - 601, 603, 605, 607, 609, 611, 613, 615, 617, 619, - 621, 623, 625, 627, 629, 634, 635, 636, 637, 638, - 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, - 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, - 659, 660, 661, 662, 663, 667, 672, 674, 676, 678, - 683, 688, 689, 692, 693, 697, 699, 701, 703, 705, - 707, 712, 714, 716, 718, 723, 728, 730, 733, 737, - 740, 744, 746, 751, 756, 761, 763, 768, 775, 777, - 782, 783, 784, 788, 793, 798, 803, 808, 809, 810, - 811, 812, 813, 814, 815, 816, 820, 825, 830, 835, - 840, 845, 850, 855, 860, 865, 870, 872, 877, 879, - 881, 886, 891, 896, 901, 903, 908, 910, 915, 920 + 0, 274, 274, 275, 279, 281, 283, 285, 287, 289, + 294, 298, 303, 304, 305, 306, 307, 311, 316, 324, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 360, 361, + 365, 367, 369, 371, 376, 378, 380, 382, 387, 388, + 392, 393, 397, 399, 401, 404, 408, 410, 415, 417, + 419, 424, 429, 431, 436, 441, 443, 448, 450, 455, + 460, 462, 467, 472, 477, 482, 487, 492, 497, 506, + 513, 515, 520, 525, 530, 535, 537, 542, 547, 552, + 557, 562, 567, 572, 573, 574, 578, 579, 583, 585, + 587, 589, 591, 593, 595, 597, 599, 601, 603, 605, + 610, 612, 617, 619, 624, 629, 631, 633, 635, 637, + 639, 641, 643, 645, 647, 649, 651, 653, 655, 657, + 659, 661, 663, 668, 669, 670, 671, 672, 673, 674, + 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, + 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, + 695, 696, 697, 701, 706, 708, 710, 712, 717, 722, + 723, 726, 727, 731, 733, 735, 737, 739, 741, 746, + 748, 750, 752, 757, 762, 764, 767, 771, 774, 778, + 780, 785, 790, 795, 797, 802, 809, 811, 816, 817, + 818, 822, 827, 832, 837, 842, 843, 844, 845, 846, + 847, 848, 849, 850, 854, 859, 864, 869, 874, 879, + 884, 889, 894, 899, 904, 906, 911, 913, 915, 920, + 925, 930, 935, 937, 942, 944, 949, 954 }; void @@ -4780,9 +4933,9 @@ namespace xsk { namespace gsc { #line 13 "parser.ypp" } } // xsk::gsc -#line 4784 "parser.cpp" +#line 4937 "parser.cpp" -#line 924 "parser.ypp" +#line 958 "parser.ypp" namespace xsk::gsc @@ -4988,6 +5141,9 @@ std::unordered_map const tok_to_par { token::BREAKPOINT, parser::token::BREAKPOINT }, { token::PROFBEGIN, parser::token::PROFBEGIN }, { token::PROFEND, parser::token::PROFEND }, + { token::ASSERT, parser::token::ASSERT }, + { token::ASSERTEX, parser::token::ASSERTEX }, + { token::ASSERTMSG, parser::token::ASSERTMSG }, { token::THREAD, parser::token::THREAD }, { token::CHILDTHREAD, parser::token::CHILDTHREAD }, { token::THISTHREAD, parser::token::THISTHREAD }, @@ -5031,6 +5187,9 @@ std::unordered_map const keywo { "breakpoint", parser::token::BREAKPOINT }, { "prof_begin", parser::token::PROFBEGIN }, { "prof_end", parser::token::PROFEND }, + { "assert", parser::token::ASSERT }, + { "assertex", parser::token::ASSERTEX }, + { "assertmsg", parser::token::ASSERTMSG }, { "thread", parser::token::THREAD }, { "childthread", parser::token::CHILDTHREAD }, { "thisthread", parser::token::THISTHREAD }, diff --git a/src/gsc/parser.hpp b/src/gsc/parser.hpp index 2f018eed..c91bc2ed 100644 --- a/src/gsc/parser.hpp +++ b/src/gsc/parser.hpp @@ -429,11 +429,14 @@ namespace xsk { namespace gsc { // declaration char dummy2[sizeof (decl)]; + // decl_constant + char dummy3[sizeof (decl_constant::ptr)]; + // decl_function - char dummy3[sizeof (decl_function::ptr)]; + char dummy4[sizeof (decl_function::ptr)]; // decl_usingtree - char dummy4[sizeof (decl_usingtree::ptr)]; + char dummy5[sizeof (decl_usingtree::ptr)]; // expr // expr_or_empty @@ -446,117 +449,117 @@ namespace xsk { namespace gsc { // expr_tuple // expr_tuple_types // expr_object - char dummy5[sizeof (expr)]; + char dummy6[sizeof (expr)]; // expr_add_array - char dummy6[sizeof (expr_add_array::ptr)]; + char dummy7[sizeof (expr_add_array::ptr)]; // expr_anim - char dummy7[sizeof (expr_anim::ptr)]; + char dummy8[sizeof (expr_anim::ptr)]; // expr_animation - char dummy8[sizeof (expr_animation::ptr)]; + char dummy9[sizeof (expr_animation::ptr)]; // expr_animtree - char dummy9[sizeof (expr_animtree::ptr)]; + char dummy10[sizeof (expr_animtree::ptr)]; // expr_arguments // expr_arguments_no_empty - char dummy10[sizeof (expr_arguments::ptr)]; + char dummy11[sizeof (expr_arguments::ptr)]; // expr_array - char dummy11[sizeof (expr_array::ptr)]; + char dummy12[sizeof (expr_array::ptr)]; // expr_call - char dummy12[sizeof (expr_call::ptr)]; + char dummy13[sizeof (expr_call::ptr)]; // expr_complement - char dummy13[sizeof (expr_complement::ptr)]; + char dummy14[sizeof (expr_complement::ptr)]; // expr_empty_array - char dummy14[sizeof (expr_empty_array::ptr)]; + char dummy15[sizeof (expr_empty_array::ptr)]; // expr_false - char dummy15[sizeof (expr_false::ptr)]; + char dummy16[sizeof (expr_false::ptr)]; // expr_field - char dummy16[sizeof (expr_field::ptr)]; + char dummy17[sizeof (expr_field::ptr)]; // expr_float - char dummy17[sizeof (expr_float::ptr)]; + char dummy18[sizeof (expr_float::ptr)]; // expr_game - char dummy18[sizeof (expr_game::ptr)]; + char dummy19[sizeof (expr_game::ptr)]; // expr_identifier_nosize // expr_identifier - char dummy19[sizeof (expr_identifier::ptr)]; + char dummy20[sizeof (expr_identifier::ptr)]; // expr_integer - char dummy20[sizeof (expr_integer::ptr)]; + char dummy21[sizeof (expr_integer::ptr)]; // expr_isdefined - char dummy21[sizeof (expr_isdefined::ptr)]; + char dummy22[sizeof (expr_isdefined::ptr)]; // expr_istring - char dummy22[sizeof (expr_istring::ptr)]; + char dummy23[sizeof (expr_istring::ptr)]; // expr_istrue - char dummy23[sizeof (expr_istrue::ptr)]; + char dummy24[sizeof (expr_istrue::ptr)]; // expr_level - char dummy24[sizeof (expr_level::ptr)]; + char dummy25[sizeof (expr_level::ptr)]; // expr_method - char dummy25[sizeof (expr_method::ptr)]; + char dummy26[sizeof (expr_method::ptr)]; // expr_negate - char dummy26[sizeof (expr_negate::ptr)]; + char dummy27[sizeof (expr_negate::ptr)]; // expr_not - char dummy27[sizeof (expr_not::ptr)]; + char dummy28[sizeof (expr_not::ptr)]; // expr_parameters - char dummy28[sizeof (expr_parameters::ptr)]; + char dummy29[sizeof (expr_parameters::ptr)]; // expr_paren - char dummy29[sizeof (expr_paren::ptr)]; + char dummy30[sizeof (expr_paren::ptr)]; // expr_path - char dummy30[sizeof (expr_path::ptr)]; + char dummy31[sizeof (expr_path::ptr)]; // expr_reference - char dummy31[sizeof (expr_reference::ptr)]; + char dummy32[sizeof (expr_reference::ptr)]; // expr_self - char dummy32[sizeof (expr_self::ptr)]; + char dummy33[sizeof (expr_self::ptr)]; // expr_size - char dummy33[sizeof (expr_size::ptr)]; + char dummy34[sizeof (expr_size::ptr)]; // expr_string - char dummy34[sizeof (expr_string::ptr)]; + char dummy35[sizeof (expr_string::ptr)]; // expr_thisthread - char dummy35[sizeof (expr_thisthread::ptr)]; + char dummy36[sizeof (expr_thisthread::ptr)]; // expr_true - char dummy36[sizeof (expr_true::ptr)]; + char dummy37[sizeof (expr_true::ptr)]; // expr_tuple_arguments - char dummy37[sizeof (expr_tuple::ptr)]; + char dummy38[sizeof (expr_tuple::ptr)]; // expr_undefined - char dummy38[sizeof (expr_undefined::ptr)]; + char dummy39[sizeof (expr_undefined::ptr)]; // expr_vector - char dummy39[sizeof (expr_vector::ptr)]; + char dummy40[sizeof (expr_vector::ptr)]; // include - char dummy40[sizeof (include::ptr)]; + char dummy41[sizeof (include::ptr)]; // program - char dummy41[sizeof (program::ptr)]; + char dummy42[sizeof (program::ptr)]; // "path" // "identifier" @@ -564,96 +567,105 @@ namespace xsk { namespace gsc { // "localized string" // "float" // "integer" - char dummy42[sizeof (std::string)]; + char dummy43[sizeof (std::string)]; // stmt // stmt_or_dev - char dummy43[sizeof (stmt)]; + char dummy44[sizeof (stmt)]; + + // stmt_assert + char dummy45[sizeof (stmt_assert::ptr)]; + + // stmt_assertex + char dummy46[sizeof (stmt_assertex::ptr)]; + + // stmt_assertmsg + char dummy47[sizeof (stmt_assertmsg::ptr)]; // stmt_assign - char dummy44[sizeof (stmt_assign::ptr)]; + char dummy48[sizeof (stmt_assign::ptr)]; // stmt_break - char dummy45[sizeof (stmt_break::ptr)]; + char dummy49[sizeof (stmt_break::ptr)]; // stmt_breakpoint - char dummy46[sizeof (stmt_breakpoint::ptr)]; + char dummy50[sizeof (stmt_breakpoint::ptr)]; // stmt_call - char dummy47[sizeof (stmt_call::ptr)]; + char dummy51[sizeof (stmt_call::ptr)]; // stmt_case - char dummy48[sizeof (stmt_case::ptr)]; + char dummy52[sizeof (stmt_case::ptr)]; // stmt_comp - char dummy49[sizeof (stmt_comp::ptr)]; + char dummy53[sizeof (stmt_comp::ptr)]; // stmt_continue - char dummy50[sizeof (stmt_continue::ptr)]; + char dummy54[sizeof (stmt_continue::ptr)]; // stmt_default - char dummy51[sizeof (stmt_default::ptr)]; + char dummy55[sizeof (stmt_default::ptr)]; // stmt_dev - char dummy52[sizeof (stmt_dev::ptr)]; + char dummy56[sizeof (stmt_dev::ptr)]; // stmt_dowhile - char dummy53[sizeof (stmt_dowhile::ptr)]; + char dummy57[sizeof (stmt_dowhile::ptr)]; // stmt_endon - char dummy54[sizeof (stmt_endon::ptr)]; + char dummy58[sizeof (stmt_endon::ptr)]; // stmt_expr - char dummy55[sizeof (stmt_expr::ptr)]; + char dummy59[sizeof (stmt_expr::ptr)]; // stmt_for - char dummy56[sizeof (stmt_for::ptr)]; + char dummy60[sizeof (stmt_for::ptr)]; // stmt_foreach - char dummy57[sizeof (stmt_foreach::ptr)]; + char dummy61[sizeof (stmt_foreach::ptr)]; // stmt_if - char dummy58[sizeof (stmt_if::ptr)]; + char dummy62[sizeof (stmt_if::ptr)]; // stmt_ifelse - char dummy59[sizeof (stmt_ifelse::ptr)]; + char dummy63[sizeof (stmt_ifelse::ptr)]; // stmt_list // stmt_or_dev_list - char dummy60[sizeof (stmt_list::ptr)]; + char dummy64[sizeof (stmt_list::ptr)]; // stmt_notify - char dummy61[sizeof (stmt_notify::ptr)]; + char dummy65[sizeof (stmt_notify::ptr)]; // stmt_prof_begin - char dummy62[sizeof (stmt_prof_begin::ptr)]; + char dummy66[sizeof (stmt_prof_begin::ptr)]; // stmt_prof_end - char dummy63[sizeof (stmt_prof_end::ptr)]; + char dummy67[sizeof (stmt_prof_end::ptr)]; // stmt_return - char dummy64[sizeof (stmt_return::ptr)]; + char dummy68[sizeof (stmt_return::ptr)]; // stmt_switch - char dummy65[sizeof (stmt_switch::ptr)]; + char dummy69[sizeof (stmt_switch::ptr)]; // stmt_wait - char dummy66[sizeof (stmt_wait::ptr)]; + char dummy70[sizeof (stmt_wait::ptr)]; // stmt_waitframe - char dummy67[sizeof (stmt_waitframe::ptr)]; + char dummy71[sizeof (stmt_waitframe::ptr)]; // stmt_waittill - char dummy68[sizeof (stmt_waittill::ptr)]; + char dummy72[sizeof (stmt_waittill::ptr)]; // stmt_waittillframeend - char dummy69[sizeof (stmt_waittillframeend::ptr)]; + char dummy73[sizeof (stmt_waittillframeend::ptr)]; // stmt_waittillmatch - char dummy70[sizeof (stmt_waittillmatch::ptr)]; + char dummy74[sizeof (stmt_waittillmatch::ptr)]; // stmt_while - char dummy71[sizeof (stmt_while::ptr)]; + char dummy75[sizeof (stmt_while::ptr)]; }; /// The size of the largest semantic type. @@ -736,82 +748,85 @@ namespace xsk { namespace gsc { BREAKPOINT = 30, // "breakpoint" PROFBEGIN = 31, // "prof_begin" PROFEND = 32, // "prof_end" - THREAD = 33, // "thread" - CHILDTHREAD = 34, // "childthread" - THISTHREAD = 35, // "thisthread" - CALL = 36, // "call" - TRUE = 37, // "true" - FALSE = 38, // "false" - UNDEFINED = 39, // "undefined" - SIZE = 40, // "size" - GAME = 41, // "game" - SELF = 42, // "self" - ANIM = 43, // "anim" - LEVEL = 44, // "level" - ISDEFINED = 45, // "isdefined" - ISTRUE = 46, // "istrue" - LPAREN = 47, // "(" - RPAREN = 48, // ")" - LBRACE = 49, // "{" - RBRACE = 50, // "}" - LBRACKET = 51, // "[" - RBRACKET = 52, // "]" - COMMA = 53, // "," - DOT = 54, // "." - ELLIPSIS = 55, // "..." - DOUBLECOLON = 56, // "::" - COLON = 57, // ":" - SEMICOLON = 58, // ";" - QMARK = 59, // "?" - INCREMENT = 60, // "++" - DECREMENT = 61, // "--" - LSHIFT = 62, // "<<" - RSHIFT = 63, // ">>" - OR = 64, // "||" - AND = 65, // "&&" - EQUALITY = 66, // "==" - INEQUALITY = 67, // "!=" - LESS_EQUAL = 68, // "<=" - GREATER_EQUAL = 69, // ">=" - LESS = 70, // "<" - GREATER = 71, // ">" - NOT = 72, // "!" - COMPLEMENT = 73, // "~" - ASSIGN = 74, // "=" - ASSIGN_ADD = 75, // "+=" - ASSIGN_SUB = 76, // "-=" - ASSIGN_MUL = 77, // "*=" - ASSIGN_DIV = 78, // "/=" - ASSIGN_MOD = 79, // "%=" - ASSIGN_BW_OR = 80, // "|=" - ASSIGN_BW_AND = 81, // "&=" - ASSIGN_BW_EXOR = 82, // "^=" - ASSIGN_RSHIFT = 83, // ">>=" - ASSIGN_LSHIFT = 84, // "<<=" - BITWISE_OR = 85, // "|" - BITWISE_AND = 86, // "&" - BITWISE_EXOR = 87, // "^" - ADD = 88, // "+" - SUB = 89, // "-" - MUL = 90, // "*" - DIV = 91, // "/" - MOD = 92, // "%" - PATH = 93, // "path" - IDENTIFIER = 94, // "identifier" - STRING = 95, // "string literal" - ISTRING = 96, // "localized string" - FLOAT = 97, // "float" - INTEGER = 98, // "integer" - SIZEOF = 99, // SIZEOF - ADD_ARRAY = 100, // ADD_ARRAY - THEN = 101, // THEN - TERN = 102, // TERN - NEG = 103, // NEG - ANIMREF = 104, // ANIMREF - PREINC = 105, // PREINC - PREDEC = 106, // PREDEC - POSTINC = 107, // POSTINC - POSTDEC = 108 // POSTDEC + ASSERT = 33, // "assert" + ASSERTEX = 34, // "assertex" + ASSERTMSG = 35, // "assertmsg" + THREAD = 36, // "thread" + CHILDTHREAD = 37, // "childthread" + THISTHREAD = 38, // "thisthread" + CALL = 39, // "call" + TRUE = 40, // "true" + FALSE = 41, // "false" + UNDEFINED = 42, // "undefined" + SIZE = 43, // "size" + GAME = 44, // "game" + SELF = 45, // "self" + ANIM = 46, // "anim" + LEVEL = 47, // "level" + ISDEFINED = 48, // "isdefined" + ISTRUE = 49, // "istrue" + LPAREN = 50, // "(" + RPAREN = 51, // ")" + LBRACE = 52, // "{" + RBRACE = 53, // "}" + LBRACKET = 54, // "[" + RBRACKET = 55, // "]" + COMMA = 56, // "," + DOT = 57, // "." + ELLIPSIS = 58, // "..." + DOUBLECOLON = 59, // "::" + COLON = 60, // ":" + SEMICOLON = 61, // ";" + QMARK = 62, // "?" + INCREMENT = 63, // "++" + DECREMENT = 64, // "--" + LSHIFT = 65, // "<<" + RSHIFT = 66, // ">>" + OR = 67, // "||" + AND = 68, // "&&" + EQUALITY = 69, // "==" + INEQUALITY = 70, // "!=" + LESS_EQUAL = 71, // "<=" + GREATER_EQUAL = 72, // ">=" + LESS = 73, // "<" + GREATER = 74, // ">" + NOT = 75, // "!" + COMPLEMENT = 76, // "~" + ASSIGN = 77, // "=" + ASSIGN_ADD = 78, // "+=" + ASSIGN_SUB = 79, // "-=" + ASSIGN_MUL = 80, // "*=" + ASSIGN_DIV = 81, // "/=" + ASSIGN_MOD = 82, // "%=" + ASSIGN_BW_OR = 83, // "|=" + ASSIGN_BW_AND = 84, // "&=" + ASSIGN_BW_EXOR = 85, // "^=" + ASSIGN_RSHIFT = 86, // ">>=" + ASSIGN_LSHIFT = 87, // "<<=" + BITWISE_OR = 88, // "|" + BITWISE_AND = 89, // "&" + BITWISE_EXOR = 90, // "^" + ADD = 91, // "+" + SUB = 92, // "-" + MUL = 93, // "*" + DIV = 94, // "/" + MOD = 95, // "%" + PATH = 96, // "path" + IDENTIFIER = 97, // "identifier" + STRING = 98, // "string literal" + ISTRING = 99, // "localized string" + FLOAT = 100, // "float" + INTEGER = 101, // "integer" + SIZEOF = 102, // SIZEOF + ADD_ARRAY = 103, // ADD_ARRAY + THEN = 104, // THEN + TERN = 105, // TERN + NEG = 106, // NEG + ANIMREF = 107, // ANIMREF + PREINC = 108, // PREINC + PREDEC = 109, // PREDEC + POSTINC = 110, // POSTINC + POSTDEC = 111 // POSTDEC }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; @@ -828,7 +843,7 @@ namespace xsk { namespace gsc { { enum symbol_kind_type { - YYNTOKENS = 109, ///< Number of tokens. + YYNTOKENS = 112, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error @@ -863,170 +878,177 @@ namespace xsk { namespace gsc { S_BREAKPOINT = 30, // "breakpoint" S_PROFBEGIN = 31, // "prof_begin" S_PROFEND = 32, // "prof_end" - S_THREAD = 33, // "thread" - S_CHILDTHREAD = 34, // "childthread" - S_THISTHREAD = 35, // "thisthread" - S_CALL = 36, // "call" - S_TRUE = 37, // "true" - S_FALSE = 38, // "false" - S_UNDEFINED = 39, // "undefined" - S_SIZE = 40, // "size" - S_GAME = 41, // "game" - S_SELF = 42, // "self" - S_ANIM = 43, // "anim" - S_LEVEL = 44, // "level" - S_ISDEFINED = 45, // "isdefined" - S_ISTRUE = 46, // "istrue" - S_LPAREN = 47, // "(" - S_RPAREN = 48, // ")" - S_LBRACE = 49, // "{" - S_RBRACE = 50, // "}" - S_LBRACKET = 51, // "[" - S_RBRACKET = 52, // "]" - S_COMMA = 53, // "," - S_DOT = 54, // "." - S_ELLIPSIS = 55, // "..." - S_DOUBLECOLON = 56, // "::" - S_COLON = 57, // ":" - S_SEMICOLON = 58, // ";" - S_QMARK = 59, // "?" - S_INCREMENT = 60, // "++" - S_DECREMENT = 61, // "--" - S_LSHIFT = 62, // "<<" - S_RSHIFT = 63, // ">>" - S_OR = 64, // "||" - S_AND = 65, // "&&" - S_EQUALITY = 66, // "==" - S_INEQUALITY = 67, // "!=" - S_LESS_EQUAL = 68, // "<=" - S_GREATER_EQUAL = 69, // ">=" - S_LESS = 70, // "<" - S_GREATER = 71, // ">" - S_NOT = 72, // "!" - S_COMPLEMENT = 73, // "~" - S_ASSIGN = 74, // "=" - S_ASSIGN_ADD = 75, // "+=" - S_ASSIGN_SUB = 76, // "-=" - S_ASSIGN_MUL = 77, // "*=" - S_ASSIGN_DIV = 78, // "/=" - S_ASSIGN_MOD = 79, // "%=" - S_ASSIGN_BW_OR = 80, // "|=" - S_ASSIGN_BW_AND = 81, // "&=" - S_ASSIGN_BW_EXOR = 82, // "^=" - S_ASSIGN_RSHIFT = 83, // ">>=" - S_ASSIGN_LSHIFT = 84, // "<<=" - S_BITWISE_OR = 85, // "|" - S_BITWISE_AND = 86, // "&" - S_BITWISE_EXOR = 87, // "^" - S_ADD = 88, // "+" - S_SUB = 89, // "-" - S_MUL = 90, // "*" - S_DIV = 91, // "/" - S_MOD = 92, // "%" - S_PATH = 93, // "path" - S_IDENTIFIER = 94, // "identifier" - S_STRING = 95, // "string literal" - S_ISTRING = 96, // "localized string" - S_FLOAT = 97, // "float" - S_INTEGER = 98, // "integer" - S_SIZEOF = 99, // SIZEOF - S_ADD_ARRAY = 100, // ADD_ARRAY - S_THEN = 101, // THEN - S_TERN = 102, // TERN - S_NEG = 103, // NEG - S_ANIMREF = 104, // ANIMREF - S_PREINC = 105, // PREINC - S_PREDEC = 106, // PREDEC - S_POSTINC = 107, // POSTINC - S_POSTDEC = 108, // POSTDEC - S_YYACCEPT = 109, // $accept - S_root = 110, // root - S_program = 111, // program - S_inline = 112, // inline - S_include = 113, // include - S_declaration = 114, // declaration - S_decl_usingtree = 115, // decl_usingtree - S_decl_function = 116, // decl_function - S_stmt = 117, // stmt - S_stmt_or_dev = 118, // stmt_or_dev - S_stmt_list = 119, // stmt_list - S_stmt_or_dev_list = 120, // stmt_or_dev_list - S_stmt_dev = 121, // stmt_dev - S_stmt_comp = 122, // stmt_comp - 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_negate = 157, // expr_negate - S_expr_not = 158, // expr_not - S_expr_call = 159, // expr_call - S_expr_method = 160, // expr_method - S_expr_function = 161, // expr_function - S_expr_pointer = 162, // expr_pointer - S_expr_add_array = 163, // expr_add_array - S_expr_parameters = 164, // expr_parameters - S_expr_arguments = 165, // expr_arguments - S_expr_arguments_no_empty = 166, // expr_arguments_no_empty - S_expr_isdefined = 167, // expr_isdefined - S_expr_istrue = 168, // expr_istrue - S_expr_reference = 169, // expr_reference - S_expr_tuple = 170, // expr_tuple - S_expr_tuple_arguments = 171, // expr_tuple_arguments - S_expr_tuple_types = 172, // expr_tuple_types - S_expr_array = 173, // expr_array - S_expr_field = 174, // expr_field - S_expr_size = 175, // expr_size - S_expr_paren = 176, // expr_paren - S_expr_object = 177, // expr_object - S_expr_thisthread = 178, // expr_thisthread - S_expr_empty_array = 179, // expr_empty_array - S_expr_undefined = 180, // expr_undefined - S_expr_game = 181, // expr_game - S_expr_self = 182, // expr_self - S_expr_anim = 183, // expr_anim - S_expr_level = 184, // expr_level - S_expr_animation = 185, // expr_animation - S_expr_animtree = 186, // expr_animtree - S_expr_identifier_nosize = 187, // expr_identifier_nosize - S_expr_identifier = 188, // expr_identifier - S_expr_path = 189, // expr_path - S_expr_istring = 190, // expr_istring - S_expr_string = 191, // expr_string - S_expr_vector = 192, // expr_vector - S_expr_float = 193, // expr_float - S_expr_integer = 194, // expr_integer - S_expr_false = 195, // expr_false - S_expr_true = 196 // expr_true + S_ASSERT = 33, // "assert" + S_ASSERTEX = 34, // "assertex" + S_ASSERTMSG = 35, // "assertmsg" + S_THREAD = 36, // "thread" + S_CHILDTHREAD = 37, // "childthread" + S_THISTHREAD = 38, // "thisthread" + S_CALL = 39, // "call" + S_TRUE = 40, // "true" + S_FALSE = 41, // "false" + S_UNDEFINED = 42, // "undefined" + S_SIZE = 43, // "size" + S_GAME = 44, // "game" + S_SELF = 45, // "self" + S_ANIM = 46, // "anim" + S_LEVEL = 47, // "level" + S_ISDEFINED = 48, // "isdefined" + S_ISTRUE = 49, // "istrue" + S_LPAREN = 50, // "(" + S_RPAREN = 51, // ")" + S_LBRACE = 52, // "{" + S_RBRACE = 53, // "}" + S_LBRACKET = 54, // "[" + S_RBRACKET = 55, // "]" + S_COMMA = 56, // "," + S_DOT = 57, // "." + S_ELLIPSIS = 58, // "..." + S_DOUBLECOLON = 59, // "::" + S_COLON = 60, // ":" + S_SEMICOLON = 61, // ";" + S_QMARK = 62, // "?" + S_INCREMENT = 63, // "++" + S_DECREMENT = 64, // "--" + S_LSHIFT = 65, // "<<" + S_RSHIFT = 66, // ">>" + S_OR = 67, // "||" + S_AND = 68, // "&&" + S_EQUALITY = 69, // "==" + S_INEQUALITY = 70, // "!=" + S_LESS_EQUAL = 71, // "<=" + S_GREATER_EQUAL = 72, // ">=" + S_LESS = 73, // "<" + S_GREATER = 74, // ">" + S_NOT = 75, // "!" + S_COMPLEMENT = 76, // "~" + S_ASSIGN = 77, // "=" + S_ASSIGN_ADD = 78, // "+=" + S_ASSIGN_SUB = 79, // "-=" + S_ASSIGN_MUL = 80, // "*=" + S_ASSIGN_DIV = 81, // "/=" + S_ASSIGN_MOD = 82, // "%=" + S_ASSIGN_BW_OR = 83, // "|=" + S_ASSIGN_BW_AND = 84, // "&=" + S_ASSIGN_BW_EXOR = 85, // "^=" + S_ASSIGN_RSHIFT = 86, // ">>=" + S_ASSIGN_LSHIFT = 87, // "<<=" + S_BITWISE_OR = 88, // "|" + S_BITWISE_AND = 89, // "&" + S_BITWISE_EXOR = 90, // "^" + S_ADD = 91, // "+" + S_SUB = 92, // "-" + S_MUL = 93, // "*" + S_DIV = 94, // "/" + S_MOD = 95, // "%" + S_PATH = 96, // "path" + S_IDENTIFIER = 97, // "identifier" + S_STRING = 98, // "string literal" + S_ISTRING = 99, // "localized string" + S_FLOAT = 100, // "float" + S_INTEGER = 101, // "integer" + S_SIZEOF = 102, // SIZEOF + S_ADD_ARRAY = 103, // ADD_ARRAY + S_THEN = 104, // THEN + S_TERN = 105, // TERN + S_NEG = 106, // NEG + S_ANIMREF = 107, // ANIMREF + S_PREINC = 108, // PREINC + S_PREDEC = 109, // PREDEC + S_POSTINC = 110, // POSTINC + S_POSTDEC = 111, // POSTDEC + S_YYACCEPT = 112, // $accept + S_root = 113, // root + S_program = 114, // program + S_inline = 115, // inline + S_include = 116, // include + S_declaration = 117, // declaration + S_decl_usingtree = 118, // decl_usingtree + S_decl_constant = 119, // decl_constant + S_decl_function = 120, // decl_function + S_stmt = 121, // stmt + S_stmt_or_dev = 122, // stmt_or_dev + S_stmt_list = 123, // stmt_list + S_stmt_or_dev_list = 124, // stmt_or_dev_list + S_stmt_dev = 125, // stmt_dev + S_stmt_comp = 126, // stmt_comp + S_stmt_expr = 127, // stmt_expr + S_stmt_call = 128, // stmt_call + S_stmt_assign = 129, // stmt_assign + S_stmt_endon = 130, // stmt_endon + S_stmt_notify = 131, // stmt_notify + S_stmt_wait = 132, // stmt_wait + S_stmt_waittill = 133, // stmt_waittill + S_stmt_waittillmatch = 134, // stmt_waittillmatch + S_stmt_waittillframeend = 135, // stmt_waittillframeend + S_stmt_waitframe = 136, // stmt_waitframe + S_stmt_if = 137, // stmt_if + S_stmt_ifelse = 138, // stmt_ifelse + S_stmt_while = 139, // stmt_while + S_stmt_dowhile = 140, // stmt_dowhile + S_stmt_for = 141, // stmt_for + S_stmt_foreach = 142, // stmt_foreach + S_stmt_switch = 143, // stmt_switch + S_stmt_case = 144, // stmt_case + S_stmt_default = 145, // stmt_default + S_stmt_break = 146, // stmt_break + S_stmt_continue = 147, // stmt_continue + S_stmt_return = 148, // stmt_return + S_stmt_breakpoint = 149, // stmt_breakpoint + S_stmt_prof_begin = 150, // stmt_prof_begin + S_stmt_prof_end = 151, // stmt_prof_end + S_stmt_assert = 152, // stmt_assert + S_stmt_assertex = 153, // stmt_assertex + S_stmt_assertmsg = 154, // stmt_assertmsg + S_expr = 155, // expr + S_expr_or_empty = 156, // expr_or_empty + S_expr_assign = 157, // expr_assign + S_expr_increment = 158, // expr_increment + S_expr_decrement = 159, // expr_decrement + S_expr_ternary = 160, // expr_ternary + S_expr_binary = 161, // expr_binary + S_expr_primitive = 162, // expr_primitive + S_expr_complement = 163, // expr_complement + S_expr_negate = 164, // expr_negate + S_expr_not = 165, // expr_not + S_expr_call = 166, // expr_call + S_expr_method = 167, // expr_method + S_expr_function = 168, // expr_function + S_expr_pointer = 169, // expr_pointer + S_expr_add_array = 170, // expr_add_array + S_expr_parameters = 171, // expr_parameters + S_expr_arguments = 172, // expr_arguments + S_expr_arguments_no_empty = 173, // expr_arguments_no_empty + S_expr_isdefined = 174, // expr_isdefined + S_expr_istrue = 175, // expr_istrue + S_expr_reference = 176, // expr_reference + S_expr_tuple = 177, // expr_tuple + S_expr_tuple_arguments = 178, // expr_tuple_arguments + S_expr_tuple_types = 179, // expr_tuple_types + S_expr_array = 180, // expr_array + S_expr_field = 181, // expr_field + S_expr_size = 182, // expr_size + S_expr_paren = 183, // expr_paren + S_expr_object = 184, // expr_object + S_expr_thisthread = 185, // expr_thisthread + S_expr_empty_array = 186, // expr_empty_array + S_expr_undefined = 187, // expr_undefined + S_expr_game = 188, // expr_game + S_expr_self = 189, // expr_self + S_expr_anim = 190, // expr_anim + S_expr_level = 191, // expr_level + S_expr_animation = 192, // expr_animation + S_expr_animtree = 193, // expr_animtree + S_expr_identifier_nosize = 194, // expr_identifier_nosize + S_expr_identifier = 195, // expr_identifier + S_expr_path = 196, // expr_path + S_expr_istring = 197, // expr_istring + S_expr_string = 198, // expr_string + S_expr_vector = 199, // expr_vector + S_expr_float = 200, // expr_float + S_expr_integer = 201, // expr_integer + S_expr_false = 202, // expr_false + S_expr_true = 203 // expr_true }; }; @@ -1072,6 +1094,10 @@ namespace xsk { namespace gsc { value.move< decl > (std::move (that.value)); break; + case symbol_kind::S_decl_constant: // decl_constant + value.move< decl_constant::ptr > (std::move (that.value)); + break; + case symbol_kind::S_decl_function: // decl_function value.move< decl_function::ptr > (std::move (that.value)); break; @@ -1254,6 +1280,18 @@ namespace xsk { namespace gsc { value.move< stmt > (std::move (that.value)); break; + case symbol_kind::S_stmt_assert: // stmt_assert + value.move< stmt_assert::ptr > (std::move (that.value)); + break; + + case symbol_kind::S_stmt_assertex: // stmt_assertex + value.move< stmt_assertex::ptr > (std::move (that.value)); + break; + + case symbol_kind::S_stmt_assertmsg: // stmt_assertmsg + value.move< stmt_assertmsg::ptr > (std::move (that.value)); + break; + case symbol_kind::S_stmt_assign: // stmt_assign value.move< stmt_assign::ptr > (std::move (that.value)); break; @@ -1418,6 +1456,20 @@ namespace xsk { namespace gsc { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, decl_constant::ptr&& v, location_type&& l) + : Base (t) + , value (std::move (v)) + , location (std::move (l)) + {} +#else + basic_symbol (typename Base::kind_type t, const decl_constant::ptr& v, const location_type& l) + : Base (t) + , value (v) + , location (l) + {} +#endif + #if 201103L <= YY_CPLUSPLUS basic_symbol (typename Base::kind_type t, decl_function::ptr&& v, location_type&& l) : Base (t) @@ -1992,6 +2044,48 @@ namespace xsk { namespace gsc { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, stmt_assert::ptr&& v, location_type&& l) + : Base (t) + , value (std::move (v)) + , location (std::move (l)) + {} +#else + basic_symbol (typename Base::kind_type t, const stmt_assert::ptr& v, const location_type& l) + : Base (t) + , value (v) + , location (l) + {} +#endif + +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, stmt_assertex::ptr&& v, location_type&& l) + : Base (t) + , value (std::move (v)) + , location (std::move (l)) + {} +#else + basic_symbol (typename Base::kind_type t, const stmt_assertex::ptr& v, const location_type& l) + : Base (t) + , value (v) + , location (l) + {} +#endif + +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, stmt_assertmsg::ptr&& v, location_type&& l) + : Base (t) + , value (std::move (v)) + , location (std::move (l)) + {} +#else + basic_symbol (typename Base::kind_type t, const stmt_assertmsg::ptr& v, const location_type& l) + : Base (t) + , value (v) + , location (l) + {} +#endif + #if 201103L <= YY_CPLUSPLUS basic_symbol (typename Base::kind_type t, stmt_assign::ptr&& v, location_type&& l) : Base (t) @@ -2417,6 +2511,10 @@ switch (yykind) value.template destroy< decl > (); break; + case symbol_kind::S_decl_constant: // decl_constant + value.template destroy< decl_constant::ptr > (); + break; + case symbol_kind::S_decl_function: // decl_function value.template destroy< decl_function::ptr > (); break; @@ -2599,6 +2697,18 @@ switch (yykind) value.template destroy< stmt > (); break; + case symbol_kind::S_stmt_assert: // stmt_assert + value.template destroy< stmt_assert::ptr > (); + break; + + case symbol_kind::S_stmt_assertex: // stmt_assertex + value.template destroy< stmt_assertex::ptr > (); + break; + + case symbol_kind::S_stmt_assertmsg: // stmt_assertmsg + value.template destroy< stmt_assertmsg::ptr > (); + break; + case symbol_kind::S_stmt_assign: // stmt_assign value.template destroy< stmt_assign::ptr > (); break; @@ -3369,6 +3479,51 @@ switch (yykind) return symbol_type (token::PROFEND, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_ASSERT (location_type l) + { + return symbol_type (token::ASSERT, std::move (l)); + } +#else + static + symbol_type + make_ASSERT (const location_type& l) + { + return symbol_type (token::ASSERT, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_ASSERTEX (location_type l) + { + return symbol_type (token::ASSERTEX, std::move (l)); + } +#else + static + symbol_type + make_ASSERTEX (const location_type& l) + { + return symbol_type (token::ASSERTEX, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_ASSERTMSG (location_type l) + { + return symbol_type (token::ASSERTMSG, std::move (l)); + } +#else + static + symbol_type + make_ASSERTMSG (const location_type& l) + { + return symbol_type (token::ASSERTMSG, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4853,9 +5008,9 @@ switch (yykind) /// Constants. enum { - yylast_ = 2289, ///< Last index in yytable_. - yynnts_ = 88, ///< Number of nonterminal symbols. - yyfinal_ = 21 ///< Termination state number. + yylast_ = 2334, ///< Last index in yytable_. + yynnts_ = 92, ///< Number of nonterminal symbols. + yyfinal_ = 22 ///< Termination state number. }; @@ -4892,6 +5047,10 @@ switch (yykind) value.copy< decl > (YY_MOVE (that.value)); break; + case symbol_kind::S_decl_constant: // decl_constant + value.copy< decl_constant::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_decl_function: // decl_function value.copy< decl_function::ptr > (YY_MOVE (that.value)); break; @@ -5074,6 +5233,18 @@ switch (yykind) value.copy< stmt > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_assert: // stmt_assert + value.copy< stmt_assert::ptr > (YY_MOVE (that.value)); + break; + + case symbol_kind::S_stmt_assertex: // stmt_assertex + value.copy< stmt_assertex::ptr > (YY_MOVE (that.value)); + break; + + case symbol_kind::S_stmt_assertmsg: // stmt_assertmsg + value.copy< stmt_assertmsg::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_assign: // stmt_assign value.copy< stmt_assign::ptr > (YY_MOVE (that.value)); break; @@ -5227,6 +5398,10 @@ switch (yykind) value.move< decl > (YY_MOVE (s.value)); break; + case symbol_kind::S_decl_constant: // decl_constant + value.move< decl_constant::ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_decl_function: // decl_function value.move< decl_function::ptr > (YY_MOVE (s.value)); break; @@ -5409,6 +5584,18 @@ switch (yykind) value.move< stmt > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_assert: // stmt_assert + value.move< stmt_assert::ptr > (YY_MOVE (s.value)); + break; + + case symbol_kind::S_stmt_assertex: // stmt_assertex + value.move< stmt_assertex::ptr > (YY_MOVE (s.value)); + break; + + case symbol_kind::S_stmt_assertmsg: // stmt_assertmsg + value.move< stmt_assertmsg::ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_stmt_assign: // stmt_assign value.move< stmt_assign::ptr > (YY_MOVE (s.value)); break; @@ -5589,7 +5776,7 @@ switch (yykind) #line 13 "parser.ypp" } } // xsk::gsc -#line 5593 "parser.hpp" +#line 5780 "parser.hpp" diff --git a/src/gsc/source.cpp b/src/gsc/source.cpp index 1ca2f67f..2fc7f9db 100644 --- a/src/gsc/source.cpp +++ b/src/gsc/source.cpp @@ -314,6 +314,9 @@ auto source::dump_decl(decl const& dec) -> void case node::decl_usingtree: dump_decl_usingtree(*dec.as_usingtree); break; + case node::decl_constant: + dump_decl_constant(*dec.as_constant); + break; case node::decl_function: dump_decl_function(*dec.as_function); break; @@ -339,6 +342,14 @@ auto source::dump_decl_usingtree(decl_usingtree const& dec) -> void fmt::format_to(std::back_inserter(buf_), ");\n"); } +auto source::dump_decl_constant(decl_constant const& dec) -> void +{ + dump_expr_identifier(*dec.name); + fmt::format_to(std::back_inserter(buf_), " = "); + dump_expr(dec.value); + fmt::format_to(std::back_inserter(buf_), ";\n"); +} + auto source::dump_decl_function(decl_function const& dec) -> void { indent_ = 0; @@ -438,6 +449,15 @@ auto source::dump_stmt(stmt const& stm) -> void case node::stmt_prof_end: dump_stmt_prof_end(*stm.as_prof_end); break; + case node::stmt_assert: + dump_stmt_assert(*stm.as_assert); + break; + case node::stmt_assertex: + dump_stmt_assertex(*stm.as_assertex); + break; + case node::stmt_assertmsg: + dump_stmt_assertmsg(*stm.as_assertmsg); + break; case node::asm_jmp: dump_asm_jmp(*stm.as_jump); break; @@ -868,14 +888,35 @@ auto source::dump_stmt_prof_begin(stmt_prof_begin const& stm) -> void { fmt::format_to(std::back_inserter(buf_), "prof_begin("); dump_expr_arguments(*stm.args); - fmt::format_to(std::back_inserter(buf_), ")"); + fmt::format_to(std::back_inserter(buf_), ");"); } auto source::dump_stmt_prof_end(stmt_prof_end const& stm) -> void { fmt::format_to(std::back_inserter(buf_), "prof_end("); dump_expr_arguments(*stm.args); - fmt::format_to(std::back_inserter(buf_), ")"); + fmt::format_to(std::back_inserter(buf_), ");"); +} + +auto source::dump_stmt_assert(stmt_assert const& stm) -> void +{ + fmt::format_to(std::back_inserter(buf_), "assert("); + dump_expr_arguments(*stm.args); + fmt::format_to(std::back_inserter(buf_), ");"); +} + +auto source::dump_stmt_assertex(stmt_assertex const& stm) -> void +{ + fmt::format_to(std::back_inserter(buf_), "assertex("); + dump_expr_arguments(*stm.args); + fmt::format_to(std::back_inserter(buf_), ");"); +} + +auto source::dump_stmt_assertmsg(stmt_assertmsg const& stm) -> void +{ + fmt::format_to(std::back_inserter(buf_), "assertmsg("); + dump_expr_arguments(*stm.args); + fmt::format_to(std::back_inserter(buf_), ");"); } auto source::dump_expr(expr const& exp) -> void diff --git a/src/gsc/source.hpp b/src/gsc/source.hpp index 144cdd25..25982de6 100644 --- a/src/gsc/source.hpp +++ b/src/gsc/source.hpp @@ -37,6 +37,7 @@ private: auto dump_decl_dev_begin(decl_dev_begin const& dec) -> void; auto dump_decl_dev_end(decl_dev_end const& dec) -> void; auto dump_decl_usingtree(decl_usingtree const& dec) -> void; + auto dump_decl_constant(decl_constant const& dec) -> void; auto dump_decl_function(decl_function const& dec) -> void; auto dump_stmt(stmt const& stm) -> void; auto dump_stmt_list(stmt_list const& stm) -> void; @@ -67,6 +68,9 @@ private: auto dump_stmt_breakpoint(stmt_breakpoint const& stm) -> void; auto dump_stmt_prof_begin(stmt_prof_begin const& stm) -> void; auto dump_stmt_prof_end(stmt_prof_end const& stm) -> void; + auto dump_stmt_assert(stmt_assert const& stm) -> void; + auto dump_stmt_assertex(stmt_assertex const& stm) -> void; + auto dump_stmt_assertmsg(stmt_assertmsg const& stm) -> void; auto dump_expr(expr const& exp) -> void; auto dump_expr_increment(expr_increment const& exp) -> void; auto dump_expr_decrement(expr_decrement const& exp) -> void;