diff --git a/gen/h1/lexer.lpp b/gen/h1/lexer.lpp index 3f4ab440..a68c64f3 100644 --- a/gen/h1/lexer.lpp +++ b/gen/h1/lexer.lpp @@ -55,6 +55,9 @@ RGX_DEFAULT (.|\n) \n { loc.lines(yyleng); loc.step(); } "#/" { BEGIN(INITIAL); } +"breakpoint" { return h1::parser::make_BREAKPOINT(loc); } +"prof_begin" { return h1::parser::make_PROFBEGIN(loc); } +"prof_end" { return h1::parser::make_PROFEND(loc); } "#include" { return h1::parser::make_INCLUDE(loc); } "#using_animtree" { return h1::parser::make_USINGTREE(loc); } "#animtree" { return h1::parser::make_ANIMTREE(loc); } @@ -84,7 +87,7 @@ RGX_DEFAULT (.|\n) "true" { return h1::parser::make_TRUE(loc); } "false" { return h1::parser::make_FALSE(loc); } "undefined" { return h1::parser::make_UNDEFINED(loc); } -"size" { return h1::parser::make_SIZE(loc); } +".size" { return h1::parser::make_SIZE(loc); } "game" { return h1::parser::make_GAME(loc); } "self" { return h1::parser::make_SELF(loc); } "anim" { return h1::parser::make_ANIM(loc); } diff --git a/gen/h1/parser.ypp b/gen/h1/parser.ypp index 6bfe8ba2..e09125f7 100644 --- a/gen/h1/parser.ypp +++ b/gen/h1/parser.ypp @@ -45,6 +45,9 @@ using namespace xsk::gsc; xsk::gsc::h1::parser::symbol_type H1lex(yyscan_t yyscanner, xsk::gsc::location& loc); } +%token BREAKPOINT "breakpoint" +%token PROFBEGIN "prof_begin" +%token PROFEND "prof_end" %token INCLUDE "#include" %token USINGTREE "#using_animtree" %token ANIMTREE "#animtree" @@ -74,7 +77,7 @@ xsk::gsc::h1::parser::symbol_type H1lex(yyscan_t yyscanner, xsk::gsc::location& %token TRUE "true" %token FALSE "false" %token UNDEFINED "undefined" -%token SIZE "size" +%token SIZE ".size" %token GAME "game" %token SELF "self" %token ANIM "anim" @@ -160,6 +163,9 @@ xsk::gsc::h1::parser::symbol_type H1lex(yyscan_t yyscanner, xsk::gsc::location& %type stmt_break %type stmt_continue %type stmt_return +%type stmt_breakpoint +%type stmt_prof_begin +%type stmt_prof_end %type for_stmt %type for_expr %type expr_assign @@ -211,8 +217,8 @@ xsk::gsc::h1::parser::symbol_type H1lex(yyscan_t yyscanner, xsk::gsc::location& %left OR %left AND %left BITWISE_OR -%left BITWISE_AND %left BITWISE_EXOR +%left BITWISE_AND %left EQUALITY INEQUALITY %left LESS GREATER LESS_EQUAL GREATER_EQUAL %left LSHIFT RSHIFT @@ -302,6 +308,9 @@ stmt | stmt_break { $$.as_break = std::move($1); } | stmt_continue { $$.as_continue = std::move($1); } | stmt_return { $$.as_return = std::move($1); } + | 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_block @@ -434,6 +443,21 @@ stmt_return { $$ = std::make_unique(@$, std::make_unique(@$)); } ; +stmt_breakpoint + : BREAKPOINT SEMICOLON + { $$ = std::make_unique(@$); } + ; + +stmt_prof_begin + : PROFBEGIN LPAREN expr_arguments RPAREN SEMICOLON + { $$ = std::make_unique(@$, std::move($3)); } + ; + +stmt_prof_end + : PROFEND LPAREN expr_arguments RPAREN SEMICOLON + { $$ = std::make_unique(@$, std::move($3)); } + ; + for_stmt : expr_assign { $$.as_list = std::make_unique(@$); $$.as_list->stmts.push_back(stmt_ptr(std::make_unique(@$, std::move($1)))); } | { $$.as_node = std::make_unique(@$); } @@ -600,7 +624,7 @@ expr_field ; expr_size - : object DOT SIZE + : object SIZE { $$ = std::make_unique(@$, std::move($1)); } ; diff --git a/gen/h2/lexer.lpp b/gen/h2/lexer.lpp index 51a7654c..dae735f5 100644 --- a/gen/h2/lexer.lpp +++ b/gen/h2/lexer.lpp @@ -55,6 +55,9 @@ RGX_DEFAULT (.|\n) \n { loc.lines(yyleng); loc.step(); } "#/" { BEGIN(INITIAL); } +"breakpoint" { return h2::parser::make_BREAKPOINT(loc); } +"prof_begin" { return h2::parser::make_PROFBEGIN(loc); } +"prof_end" { return h2::parser::make_PROFEND(loc); } "#include" { return h2::parser::make_INCLUDE(loc); } "#using_animtree" { return h2::parser::make_USINGTREE(loc); } "#animtree" { return h2::parser::make_ANIMTREE(loc); } @@ -84,7 +87,7 @@ RGX_DEFAULT (.|\n) "true" { return h2::parser::make_TRUE(loc); } "false" { return h2::parser::make_FALSE(loc); } "undefined" { return h2::parser::make_UNDEFINED(loc); } -"size" { return h2::parser::make_SIZE(loc); } +".size" { return h2::parser::make_SIZE(loc); } "game" { return h2::parser::make_GAME(loc); } "self" { return h2::parser::make_SELF(loc); } "anim" { return h2::parser::make_ANIM(loc); } diff --git a/gen/h2/parser.ypp b/gen/h2/parser.ypp index 0faa38f3..09920f9f 100644 --- a/gen/h2/parser.ypp +++ b/gen/h2/parser.ypp @@ -45,6 +45,9 @@ using namespace xsk::gsc; xsk::gsc::h2::parser::symbol_type H2lex(yyscan_t yyscanner, xsk::gsc::location& loc); } +%token BREAKPOINT "breakpoint" +%token PROFBEGIN "prof_begin" +%token PROFEND "prof_end" %token INCLUDE "#include" %token USINGTREE "#using_animtree" %token ANIMTREE "#animtree" @@ -74,7 +77,7 @@ xsk::gsc::h2::parser::symbol_type H2lex(yyscan_t yyscanner, xsk::gsc::location& %token TRUE "true" %token FALSE "false" %token UNDEFINED "undefined" -%token SIZE "size" +%token SIZE ".size" %token GAME "game" %token SELF "self" %token ANIM "anim" @@ -160,6 +163,9 @@ xsk::gsc::h2::parser::symbol_type H2lex(yyscan_t yyscanner, xsk::gsc::location& %type stmt_break %type stmt_continue %type stmt_return +%type stmt_breakpoint +%type stmt_prof_begin +%type stmt_prof_end %type for_stmt %type for_expr %type expr_assign @@ -211,8 +217,8 @@ xsk::gsc::h2::parser::symbol_type H2lex(yyscan_t yyscanner, xsk::gsc::location& %left OR %left AND %left BITWISE_OR -%left BITWISE_AND %left BITWISE_EXOR +%left BITWISE_AND %left EQUALITY INEQUALITY %left LESS GREATER LESS_EQUAL GREATER_EQUAL %left LSHIFT RSHIFT @@ -302,6 +308,9 @@ stmt | stmt_break { $$.as_break = std::move($1); } | stmt_continue { $$.as_continue = std::move($1); } | stmt_return { $$.as_return = std::move($1); } + | 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_block @@ -434,6 +443,21 @@ stmt_return { $$ = std::make_unique(@$, std::make_unique(@$)); } ; +stmt_breakpoint + : BREAKPOINT SEMICOLON + { $$ = std::make_unique(@$); } + ; + +stmt_prof_begin + : PROFBEGIN LPAREN expr_arguments RPAREN SEMICOLON + { $$ = std::make_unique(@$, std::move($3)); } + ; + +stmt_prof_end + : PROFEND LPAREN expr_arguments RPAREN SEMICOLON + { $$ = std::make_unique(@$, std::move($3)); } + ; + for_stmt : expr_assign { $$.as_list = std::make_unique(@$); $$.as_list->stmts.push_back(stmt_ptr(std::make_unique(@$, std::move($1)))); } | { $$.as_node = std::make_unique(@$); } @@ -600,7 +624,7 @@ expr_field ; expr_size - : object DOT SIZE + : object SIZE { $$ = std::make_unique(@$, std::move($1)); } ; diff --git a/gen/iw5/lexer.lpp b/gen/iw5/lexer.lpp index 878a04d7..be24c558 100644 --- a/gen/iw5/lexer.lpp +++ b/gen/iw5/lexer.lpp @@ -55,6 +55,9 @@ RGX_DEFAULT (.|\n) \n { loc.lines(yyleng); loc.step(); } "#/" { BEGIN(INITIAL); } +"breakpoint" { return iw5::parser::make_BREAKPOINT(loc); } +"prof_begin" { return iw5::parser::make_PROFBEGIN(loc); } +"prof_end" { return iw5::parser::make_PROFEND(loc); } "#include" { return iw5::parser::make_INCLUDE(loc); } "#using_animtree" { return iw5::parser::make_USINGTREE(loc); } "#animtree" { return iw5::parser::make_ANIMTREE(loc); } @@ -83,7 +86,7 @@ RGX_DEFAULT (.|\n) "true" { return iw5::parser::make_TRUE(loc); } "false" { return iw5::parser::make_FALSE(loc); } "undefined" { return iw5::parser::make_UNDEFINED(loc); } -"size" { return iw5::parser::make_SIZE(loc); } +".size" { return iw5::parser::make_SIZE(loc); } "game" { return iw5::parser::make_GAME(loc); } "self" { return iw5::parser::make_SELF(loc); } "anim" { return iw5::parser::make_ANIM(loc); } diff --git a/gen/iw5/parser.ypp b/gen/iw5/parser.ypp index 5e23ee8b..47013dd2 100644 --- a/gen/iw5/parser.ypp +++ b/gen/iw5/parser.ypp @@ -45,6 +45,9 @@ using namespace xsk::gsc; xsk::gsc::iw5::parser::symbol_type IW5lex(yyscan_t yyscanner, xsk::gsc::location& loc); } +%token BREAKPOINT "breakpoint" +%token PROFBEGIN "prof_begin" +%token PROFEND "prof_end" %token INCLUDE "#include" %token USINGTREE "#using_animtree" %token ANIMTREE "#animtree" @@ -73,7 +76,7 @@ xsk::gsc::iw5::parser::symbol_type IW5lex(yyscan_t yyscanner, xsk::gsc::location %token TRUE "true" %token FALSE "false" %token UNDEFINED "undefined" -%token SIZE "size" +%token SIZE ".size" %token GAME "game" %token SELF "self" %token ANIM "anim" @@ -158,6 +161,9 @@ xsk::gsc::iw5::parser::symbol_type IW5lex(yyscan_t yyscanner, xsk::gsc::location %type stmt_break %type stmt_continue %type stmt_return +%type stmt_breakpoint +%type stmt_prof_begin +%type stmt_prof_end %type for_stmt %type for_expr %type expr_assign @@ -209,8 +215,8 @@ xsk::gsc::iw5::parser::symbol_type IW5lex(yyscan_t yyscanner, xsk::gsc::location %left OR %left AND %left BITWISE_OR -%left BITWISE_AND %left BITWISE_EXOR +%left BITWISE_AND %left EQUALITY INEQUALITY %left LESS GREATER LESS_EQUAL GREATER_EQUAL %left LSHIFT RSHIFT @@ -299,6 +305,9 @@ stmt | stmt_break { $$.as_break = std::move($1); } | stmt_continue { $$.as_continue = std::move($1); } | stmt_return { $$.as_return = std::move($1); } + | 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_block @@ -424,6 +433,21 @@ stmt_return { $$ = std::make_unique(@$, std::make_unique(@$)); } ; +stmt_breakpoint + : BREAKPOINT SEMICOLON + { $$ = std::make_unique(@$); } + ; + +stmt_prof_begin + : PROFBEGIN LPAREN expr_arguments RPAREN SEMICOLON + { $$ = std::make_unique(@$, std::move($3)); } + ; + +stmt_prof_end + : PROFEND LPAREN expr_arguments RPAREN SEMICOLON + { $$ = std::make_unique(@$, std::move($3)); } + ; + for_stmt : expr_assign { $$.as_list = std::make_unique(@$); $$.as_list->stmts.push_back(stmt_ptr(std::make_unique(@$, std::move($1)))); } | { $$.as_node = std::make_unique(@$); } @@ -590,7 +614,7 @@ expr_field ; expr_size - : object DOT SIZE + : object SIZE { $$ = std::make_unique(@$, std::move($1)); } ; diff --git a/gen/iw6/lexer.lpp b/gen/iw6/lexer.lpp index 99899f9f..3960d1a9 100644 --- a/gen/iw6/lexer.lpp +++ b/gen/iw6/lexer.lpp @@ -55,6 +55,9 @@ RGX_DEFAULT (.|\n) \n { loc.lines(yyleng); loc.step(); } "#/" { BEGIN(INITIAL); } +"breakpoint" { return iw6::parser::make_BREAKPOINT(loc); } +"prof_begin" { return iw6::parser::make_PROFBEGIN(loc); } +"prof_end" { return iw6::parser::make_PROFEND(loc); } "#include" { return iw6::parser::make_INCLUDE(loc); } "#using_animtree" { return iw6::parser::make_USINGTREE(loc); } "#animtree" { return iw6::parser::make_ANIMTREE(loc); } @@ -83,7 +86,7 @@ RGX_DEFAULT (.|\n) "true" { return iw6::parser::make_TRUE(loc); } "false" { return iw6::parser::make_FALSE(loc); } "undefined" { return iw6::parser::make_UNDEFINED(loc); } -"size" { return iw6::parser::make_SIZE(loc); } +".size" { return iw6::parser::make_SIZE(loc); } "game" { return iw6::parser::make_GAME(loc); } "self" { return iw6::parser::make_SELF(loc); } "anim" { return iw6::parser::make_ANIM(loc); } diff --git a/gen/iw6/parser.ypp b/gen/iw6/parser.ypp index c0a197bb..a63b2202 100644 --- a/gen/iw6/parser.ypp +++ b/gen/iw6/parser.ypp @@ -45,6 +45,9 @@ using namespace xsk::gsc; xsk::gsc::iw6::parser::symbol_type IW6lex(yyscan_t yyscanner, xsk::gsc::location& loc); } +%token BREAKPOINT "breakpoint" +%token PROFBEGIN "prof_begin" +%token PROFEND "prof_end" %token INCLUDE "#include" %token USINGTREE "#using_animtree" %token ANIMTREE "#animtree" @@ -73,7 +76,7 @@ xsk::gsc::iw6::parser::symbol_type IW6lex(yyscan_t yyscanner, xsk::gsc::location %token TRUE "true" %token FALSE "false" %token UNDEFINED "undefined" -%token SIZE "size" +%token SIZE ".size" %token GAME "game" %token SELF "self" %token ANIM "anim" @@ -158,6 +161,9 @@ xsk::gsc::iw6::parser::symbol_type IW6lex(yyscan_t yyscanner, xsk::gsc::location %type stmt_break %type stmt_continue %type stmt_return +%type stmt_breakpoint +%type stmt_prof_begin +%type stmt_prof_end %type for_stmt %type for_expr %type expr_assign @@ -209,8 +215,8 @@ xsk::gsc::iw6::parser::symbol_type IW6lex(yyscan_t yyscanner, xsk::gsc::location %left OR %left AND %left BITWISE_OR -%left BITWISE_AND %left BITWISE_EXOR +%left BITWISE_AND %left EQUALITY INEQUALITY %left LESS GREATER LESS_EQUAL GREATER_EQUAL %left LSHIFT RSHIFT @@ -299,6 +305,9 @@ stmt | stmt_break { $$.as_break = std::move($1); } | stmt_continue { $$.as_continue = std::move($1); } | stmt_return { $$.as_return = std::move($1); } + | 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_block @@ -424,6 +433,21 @@ stmt_return { $$ = std::make_unique(@$, std::make_unique(@$)); } ; +stmt_breakpoint + : BREAKPOINT SEMICOLON + { $$ = std::make_unique(@$); } + ; + +stmt_prof_begin + : PROFBEGIN LPAREN expr_arguments RPAREN SEMICOLON + { $$ = std::make_unique(@$, std::move($3)); } + ; + +stmt_prof_end + : PROFEND LPAREN expr_arguments RPAREN SEMICOLON + { $$ = std::make_unique(@$, std::move($3)); } + ; + for_stmt : expr_assign { $$.as_list = std::make_unique(@$); $$.as_list->stmts.push_back(stmt_ptr(std::make_unique(@$, std::move($1)))); } | { $$.as_node = std::make_unique(@$); } @@ -590,7 +614,7 @@ expr_field ; expr_size - : object DOT SIZE + : object SIZE { $$ = std::make_unique(@$, std::move($1)); } ; diff --git a/gen/iw7/lexer.lpp b/gen/iw7/lexer.lpp index 94ef16c0..b8cbe4af 100644 --- a/gen/iw7/lexer.lpp +++ b/gen/iw7/lexer.lpp @@ -55,6 +55,9 @@ RGX_DEFAULT (.|\n) \n { loc.lines(yyleng); loc.step(); } "#/" { BEGIN(INITIAL); } +"breakpoint" { return iw7::parser::make_BREAKPOINT(loc); } +"prof_begin" { return iw7::parser::make_PROFBEGIN(loc); } +"prof_end" { return iw7::parser::make_PROFEND(loc); } "#include" { return iw7::parser::make_INCLUDE(loc); } "#using_animtree" { return iw7::parser::make_USINGTREE(loc); } "#animtree" { return iw7::parser::make_ANIMTREE(loc); } @@ -83,7 +86,7 @@ RGX_DEFAULT (.|\n) "true" { return iw7::parser::make_TRUE(loc); } "false" { return iw7::parser::make_FALSE(loc); } "undefined" { return iw7::parser::make_UNDEFINED(loc); } -"size" { return iw7::parser::make_SIZE(loc); } +".size" { return iw7::parser::make_SIZE(loc); } "game" { return iw7::parser::make_GAME(loc); } "self" { return iw7::parser::make_SELF(loc); } "anim" { return iw7::parser::make_ANIM(loc); } diff --git a/gen/iw7/parser.ypp b/gen/iw7/parser.ypp index b3f623a2..836764ca 100644 --- a/gen/iw7/parser.ypp +++ b/gen/iw7/parser.ypp @@ -45,6 +45,9 @@ using namespace xsk::gsc; xsk::gsc::iw7::parser::symbol_type IW7lex(yyscan_t yyscanner, xsk::gsc::location& loc); } +%token BREAKPOINT "breakpoint" +%token PROFBEGIN "prof_begin" +%token PROFEND "prof_end" %token INCLUDE "#include" %token USINGTREE "#using_animtree" %token ANIMTREE "#animtree" @@ -73,7 +76,7 @@ xsk::gsc::iw7::parser::symbol_type IW7lex(yyscan_t yyscanner, xsk::gsc::location %token TRUE "true" %token FALSE "false" %token UNDEFINED "undefined" -%token SIZE "size" +%token SIZE ".size" %token GAME "game" %token SELF "self" %token ANIM "anim" @@ -158,6 +161,9 @@ xsk::gsc::iw7::parser::symbol_type IW7lex(yyscan_t yyscanner, xsk::gsc::location %type stmt_break %type stmt_continue %type stmt_return +%type stmt_breakpoint +%type stmt_prof_begin +%type stmt_prof_end %type for_stmt %type for_expr %type expr_assign @@ -209,8 +215,8 @@ xsk::gsc::iw7::parser::symbol_type IW7lex(yyscan_t yyscanner, xsk::gsc::location %left OR %left AND %left BITWISE_OR -%left BITWISE_AND %left BITWISE_EXOR +%left BITWISE_AND %left EQUALITY INEQUALITY %left LESS GREATER LESS_EQUAL GREATER_EQUAL %left LSHIFT RSHIFT @@ -299,6 +305,9 @@ stmt | stmt_break { $$.as_break = std::move($1); } | stmt_continue { $$.as_continue = std::move($1); } | stmt_return { $$.as_return = std::move($1); } + | 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_block @@ -424,6 +433,21 @@ stmt_return { $$ = std::make_unique(@$, std::make_unique(@$)); } ; +stmt_breakpoint + : BREAKPOINT SEMICOLON + { $$ = std::make_unique(@$); } + ; + +stmt_prof_begin + : PROFBEGIN LPAREN expr_arguments RPAREN SEMICOLON + { $$ = std::make_unique(@$, std::move($3)); } + ; + +stmt_prof_end + : PROFEND LPAREN expr_arguments RPAREN SEMICOLON + { $$ = std::make_unique(@$, std::move($3)); } + ; + for_stmt : expr_assign { $$.as_list = std::make_unique(@$); $$.as_list->stmts.push_back(stmt_ptr(std::make_unique(@$, std::move($1)))); } | { $$.as_node = std::make_unique(@$); } @@ -590,7 +614,7 @@ expr_field ; expr_size - : object DOT SIZE + : object SIZE { $$ = std::make_unique(@$, std::move($1)); } ; diff --git a/gen/s1/lexer.lpp b/gen/s1/lexer.lpp index 0160c137..b21de29e 100644 --- a/gen/s1/lexer.lpp +++ b/gen/s1/lexer.lpp @@ -55,6 +55,9 @@ RGX_DEFAULT (.|\n) \n { loc.lines(yyleng); loc.step(); } "#/" { BEGIN(INITIAL); } +"breakpoint" { return s1::parser::make_BREAKPOINT(loc); } +"prof_begin" { return s1::parser::make_PROFBEGIN(loc); } +"prof_end" { return s1::parser::make_PROFEND(loc); } "#include" { return s1::parser::make_INCLUDE(loc); } "#using_animtree" { return s1::parser::make_USINGTREE(loc); } "#animtree" { return s1::parser::make_ANIMTREE(loc); } @@ -84,7 +87,7 @@ RGX_DEFAULT (.|\n) "true" { return s1::parser::make_TRUE(loc); } "false" { return s1::parser::make_FALSE(loc); } "undefined" { return s1::parser::make_UNDEFINED(loc); } -"size" { return s1::parser::make_SIZE(loc); } +".size" { return s1::parser::make_SIZE(loc); } "game" { return s1::parser::make_GAME(loc); } "self" { return s1::parser::make_SELF(loc); } "anim" { return s1::parser::make_ANIM(loc); } diff --git a/gen/s1/parser.ypp b/gen/s1/parser.ypp index fff572c1..91ff410c 100644 --- a/gen/s1/parser.ypp +++ b/gen/s1/parser.ypp @@ -45,6 +45,9 @@ using namespace xsk::gsc; xsk::gsc::s1::parser::symbol_type S1lex(yyscan_t yyscanner, xsk::gsc::location& loc); } +%token BREAKPOINT "breakpoint" +%token PROFBEGIN "prof_begin" +%token PROFEND "prof_end" %token INCLUDE "#include" %token USINGTREE "#using_animtree" %token ANIMTREE "#animtree" @@ -74,7 +77,7 @@ xsk::gsc::s1::parser::symbol_type S1lex(yyscan_t yyscanner, xsk::gsc::location& %token TRUE "true" %token FALSE "false" %token UNDEFINED "undefined" -%token SIZE "size" +%token SIZE ".size" %token GAME "game" %token SELF "self" %token ANIM "anim" @@ -160,6 +163,9 @@ xsk::gsc::s1::parser::symbol_type S1lex(yyscan_t yyscanner, xsk::gsc::location& %type stmt_break %type stmt_continue %type stmt_return +%type stmt_breakpoint +%type stmt_prof_begin +%type stmt_prof_end %type for_stmt %type for_expr %type expr_assign @@ -211,8 +217,8 @@ xsk::gsc::s1::parser::symbol_type S1lex(yyscan_t yyscanner, xsk::gsc::location& %left OR %left AND %left BITWISE_OR -%left BITWISE_AND %left BITWISE_EXOR +%left BITWISE_AND %left EQUALITY INEQUALITY %left LESS GREATER LESS_EQUAL GREATER_EQUAL %left LSHIFT RSHIFT @@ -302,6 +308,9 @@ stmt | stmt_break { $$.as_break = std::move($1); } | stmt_continue { $$.as_continue = std::move($1); } | stmt_return { $$.as_return = std::move($1); } + | 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_block @@ -434,6 +443,21 @@ stmt_return { $$ = std::make_unique(@$, std::make_unique(@$)); } ; +stmt_breakpoint + : BREAKPOINT SEMICOLON + { $$ = std::make_unique(@$); } + ; + +stmt_prof_begin + : PROFBEGIN LPAREN expr_arguments RPAREN SEMICOLON + { $$ = std::make_unique(@$, std::move($3)); } + ; + +stmt_prof_end + : PROFEND LPAREN expr_arguments RPAREN SEMICOLON + { $$ = std::make_unique(@$, std::move($3)); } + ; + for_stmt : expr_assign { $$.as_list = std::make_unique(@$); $$.as_list->stmts.push_back(stmt_ptr(std::make_unique(@$, std::move($1)))); } | { $$.as_node = std::make_unique(@$); } @@ -600,7 +624,7 @@ expr_field ; expr_size - : object DOT SIZE + : object SIZE { $$ = std::make_unique(@$, std::move($1)); } ; diff --git a/gen/s2/lexer.lpp b/gen/s2/lexer.lpp index ca61937f..cd493e09 100644 --- a/gen/s2/lexer.lpp +++ b/gen/s2/lexer.lpp @@ -55,6 +55,9 @@ RGX_DEFAULT (.|\n) \n { loc.lines(yyleng); loc.step(); } "#/" { BEGIN(INITIAL); } +"breakpoint" { return s2::parser::make_BREAKPOINT(loc); } +"prof_begin" { return s2::parser::make_PROFBEGIN(loc); } +"prof_end" { return s2::parser::make_PROFEND(loc); } "#include" { return s2::parser::make_INCLUDE(loc); } "#using_animtree" { return s2::parser::make_USINGTREE(loc); } "#animtree" { return s2::parser::make_ANIMTREE(loc); } @@ -84,7 +87,7 @@ RGX_DEFAULT (.|\n) "true" { return s2::parser::make_TRUE(loc); } "false" { return s2::parser::make_FALSE(loc); } "undefined" { return s2::parser::make_UNDEFINED(loc); } -"size" { return s2::parser::make_SIZE(loc); } +".size" { return s2::parser::make_SIZE(loc); } "game" { return s2::parser::make_GAME(loc); } "self" { return s2::parser::make_SELF(loc); } "anim" { return s2::parser::make_ANIM(loc); } diff --git a/gen/s2/parser.ypp b/gen/s2/parser.ypp index 7d66485c..3d77407c 100644 --- a/gen/s2/parser.ypp +++ b/gen/s2/parser.ypp @@ -45,6 +45,9 @@ using namespace xsk::gsc; xsk::gsc::s2::parser::symbol_type S2lex(yyscan_t yyscanner, xsk::gsc::location& loc); } +%token BREAKPOINT "breakpoint" +%token PROFBEGIN "prof_begin" +%token PROFEND "prof_end" %token INCLUDE "#include" %token USINGTREE "#using_animtree" %token ANIMTREE "#animtree" @@ -74,7 +77,7 @@ xsk::gsc::s2::parser::symbol_type S2lex(yyscan_t yyscanner, xsk::gsc::location& %token TRUE "true" %token FALSE "false" %token UNDEFINED "undefined" -%token SIZE "size" +%token SIZE ".size" %token GAME "game" %token SELF "self" %token ANIM "anim" @@ -160,6 +163,9 @@ xsk::gsc::s2::parser::symbol_type S2lex(yyscan_t yyscanner, xsk::gsc::location& %type stmt_break %type stmt_continue %type stmt_return +%type stmt_breakpoint +%type stmt_prof_begin +%type stmt_prof_end %type for_stmt %type for_expr %type expr_assign @@ -211,8 +217,8 @@ xsk::gsc::s2::parser::symbol_type S2lex(yyscan_t yyscanner, xsk::gsc::location& %left OR %left AND %left BITWISE_OR -%left BITWISE_AND %left BITWISE_EXOR +%left BITWISE_AND %left EQUALITY INEQUALITY %left LESS GREATER LESS_EQUAL GREATER_EQUAL %left LSHIFT RSHIFT @@ -302,6 +308,9 @@ stmt | stmt_break { $$.as_break = std::move($1); } | stmt_continue { $$.as_continue = std::move($1); } | stmt_return { $$.as_return = std::move($1); } + | 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_block @@ -434,6 +443,21 @@ stmt_return { $$ = std::make_unique(@$, std::make_unique(@$)); } ; +stmt_breakpoint + : BREAKPOINT SEMICOLON + { $$ = std::make_unique(@$); } + ; + +stmt_prof_begin + : PROFBEGIN LPAREN expr_arguments RPAREN SEMICOLON + { $$ = std::make_unique(@$, std::move($3)); } + ; + +stmt_prof_end + : PROFEND LPAREN expr_arguments RPAREN SEMICOLON + { $$ = std::make_unique(@$, std::move($3)); } + ; + for_stmt : expr_assign { $$.as_list = std::make_unique(@$); $$.as_list->stmts.push_back(stmt_ptr(std::make_unique(@$, std::move($1)))); } | { $$.as_node = std::make_unique(@$); } @@ -600,7 +624,7 @@ expr_field ; expr_size - : object DOT SIZE + : object SIZE { $$ = std::make_unique(@$, std::move($1)); } ; diff --git a/src/h1/xsk/lexer.cpp b/src/h1/xsk/lexer.cpp index 57e31a66..2f998569 100644 --- a/src/h1/xsk/lexer.cpp +++ b/src/h1/xsk/lexer.cpp @@ -553,8 +553,8 @@ static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 97 -#define YY_END_OF_BUFFER 98 +#define YY_NUM_RULES 100 +#define YY_END_OF_BUFFER 101 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -562,39 +562,42 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[286] = +static const flex_int16_t yy_accept[305] = { 0, - 0, 0, 0, 0, 0, 0, 98, 96, 1, 2, - 85, 96, 96, 84, 88, 96, 46, 47, 82, 80, - 52, 81, 53, 83, 95, 55, 56, 69, 79, 70, - 91, 50, 51, 89, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 48, - 87, 49, 86, 5, 6, 5, 9, 10, 9, 66, - 0, 93, 0, 0, 0, 0, 75, 0, 64, 0, - 77, 0, 0, 73, 57, 71, 58, 72, 94, 8, - 4, 3, 74, 94, 95, 0, 0, 54, 61, 67, - 65, 68, 62, 91, 78, 91, 91, 91, 91, 91, + 0, 0, 0, 0, 0, 0, 101, 99, 1, 2, + 88, 99, 99, 87, 91, 99, 49, 50, 85, 83, + 55, 84, 56, 86, 98, 58, 59, 72, 82, 73, + 94, 53, 54, 92, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 51, 90, 52, 89, 5, 6, 5, 9, 10, 9, + 69, 0, 96, 0, 0, 0, 0, 78, 0, 67, + 0, 80, 0, 0, 76, 60, 74, 61, 75, 97, + 0, 8, 4, 3, 77, 97, 98, 0, 0, 57, + 64, 70, 68, 71, 65, 94, 81, 94, 94, 94, - 91, 91, 91, 91, 91, 91, 22, 27, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 76, - 63, 7, 11, 0, 93, 0, 0, 0, 0, 0, - 92, 0, 0, 0, 0, 93, 0, 94, 3, 94, - 94, 90, 59, 60, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 25, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 0, 0, - 0, 0, 92, 0, 0, 92, 0, 44, 91, 37, - 29, 91, 91, 91, 23, 91, 91, 91, 42, 91, - 91, 91, 43, 41, 91, 91, 91, 38, 91, 17, + 94, 94, 94, 94, 94, 94, 94, 94, 25, 30, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 79, 66, 7, 11, 0, 96, 0, 0, 0, + 0, 0, 95, 0, 0, 0, 0, 96, 0, 97, + 0, 3, 97, 97, 93, 62, 63, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 28, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 0, 0, 0, 0, 95, 0, 0, 95, 0, + 0, 47, 94, 40, 32, 94, 94, 94, 26, 94, + 94, 94, 45, 94, 94, 94, 94, 46, 94, 94, - 91, 0, 0, 0, 31, 91, 91, 91, 15, 39, - 91, 45, 91, 91, 91, 91, 91, 91, 91, 91, - 24, 0, 0, 0, 91, 91, 91, 91, 16, 33, - 28, 91, 34, 91, 91, 91, 0, 0, 0, 91, - 91, 30, 26, 91, 91, 91, 91, 0, 12, 0, - 91, 32, 91, 91, 91, 18, 14, 0, 91, 91, - 40, 21, 91, 91, 0, 91, 36, 91, 91, 0, - 35, 91, 91, 0, 91, 91, 0, 91, 19, 0, - 91, 13, 91, 20, 0 + 94, 41, 94, 20, 94, 0, 0, 0, 44, 34, + 94, 94, 94, 18, 42, 94, 48, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 27, 0, 0, 0, + 94, 94, 94, 94, 94, 19, 94, 94, 36, 31, + 94, 37, 94, 94, 94, 0, 0, 0, 94, 94, + 94, 33, 29, 94, 94, 94, 94, 94, 94, 0, + 15, 0, 94, 94, 35, 94, 14, 94, 94, 94, + 21, 17, 0, 94, 94, 94, 94, 43, 24, 94, + 94, 0, 12, 94, 13, 39, 94, 94, 0, 38, + 94, 94, 0, 94, 94, 0, 94, 22, 0, 94, + + 16, 94, 23, 0 } ; static const YY_CHAR yy_ec[256] = @@ -611,8 +614,8 @@ static const YY_CHAR yy_ec[256] = 25, 26, 27, 28, 29, 1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 24, 39, 40, 41, 42, - 43, 24, 24, 44, 45, 46, 47, 48, 49, 24, - 50, 51, 52, 53, 54, 55, 1, 1, 1, 1, + 43, 44, 24, 45, 46, 47, 48, 49, 50, 24, + 51, 52, 53, 54, 55, 56, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -629,228 +632,240 @@ static const YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static const YY_CHAR yy_meta[56] = +static const YY_CHAR yy_meta[57] = { 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 4, 1, 1, 1, 1, 1, 4, 1, 5, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 1, 1, 1, 1 + 4, 4, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[300] = +static const flex_int16_t yy_base[319] = { 0, - 0, 0, 53, 54, 55, 56, 540, 541, 541, 541, - 517, 55, 33, 516, 64, 58, 541, 541, 515, 55, - 541, 60, 518, 73, 71, 516, 541, 70, 512, 71, - 507, 541, 541, 510, 57, 44, 70, 72, 75, 78, - 48, 76, 86, 79, 90, 93, 88, 84, 103, 541, - 81, 541, 541, 541, 541, 514, 541, 541, 513, 541, - 104, 541, 132, 487, 486, 482, 541, 118, 541, 119, - 541, 127, 138, 541, 541, 541, 541, 541, 120, 541, - 541, 0, 541, 121, 133, 134, 0, 541, 504, 541, - 541, 541, 503, 498, 541, 38, 120, 117, 135, 126, + 0, 0, 54, 55, 56, 57, 574, 575, 575, 575, + 551, 56, 35, 550, 63, 55, 575, 575, 549, 56, + 575, 55, 56, 74, 71, 551, 575, 54, 547, 70, + 542, 575, 575, 545, 53, 58, 64, 72, 73, 74, + 79, 84, 82, 85, 86, 88, 95, 97, 94, 107, + 575, 96, 575, 575, 575, 575, 549, 575, 575, 548, + 575, 120, 575, 127, 522, 521, 516, 575, 122, 575, + 115, 575, 126, 140, 575, 575, 575, 575, 575, 120, + 523, 575, 575, 0, 575, 121, 141, 135, 0, 575, + 538, 575, 575, 575, 537, 532, 575, 132, 128, 134, - 137, 122, 143, 139, 140, 144, 497, 496, 145, 148, - 149, 151, 152, 154, 160, 155, 156, 161, 162, 541, - 541, 541, 541, 185, 191, 202, 483, 488, 481, 192, - 541, 203, 200, 207, 204, 205, 212, 541, 0, 201, - 541, 492, 541, 541, 186, 194, 197, 206, 199, 196, - 215, 209, 208, 218, 220, 221, 222, 223, 224, 227, - 226, 231, 233, 232, 238, 239, 241, 242, 476, 476, - 473, 264, 265, 271, 266, 270, 277, 488, 255, 487, - 486, 262, 263, 257, 485, 258, 259, 272, 484, 273, - 279, 157, 483, 482, 280, 281, 285, 481, 282, 283, + 137, 139, 138, 142, 114, 143, 145, 146, 531, 530, + 150, 151, 152, 153, 156, 159, 163, 158, 160, 165, + 166, 575, 575, 575, 575, 189, 197, 202, 517, 522, + 515, 204, 575, 207, 205, 208, 209, 210, 213, 575, + 500, 0, 202, 575, 525, 575, 575, 199, 212, 187, + 195, 206, 198, 217, 215, 218, 222, 224, 225, 226, + 227, 228, 229, 231, 236, 230, 238, 241, 244, 243, + 245, 509, 509, 506, 268, 269, 276, 271, 273, 283, + 513, 520, 261, 519, 518, 258, 263, 262, 517, 270, + 272, 277, 516, 278, 279, 282, 287, 515, 289, 290, - 290, 460, 458, 468, 477, 284, 293, 294, 476, 475, - 296, 474, 295, 297, 299, 300, 305, 306, 307, 314, - 473, 454, 464, 467, 316, 315, 317, 320, 469, 468, - 467, 321, 466, 322, 324, 329, 457, 456, 459, 323, - 332, 462, 461, 334, 344, 330, 333, 452, 541, 443, - 346, 458, 349, 348, 350, 351, 541, 445, 357, 356, - 456, 455, 359, 364, 426, 362, 393, 367, 365, 372, - 391, 372, 370, 371, 373, 375, 380, 374, 384, 372, - 378, 541, 383, 379, 541, 420, 425, 430, 435, 438, - 440, 445, 450, 455, 460, 465, 357, 470, 475 + 293, 514, 291, 294, 296, 492, 490, 501, 575, 298, + 299, 301, 305, 510, 509, 302, 508, 307, 313, 309, + 312, 322, 324, 314, 310, 327, 507, 487, 498, 501, + 328, 330, 334, 336, 335, 503, 340, 337, 502, 501, + 342, 500, 338, 343, 344, 491, 490, 493, 350, 349, + 351, 496, 495, 355, 360, 363, 364, 366, 369, 486, + 575, 477, 370, 374, 492, 373, 491, 375, 377, 380, + 378, 575, 478, 376, 390, 389, 391, 489, 488, 392, + 395, 472, 486, 396, 472, 424, 400, 401, 402, 421, + 402, 406, 397, 407, 408, 406, 410, 352, 259, 409, + 575, 413, 200, 575, 451, 456, 461, 466, 469, 471, + 476, 481, 486, 491, 496, 84, 501, 506 } ; -static const flex_int16_t yy_def[300] = +static const flex_int16_t yy_def[319] = { 0, - 285, 1, 286, 286, 287, 287, 285, 285, 285, 285, - 285, 288, 285, 285, 285, 289, 285, 285, 285, 285, - 285, 285, 285, 285, 290, 285, 285, 285, 285, 285, - 291, 285, 285, 285, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 288, 285, 292, 285, 285, 285, 285, 293, 285, 294, - 285, 289, 295, 285, 285, 285, 285, 285, 285, 285, - 285, 296, 285, 285, 290, 290, 297, 285, 285, 285, - 285, 285, 285, 291, 285, 291, 291, 291, 291, 291, + 304, 1, 305, 305, 306, 306, 304, 304, 304, 304, + 304, 307, 304, 304, 304, 308, 304, 304, 304, 304, + 304, 304, 304, 304, 309, 304, 304, 304, 304, 304, + 310, 304, 304, 304, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 307, 304, 311, 304, 304, 304, 304, 312, 304, + 313, 304, 308, 314, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 315, 304, 304, 309, 309, 316, 304, + 304, 304, 304, 304, 304, 310, 304, 310, 310, 310, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 285, - 285, 285, 285, 288, 288, 292, 285, 285, 285, 293, - 285, 298, 294, 299, 289, 289, 295, 285, 296, 285, - 285, 297, 285, 285, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 285, 285, - 285, 293, 293, 298, 294, 294, 299, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 304, 304, 304, 304, 307, 307, 311, 304, 304, + 304, 312, 304, 317, 313, 318, 308, 308, 314, 304, + 304, 315, 304, 304, 316, 304, 304, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 304, 304, 304, 312, 312, 317, 313, 313, 318, + 304, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 291, 285, 285, 285, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 285, 285, 285, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 285, 285, 285, 291, - 291, 291, 291, 291, 291, 291, 291, 285, 285, 285, - 291, 291, 291, 291, 291, 291, 285, 285, 291, 291, - 291, 291, 291, 291, 285, 291, 291, 291, 291, 285, - 291, 291, 291, 285, 291, 291, 285, 291, 291, 285, - 291, 285, 291, 291, 0, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285 + 310, 310, 310, 310, 310, 304, 304, 304, 304, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 304, 304, 304, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 304, 304, 304, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 304, + 304, 304, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 304, 304, 310, 310, 310, 310, 310, 310, 310, + 310, 304, 310, 310, 310, 310, 310, 310, 304, 310, + 310, 310, 304, 310, 310, 304, 310, 310, 304, 310, + 304, 310, 310, 0, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304 } ; -static const flex_int16_t yy_nxt[597] = +static const flex_int16_t yy_nxt[632] = { 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 8, 33, 34, 31, 35, 36, 37, 38, 39, 40, 41, 31, 42, 31, 43, - 31, 44, 31, 45, 46, 47, 48, 31, 49, 31, - 31, 50, 51, 52, 53, 55, 55, 58, 58, 62, - 59, 59, 64, 87, 56, 56, 62, 75, 68, 87, - 65, 69, 70, 87, 77, 145, 76, 106, 80, 66, - 63, 78, 87, 73, 81, 71, 84, 97, 85, 82, - 89, 90, 92, 93, 83, 87, 87, 87, 96, 98, + 31, 44, 31, 45, 46, 47, 48, 49, 31, 50, + 31, 31, 51, 52, 53, 54, 56, 56, 59, 59, + 63, 60, 60, 63, 65, 57, 57, 69, 76, 78, + 70, 71, 66, 80, 91, 92, 79, 77, 89, 82, + 74, 64, 67, 89, 72, 83, 86, 145, 87, 89, + 84, 94, 95, 100, 98, 85, 89, 89, 89, 89, - 87, 87, 120, 87, 87, 101, 99, 104, 62, 87, - 107, 87, 100, 87, 102, 87, 103, 108, 87, 109, - 105, 110, 131, 111, 115, 117, 112, 131, 87, 63, - 113, 116, 118, 121, 61, 62, 125, 79, 140, 119, - 72, 114, 87, 132, 134, 87, 136, 87, 84, 285, - 85, 87, 73, 146, 138, 141, 147, 126, 87, 87, - 87, 148, 87, 137, 87, 87, 152, 150, 87, 87, - 87, 151, 149, 87, 87, 153, 87, 87, 154, 87, - 87, 87, 87, 155, 156, 87, 87, 87, 166, 62, - 160, 162, 157, 158, 159, 62, 131, 163, 167, 168, + 101, 81, 99, 106, 89, 103, 102, 89, 108, 89, + 89, 89, 104, 89, 105, 111, 107, 122, 109, 89, + 89, 114, 89, 133, 63, 110, 133, 112, 115, 62, + 113, 127, 89, 117, 63, 119, 120, 80, 143, 89, + 136, 118, 73, 121, 116, 64, 156, 134, 138, 123, + 304, 74, 128, 89, 140, 144, 86, 89, 87, 89, + 89, 149, 89, 89, 89, 139, 89, 89, 89, 148, + 89, 89, 154, 150, 152, 89, 89, 89, 89, 151, + 153, 89, 157, 89, 89, 89, 159, 155, 89, 158, + 89, 89, 169, 63, 162, 164, 165, 161, 160, 163, - 214, 165, 161, 164, 61, 130, 125, 173, 131, 133, - 63, 87, 62, 62, 72, 176, 63, 132, 140, 87, - 136, 87, 87, 179, 87, 134, 178, 126, 174, 73, - 73, 87, 177, 87, 87, 141, 180, 137, 182, 181, - 87, 183, 185, 87, 184, 87, 87, 87, 87, 87, - 186, 87, 87, 188, 189, 190, 87, 87, 87, 194, - 191, 193, 187, 87, 87, 197, 87, 87, 131, 131, - 192, 198, 199, 130, 131, 173, 195, 196, 131, 133, - 87, 201, 87, 87, 87, 176, 200, 87, 87, 132, - 132, 134, 210, 205, 206, 134, 174, 87, 87, 209, + 166, 63, 170, 171, 62, 168, 127, 167, 133, 132, + 135, 176, 89, 133, 64, 73, 179, 63, 63, 143, + 89, 138, 64, 89, 89, 89, 184, 128, 185, 134, + 136, 89, 177, 180, 74, 74, 144, 89, 139, 182, + 89, 183, 89, 89, 187, 186, 188, 89, 189, 89, + 89, 89, 89, 89, 89, 89, 89, 192, 193, 194, + 190, 89, 196, 89, 195, 198, 89, 191, 89, 89, + 89, 201, 133, 133, 202, 200, 197, 203, 132, 133, + 176, 133, 199, 89, 205, 135, 89, 89, 89, 204, + 211, 179, 301, 134, 134, 89, 136, 89, 136, 210, - 207, 211, 177, 208, 87, 87, 87, 87, 87, 87, - 87, 215, 212, 213, 217, 87, 218, 219, 87, 87, - 87, 87, 87, 221, 87, 87, 216, 228, 220, 225, - 87, 87, 87, 227, 226, 231, 232, 233, 230, 87, - 87, 87, 87, 234, 229, 87, 87, 87, 87, 87, - 235, 236, 240, 246, 87, 87, 243, 87, 87, 87, - 142, 241, 242, 245, 244, 252, 251, 253, 247, 87, - 255, 87, 256, 87, 87, 87, 87, 254, 260, 259, - 261, 87, 87, 262, 87, 263, 266, 87, 267, 87, - 87, 264, 87, 269, 271, 87, 272, 87, 87, 87, + 212, 177, 89, 89, 89, 215, 216, 89, 180, 213, + 219, 214, 89, 218, 89, 89, 89, 217, 89, 89, + 221, 89, 223, 89, 89, 224, 89, 89, 225, 227, + 89, 220, 89, 235, 89, 89, 222, 89, 89, 89, + 226, 231, 233, 237, 234, 232, 238, 89, 240, 89, + 239, 243, 89, 89, 244, 89, 242, 236, 241, 89, + 89, 89, 89, 89, 245, 89, 250, 89, 89, 89, + 249, 253, 258, 254, 89, 89, 89, 89, 255, 257, + 89, 251, 252, 259, 265, 89, 256, 263, 89, 89, + 266, 89, 267, 264, 89, 89, 268, 269, 89, 89, - 87, 276, 268, 87, 87, 282, 278, 281, 87, 87, - 273, 279, 275, 280, 277, 284, 87, 274, 87, 283, - 54, 54, 54, 54, 54, 57, 57, 57, 57, 57, - 61, 61, 61, 61, 61, 72, 72, 72, 72, 72, - 86, 86, 86, 94, 94, 124, 124, 124, 124, 124, - 130, 130, 130, 130, 130, 133, 133, 133, 133, 133, - 135, 135, 135, 135, 135, 139, 270, 139, 139, 139, - 172, 172, 172, 172, 172, 175, 175, 175, 175, 175, - 87, 87, 265, 87, 258, 257, 87, 87, 250, 249, - 248, 87, 87, 87, 87, 239, 238, 237, 87, 87, + 89, 89, 89, 89, 277, 89, 270, 275, 271, 278, + 276, 274, 280, 279, 89, 89, 89, 89, 281, 284, + 89, 89, 283, 286, 288, 89, 89, 89, 290, 291, + 285, 89, 89, 89, 89, 89, 287, 295, 89, 299, + 297, 296, 294, 300, 298, 303, 89, 292, 293, 89, + 302, 55, 55, 55, 55, 55, 58, 58, 58, 58, + 58, 62, 62, 62, 62, 62, 73, 73, 73, 73, + 73, 88, 88, 88, 96, 96, 126, 126, 126, 126, + 126, 132, 132, 132, 132, 132, 135, 135, 135, 135, + 135, 137, 137, 137, 137, 137, 142, 89, 142, 142, - 87, 87, 87, 224, 223, 222, 87, 87, 87, 87, - 87, 87, 87, 87, 204, 203, 202, 87, 171, 170, - 169, 87, 87, 87, 144, 143, 129, 128, 127, 123, - 122, 95, 87, 91, 88, 79, 74, 67, 60, 285, - 7, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285 + 142, 175, 175, 175, 175, 175, 178, 178, 178, 178, + 178, 89, 289, 89, 89, 282, 89, 89, 273, 272, + 89, 89, 262, 261, 260, 89, 89, 89, 89, 248, + 247, 246, 89, 89, 89, 89, 230, 229, 228, 89, + 89, 89, 89, 89, 89, 89, 209, 208, 207, 206, + 89, 181, 174, 173, 172, 89, 89, 89, 147, 146, + 141, 131, 130, 129, 125, 124, 97, 89, 93, 90, + 75, 68, 61, 304, 7, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304 } ; -static const flex_int16_t yy_chk[597] = +static const flex_int16_t yy_chk[632] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 4, 5, 6, 12, - 5, 6, 13, 96, 3, 4, 16, 20, 15, 36, - 13, 15, 15, 41, 22, 96, 20, 41, 24, 13, - 12, 22, 35, 16, 24, 15, 25, 36, 25, 24, - 28, 28, 30, 30, 24, 37, 25, 38, 35, 37, + 1, 1, 1, 1, 1, 1, 3, 4, 5, 6, + 12, 5, 6, 16, 13, 3, 4, 15, 20, 22, + 15, 15, 13, 23, 28, 28, 22, 20, 35, 24, + 16, 12, 13, 36, 15, 24, 25, 316, 25, 37, + 24, 30, 30, 37, 35, 24, 25, 38, 39, 40, - 39, 42, 51, 40, 44, 38, 37, 40, 61, 48, - 42, 43, 37, 47, 39, 45, 39, 42, 46, 43, - 40, 44, 68, 45, 47, 48, 46, 70, 49, 61, - 46, 47, 49, 51, 63, 72, 63, 79, 84, 49, - 73, 46, 98, 68, 70, 97, 73, 102, 85, 86, - 85, 100, 72, 97, 79, 84, 98, 63, 85, 86, - 99, 98, 101, 73, 104, 105, 102, 100, 103, 106, - 109, 101, 99, 110, 111, 103, 112, 113, 104, 114, - 116, 117, 192, 105, 106, 115, 118, 119, 117, 124, - 112, 114, 109, 110, 111, 125, 130, 115, 118, 119, + 37, 23, 36, 40, 41, 38, 37, 43, 41, 42, + 44, 45, 39, 46, 39, 43, 40, 52, 42, 49, + 47, 46, 48, 71, 62, 42, 69, 44, 47, 64, + 45, 64, 50, 48, 73, 49, 50, 80, 86, 105, + 71, 48, 74, 50, 47, 62, 105, 69, 74, 52, + 88, 73, 64, 99, 80, 86, 87, 98, 87, 100, + 88, 99, 101, 103, 102, 74, 87, 104, 106, 98, + 107, 108, 103, 100, 101, 111, 112, 113, 114, 100, + 102, 115, 106, 118, 116, 119, 108, 104, 117, 107, + 120, 121, 119, 126, 113, 115, 116, 112, 111, 114, - 192, 116, 113, 115, 126, 132, 126, 132, 133, 134, - 124, 145, 135, 136, 137, 134, 125, 130, 140, 146, - 137, 150, 147, 146, 149, 133, 145, 126, 132, 135, - 136, 148, 134, 153, 152, 140, 147, 137, 149, 148, - 151, 150, 152, 154, 151, 155, 156, 157, 158, 159, - 153, 161, 160, 155, 156, 157, 162, 164, 163, 161, - 158, 160, 154, 165, 166, 164, 167, 168, 172, 173, - 159, 165, 166, 174, 175, 174, 162, 163, 176, 177, - 179, 168, 184, 186, 187, 177, 167, 182, 183, 172, - 173, 175, 187, 179, 182, 176, 174, 188, 190, 186, + 117, 127, 120, 121, 128, 118, 128, 117, 132, 134, + 136, 134, 150, 135, 126, 139, 136, 137, 138, 143, + 151, 139, 127, 153, 148, 303, 150, 128, 151, 132, + 135, 152, 134, 136, 137, 138, 143, 149, 139, 148, + 155, 149, 154, 156, 153, 152, 154, 157, 155, 158, + 159, 160, 161, 162, 163, 166, 164, 158, 159, 160, + 156, 165, 162, 167, 161, 164, 168, 157, 170, 169, + 171, 167, 175, 176, 168, 166, 163, 169, 177, 178, + 177, 179, 165, 186, 171, 180, 183, 188, 187, 170, + 186, 180, 299, 175, 176, 190, 178, 191, 179, 183, - 183, 188, 177, 184, 191, 195, 196, 199, 200, 206, - 197, 195, 190, 191, 197, 201, 199, 200, 207, 208, - 213, 211, 214, 201, 215, 216, 196, 211, 200, 206, - 217, 218, 219, 208, 207, 215, 216, 217, 214, 220, - 226, 225, 227, 218, 213, 228, 232, 234, 240, 235, - 219, 220, 225, 235, 236, 246, 228, 241, 247, 244, - 297, 226, 227, 234, 232, 241, 240, 244, 236, 245, - 246, 251, 247, 254, 253, 255, 256, 245, 253, 251, - 254, 260, 259, 255, 263, 256, 259, 266, 260, 264, - 269, 256, 268, 264, 266, 273, 268, 272, 275, 278, + 187, 177, 192, 194, 195, 191, 192, 196, 180, 188, + 196, 190, 197, 195, 199, 200, 203, 194, 201, 204, + 199, 205, 201, 210, 211, 203, 212, 216, 204, 205, + 213, 197, 218, 216, 220, 225, 200, 221, 219, 224, + 204, 210, 212, 219, 213, 211, 219, 222, 221, 223, + 220, 224, 226, 231, 225, 232, 223, 218, 222, 233, + 235, 234, 238, 243, 226, 237, 232, 241, 244, 245, + 231, 235, 244, 237, 250, 249, 251, 298, 238, 243, + 254, 233, 234, 245, 251, 255, 241, 249, 256, 257, + 254, 258, 255, 250, 259, 263, 256, 257, 266, 264, - 276, 273, 263, 281, 284, 280, 275, 278, 283, 279, - 269, 276, 272, 277, 274, 283, 271, 270, 267, 281, - 286, 286, 286, 286, 286, 287, 287, 287, 287, 287, - 288, 288, 288, 288, 288, 289, 289, 289, 289, 289, - 290, 290, 290, 291, 291, 292, 292, 292, 292, 292, - 293, 293, 293, 293, 293, 294, 294, 294, 294, 294, - 295, 295, 295, 295, 295, 296, 265, 296, 296, 296, - 298, 298, 298, 298, 298, 299, 299, 299, 299, 299, - 262, 261, 258, 252, 250, 248, 243, 242, 239, 238, - 237, 233, 231, 230, 229, 224, 223, 222, 221, 212, + 268, 274, 269, 271, 268, 270, 258, 264, 259, 269, + 266, 263, 271, 270, 276, 275, 277, 280, 271, 275, + 281, 284, 274, 277, 281, 287, 288, 291, 284, 287, + 276, 292, 294, 295, 300, 297, 280, 292, 302, 296, + 294, 293, 291, 297, 295, 302, 290, 288, 289, 286, + 300, 305, 305, 305, 305, 305, 306, 306, 306, 306, + 306, 307, 307, 307, 307, 307, 308, 308, 308, 308, + 308, 309, 309, 309, 310, 310, 311, 311, 311, 311, + 311, 312, 312, 312, 312, 312, 313, 313, 313, 313, + 313, 314, 314, 314, 314, 314, 315, 285, 315, 315, - 210, 209, 205, 204, 203, 202, 198, 194, 193, 189, - 185, 181, 180, 178, 171, 170, 169, 142, 129, 128, - 127, 108, 107, 94, 93, 89, 66, 65, 64, 59, - 56, 34, 31, 29, 26, 23, 19, 14, 11, 7, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285 + 315, 317, 317, 317, 317, 317, 318, 318, 318, 318, + 318, 283, 282, 279, 278, 273, 267, 265, 262, 260, + 253, 252, 248, 247, 246, 242, 240, 239, 236, 230, + 229, 228, 227, 217, 215, 214, 208, 207, 206, 202, + 198, 193, 189, 185, 184, 182, 181, 174, 173, 172, + 145, 141, 131, 130, 129, 110, 109, 96, 95, 91, + 81, 67, 66, 65, 60, 57, 34, 31, 29, 26, + 19, 14, 11, 7, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304 } ; /* The intent behind this definition is that it'll catch @@ -871,9 +886,9 @@ static const flex_int16_t yy_chk[597] = #line 23 "lexer.lpp" #define YY_USER_ACTION loc.columns(yyleng); -#line 874 "lexer.cpp" +#line 889 "lexer.cpp" -#line 876 "lexer.cpp" +#line 891 "lexer.cpp" #define INITIAL 0 #define COMMENT_BLOCK_STATE 1 @@ -1141,7 +1156,7 @@ YY_DECL loc.step(); -#line 1144 "lexer.cpp" +#line 1159 "lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1168,13 +1183,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 286 ) + if ( yy_current_state >= 305 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 285 ); + while ( yy_current_state != 304 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -1255,443 +1270,458 @@ YY_RULE_SETUP case 12: YY_RULE_SETUP #line 59 "lexer.lpp" -{ return h1::parser::make_INCLUDE(loc); } +{ return h1::parser::make_BREAKPOINT(loc); } YY_BREAK case 13: YY_RULE_SETUP #line 60 "lexer.lpp" -{ return h1::parser::make_USINGTREE(loc); } +{ return h1::parser::make_PROFBEGIN(loc); } YY_BREAK case 14: YY_RULE_SETUP #line 61 "lexer.lpp" -{ return h1::parser::make_ANIMTREE(loc); } +{ return h1::parser::make_PROFEND(loc); } YY_BREAK case 15: YY_RULE_SETUP #line 62 "lexer.lpp" -{ return h1::parser::make_ENDON(loc); } +{ return h1::parser::make_INCLUDE(loc); } YY_BREAK case 16: YY_RULE_SETUP #line 63 "lexer.lpp" -{ return h1::parser::make_NOTIFY(loc); } +{ return h1::parser::make_USINGTREE(loc); } YY_BREAK case 17: YY_RULE_SETUP #line 64 "lexer.lpp" -{ return h1::parser::make_WAIT(loc); } +{ return h1::parser::make_ANIMTREE(loc); } YY_BREAK case 18: YY_RULE_SETUP #line 65 "lexer.lpp" -{ return h1::parser::make_WAITTILL(loc); } +{ return h1::parser::make_ENDON(loc); } YY_BREAK case 19: YY_RULE_SETUP #line 66 "lexer.lpp" -{ return h1::parser::make_WAITTILLMATCH(loc); } +{ return h1::parser::make_NOTIFY(loc); } YY_BREAK case 20: YY_RULE_SETUP #line 67 "lexer.lpp" -{ return h1::parser::make_WAITTILLFRAMEEND(loc); } +{ return h1::parser::make_WAIT(loc); } YY_BREAK case 21: YY_RULE_SETUP #line 68 "lexer.lpp" -{ return h1::parser::make_WAITFRAME(loc); } +{ return h1::parser::make_WAITTILL(loc); } YY_BREAK case 22: YY_RULE_SETUP #line 69 "lexer.lpp" -{ return h1::parser::make_IF(loc); } +{ return h1::parser::make_WAITTILLMATCH(loc); } YY_BREAK case 23: YY_RULE_SETUP #line 70 "lexer.lpp" -{ return h1::parser::make_ELSE(loc); } +{ return h1::parser::make_WAITTILLFRAMEEND(loc); } YY_BREAK case 24: YY_RULE_SETUP #line 71 "lexer.lpp" -{ return h1::parser::make_WHILE(loc); } +{ return h1::parser::make_WAITFRAME(loc); } YY_BREAK case 25: YY_RULE_SETUP #line 72 "lexer.lpp" -{ return h1::parser::make_FOR(loc); } +{ return h1::parser::make_IF(loc); } YY_BREAK case 26: YY_RULE_SETUP #line 73 "lexer.lpp" -{ return h1::parser::make_FOREACH(loc); } +{ return h1::parser::make_ELSE(loc); } YY_BREAK case 27: YY_RULE_SETUP #line 74 "lexer.lpp" -{ return h1::parser::make_IN(loc); } +{ return h1::parser::make_WHILE(loc); } YY_BREAK case 28: YY_RULE_SETUP #line 75 "lexer.lpp" -{ return h1::parser::make_SWITCH(loc); } +{ return h1::parser::make_FOR(loc); } YY_BREAK case 29: YY_RULE_SETUP #line 76 "lexer.lpp" -{ return h1::parser::make_CASE(loc); } +{ return h1::parser::make_FOREACH(loc); } YY_BREAK case 30: YY_RULE_SETUP #line 77 "lexer.lpp" -{ return h1::parser::make_DEFAULT(loc); } +{ return h1::parser::make_IN(loc); } YY_BREAK case 31: YY_RULE_SETUP #line 78 "lexer.lpp" -{ return h1::parser::make_BREAK(loc); } +{ return h1::parser::make_SWITCH(loc); } YY_BREAK case 32: YY_RULE_SETUP #line 79 "lexer.lpp" -{ return h1::parser::make_CONTINUE(loc); } +{ return h1::parser::make_CASE(loc); } YY_BREAK case 33: YY_RULE_SETUP #line 80 "lexer.lpp" -{ return h1::parser::make_RETURN(loc); } +{ return h1::parser::make_DEFAULT(loc); } YY_BREAK case 34: YY_RULE_SETUP #line 81 "lexer.lpp" -{ return h1::parser::make_THREAD(loc); } +{ return h1::parser::make_BREAK(loc); } YY_BREAK case 35: YY_RULE_SETUP #line 82 "lexer.lpp" -{ return h1::parser::make_CHILDTHREAD(loc); } +{ return h1::parser::make_CONTINUE(loc); } YY_BREAK case 36: YY_RULE_SETUP #line 83 "lexer.lpp" -{ return h1::parser::make_THISTHREAD(loc); } +{ return h1::parser::make_RETURN(loc); } YY_BREAK case 37: YY_RULE_SETUP #line 84 "lexer.lpp" -{ return h1::parser::make_CALL(loc); } +{ return h1::parser::make_THREAD(loc); } YY_BREAK case 38: YY_RULE_SETUP #line 85 "lexer.lpp" -{ return h1::parser::make_TRUE(loc); } +{ return h1::parser::make_CHILDTHREAD(loc); } YY_BREAK case 39: YY_RULE_SETUP #line 86 "lexer.lpp" -{ return h1::parser::make_FALSE(loc); } +{ return h1::parser::make_THISTHREAD(loc); } YY_BREAK case 40: YY_RULE_SETUP #line 87 "lexer.lpp" -{ return h1::parser::make_UNDEFINED(loc); } +{ return h1::parser::make_CALL(loc); } YY_BREAK case 41: YY_RULE_SETUP #line 88 "lexer.lpp" -{ return h1::parser::make_SIZE(loc); } +{ return h1::parser::make_TRUE(loc); } YY_BREAK case 42: YY_RULE_SETUP #line 89 "lexer.lpp" -{ return h1::parser::make_GAME(loc); } +{ return h1::parser::make_FALSE(loc); } YY_BREAK case 43: YY_RULE_SETUP #line 90 "lexer.lpp" -{ return h1::parser::make_SELF(loc); } +{ return h1::parser::make_UNDEFINED(loc); } YY_BREAK case 44: YY_RULE_SETUP #line 91 "lexer.lpp" -{ return h1::parser::make_ANIM(loc); } +{ return h1::parser::make_SIZE(loc); } YY_BREAK case 45: YY_RULE_SETUP #line 92 "lexer.lpp" -{ return h1::parser::make_LEVEL(loc); } +{ return h1::parser::make_GAME(loc); } YY_BREAK case 46: YY_RULE_SETUP #line 93 "lexer.lpp" -{ return h1::parser::make_LPAREN(loc); } +{ return h1::parser::make_SELF(loc); } YY_BREAK case 47: YY_RULE_SETUP #line 94 "lexer.lpp" -{ return h1::parser::make_RPAREN(loc); } +{ return h1::parser::make_ANIM(loc); } YY_BREAK case 48: YY_RULE_SETUP #line 95 "lexer.lpp" -{ return h1::parser::make_LBRACE(loc); } +{ return h1::parser::make_LEVEL(loc); } YY_BREAK case 49: YY_RULE_SETUP #line 96 "lexer.lpp" -{ return h1::parser::make_RBRACE(loc); } +{ return h1::parser::make_LPAREN(loc); } YY_BREAK case 50: YY_RULE_SETUP #line 97 "lexer.lpp" -{ return h1::parser::make_LBRACKET(loc); } +{ return h1::parser::make_RPAREN(loc); } YY_BREAK case 51: YY_RULE_SETUP #line 98 "lexer.lpp" -{ return h1::parser::make_RBRACKET(loc); } +{ return h1::parser::make_LBRACE(loc); } YY_BREAK case 52: YY_RULE_SETUP #line 99 "lexer.lpp" -{ return h1::parser::make_COMMA(loc); } +{ return h1::parser::make_RBRACE(loc); } YY_BREAK case 53: YY_RULE_SETUP #line 100 "lexer.lpp" -{ return h1::parser::make_DOT(loc); } +{ return h1::parser::make_LBRACKET(loc); } YY_BREAK case 54: YY_RULE_SETUP #line 101 "lexer.lpp" -{ return h1::parser::make_DOUBLECOLON(loc); } +{ return h1::parser::make_RBRACKET(loc); } YY_BREAK case 55: YY_RULE_SETUP #line 102 "lexer.lpp" -{ return h1::parser::make_COLON(loc); } +{ return h1::parser::make_COMMA(loc); } YY_BREAK case 56: YY_RULE_SETUP #line 103 "lexer.lpp" -{ return h1::parser::make_SEMICOLON(loc); } +{ return h1::parser::make_DOT(loc); } YY_BREAK case 57: YY_RULE_SETUP #line 104 "lexer.lpp" -{ return h1::parser::make_INCREMENT(loc); } +{ return h1::parser::make_DOUBLECOLON(loc); } YY_BREAK case 58: YY_RULE_SETUP #line 105 "lexer.lpp" -{ return h1::parser::make_DECREMENT(loc); } +{ return h1::parser::make_COLON(loc); } YY_BREAK case 59: YY_RULE_SETUP #line 106 "lexer.lpp" -{ return h1::parser::make_ASSIGN_LSHIFT(loc); } +{ return h1::parser::make_SEMICOLON(loc); } YY_BREAK case 60: YY_RULE_SETUP #line 107 "lexer.lpp" -{ return h1::parser::make_ASSIGN_RSHIFT(loc); } +{ return h1::parser::make_INCREMENT(loc); } YY_BREAK case 61: YY_RULE_SETUP #line 108 "lexer.lpp" -{ return h1::parser::make_LSHIFT(loc); } +{ return h1::parser::make_DECREMENT(loc); } YY_BREAK case 62: YY_RULE_SETUP #line 109 "lexer.lpp" -{ return h1::parser::make_RSHIFT(loc); } +{ return h1::parser::make_ASSIGN_LSHIFT(loc); } YY_BREAK case 63: YY_RULE_SETUP #line 110 "lexer.lpp" -{ return h1::parser::make_OR(loc); } +{ return h1::parser::make_ASSIGN_RSHIFT(loc); } YY_BREAK case 64: YY_RULE_SETUP #line 111 "lexer.lpp" -{ return h1::parser::make_AND(loc); } +{ return h1::parser::make_LSHIFT(loc); } YY_BREAK case 65: YY_RULE_SETUP #line 112 "lexer.lpp" -{ return h1::parser::make_EQUALITY(loc); } +{ return h1::parser::make_RSHIFT(loc); } YY_BREAK case 66: YY_RULE_SETUP #line 113 "lexer.lpp" -{ return h1::parser::make_INEQUALITY(loc); } +{ return h1::parser::make_OR(loc); } YY_BREAK case 67: YY_RULE_SETUP #line 114 "lexer.lpp" -{ return h1::parser::make_LESS_EQUAL(loc); } +{ return h1::parser::make_AND(loc); } YY_BREAK case 68: YY_RULE_SETUP #line 115 "lexer.lpp" -{ return h1::parser::make_GREATER_EQUAL(loc); } +{ return h1::parser::make_EQUALITY(loc); } YY_BREAK case 69: YY_RULE_SETUP #line 116 "lexer.lpp" -{ return h1::parser::make_LESS(loc); } +{ return h1::parser::make_INEQUALITY(loc); } YY_BREAK case 70: YY_RULE_SETUP #line 117 "lexer.lpp" -{ return h1::parser::make_GREATER(loc); } +{ return h1::parser::make_LESS_EQUAL(loc); } YY_BREAK case 71: YY_RULE_SETUP #line 118 "lexer.lpp" -{ return h1::parser::make_ASSIGN_ADD(loc); } +{ return h1::parser::make_GREATER_EQUAL(loc); } YY_BREAK case 72: YY_RULE_SETUP #line 119 "lexer.lpp" -{ return h1::parser::make_ASSIGN_SUB(loc); } +{ return h1::parser::make_LESS(loc); } YY_BREAK case 73: YY_RULE_SETUP #line 120 "lexer.lpp" -{ return h1::parser::make_ASSIGN_MULT(loc); } +{ return h1::parser::make_GREATER(loc); } YY_BREAK case 74: YY_RULE_SETUP #line 121 "lexer.lpp" -{ return h1::parser::make_ASSIGN_DIV(loc); } +{ return h1::parser::make_ASSIGN_ADD(loc); } YY_BREAK case 75: YY_RULE_SETUP #line 122 "lexer.lpp" -{ return h1::parser::make_ASSIGN_MOD(loc); } +{ return h1::parser::make_ASSIGN_SUB(loc); } YY_BREAK case 76: YY_RULE_SETUP #line 123 "lexer.lpp" -{ return h1::parser::make_ASSIGN_BITWISE_OR(loc); } +{ return h1::parser::make_ASSIGN_MULT(loc); } YY_BREAK case 77: YY_RULE_SETUP #line 124 "lexer.lpp" -{ return h1::parser::make_ASSIGN_BITWISE_AND(loc); } +{ return h1::parser::make_ASSIGN_DIV(loc); } YY_BREAK case 78: YY_RULE_SETUP #line 125 "lexer.lpp" -{ return h1::parser::make_ASSIGN_BITWISE_EXOR(loc); } +{ return h1::parser::make_ASSIGN_MOD(loc); } YY_BREAK case 79: YY_RULE_SETUP #line 126 "lexer.lpp" -{ return h1::parser::make_ASSIGN(loc); } +{ return h1::parser::make_ASSIGN_BITWISE_OR(loc); } YY_BREAK case 80: YY_RULE_SETUP #line 127 "lexer.lpp" -{ return h1::parser::make_ADD(loc); } +{ return h1::parser::make_ASSIGN_BITWISE_AND(loc); } YY_BREAK case 81: YY_RULE_SETUP #line 128 "lexer.lpp" -{ return h1::parser::make_SUB(loc); } +{ return h1::parser::make_ASSIGN_BITWISE_EXOR(loc); } YY_BREAK case 82: YY_RULE_SETUP #line 129 "lexer.lpp" -{ return h1::parser::make_MULT(loc); } +{ return h1::parser::make_ASSIGN(loc); } YY_BREAK case 83: YY_RULE_SETUP #line 130 "lexer.lpp" -{ return h1::parser::make_DIV(loc); } +{ return h1::parser::make_ADD(loc); } YY_BREAK case 84: YY_RULE_SETUP #line 131 "lexer.lpp" -{ return h1::parser::make_MOD(loc); } +{ return h1::parser::make_SUB(loc); } YY_BREAK case 85: YY_RULE_SETUP #line 132 "lexer.lpp" -{ return h1::parser::make_NOT(loc); } +{ return h1::parser::make_MULT(loc); } YY_BREAK case 86: YY_RULE_SETUP #line 133 "lexer.lpp" -{ return h1::parser::make_COMPLEMENT(loc); } +{ return h1::parser::make_DIV(loc); } YY_BREAK case 87: YY_RULE_SETUP #line 134 "lexer.lpp" -{ return h1::parser::make_BITWISE_OR(loc); } +{ return h1::parser::make_MOD(loc); } YY_BREAK case 88: YY_RULE_SETUP #line 135 "lexer.lpp" -{ return h1::parser::make_BITWISE_AND(loc); } +{ return h1::parser::make_NOT(loc); } YY_BREAK case 89: YY_RULE_SETUP #line 136 "lexer.lpp" -{ return h1::parser::make_BITWISE_EXOR(loc); } +{ return h1::parser::make_COMPLEMENT(loc); } YY_BREAK case 90: YY_RULE_SETUP #line 137 "lexer.lpp" -{ return h1::parser::make_FILE(utils::string::fordslash(yytext), loc); } +{ return h1::parser::make_BITWISE_OR(loc); } YY_BREAK case 91: YY_RULE_SETUP #line 138 "lexer.lpp" -{ return h1::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); } +{ return h1::parser::make_BITWISE_AND(loc); } YY_BREAK case 92: -/* rule 92 can match eol */ YY_RULE_SETUP #line 139 "lexer.lpp" -{ return h1::parser::make_ISTRING(std::string(yytext).substr(1), loc); } +{ return h1::parser::make_BITWISE_EXOR(loc); } YY_BREAK case 93: -/* rule 93 can match eol */ YY_RULE_SETUP #line 140 "lexer.lpp" -{ return h1::parser::make_STRING(std::string(yytext), loc); } +{ return h1::parser::make_FILE(utils::string::fordslash(yytext), loc); } YY_BREAK case 94: YY_RULE_SETUP #line 141 "lexer.lpp" -{ return h1::parser::make_FLOAT(std::string(yytext), loc); } +{ return h1::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); } YY_BREAK case 95: +/* rule 95 can match eol */ YY_RULE_SETUP #line 142 "lexer.lpp" +{ return h1::parser::make_ISTRING(std::string(yytext).substr(1), loc); } + YY_BREAK +case 96: +/* rule 96 can match eol */ +YY_RULE_SETUP +#line 143 "lexer.lpp" +{ return h1::parser::make_STRING(std::string(yytext), loc); } + YY_BREAK +case 97: +YY_RULE_SETUP +#line 144 "lexer.lpp" +{ return h1::parser::make_FLOAT(std::string(yytext), loc); } + YY_BREAK +case 98: +YY_RULE_SETUP +#line 145 "lexer.lpp" { return h1::parser::make_INTEGER(std::string(yytext), loc); } YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT_BLOCK_STATE): case YY_STATE_EOF(DEVELOPER_BLOCK_STATE): -#line 143 "lexer.lpp" +#line 146 "lexer.lpp" { return h1::parser::make_H1EOF(loc); } YY_BREAK -case 96: -/* rule 96 can match eol */ +case 99: +/* rule 99 can match eol */ YY_RULE_SETUP -#line 144 "lexer.lpp" +#line 147 "lexer.lpp" { throw h1::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); } YY_BREAK -case 97: +case 100: YY_RULE_SETUP -#line 146 "lexer.lpp" +#line 149 "lexer.lpp" ECHO; YY_BREAK -#line 1694 "lexer.cpp" +#line 1724 "lexer.cpp" case YY_END_OF_BUFFER: { @@ -1989,7 +2019,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 286 ) + if ( yy_current_state >= 305 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2018,11 +2048,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 286 ) + if ( yy_current_state >= 305 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 285); + yy_is_jam = (yy_current_state == 304); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -2821,6 +2851,6 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 146 "lexer.lpp" +#line 149 "lexer.lpp" diff --git a/src/h1/xsk/lexer.hpp b/src/h1/xsk/lexer.hpp index 13d4a348..9614e734 100644 --- a/src/h1/xsk/lexer.hpp +++ b/src/h1/xsk/lexer.hpp @@ -700,7 +700,7 @@ extern int yylex (yyscan_t yyscanner); #undef yyTABLES_NAME #endif -#line 146 "lexer.lpp" +#line 149 "lexer.lpp" #line 706 "lexer.hpp" diff --git a/src/h1/xsk/parser.cpp b/src/h1/xsk/parser.cpp index 77f9d909..ac0457da 100644 --- a/src/h1/xsk/parser.cpp +++ b/src/h1/xsk/parser.cpp @@ -345,6 +345,10 @@ namespace xsk { namespace gsc { namespace h1 { value.YY_MOVE_OR_COPY< stmt_break_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.YY_MOVE_OR_COPY< stmt_breakpoint_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.YY_MOVE_OR_COPY< stmt_call_ptr > (YY_MOVE (that.value)); break; @@ -390,6 +394,14 @@ namespace xsk { namespace gsc { namespace h1 { value.YY_MOVE_OR_COPY< stmt_notify_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.YY_MOVE_OR_COPY< stmt_prof_begin_ptr > (YY_MOVE (that.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.YY_MOVE_OR_COPY< stmt_prof_end_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.YY_MOVE_OR_COPY< stmt_ptr > (YY_MOVE (that.value)); @@ -599,6 +611,10 @@ namespace xsk { namespace gsc { namespace h1 { value.move< stmt_break_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.move< stmt_breakpoint_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.move< stmt_call_ptr > (YY_MOVE (that.value)); break; @@ -644,6 +660,14 @@ namespace xsk { namespace gsc { namespace h1 { value.move< stmt_notify_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.move< stmt_prof_begin_ptr > (YY_MOVE (that.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.move< stmt_prof_end_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.move< stmt_ptr > (YY_MOVE (that.value)); @@ -853,6 +877,10 @@ namespace xsk { namespace gsc { namespace h1 { value.copy< stmt_break_ptr > (that.value); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.copy< stmt_breakpoint_ptr > (that.value); + break; + case symbol_kind::S_stmt_call: // stmt_call value.copy< stmt_call_ptr > (that.value); break; @@ -898,6 +926,14 @@ namespace xsk { namespace gsc { namespace h1 { value.copy< stmt_notify_ptr > (that.value); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.copy< stmt_prof_begin_ptr > (that.value); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.copy< stmt_prof_end_ptr > (that.value); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.copy< stmt_ptr > (that.value); @@ -1106,6 +1142,10 @@ namespace xsk { namespace gsc { namespace h1 { value.move< stmt_break_ptr > (that.value); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.move< stmt_breakpoint_ptr > (that.value); + break; + case symbol_kind::S_stmt_call: // stmt_call value.move< stmt_call_ptr > (that.value); break; @@ -1151,6 +1191,14 @@ namespace xsk { namespace gsc { namespace h1 { value.move< stmt_notify_ptr > (that.value); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.move< stmt_prof_begin_ptr > (that.value); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.move< stmt_prof_end_ptr > (that.value); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.move< stmt_ptr > (that.value); @@ -1614,6 +1662,10 @@ namespace xsk { namespace gsc { namespace h1 { yylhs.value.emplace< stmt_break_ptr > (); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + yylhs.value.emplace< stmt_breakpoint_ptr > (); + break; + case symbol_kind::S_stmt_call: // stmt_call yylhs.value.emplace< stmt_call_ptr > (); break; @@ -1659,6 +1711,14 @@ namespace xsk { namespace gsc { namespace h1 { yylhs.value.emplace< stmt_notify_ptr > (); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + yylhs.value.emplace< stmt_prof_begin_ptr > (); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + yylhs.value.emplace< stmt_prof_end_ptr > (); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt yylhs.value.emplace< stmt_ptr > (); @@ -1745,1177 +1805,1213 @@ namespace xsk { namespace gsc { namespace h1 { switch (yyn) { case 2: // root: program -#line 233 "parser.ypp" - { ast = std::move(yystack_[0].value.as < program_ptr > ()); } -#line 1751 "parser.cpp" - break; - - case 3: // root: %empty -#line 234 "parser.ypp" - { ast = std::make_unique(yylhs.location); } -#line 1757 "parser.cpp" - break; - - case 4: // program: program include #line 239 "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 1763 "parser.cpp" - break; - - case 5: // program: program define -#line 241 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } -#line 1769 "parser.cpp" - break; - - case 6: // program: include -#line 243 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } -#line 1775 "parser.cpp" - break; - - case 7: // program: define -#line 245 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } -#line 1781 "parser.cpp" - break; - - case 8: // include: "#include" file ";" -#line 250 "parser.ypp" - { yylhs.value.as < include_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < file_ptr > ())); } -#line 1787 "parser.cpp" - break; - - case 9: // define: usingtree -#line 254 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_usingtree = std::move(yystack_[0].value.as < usingtree_ptr > ()); } -#line 1793 "parser.cpp" - break; - - case 10: // define: constant -#line 255 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_constant = std::move(yystack_[0].value.as < constant_ptr > ()); } -#line 1799 "parser.cpp" - break; - - case 11: // define: thread -#line 256 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_thread = std::move(yystack_[0].value.as < thread_ptr > ()); } -#line 1805 "parser.cpp" - break; - - case 12: // usingtree: "#using_animtree" "(" string ")" ";" -#line 261 "parser.ypp" - { yylhs.value.as < usingtree_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < string_ptr > ())); } + { ast = std::move(yystack_[0].value.as < program_ptr > ()); } #line 1811 "parser.cpp" break; - case 13: // constant: name "=" expr ";" -#line 266 "parser.ypp" - { yylhs.value.as < constant_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 3: // root: %empty +#line 240 "parser.ypp" + { ast = std::make_unique(yylhs.location); } #line 1817 "parser.cpp" break; - case 14: // thread: name "(" parameters ")" stmt_block -#line 271 "parser.ypp" - { yylhs.value.as < thread_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < name_ptr > ()), std::move(yystack_[2].value.as < parameters_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } + case 4: // program: program include +#line 245 "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 1823 "parser.cpp" break; - case 15: // parameters: parameters "," name -#line 276 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::move(yystack_[2].value.as < parameters_ptr > ()); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } + case 5: // program: program define +#line 247 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1829 "parser.cpp" break; - case 16: // parameters: name -#line 278 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } + case 6: // program: include +#line 249 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } #line 1835 "parser.cpp" break; - case 17: // parameters: %empty -#line 280 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); } + case 7: // program: define +#line 251 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1841 "parser.cpp" break; - case 18: // stmt: stmt_block -#line 284 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_list = std::move(yystack_[0].value.as < stmt_list_ptr > ()); } + case 8: // include: "#include" file ";" +#line 256 "parser.ypp" + { yylhs.value.as < include_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < file_ptr > ())); } #line 1847 "parser.cpp" break; - case 19: // stmt: stmt_call -#line 285 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_call = std::move(yystack_[0].value.as < stmt_call_ptr > ()); } + case 9: // define: usingtree +#line 260 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_usingtree = std::move(yystack_[0].value.as < usingtree_ptr > ()); } #line 1853 "parser.cpp" break; - case 20: // stmt: stmt_assign -#line 286 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_assign = std::move(yystack_[0].value.as < stmt_assign_ptr > ()); } + case 10: // define: constant +#line 261 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_constant = std::move(yystack_[0].value.as < constant_ptr > ()); } #line 1859 "parser.cpp" break; - case 21: // stmt: stmt_endon -#line 287 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_endon = std::move(yystack_[0].value.as < stmt_endon_ptr > ()); } + case 11: // define: thread +#line 262 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_thread = std::move(yystack_[0].value.as < thread_ptr > ()); } #line 1865 "parser.cpp" break; - case 22: // stmt: stmt_notify -#line 288 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_notify = std::move(yystack_[0].value.as < stmt_notify_ptr > ()); } + case 12: // usingtree: "#using_animtree" "(" string ")" ";" +#line 267 "parser.ypp" + { yylhs.value.as < usingtree_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < string_ptr > ())); } #line 1871 "parser.cpp" break; - case 23: // stmt: stmt_wait -#line 289 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_wait = std::move(yystack_[0].value.as < stmt_wait_ptr > ()); } + case 13: // constant: name "=" expr ";" +#line 272 "parser.ypp" + { yylhs.value.as < constant_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } #line 1877 "parser.cpp" break; - case 24: // stmt: stmt_waittill -#line 290 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill_ptr > ()); } + case 14: // thread: name "(" parameters ")" stmt_block +#line 277 "parser.ypp" + { yylhs.value.as < thread_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < name_ptr > ()), std::move(yystack_[2].value.as < parameters_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } #line 1883 "parser.cpp" break; - case 25: // stmt: stmt_waittillmatch -#line 291 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch_ptr > ()); } + case 15: // parameters: parameters "," name +#line 282 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::move(yystack_[2].value.as < parameters_ptr > ()); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } #line 1889 "parser.cpp" break; - case 26: // stmt: stmt_waittillframeend -#line 292 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend_ptr > ()); } + case 16: // parameters: name +#line 284 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } #line 1895 "parser.cpp" break; - case 27: // stmt: stmt_waitframe -#line 293 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waitframe = std::move(yystack_[0].value.as < stmt_waitframe_ptr > ()); } + case 17: // parameters: %empty +#line 286 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); } #line 1901 "parser.cpp" break; - case 28: // stmt: stmt_if -#line 294 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_if = std::move(yystack_[0].value.as < stmt_if_ptr > ()); } + case 18: // stmt: stmt_block +#line 290 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_list = std::move(yystack_[0].value.as < stmt_list_ptr > ()); } #line 1907 "parser.cpp" break; - case 29: // stmt: stmt_ifelse -#line 295 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse_ptr > ()); } + case 19: // stmt: stmt_call +#line 291 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_call = std::move(yystack_[0].value.as < stmt_call_ptr > ()); } #line 1913 "parser.cpp" break; - case 30: // stmt: stmt_while -#line 296 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_while = std::move(yystack_[0].value.as < stmt_while_ptr > ()); } + case 20: // stmt: stmt_assign +#line 292 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_assign = std::move(yystack_[0].value.as < stmt_assign_ptr > ()); } #line 1919 "parser.cpp" break; - case 31: // stmt: stmt_for -#line 297 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_for = std::move(yystack_[0].value.as < stmt_for_ptr > ()); } + case 21: // stmt: stmt_endon +#line 293 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_endon = std::move(yystack_[0].value.as < stmt_endon_ptr > ()); } #line 1925 "parser.cpp" break; - case 32: // stmt: stmt_foreach -#line 298 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach_ptr > ()); } + case 22: // stmt: stmt_notify +#line 294 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_notify = std::move(yystack_[0].value.as < stmt_notify_ptr > ()); } #line 1931 "parser.cpp" break; - case 33: // stmt: stmt_switch -#line 299 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_switch = std::move(yystack_[0].value.as < stmt_switch_ptr > ()); } + case 23: // stmt: stmt_wait +#line 295 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_wait = std::move(yystack_[0].value.as < stmt_wait_ptr > ()); } #line 1937 "parser.cpp" break; - case 34: // stmt: stmt_case -#line 300 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_case = std::move(yystack_[0].value.as < stmt_case_ptr > ()); } + case 24: // stmt: stmt_waittill +#line 296 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill_ptr > ()); } #line 1943 "parser.cpp" break; - case 35: // stmt: stmt_default -#line 301 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_default = std::move(yystack_[0].value.as < stmt_default_ptr > ()); } + case 25: // stmt: stmt_waittillmatch +#line 297 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch_ptr > ()); } #line 1949 "parser.cpp" break; - case 36: // stmt: stmt_break -#line 302 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_break = std::move(yystack_[0].value.as < stmt_break_ptr > ()); } + case 26: // stmt: stmt_waittillframeend +#line 298 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend_ptr > ()); } #line 1955 "parser.cpp" break; - case 37: // stmt: stmt_continue -#line 303 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_continue = std::move(yystack_[0].value.as < stmt_continue_ptr > ()); } + case 27: // stmt: stmt_waitframe +#line 299 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waitframe = std::move(yystack_[0].value.as < stmt_waitframe_ptr > ()); } #line 1961 "parser.cpp" break; - case 38: // stmt: stmt_return -#line 304 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_return = std::move(yystack_[0].value.as < stmt_return_ptr > ()); } + case 28: // stmt: stmt_if +#line 300 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_if = std::move(yystack_[0].value.as < stmt_if_ptr > ()); } #line 1967 "parser.cpp" break; - case 39: // stmt_block: "{" stmt_list "}" -#line 308 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); } + case 29: // stmt: stmt_ifelse +#line 301 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse_ptr > ()); } #line 1973 "parser.cpp" break; - case 40: // stmt_block: "{" "}" -#line 309 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); } + case 30: // stmt: stmt_while +#line 302 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_while = std::move(yystack_[0].value.as < stmt_while_ptr > ()); } #line 1979 "parser.cpp" break; - case 41: // stmt_list: stmt_list stmt -#line 314 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 31: // stmt: stmt_for +#line 303 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_for = std::move(yystack_[0].value.as < stmt_for_ptr > ()); } #line 1985 "parser.cpp" break; - case 42: // stmt_list: stmt -#line 316 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 32: // stmt: stmt_foreach +#line 304 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach_ptr > ()); } #line 1991 "parser.cpp" break; - case 43: // stmt_call: expr_call ";" -#line 321 "parser.ypp" - { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } + case 33: // stmt: stmt_switch +#line 305 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_switch = std::move(yystack_[0].value.as < stmt_switch_ptr > ()); } #line 1997 "parser.cpp" break; - case 44: // stmt_call: expr_call_thread ";" -#line 323 "parser.ypp" - { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } + case 34: // stmt: stmt_case +#line 306 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_case = std::move(yystack_[0].value.as < stmt_case_ptr > ()); } #line 2003 "parser.cpp" break; - case 45: // stmt_assign: expr_assign ";" -#line 328 "parser.ypp" - { yylhs.value.as < stmt_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_assign_ptr > ())); } + case 35: // stmt: stmt_default +#line 307 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_default = std::move(yystack_[0].value.as < stmt_default_ptr > ()); } #line 2009 "parser.cpp" break; - case 46: // stmt_endon: object "endon" "(" expr ")" ";" -#line 333 "parser.ypp" - { yylhs.value.as < stmt_endon_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ())); } + case 36: // stmt: stmt_break +#line 308 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_break = std::move(yystack_[0].value.as < stmt_break_ptr > ()); } #line 2015 "parser.cpp" break; - case 47: // stmt_notify: object "notify" "(" expr "," expr_arguments ")" ";" -#line 338 "parser.ypp" - { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 37: // stmt: stmt_continue +#line 309 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_continue = std::move(yystack_[0].value.as < stmt_continue_ptr > ()); } #line 2021 "parser.cpp" break; - case 48: // stmt_notify: object "notify" "(" expr ")" ";" -#line 340 "parser.ypp" - { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 38: // stmt: stmt_return +#line 310 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_return = std::move(yystack_[0].value.as < stmt_return_ptr > ()); } #line 2027 "parser.cpp" break; - case 49: // stmt_wait: "wait" expr ";" -#line 345 "parser.ypp" - { yylhs.value.as < stmt_wait_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } + case 39: // stmt: stmt_breakpoint +#line 311 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_breakpoint = std::move(yystack_[0].value.as < stmt_breakpoint_ptr > ()); } #line 2033 "parser.cpp" break; - case 50: // stmt_waittill: object "waittill" "(" expr "," expr_arguments ")" ";" -#line 350 "parser.ypp" - { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 40: // stmt: stmt_prof_begin +#line 312 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_prof_begin = std::move(yystack_[0].value.as < stmt_prof_begin_ptr > ()); } #line 2039 "parser.cpp" break; - case 51: // stmt_waittill: object "waittill" "(" expr ")" ";" -#line 352 "parser.ypp" - { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 41: // stmt: stmt_prof_end +#line 313 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_prof_end = std::move(yystack_[0].value.as < stmt_prof_end_ptr > ()); } #line 2045 "parser.cpp" break; - case 52: // stmt_waittillmatch: object "waittillmatch" "(" expr "," expr_arguments ")" ";" -#line 357 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 42: // stmt_block: "{" stmt_list "}" +#line 317 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); } #line 2051 "parser.cpp" break; - case 53: // stmt_waittillmatch: object "waittillmatch" "(" expr ")" ";" -#line 359 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 43: // stmt_block: "{" "}" +#line 318 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); } #line 2057 "parser.cpp" break; - case 54: // stmt_waittillframeend: "waittillframeend" ";" -#line 364 "parser.ypp" - { yylhs.value.as < stmt_waittillframeend_ptr > () = std::make_unique(yylhs.location); } + case 44: // stmt_list: stmt_list stmt +#line 323 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2063 "parser.cpp" break; - case 55: // stmt_waitframe: "waitframe" ";" -#line 369 "parser.ypp" - { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } + case 45: // stmt_list: stmt +#line 325 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2069 "parser.cpp" break; - case 56: // stmt_waitframe: "waitframe" "(" ")" ";" -#line 371 "parser.ypp" - { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } + case 46: // stmt_call: expr_call ";" +#line 330 "parser.ypp" + { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } #line 2075 "parser.cpp" break; - case 57: // stmt_if: "if" "(" expr ")" stmt -#line 376 "parser.ypp" - { yylhs.value.as < stmt_if_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 47: // stmt_call: expr_call_thread ";" +#line 332 "parser.ypp" + { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } #line 2081 "parser.cpp" break; - case 58: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 381 "parser.ypp" - { yylhs.value.as < stmt_ifelse_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 48: // stmt_assign: expr_assign ";" +#line 337 "parser.ypp" + { yylhs.value.as < stmt_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_assign_ptr > ())); } #line 2087 "parser.cpp" break; - case 59: // stmt_while: "while" "(" expr ")" stmt -#line 386 "parser.ypp" - { yylhs.value.as < stmt_while_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 49: // stmt_endon: object "endon" "(" expr ")" ";" +#line 342 "parser.ypp" + { yylhs.value.as < stmt_endon_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ())); } #line 2093 "parser.cpp" break; - case 60: // stmt_for: "for" "(" for_stmt ";" for_expr ";" for_stmt ")" stmt -#line 391 "parser.ypp" - { yylhs.value.as < stmt_for_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[6].value.as < stmt_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 50: // stmt_notify: object "notify" "(" expr "," expr_arguments ")" ";" +#line 347 "parser.ypp" + { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2099 "parser.cpp" break; - case 61: // stmt_foreach: "foreach" "(" name "in" expr ")" stmt -#line 396 "parser.ypp" - { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 51: // stmt_notify: object "notify" "(" expr ")" ";" +#line 349 "parser.ypp" + { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2105 "parser.cpp" break; - case 62: // stmt_foreach: "foreach" "(" name "," name "in" expr ")" stmt -#line 398 "parser.ypp" - { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[6].value.as < name_ptr > ())), expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 52: // stmt_wait: "wait" expr ";" +#line 354 "parser.ypp" + { yylhs.value.as < stmt_wait_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2111 "parser.cpp" break; - case 63: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 403 "parser.ypp" - { yylhs.value.as < stmt_switch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } + case 53: // stmt_waittill: object "waittill" "(" expr "," expr_arguments ")" ";" +#line 359 "parser.ypp" + { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2117 "parser.cpp" break; - case 64: // stmt_case: "case" integer ":" -#line 408 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } + case 54: // stmt_waittill: object "waittill" "(" expr ")" ";" +#line 361 "parser.ypp" + { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2123 "parser.cpp" break; - case 65: // stmt_case: "case" neg_integer ":" -#line 410 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } + case 55: // stmt_waittillmatch: object "waittillmatch" "(" expr "," expr_arguments ")" ";" +#line 366 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2129 "parser.cpp" break; - case 66: // stmt_case: "case" string ":" -#line 412 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < string_ptr > ())), std::make_unique(yylhs.location)); } + case 56: // stmt_waittillmatch: object "waittillmatch" "(" expr ")" ";" +#line 368 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2135 "parser.cpp" break; - case 67: // stmt_default: "default" ":" -#line 417 "parser.ypp" - { yylhs.value.as < stmt_default_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } + case 57: // stmt_waittillframeend: "waittillframeend" ";" +#line 373 "parser.ypp" + { yylhs.value.as < stmt_waittillframeend_ptr > () = std::make_unique(yylhs.location); } #line 2141 "parser.cpp" break; - case 68: // stmt_break: "break" ";" -#line 422 "parser.ypp" - { yylhs.value.as < stmt_break_ptr > () = std::make_unique(yylhs.location); } + case 58: // stmt_waitframe: "waitframe" ";" +#line 378 "parser.ypp" + { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } #line 2147 "parser.cpp" break; - case 69: // stmt_continue: "continue" ";" -#line 427 "parser.ypp" - { yylhs.value.as < stmt_continue_ptr > () = std::make_unique(yylhs.location); } + case 59: // stmt_waitframe: "waitframe" "(" ")" ";" +#line 380 "parser.ypp" + { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } #line 2153 "parser.cpp" break; - case 70: // stmt_return: "return" expr ";" -#line 432 "parser.ypp" - { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } + case 60: // stmt_if: "if" "(" expr ")" stmt +#line 385 "parser.ypp" + { yylhs.value.as < stmt_if_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2159 "parser.cpp" break; - case 71: // stmt_return: "return" ";" -#line 434 "parser.ypp" - { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } + case 61: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 390 "parser.ypp" + { yylhs.value.as < stmt_ifelse_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2165 "parser.cpp" break; - case 72: // for_stmt: expr_assign -#line 438 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_list = std::make_unique(yylhs.location); yylhs.value.as < stmt_ptr > ().as_list->stmts.push_back(stmt_ptr(std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_assign_ptr > ())))); } + case 62: // stmt_while: "while" "(" expr ")" stmt +#line 395 "parser.ypp" + { yylhs.value.as < stmt_while_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2171 "parser.cpp" break; - case 73: // for_stmt: %empty -#line 439 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_node = std::make_unique(yylhs.location); } + case 63: // stmt_for: "for" "(" for_stmt ";" for_expr ";" for_stmt ")" stmt +#line 400 "parser.ypp" + { yylhs.value.as < stmt_for_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[6].value.as < stmt_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2177 "parser.cpp" break; - case 74: // for_expr: expr -#line 443 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 64: // stmt_foreach: "foreach" "(" name "in" expr ")" stmt +#line 405 "parser.ypp" + { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2183 "parser.cpp" break; - case 75: // for_expr: %empty -#line 444 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location); } + case 65: // stmt_foreach: "foreach" "(" name "," name "in" expr ")" stmt +#line 407 "parser.ypp" + { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[6].value.as < name_ptr > ())), expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2189 "parser.cpp" break; - case 76: // expr: expr_compare -#line 448 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 66: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 412 "parser.ypp" + { yylhs.value.as < stmt_switch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } #line 2195 "parser.cpp" break; - case 77: // expr: expr_binary -#line 449 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 67: // stmt_case: "case" integer ":" +#line 417 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } #line 2201 "parser.cpp" break; - case 78: // expr: expr_primitive -#line 450 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 68: // stmt_case: "case" neg_integer ":" +#line 419 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } #line 2207 "parser.cpp" break; - case 79: // expr_assign: "++" object -#line 454 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } + case 69: // stmt_case: "case" string ":" +#line 421 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < string_ptr > ())), std::make_unique(yylhs.location)); } #line 2213 "parser.cpp" break; - case 80: // expr_assign: "--" object -#line 455 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } + case 70: // stmt_default: "default" ":" +#line 426 "parser.ypp" + { yylhs.value.as < stmt_default_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2219 "parser.cpp" break; - case 81: // expr_assign: object "++" -#line 456 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 71: // stmt_break: "break" ";" +#line 431 "parser.ypp" + { yylhs.value.as < stmt_break_ptr > () = std::make_unique(yylhs.location); } #line 2225 "parser.cpp" break; - case 82: // expr_assign: object "--" -#line 457 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 72: // stmt_continue: "continue" ";" +#line 436 "parser.ypp" + { yylhs.value.as < stmt_continue_ptr > () = std::make_unique(yylhs.location); } #line 2231 "parser.cpp" break; - case 83: // expr_assign: object "=" expr -#line 458 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 73: // stmt_return: "return" expr ";" +#line 441 "parser.ypp" + { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2237 "parser.cpp" break; - case 84: // expr_assign: object "|=" expr -#line 459 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 74: // stmt_return: "return" ";" +#line 443 "parser.ypp" + { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2243 "parser.cpp" break; - case 85: // expr_assign: object "&=" expr -#line 460 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 75: // stmt_breakpoint: "breakpoint" ";" +#line 448 "parser.ypp" + { yylhs.value.as < stmt_breakpoint_ptr > () = std::make_unique(yylhs.location); } #line 2249 "parser.cpp" break; - case 86: // expr_assign: object "^=" expr -#line 461 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 76: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" +#line 453 "parser.ypp" + { yylhs.value.as < stmt_prof_begin_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2255 "parser.cpp" break; - case 87: // expr_assign: object "<<=" expr -#line 462 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()),std::move( yystack_[0].value.as < expr_ptr > ())); } + case 77: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" +#line 458 "parser.ypp" + { yylhs.value.as < stmt_prof_end_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2261 "parser.cpp" break; - case 88: // expr_assign: object ">>=" expr -#line 463 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 78: // for_stmt: expr_assign +#line 462 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_list = std::make_unique(yylhs.location); yylhs.value.as < stmt_ptr > ().as_list->stmts.push_back(stmt_ptr(std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_assign_ptr > ())))); } #line 2267 "parser.cpp" break; - case 89: // expr_assign: object "+=" expr -#line 464 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 79: // for_stmt: %empty +#line 463 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_node = std::make_unique(yylhs.location); } #line 2273 "parser.cpp" break; - case 90: // expr_assign: object "-=" expr -#line 465 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 80: // for_expr: expr +#line 467 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2279 "parser.cpp" break; - case 91: // expr_assign: object "*=" expr -#line 466 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 81: // for_expr: %empty +#line 468 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location); } #line 2285 "parser.cpp" break; - case 92: // expr_assign: object "/=" expr -#line 467 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 82: // expr: expr_compare +#line 472 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2291 "parser.cpp" break; - case 93: // expr_assign: object "%=" expr -#line 468 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 83: // expr: expr_binary +#line 473 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2297 "parser.cpp" break; - case 94: // expr_compare: expr "||" expr -#line 472 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 84: // expr: expr_primitive +#line 474 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2303 "parser.cpp" break; - case 95: // expr_compare: expr "&&" expr -#line 473 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 85: // expr_assign: "++" object +#line 478 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } #line 2309 "parser.cpp" break; - case 96: // expr_compare: expr "==" expr -#line 474 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 86: // expr_assign: "--" object +#line 479 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } #line 2315 "parser.cpp" break; - case 97: // expr_compare: expr "!=" expr -#line 475 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 87: // expr_assign: object "++" +#line 480 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2321 "parser.cpp" break; - case 98: // expr_compare: expr "<=" expr -#line 476 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 88: // expr_assign: object "--" +#line 481 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2327 "parser.cpp" break; - case 99: // expr_compare: expr ">=" expr -#line 477 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 89: // expr_assign: object "=" expr +#line 482 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2333 "parser.cpp" break; - case 100: // expr_compare: expr "<" expr -#line 478 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 90: // expr_assign: object "|=" expr +#line 483 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2339 "parser.cpp" break; - case 101: // expr_compare: expr ">" expr -#line 479 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 91: // expr_assign: object "&=" expr +#line 484 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2345 "parser.cpp" break; - case 102: // expr_binary: expr "|" expr -#line 483 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 92: // expr_assign: object "^=" expr +#line 485 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2351 "parser.cpp" break; - case 103: // expr_binary: expr "&" expr -#line 484 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 93: // expr_assign: object "<<=" expr +#line 486 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()),std::move( yystack_[0].value.as < expr_ptr > ())); } #line 2357 "parser.cpp" break; - case 104: // expr_binary: expr "^" expr -#line 485 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 94: // expr_assign: object ">>=" expr +#line 487 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2363 "parser.cpp" break; - case 105: // expr_binary: expr "<<" expr -#line 486 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 95: // expr_assign: object "+=" expr +#line 488 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2369 "parser.cpp" break; - case 106: // expr_binary: expr ">>" expr -#line 487 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 96: // expr_assign: object "-=" expr +#line 489 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2375 "parser.cpp" break; - case 107: // expr_binary: expr "+" expr -#line 488 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 97: // expr_assign: object "*=" expr +#line 490 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2381 "parser.cpp" break; - case 108: // expr_binary: expr "-" expr -#line 489 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 98: // expr_assign: object "/=" expr +#line 491 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2387 "parser.cpp" break; - case 109: // expr_binary: expr "*" expr -#line 490 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 99: // expr_assign: object "%=" expr +#line 492 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2393 "parser.cpp" break; - case 110: // expr_binary: expr "/" expr -#line 491 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 100: // expr_compare: expr "||" expr +#line 496 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2399 "parser.cpp" break; - case 111: // expr_binary: expr "%" expr -#line 492 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 101: // expr_compare: expr "&&" expr +#line 497 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2405 "parser.cpp" break; - case 112: // expr_primitive: "(" expr ")" -#line 496 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[1].value.as < expr_ptr > ()); } + case 102: // expr_compare: expr "==" expr +#line 498 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2411 "parser.cpp" break; - case 113: // expr_primitive: "~" expr -#line 497 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } + case 103: // expr_compare: expr "!=" expr +#line 499 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2417 "parser.cpp" break; - case 114: // expr_primitive: "!" expr -#line 498 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } + case 104: // expr_compare: expr "<=" expr +#line 500 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2423 "parser.cpp" break; - case 115: // expr_primitive: expr_call -#line 499 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 105: // expr_compare: expr ">=" expr +#line 501 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2429 "parser.cpp" break; - case 116: // expr_primitive: expr_call_thread -#line 500 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 106: // expr_compare: expr "<" expr +#line 502 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2435 "parser.cpp" break; - case 117: // expr_primitive: expr_call_childthread -#line 501 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 107: // expr_compare: expr ">" expr +#line 503 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2441 "parser.cpp" break; - case 118: // expr_primitive: expr_function -#line 502 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 108: // expr_binary: expr "|" expr +#line 507 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2447 "parser.cpp" break; - case 119: // expr_primitive: expr_add_array -#line 503 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 109: // expr_binary: expr "&" expr +#line 508 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2453 "parser.cpp" break; - case 120: // expr_primitive: expr_array -#line 504 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 110: // expr_binary: expr "^" expr +#line 509 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2459 "parser.cpp" break; - case 121: // expr_primitive: expr_field -#line 505 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 111: // expr_binary: expr "<<" expr +#line 510 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2465 "parser.cpp" break; - case 122: // expr_primitive: expr_size -#line 506 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 112: // expr_binary: expr ">>" expr +#line 511 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2471 "parser.cpp" break; - case 123: // expr_primitive: thisthread -#line 507 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < thisthread_ptr > ()); } + case 113: // expr_binary: expr "+" expr +#line 512 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2477 "parser.cpp" break; - case 124: // expr_primitive: empty_array -#line 508 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < empty_array_ptr > ()); } + case 114: // expr_binary: expr "-" expr +#line 513 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2483 "parser.cpp" break; - case 125: // expr_primitive: undefined -#line 509 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < undefined_ptr > ()); } + case 115: // expr_binary: expr "*" expr +#line 514 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2489 "parser.cpp" break; - case 126: // expr_primitive: game -#line 510 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < game_ptr > ()); } + case 116: // expr_binary: expr "/" expr +#line 515 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2495 "parser.cpp" break; - case 127: // expr_primitive: self -#line 511 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < self_ptr > ()); } + case 117: // expr_binary: expr "%" expr +#line 516 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2501 "parser.cpp" break; - case 128: // expr_primitive: anim -#line 512 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < anim_ptr > ()); } + case 118: // expr_primitive: "(" expr ")" +#line 520 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[1].value.as < expr_ptr > ()); } #line 2507 "parser.cpp" break; - case 129: // expr_primitive: level -#line 513 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < level_ptr > ()); } + case 119: // expr_primitive: "~" expr +#line 521 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2513 "parser.cpp" break; - case 130: // expr_primitive: animation -#line 514 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animation_ptr > ()); } + case 120: // expr_primitive: "!" expr +#line 522 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2519 "parser.cpp" break; - case 131: // expr_primitive: animtree -#line 515 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animtree_ptr > ()); } + case 121: // expr_primitive: expr_call +#line 523 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2525 "parser.cpp" break; - case 132: // expr_primitive: name -#line 516 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < name_ptr > ()); } + case 122: // expr_primitive: expr_call_thread +#line 524 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2531 "parser.cpp" break; - case 133: // expr_primitive: istring -#line 517 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < istring_ptr > ()); } + case 123: // expr_primitive: expr_call_childthread +#line 525 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2537 "parser.cpp" break; - case 134: // expr_primitive: string -#line 518 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < string_ptr > ()); } + case 124: // expr_primitive: expr_function +#line 526 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2543 "parser.cpp" break; - case 135: // expr_primitive: vector -#line 519 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < vector_ptr > ()); } + case 125: // expr_primitive: expr_add_array +#line 527 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2549 "parser.cpp" break; - case 136: // expr_primitive: neg_float -#line 520 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } + case 126: // expr_primitive: expr_array +#line 528 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2555 "parser.cpp" break; - case 137: // expr_primitive: neg_integer -#line 521 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } + case 127: // expr_primitive: expr_field +#line 529 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2561 "parser.cpp" break; - case 138: // expr_primitive: float -#line 522 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } + case 128: // expr_primitive: expr_size +#line 530 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2567 "parser.cpp" break; - case 139: // expr_primitive: integer -#line 523 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } + case 129: // expr_primitive: thisthread +#line 531 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < thisthread_ptr > ()); } #line 2573 "parser.cpp" break; - case 140: // expr_primitive: false -#line 524 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < false_ptr > ()); } + case 130: // expr_primitive: empty_array +#line 532 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < empty_array_ptr > ()); } #line 2579 "parser.cpp" break; - case 141: // expr_primitive: true -#line 525 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < true_ptr > ()); } + case 131: // expr_primitive: undefined +#line 533 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < undefined_ptr > ()); } #line 2585 "parser.cpp" break; - case 142: // expr_call: expr_call_function -#line 529 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 132: // expr_primitive: game +#line 534 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < game_ptr > ()); } #line 2591 "parser.cpp" break; - case 143: // expr_call: expr_call_pointer -#line 530 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 133: // expr_primitive: self +#line 535 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < self_ptr > ()); } #line 2597 "parser.cpp" break; - case 144: // expr_call: object expr_call_function -#line 531 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 134: // expr_primitive: anim +#line 536 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < anim_ptr > ()); } #line 2603 "parser.cpp" break; - case 145: // expr_call: object expr_call_pointer -#line 532 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 135: // expr_primitive: level +#line 537 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < level_ptr > ()); } #line 2609 "parser.cpp" break; - case 146: // expr_call_thread: "thread" expr_call_function -#line 536 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 136: // expr_primitive: animation +#line 538 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animation_ptr > ()); } #line 2615 "parser.cpp" break; - case 147: // expr_call_thread: "thread" expr_call_pointer -#line 537 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 137: // expr_primitive: animtree +#line 539 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animtree_ptr > ()); } #line 2621 "parser.cpp" break; - case 148: // expr_call_thread: object "thread" expr_call_function -#line 538 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 138: // expr_primitive: name +#line 540 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < name_ptr > ()); } #line 2627 "parser.cpp" break; - case 149: // expr_call_thread: object "thread" expr_call_pointer -#line 539 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 139: // expr_primitive: istring +#line 541 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < istring_ptr > ()); } #line 2633 "parser.cpp" break; - case 150: // expr_call_childthread: "childthread" expr_call_function -#line 543 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 140: // expr_primitive: string +#line 542 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < string_ptr > ()); } #line 2639 "parser.cpp" break; - case 151: // expr_call_childthread: "childthread" expr_call_pointer -#line 544 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 141: // expr_primitive: vector +#line 543 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < vector_ptr > ()); } #line 2645 "parser.cpp" break; - case 152: // expr_call_childthread: object "childthread" expr_call_function -#line 545 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 142: // expr_primitive: neg_float +#line 544 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } #line 2651 "parser.cpp" break; - case 153: // expr_call_childthread: object "childthread" expr_call_pointer -#line 546 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 143: // expr_primitive: neg_integer +#line 545 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } #line 2657 "parser.cpp" break; - case 154: // expr_call_function: name "(" expr_arguments ")" -#line 551 "parser.ypp" - {yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::make_unique(), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 144: // expr_primitive: float +#line 546 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } #line 2663 "parser.cpp" break; - case 155: // expr_call_function: file "::" name "(" expr_arguments ")" -#line 553 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < file_ptr > ()), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 145: // expr_primitive: integer +#line 547 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } #line 2669 "parser.cpp" break; - case 156: // expr_call_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 558 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, false, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 146: // expr_primitive: false +#line 548 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < false_ptr > ()); } #line 2675 "parser.cpp" break; - case 157: // expr_call_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 560 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, true, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 147: // expr_primitive: true +#line 549 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < true_ptr > ()); } #line 2681 "parser.cpp" break; - case 158: // expr_arguments: expr_arguments_filled -#line 564 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } + case 148: // expr_call: expr_call_function +#line 553 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2687 "parser.cpp" break; - case 159: // expr_arguments: expr_arguments_empty -#line 565 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } + case 149: // expr_call: expr_call_pointer +#line 554 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2693 "parser.cpp" break; - case 160: // expr_arguments_filled: expr_arguments "," expr -#line 570 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[2].value.as < expr_arguments_ptr > ()); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } + case 150: // expr_call: object expr_call_function +#line 555 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2699 "parser.cpp" break; - case 161: // expr_arguments_filled: expr -#line 572 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } + case 151: // expr_call: object expr_call_pointer +#line 556 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2705 "parser.cpp" break; - case 162: // expr_arguments_empty: %empty -#line 577 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); } + case 152: // expr_call_thread: "thread" expr_call_function +#line 560 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2711 "parser.cpp" break; - case 163: // expr_function: "::" name -#line 582 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < name_ptr > ())); } + case 153: // expr_call_thread: "thread" expr_call_pointer +#line 561 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2717 "parser.cpp" break; - case 164: // expr_function: file "::" name -#line 584 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < file_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } + case 154: // expr_call_thread: object "thread" expr_call_function +#line 562 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2723 "parser.cpp" break; - case 165: // expr_add_array: "[" expr_arguments_filled "]" -#line 589 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 155: // expr_call_thread: object "thread" expr_call_pointer +#line 563 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2729 "parser.cpp" break; - case 166: // expr_array: object "[" expr "]" -#line 594 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < node_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 156: // expr_call_childthread: "childthread" expr_call_function +#line 567 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2735 "parser.cpp" break; - case 167: // expr_field: object "." name -#line 599 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } + case 157: // expr_call_childthread: "childthread" expr_call_pointer +#line 568 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2741 "parser.cpp" break; - case 168: // expr_size: object "." "size" -#line 604 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ())); } + case 158: // expr_call_childthread: object "childthread" expr_call_function +#line 569 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2747 "parser.cpp" break; - case 169: // object: expr_call -#line 608 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 159: // expr_call_childthread: object "childthread" expr_call_pointer +#line 570 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2753 "parser.cpp" break; - case 170: // object: expr_array -#line 609 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } + case 160: // expr_call_function: name "(" expr_arguments ")" +#line 575 "parser.ypp" + {yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::make_unique(), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2759 "parser.cpp" break; - case 171: // object: expr_field -#line 610 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } + case 161: // expr_call_function: file "::" name "(" expr_arguments ")" +#line 577 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < file_ptr > ()), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2765 "parser.cpp" break; - case 172: // object: game -#line 611 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < game_ptr > ()); } + case 162: // expr_call_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 582 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, false, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2771 "parser.cpp" break; - case 173: // object: self -#line 612 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < self_ptr > ()); } + case 163: // expr_call_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 584 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, true, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2777 "parser.cpp" break; - case 174: // object: anim -#line 613 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < anim_ptr > ()); } + case 164: // expr_arguments: expr_arguments_filled +#line 588 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } #line 2783 "parser.cpp" break; - case 175: // object: level -#line 614 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < level_ptr > ()); } + case 165: // expr_arguments: expr_arguments_empty +#line 589 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } #line 2789 "parser.cpp" break; - case 176: // object: name -#line 615 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < name_ptr > ()); } + case 166: // expr_arguments_filled: expr_arguments "," expr +#line 594 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[2].value.as < expr_arguments_ptr > ()); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2795 "parser.cpp" break; - case 177: // thisthread: "thisthread" -#line 618 "parser.ypp" - { yylhs.value.as < thisthread_ptr > () = std::make_unique(yylhs.location); } + case 167: // expr_arguments_filled: expr +#line 596 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2801 "parser.cpp" break; - case 178: // empty_array: "[" "]" -#line 619 "parser.ypp" - { yylhs.value.as < empty_array_ptr > () = std::make_unique(yylhs.location); } + case 168: // expr_arguments_empty: %empty +#line 601 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); } #line 2807 "parser.cpp" break; - case 179: // undefined: "undefined" -#line 620 "parser.ypp" - { yylhs.value.as < undefined_ptr > () = std::make_unique(yylhs.location); } + case 169: // expr_function: "::" name +#line 606 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2813 "parser.cpp" break; - case 180: // game: "game" -#line 621 "parser.ypp" - { yylhs.value.as < game_ptr > () = std::make_unique(yylhs.location); } + case 170: // expr_function: file "::" name +#line 608 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < file_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2819 "parser.cpp" break; - case 181: // self: "self" -#line 622 "parser.ypp" - { yylhs.value.as < self_ptr > () = std::make_unique(yylhs.location); } + case 171: // expr_add_array: "[" expr_arguments_filled "]" +#line 613 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2825 "parser.cpp" break; - case 182: // anim: "anim" -#line 623 "parser.ypp" - { yylhs.value.as < anim_ptr > () = std::make_unique(yylhs.location); } + case 172: // expr_array: object "[" expr "]" +#line 618 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < node_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2831 "parser.cpp" break; - case 183: // level: "level" -#line 624 "parser.ypp" - { yylhs.value.as < level_ptr > () = std::make_unique(yylhs.location); } + case 173: // expr_field: object "." name +#line 623 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2837 "parser.cpp" break; - case 184: // animation: "%" "identifier" -#line 625 "parser.ypp" - { yylhs.value.as < animation_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 174: // expr_size: object ".size" +#line 628 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2843 "parser.cpp" break; - case 185: // animtree: "#animtree" -#line 626 "parser.ypp" - { yylhs.value.as < animtree_ptr > () = std::make_unique(yylhs.location); } + case 175: // object: expr_call +#line 632 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2849 "parser.cpp" break; - case 186: // name: "identifier" -#line 627 "parser.ypp" - { yylhs.value.as < name_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 176: // object: expr_array +#line 633 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2855 "parser.cpp" break; - case 187: // file: "file path" -#line 628 "parser.ypp" - { yylhs.value.as < file_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 177: // object: expr_field +#line 634 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2861 "parser.cpp" break; - case 188: // istring: "localized string" -#line 629 "parser.ypp" - { yylhs.value.as < istring_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 178: // object: game +#line 635 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < game_ptr > ()); } #line 2867 "parser.cpp" break; - case 189: // string: "string literal" -#line 630 "parser.ypp" - { yylhs.value.as < string_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 179: // object: self +#line 636 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < self_ptr > ()); } #line 2873 "parser.cpp" break; - case 190: // vector: "(" expr "," expr "," expr ")" -#line 631 "parser.ypp" - { yylhs.value.as < vector_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[3].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 180: // object: anim +#line 637 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < anim_ptr > ()); } #line 2879 "parser.cpp" break; - case 191: // neg_float: "-" "float" -#line 632 "parser.ypp" - { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 181: // object: level +#line 638 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < level_ptr > ()); } #line 2885 "parser.cpp" break; - case 192: // neg_integer: "-" "int" -#line 633 "parser.ypp" - { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 182: // object: name +#line 639 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < name_ptr > ()); } #line 2891 "parser.cpp" break; - case 193: // float: "float" -#line 634 "parser.ypp" - { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 183: // thisthread: "thisthread" +#line 642 "parser.ypp" + { yylhs.value.as < thisthread_ptr > () = std::make_unique(yylhs.location); } #line 2897 "parser.cpp" break; - case 194: // integer: "int" -#line 635 "parser.ypp" - { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 184: // empty_array: "[" "]" +#line 643 "parser.ypp" + { yylhs.value.as < empty_array_ptr > () = std::make_unique(yylhs.location); } #line 2903 "parser.cpp" break; - case 195: // false: "false" -#line 636 "parser.ypp" - { yylhs.value.as < false_ptr > () = std::make_unique(yylhs.location); } + case 185: // undefined: "undefined" +#line 644 "parser.ypp" + { yylhs.value.as < undefined_ptr > () = std::make_unique(yylhs.location); } #line 2909 "parser.cpp" break; - case 196: // true: "true" -#line 637 "parser.ypp" - { yylhs.value.as < true_ptr > () = std::make_unique(yylhs.location); } + case 186: // game: "game" +#line 645 "parser.ypp" + { yylhs.value.as < game_ptr > () = std::make_unique(yylhs.location); } #line 2915 "parser.cpp" break; + case 187: // self: "self" +#line 646 "parser.ypp" + { yylhs.value.as < self_ptr > () = std::make_unique(yylhs.location); } +#line 2921 "parser.cpp" + break; -#line 2919 "parser.cpp" + case 188: // anim: "anim" +#line 647 "parser.ypp" + { yylhs.value.as < anim_ptr > () = std::make_unique(yylhs.location); } +#line 2927 "parser.cpp" + break; + + case 189: // level: "level" +#line 648 "parser.ypp" + { yylhs.value.as < level_ptr > () = std::make_unique(yylhs.location); } +#line 2933 "parser.cpp" + break; + + case 190: // animation: "%" "identifier" +#line 649 "parser.ypp" + { yylhs.value.as < animation_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2939 "parser.cpp" + break; + + case 191: // animtree: "#animtree" +#line 650 "parser.ypp" + { yylhs.value.as < animtree_ptr > () = std::make_unique(yylhs.location); } +#line 2945 "parser.cpp" + break; + + case 192: // name: "identifier" +#line 651 "parser.ypp" + { yylhs.value.as < name_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2951 "parser.cpp" + break; + + case 193: // file: "file path" +#line 652 "parser.ypp" + { yylhs.value.as < file_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2957 "parser.cpp" + break; + + case 194: // istring: "localized string" +#line 653 "parser.ypp" + { yylhs.value.as < istring_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2963 "parser.cpp" + break; + + case 195: // string: "string literal" +#line 654 "parser.ypp" + { yylhs.value.as < string_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2969 "parser.cpp" + break; + + case 196: // vector: "(" expr "," expr "," expr ")" +#line 655 "parser.ypp" + { yylhs.value.as < vector_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[3].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } +#line 2975 "parser.cpp" + break; + + case 197: // neg_float: "-" "float" +#line 656 "parser.ypp" + { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 2981 "parser.cpp" + break; + + case 198: // neg_integer: "-" "int" +#line 657 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 2987 "parser.cpp" + break; + + case 199: // float: "float" +#line 658 "parser.ypp" + { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2993 "parser.cpp" + break; + + case 200: // integer: "int" +#line 659 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2999 "parser.cpp" + break; + + case 201: // false: "false" +#line 660 "parser.ypp" + { yylhs.value.as < false_ptr > () = std::make_unique(yylhs.location); } +#line 3005 "parser.cpp" + break; + + case 202: // true: "true" +#line 661 "parser.ypp" + { yylhs.value.as < true_ptr > () = std::make_unique(yylhs.location); } +#line 3011 "parser.cpp" + break; + + +#line 3015 "parser.cpp" default: break; @@ -3099,24 +3195,26 @@ namespace xsk { namespace gsc { namespace h1 { { static const char *const yy_sname[] = { - "end of file", "error", "invalid token", "#include", "#using_animtree", - "#animtree", "endon", "notify", "wait", "waittill", "waittillmatch", - "waittillframeend", "waitframe", "if", "else", "while", "for", "foreach", - "in", "switch", "case", "default", "break", "continue", "return", - "thread", "childthread", "thisthread", "call", "true", "false", - "undefined", "size", "game", "self", "anim", "level", "(", ")", "{", "}", - "[", "]", ",", ".", "::", ":", ";", "++", "--", "<<", ">>", "||", "&&", - "==", "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", - "%=", "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", - "%", "file path", "identifier", "string literal", "localized string", - "float", "int", "ADD_ARRAY", "THEN", "NEG", "ANIMREF", "PREINC", - "PREDEC", "POSTINC", "POSTDEC", "$accept", "root", "program", "include", - "define", "usingtree", "constant", "thread", "parameters", "stmt", - "stmt_block", "stmt_list", "stmt_call", "stmt_assign", "stmt_endon", - "stmt_notify", "stmt_wait", "stmt_waittill", "stmt_waittillmatch", + "end of file", "error", "invalid token", "breakpoint", "prof_begin", + "prof_end", "#include", "#using_animtree", "#animtree", "endon", + "notify", "wait", "waittill", "waittillmatch", "waittillframeend", + "waitframe", "if", "else", "while", "for", "foreach", "in", "switch", + "case", "default", "break", "continue", "return", "thread", + "childthread", "thisthread", "call", "true", "false", "undefined", + ".size", "game", "self", "anim", "level", "(", ")", "{", "}", "[", "]", + ",", ".", "::", ":", ";", "++", "--", "<<", ">>", "||", "&&", "==", "!=", + "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", "|=", + "&=", "^=", ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", "%", + "file path", "identifier", "string literal", "localized string", "float", + "int", "ADD_ARRAY", "THEN", "NEG", "ANIMREF", "PREINC", "PREDEC", + "POSTINC", "POSTDEC", "$accept", "root", "program", "include", "define", + "usingtree", "constant", "thread", "parameters", "stmt", "stmt_block", + "stmt_list", "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", + "stmt_wait", "stmt_waittill", "stmt_waittillmatch", "stmt_waittillframeend", "stmt_waitframe", "stmt_if", "stmt_ifelse", "stmt_while", "stmt_for", "stmt_foreach", "stmt_switch", "stmt_case", - "stmt_default", "stmt_break", "stmt_continue", "stmt_return", "for_stmt", + "stmt_default", "stmt_break", "stmt_continue", "stmt_return", + "stmt_breakpoint", "stmt_prof_begin", "stmt_prof_end", "for_stmt", "for_expr", "expr", "expr_assign", "expr_compare", "expr_binary", "expr_primitive", "expr_call", "expr_call_thread", "expr_call_childthread", "expr_call_function", "expr_call_pointer", @@ -3390,513 +3488,532 @@ namespace xsk { namespace gsc { namespace h1 { } - const short parser::yypact_ninf_ = -230; + const short parser::yypact_ninf_ = -236; - const short parser::yytable_ninf_ = -177; + const short parser::yytable_ninf_ = -183; const short parser::yypact_[] = { - 7, -67, -20, -230, 53, 7, -230, -230, -230, -230, - -230, -21, -230, 13, -10, -230, -230, -230, -3, 607, - -230, -230, 25, -15, -230, -230, 41, 41, -230, 29, - -230, -230, -230, -230, -230, -230, -230, 607, 480, -3, - 607, 607, -50, -1, -230, -230, -230, 1341, -230, -230, - -230, 18, -230, -230, -230, -230, -230, -230, 23, 30, - -230, 332, -230, -230, -230, 446, 507, 569, 573, -230, - -230, -4, 38, -230, -230, -230, -230, -230, -230, -230, - -230, -230, 47, 85, -3, 56, -230, -230, 84, 64, - -230, -230, 86, 905, 480, -230, 1419, 90, 95, -230, - -230, -230, -230, -230, -230, -230, -230, 607, 607, 607, - 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, - 607, 607, 607, 607, 607, 41, 41, 669, -17, -230, - -230, 607, -3, -230, 787, -230, -230, 607, -3, 607, - -230, 607, 1212, 607, -230, 124, 124, 1429, 938, 1501, - 1501, 40, 40, 40, 40, 981, 1460, 1470, 101, 101, - -230, -230, -230, -230, -230, -230, -230, 1251, -230, -230, - -13, -230, 103, 607, 94, -18, 123, 126, 128, 130, - 131, 9, 125, 135, 138, 545, -230, 732, 732, -230, - -230, 826, -230, -230, -230, -230, -230, -230, -230, -230, - -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, - -230, -230, 139, 143, 148, -230, -230, 715, -230, -230, - -230, -230, 84, 1212, 103, 1290, 1328, 133, 1419, -230, - -230, 607, 1375, -230, 132, -230, 607, 607, 630, -3, - 607, 91, 151, 159, 160, -230, -230, -230, -230, 1388, - -230, 6, 6, -230, -230, -230, -230, -230, 152, 172, - 173, 174, -3, -230, -230, 607, 607, 607, 607, 607, - 607, 607, 607, 607, 607, 607, 170, 607, 176, 14, - -230, 177, 1044, 1077, 178, -230, 868, 2, 1087, -230, - -230, -230, -230, 607, 607, 607, 607, 1419, 1419, 1419, - 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 182, 1120, - 607, -230, -230, 865, 865, 607, 607, -3, 85, 1130, - 948, 991, 1034, 607, -230, 42, 207, -230, 187, 1419, - 1163, 205, -230, 188, 190, 607, 193, 607, 195, 607, - 55, -230, 865, 630, 865, 607, -230, -230, 58, -230, - 70, -230, 72, -230, -230, 206, -230, 1173, 198, 199, - 200, 865, 865, -230, -230, -230, -230, -230 + 8, -65, -6, -236, 25, 8, -236, -236, -236, -236, + -236, -32, -236, -8, -28, -236, -236, -236, -17, 774, + -236, -236, 21, 30, -236, -236, 6, 6, -236, 51, + -236, -236, -236, -236, -236, -236, -236, 774, 377, -17, + 774, 774, 10, -3, -236, -236, -236, 1403, -236, -236, + -236, 20, -236, -236, -236, -236, -236, -236, 403, 449, + -236, 472, -236, -236, -236, 739, 798, 858, 930, -236, + -236, 12, 17, -236, -236, -236, -236, -236, -236, -236, + -236, -236, 24, 50, -17, 63, -236, -236, 76, 79, + -236, -236, 80, 967, 377, -236, 1481, 71, 89, -236, + -236, -236, -236, -236, -236, -236, -236, 774, 774, 774, + 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, + 774, 774, 774, 774, 774, 6, 6, -236, 836, -17, + -236, -236, 774, -17, -236, 599, -236, -236, 774, -17, + 774, -236, 774, 1274, 774, -236, 106, 106, 1491, 1000, + 1563, 1563, 130, 130, 130, 130, 1043, 1532, 1522, -37, + -37, -236, -236, -236, -236, -236, -236, -236, 1313, -236, + 31, -236, 96, 87, 101, 104, 774, 88, -20, 123, + 124, 127, 131, 134, -26, 121, 147, 152, 712, -236, + -15, -15, -236, -236, 643, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, 153, 155, + 157, -236, -236, 882, -236, -236, -236, -236, 76, 1274, + 96, 1352, 1390, 132, 1481, -236, -236, 774, -236, 774, + 774, 1437, -236, 140, -236, 774, 774, 544, -17, 774, + 117, 159, 166, 172, -236, -236, -236, -236, 1450, -236, + 173, 173, -236, -236, -236, -236, -236, 182, 184, 187, + 189, -236, -236, 774, 774, 774, 774, 774, 774, 774, + 774, 774, 774, 774, 186, 774, 199, 39, 40, 42, + -236, 190, 1106, 1139, 191, -236, 932, -11, 1149, -236, + -236, -236, -236, 774, 774, 774, 774, 1481, 1481, 1481, + 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 205, 1182, + 774, -236, 196, 200, -236, 687, 687, 774, 774, -17, + 50, 1192, 1010, 1053, 1096, 774, -236, 48, -236, -236, + 225, -236, 203, 1481, 1225, 234, -236, 206, 209, 774, + 212, 774, 213, 774, 65, -236, 687, 544, 687, 774, + -236, -236, 69, -236, 73, -236, 82, -236, -236, 223, + -236, 1235, 217, 220, 222, 687, 687, -236, -236, -236, + -236, -236 }; const unsigned char parser::yydefact_[] = { - 3, 0, 0, 186, 0, 2, 6, 7, 9, 10, - 11, 0, 187, 0, 0, 1, 4, 5, 17, 0, - 8, 189, 0, 0, 16, 185, 0, 0, 177, 0, - 196, 195, 179, 180, 181, 182, 183, 0, 162, 0, - 0, 0, 0, 0, 188, 193, 194, 0, 76, 77, - 78, 115, 116, 117, 142, 143, 118, 119, 120, 121, - 122, 0, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 0, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 0, 0, 0, 0, 146, 147, 0, 0, - 150, 151, 0, 0, 162, 178, 161, 0, 158, 159, - 163, 114, 113, 191, 192, 184, 13, 0, 0, 0, + 3, 0, 0, 192, 0, 2, 6, 7, 9, 10, + 11, 0, 193, 0, 0, 1, 4, 5, 17, 0, + 8, 195, 0, 0, 16, 191, 0, 0, 183, 0, + 202, 201, 185, 186, 187, 188, 189, 0, 168, 0, + 0, 0, 0, 0, 194, 199, 200, 0, 82, 83, + 84, 121, 122, 123, 148, 149, 124, 125, 126, 127, + 128, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 0, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 0, 0, 0, 0, 152, 153, 0, 0, + 156, 157, 0, 0, 168, 184, 167, 0, 164, 165, + 169, 120, 119, 197, 198, 190, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, - 145, 162, 0, 12, 0, 14, 15, 0, 0, 0, - 112, 0, 161, 0, 165, 105, 106, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 107, 108, - 109, 110, 111, 148, 149, 152, 153, 0, 168, 167, - 0, 158, 164, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 40, 0, 0, 42, - 18, 0, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 0, 169, 0, 170, 171, 0, 172, 173, - 174, 175, 176, 0, 0, 0, 0, 0, 160, 166, - 154, 162, 0, 54, 0, 55, 0, 0, 73, 0, - 0, 0, 0, 0, 0, 67, 68, 69, 71, 0, - 169, 79, 80, 39, 41, 45, 43, 44, 0, 0, - 0, 0, 0, 81, 82, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 174, 0, 0, + 150, 151, 168, 0, 12, 0, 14, 15, 0, 0, + 0, 118, 0, 167, 0, 171, 111, 112, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 113, + 114, 115, 116, 117, 154, 155, 158, 159, 0, 173, + 0, 164, 170, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, + 0, 0, 45, 18, 0, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 0, 175, + 0, 176, 177, 0, 178, 179, 180, 181, 182, 0, + 0, 0, 0, 0, 166, 172, 160, 168, 75, 168, + 168, 0, 57, 0, 58, 0, 0, 79, 0, 0, + 0, 0, 0, 0, 70, 71, 72, 74, 0, 175, + 85, 86, 42, 44, 48, 46, 47, 0, 0, 0, + 0, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 49, 0, 0, 0, 0, 72, 0, 0, 0, 66, - 65, 64, 70, 0, 0, 0, 0, 83, 89, 90, - 91, 92, 93, 84, 85, 86, 88, 87, 0, 0, - 162, 155, 56, 0, 0, 75, 0, 0, 0, 0, - 0, 0, 0, 162, 190, 0, 57, 59, 0, 74, - 0, 0, 63, 0, 0, 162, 0, 162, 0, 162, - 0, 156, 0, 73, 0, 0, 46, 48, 0, 51, - 0, 53, 0, 157, 58, 0, 61, 0, 0, 0, - 0, 0, 0, 47, 50, 52, 60, 62 + 52, 0, 0, 0, 0, 78, 0, 0, 0, 69, + 68, 67, 73, 0, 0, 0, 0, 89, 95, 96, + 97, 98, 99, 90, 91, 92, 94, 93, 0, 0, + 168, 161, 0, 0, 59, 0, 0, 81, 0, 0, + 0, 0, 0, 0, 0, 168, 196, 0, 76, 77, + 60, 62, 0, 80, 0, 0, 66, 0, 0, 168, + 0, 168, 0, 168, 0, 162, 0, 79, 0, 0, + 49, 51, 0, 54, 0, 56, 0, 163, 61, 0, + 64, 0, 0, 0, 0, 0, 0, 50, 53, 55, + 63, 65 }; const short parser::yypgoto_[] = { - -230, -230, -230, 243, 244, -230, -230, -230, -230, -178, - -82, -230, -230, -230, -230, -230, -230, -230, -230, -230, - -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, - -230, -230, -93, -230, 35, -229, -230, -230, -230, 27, - 142, -230, -23, -19, 68, -26, -230, -230, -230, 39, - 73, -230, 82, -230, -230, -230, 97, 107, 134, 241, - -230, -230, 0, 5, -230, -12, -230, -230, 74, -230, - 77, -230, -230 + -236, -236, -236, 272, 273, -236, -236, -236, -236, -183, + -76, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -78, -236, 38, -235, -236, + -236, -236, -82, -107, -236, -25, -23, -119, -21, -236, + -236, -236, -22, 98, -236, 156, -236, -236, -236, 192, + 197, 202, 236, -236, -236, 0, 5, -236, -5, -236, + -236, 97, -236, 102, -236, -236 }; const short parser::yydefgoto_[] = { - 0, 4, 5, 6, 7, 8, 9, 10, 23, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 284, 328, 96, 212, 48, 49, 50, 51, - 52, 53, 54, 55, 97, 171, 99, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81 + 0, 4, 5, 6, 7, 8, 9, 10, 23, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 294, 342, 96, 218, 48, + 49, 50, 51, 52, 53, 54, 55, 97, 171, 99, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81 }; const short parser::yytable_[] = { - 11, 135, 22, 86, 90, 11, 13, 87, 91, 285, - 1, 2, 98, 254, 12, 168, 18, 14, 24, 234, - 316, -176, -176, 83, -176, 230, 88, 88, 84, 235, - 143, 89, 89, 131, 29, 103, 104, -176, 129, 100, - -176, 19, 130, -169, -169, 317, -169, 127, -170, -170, - 262, -170, 311, 15, 47, -171, -171, 143, -171, -169, - 20, 88, -169, 82, -170, 3, 89, -170, 98, 29, - 92, -171, 93, 21, -171, 101, 102, -176, -176, 3, - 341, 105, 85, 132, 136, 143, 241, 12, 3, 3, - 107, 108, 21, 353, 133, 46, 358, 137, 143, -169, - -169, 143, 163, 165, -170, -170, 164, 166, 359, 138, - 360, -171, -171, 143, 285, 143, 120, 121, 122, 123, - 124, 131, 12, 3, 134, 88, 88, 139, 169, 142, - 89, 89, 172, 143, 222, 326, 327, 144, 224, 89, - 231, 233, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 236, 213, 167, 237, 354, 238, 356, 239, 240, 242, - 281, 245, 223, 215, 225, 278, 226, 104, 228, 122, - 123, 124, 246, 366, 367, 247, 255, 222, 222, 293, - 256, 222, 89, 89, 129, 257, 89, 289, 130, 170, - 120, 121, 122, 123, 124, 290, 291, 216, 232, 294, - 295, 296, 308, 310, 250, 250, 217, 88, 213, 323, - 249, 342, 89, 345, 312, 315, 215, 215, 129, 129, - 215, 218, 130, 130, 343, 346, 332, 347, 222, 287, - 349, 219, 351, 89, 361, 363, 364, 365, 16, 17, - 355, 88, 88, 0, 0, 243, 89, 89, 244, 0, - 216, 216, 169, 129, 216, 250, 0, 130, 220, 251, - 252, 282, 283, 217, 0, 288, 214, 215, 0, 0, - 0, 0, 0, 0, 218, 218, 88, 0, 218, 0, - 0, 89, 0, 0, 219, 219, 0, 0, 219, 279, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 216, 309, 222, 222, 0, 0, 331, 89, 89, - 286, 220, 220, 0, 0, 220, 0, 0, 319, 320, - 321, 322, 0, 214, 0, 218, 0, 0, 0, 0, - 213, 213, 222, 222, 222, 219, 0, 89, 89, 89, - 329, 330, 215, 215, 0, 0, 0, 125, 126, 0, - 29, 222, 222, 0, 0, 0, 89, 89, 0, 213, - 250, 213, 220, 127, 0, 221, 128, 0, 325, 0, - 357, 215, 215, 215, 0, 0, 216, 216, 213, 213, - 0, 340, 0, 0, 0, 217, 217, 0, 0, 0, - 215, 215, 0, 348, 0, 350, 0, 352, 0, 0, - 218, 218, 0, 12, 3, 216, 216, 216, 0, 0, - 219, 219, 0, 0, 217, 286, 217, 0, 221, 221, - 0, 0, 221, 0, 216, 216, 0, 0, 0, 218, - 218, 218, 0, 217, 217, 0, 0, 220, 220, 219, - 219, 219, 0, 0, 0, 214, 214, 0, 218, 218, - 0, 0, 0, 0, 0, 0, 0, 0, 219, 219, - 0, -172, -172, 0, -172, 0, 220, 220, 220, 221, - 0, 0, 0, 0, 214, 25, 214, -172, 0, 0, - -172, 0, 0, 0, 0, 220, 220, 0, 0, 0, - 0, 0, 0, 214, 214, 26, 27, 28, 29, 30, + 11, 86, 90, 87, 91, 11, 13, 136, 18, 22, + 328, 263, 295, 170, 1, 2, 29, 98, 24, 12, + 243, 33, 34, 35, 36, 15, 88, 88, 220, 85, + 244, 89, 89, 19, 14, 329, 130, 29, 131, 100, + -182, -182, 20, -182, 122, 123, 124, -182, -175, -175, + 85, -175, 132, 219, 250, -175, -182, 47, 21, -182, + 21, 88, 82, 46, -175, 133, 89, -175, 3, 12, + 3, 83, 236, 98, 134, 93, 84, 144, 101, 102, + 321, 322, 105, 323, 137, 144, 144, 220, 144, 355, + 12, 3, 135, 3, 144, 92, -182, -182, 103, 104, + 164, 166, 165, 167, -175, -175, 367, 138, 259, 259, + 372, 144, 219, 221, 373, 144, 132, 144, 287, 144, + 288, 289, 295, 374, 140, 88, 88, 139, 144, 169, + 89, 89, 143, 172, 145, 228, 237, 238, 242, 230, + 89, 239, 340, 341, 240, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 245, 246, 259, 168, 247, 221, 221, + 254, 248, 221, 368, 249, 370, 229, 286, 231, 251, + 232, 291, 234, 107, 108, 120, 121, 122, 123, 124, + 228, 228, 380, 381, 228, 89, 89, 255, 130, 89, + 131, 337, 256, 264, 29, 265, 104, 266, 299, 120, + 121, 122, 123, 124, 241, 300, 354, 128, 220, 220, + 129, 301, 303, 88, 304, 221, 258, 305, 89, 306, + 362, 318, 364, 222, 366, 130, 130, 131, 131, 320, + 324, 327, 356, 219, 219, 335, 338, 228, 297, 220, + 339, 220, 89, 357, 346, 359, 360, 12, 3, 361, + 88, 88, 363, 365, 375, 89, 89, 377, 220, 220, + 378, 130, 379, 131, 219, 259, 219, 16, 17, 369, + 0, 252, 0, 292, 293, 0, 253, 298, 222, 222, + 0, 223, 222, 219, 219, 0, 88, 0, 0, 0, + 0, 89, 0, 221, 221, 0, 0, 0, 0, 0, + 0, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 0, 319, 0, 228, 228, 224, 0, 345, + 89, 89, 225, 0, 221, 221, 221, 226, 0, 0, + 0, 331, 332, 333, 334, 222, 260, 261, 0, 0, + 223, 0, 0, 221, 221, 0, 228, 228, 228, 0, + 0, 89, 89, 89, 0, 343, 344, 0, 0, 0, + 0, 227, 0, 0, 0, 228, 228, 0, 0, 0, + 89, 89, 224, 224, 0, 25, 224, 225, 225, 0, + 0, 225, 226, 226, 0, 0, 226, 371, 0, 0, + 0, 0, 0, 296, 0, 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, 35, 36, 37, 0, 0, - 0, 94, 95, 0, 0, 39, 0, -172, -172, 0, - 0, 0, -173, -173, 0, -173, 0, 0, 0, 0, - 40, 41, 0, 0, 0, 0, 0, 0, -173, 0, - 25, -173, 0, 0, 221, 221, 0, 42, 0, 0, + 0, 94, 95, 222, 222, 39, 227, 227, 0, 0, + 227, -176, -176, 0, -176, 0, 0, 0, -176, 224, + 40, 41, 0, 0, 225, 0, 0, -176, 0, 226, + -176, 0, 0, 0, 222, 222, 222, 42, 0, 0, 43, 12, 3, 21, 44, 45, 46, 0, 0, 0, + 0, 0, 0, 222, 222, 0, 0, -177, -177, 0, + -177, 223, 223, 227, -177, 0, 0, -176, -176, 0, + 0, 0, 0, -177, 0, 0, -177, 0, 0, 0, + 125, 126, 0, 29, 0, 0, 0, 127, 0, 0, + 0, 0, 223, 296, 223, 0, 128, 224, 224, 129, + 0, 0, 225, 225, 0, 0, 0, 226, 226, 0, + 0, 223, 223, -177, -177, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, + 224, 0, 0, 225, 225, 225, 12, 3, 226, 226, + 226, 227, 227, 0, 0, 0, 0, 224, 224, 0, + 0, 0, 225, 225, 0, 29, 0, 226, 226, 0, + 33, 34, 35, 36, 0, 0, 0, 0, 85, 0, + 0, 0, 227, 227, 227, 190, 191, 0, 0, 0, + 0, 0, 173, 174, 175, 0, 0, 0, 0, 0, + 176, 227, 227, 177, 178, 179, 0, 180, 181, 182, + 0, 183, 184, 185, 186, 187, 188, 26, 12, 3, + 29, 0, 0, 0, 0, 33, 34, 35, 36, 0, + 0, 135, 189, 85, 0, 0, 173, 174, 175, 0, + 190, 191, 0, 0, 176, 0, 0, 177, 178, 179, + 0, 180, 181, 182, 0, 183, 184, 185, 186, 187, + 188, 26, 0, 0, 29, 0, 0, 0, 0, 33, + 34, 35, 36, 12, 3, 135, 262, 85, 0, 0, + 173, 174, 175, 0, 190, 191, 0, 0, 176, 0, + 0, 177, 178, 179, 0, 180, 181, 182, 0, 183, + 184, 185, 186, 187, 188, 26, 0, 0, 29, 0, + 25, 0, 0, 33, 34, 35, 36, 12, 3, 135, + 0, 85, 0, 0, 0, 0, 0, 0, 190, 191, 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, - 35, 36, 37, 221, 221, 221, 38, 0, -173, -173, - 39, 0, 248, 0, -174, -174, 0, -174, -175, -175, - 0, -175, 221, 221, 0, 40, 41, 0, 0, 0, - -174, 0, 25, -174, -175, 0, 0, -175, 0, 0, + 35, 36, 37, 0, 0, 0, 38, 0, 0, 0, + 39, 0, 257, 0, 0, 0, 0, -178, -178, 0, + -178, 12, 3, 0, -178, 40, 41, 0, 0, 0, + 0, 0, 25, -178, 0, 0, -178, 0, 0, 0, 0, 0, 42, 0, 0, 43, 12, 3, 21, 44, 45, 46, 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, 35, 36, 37, 0, 0, 0, 38, 0, - -174, -174, 39, 0, -175, -175, 0, 0, 29, 0, - 0, 0, 0, 33, 34, 35, 36, 40, 41, 0, - 0, 85, 0, 0, 25, 0, 0, 0, 187, 188, + 0, 0, 39, -178, -178, 0, -179, -179, 0, -179, + 0, 0, 0, -179, 0, 0, 0, 40, 41, 0, + 0, 0, -179, 0, 25, -179, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 43, 12, 3, 21, 44, 45, 46, 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, 35, 36, 37, 0, 0, 0, - 94, 12, 3, 0, 39, 0, 0, 0, 0, 0, - 0, 258, 259, 0, 260, 261, 0, 0, 0, 40, - 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 94, 0, -179, -179, 39, 0, -180, -180, 0, -180, + 0, 267, 268, -180, 269, 270, 0, 0, 0, 40, + 41, 0, -180, 0, 0, -180, 0, 0, 0, 0, 125, 0, 0, 29, 0, 0, 42, 0, 0, 43, - 12, 3, 21, 44, 45, 46, 127, 0, 0, 262, - 29, 0, 0, 263, 264, 33, 34, 35, 36, 0, - 0, 0, 0, 85, 0, 0, 0, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 0, 0, - 0, 0, 0, 0, 0, 173, 12, 3, 174, 175, - 176, 0, 177, 178, 179, 0, 180, 181, 182, 183, - 184, 185, 26, 12, 3, 29, 0, 0, 0, 0, - 33, 34, 35, 36, 0, 0, 134, 186, 85, 0, - 0, 0, 0, 0, 173, 187, 188, 174, 175, 176, - 0, 177, 178, 179, 0, 180, 181, 182, 183, 184, - 185, 26, 0, 0, 29, 0, 0, 0, 0, 33, - 34, 35, 36, 0, 0, 134, 253, 85, 12, 3, - 0, 0, 0, 173, 187, 188, 174, 175, 176, 0, - 177, 178, 179, 0, 180, 181, 182, 183, 184, 185, - 26, 0, 0, 29, 0, 0, 29, 0, 33, 34, - 35, 36, 0, 0, 134, 0, 85, 12, 3, 127, - 0, 0, 262, 187, 188, 0, 263, 264, 0, 0, + 12, 3, 21, 44, 45, 46, 128, 0, 0, 129, + 0, 0, 0, 271, 272, 0, 0, 0, 0, 0, + 0, 0, -180, -180, 0, 0, 0, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, -181, -181, + 0, -181, 0, 29, 0, -181, 12, 3, 0, 0, + 0, 0, 0, 0, -181, 0, 128, -181, 0, 129, + 0, 0, 0, 271, 272, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 141, 0, + 0, 0, 0, 142, -181, -181, 12, 3, 0, 0, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 0, 0, 140, 0, 0, 12, 3, 141, 12, - 3, 0, 0, 0, 0, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, - 119, 120, 121, 122, 123, 124, 334, 0, 107, 108, - 0, 335, 111, 112, 113, 114, 115, 116, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 336, - 0, 107, 108, 0, 337, 111, 112, 113, 114, 115, - 116, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 0, 0, 0, 0, 118, 119, 120, 121, 122, - 123, 124, 0, 0, 117, 118, 119, 120, 121, 122, - 123, 124, 338, 0, 0, 0, 0, 339, 0, 0, - 0, 0, 313, 0, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 0, 0, 0, 117, 118, 119, - 120, 121, 122, 123, 124, 314, 0, 117, 118, 119, - 120, 121, 122, 123, 124, 318, 0, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, - 117, 118, 119, 120, 121, 122, 123, 124, 324, 0, - 117, 118, 119, 120, 121, 122, 123, 124, 333, 0, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 344, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 362, 0, 107, 108, 109, 110, 111, 112, 113, + 124, 348, 0, 107, 108, 0, 349, 111, 112, 113, 114, 115, 116, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, 124, 0, 0, 117, 118, 119, 120, - 121, 122, 123, 124, 227, 0, 0, 0, 0, 0, - 0, 0, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 229, 0, 0, 0, 0, 0, 0, - 0, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 117, 118, 119, 120, 121, 122, - 123, 124, 276, 0, 0, 0, 0, 0, 0, 0, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 277, 0, 0, 0, 0, 0, 0, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 106, 0, - 0, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 0, - 0, 0, 0, 0, 117, 118, 119, 120, 121, 122, - 123, 124, 280, 0, 0, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 292, 0, 0, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 0, 0, 0, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 107, + 121, 122, 123, 124, 350, 0, 107, 108, 0, 351, + 111, 112, 113, 114, 115, 116, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 0, 0, 0, 0, + 118, 119, 120, 121, 122, 123, 124, 0, 0, 117, + 118, 119, 120, 121, 122, 123, 124, 352, 0, 0, + 0, 0, 353, 0, 0, 0, 0, 325, 0, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 107, - 108, 0, 110, 111, 112, 113, 114, 115, 116, 0, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, 124, - 0, 0, 117, 118, 119, 120, 121, 122, 123, 124, - 107, 108, 0, 0, 111, 112, 113, 114, 115, 116, - 107, 108, 0, 0, 111, 112, 113, 114, 115, 116, - 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, - 124, 0, 0, 0, 0, 0, 120, 121, 122, 123, - 124, 107, 108, 0, 0, 0, 0, 113, 114, 115, - 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 120, 121, 122, - 123, 124 + 326, 0, 117, 118, 119, 120, 121, 122, 123, 124, + 330, 0, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 0, 0, 0, 117, 118, 119, 120, 121, + 122, 123, 124, 336, 0, 117, 118, 119, 120, 121, + 122, 123, 124, 347, 0, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 0, 0, 0, 117, 118, + 119, 120, 121, 122, 123, 124, 358, 0, 117, 118, + 119, 120, 121, 122, 123, 124, 376, 0, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, + 0, 117, 118, 119, 120, 121, 122, 123, 124, 0, + 0, 117, 118, 119, 120, 121, 122, 123, 124, 233, + 0, 0, 0, 0, 0, 0, 0, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 117, 118, 119, 120, 121, 122, 123, 124, 235, 0, + 0, 0, 0, 0, 0, 0, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, + 118, 119, 120, 121, 122, 123, 124, 284, 0, 0, + 0, 0, 0, 0, 0, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, + 119, 120, 121, 122, 123, 124, 285, 0, 0, 0, + 0, 0, 0, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 106, 0, 0, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 0, 0, 0, 0, 0, 117, + 118, 119, 120, 121, 122, 123, 124, 290, 0, 0, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 302, 0, 0, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 0, 0, 0, 0, 0, 117, 118, 119, 120, + 121, 122, 123, 124, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 107, 108, 0, 110, 111, 112, + 113, 114, 115, 116, 0, 0, 0, 117, 118, 119, + 120, 121, 122, 123, 124, 0, 0, 117, 118, 119, + 120, 121, 122, 123, 124, 107, 108, 0, 0, 111, + 112, 113, 114, 115, 116, 107, 108, 0, 0, 111, + 112, 113, 114, 115, 116, 0, 0, 0, 0, 118, + 0, 120, 121, 122, 123, 124, 0, 0, 0, 0, + 0, 120, 121, 122, 123, 124, 107, 108, 0, 0, + 0, 0, 113, 114, 115, 116, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 120, 121, 122, 123, 124 }; const short parser::yycheck_[] = { - 0, 83, 14, 26, 27, 5, 1, 26, 27, 238, - 3, 4, 38, 191, 81, 32, 37, 37, 18, 37, - 18, 25, 26, 38, 28, 38, 26, 27, 43, 47, - 43, 26, 27, 37, 28, 85, 86, 41, 61, 39, - 44, 62, 61, 25, 26, 43, 28, 41, 25, 26, - 44, 28, 38, 0, 19, 25, 26, 43, 28, 41, - 47, 61, 44, 38, 41, 82, 61, 44, 94, 28, - 41, 41, 37, 83, 44, 40, 41, 81, 82, 82, - 38, 82, 41, 45, 84, 43, 77, 81, 82, 82, - 50, 51, 83, 38, 47, 86, 38, 41, 43, 81, - 82, 43, 125, 126, 81, 82, 125, 126, 38, 45, - 38, 81, 82, 43, 343, 43, 76, 77, 78, 79, - 80, 37, 81, 82, 39, 125, 126, 41, 128, 94, - 125, 126, 132, 43, 134, 313, 314, 42, 138, 134, - 37, 47, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 37, 134, 127, 37, 342, 37, 344, 37, 37, 181, - 38, 46, 137, 134, 139, 42, 141, 86, 143, 78, - 79, 80, 47, 361, 362, 47, 47, 187, 188, 37, - 47, 191, 187, 188, 217, 47, 191, 46, 217, 131, - 76, 77, 78, 79, 80, 46, 46, 134, 173, 37, - 37, 37, 42, 37, 187, 188, 134, 217, 191, 37, - 185, 14, 217, 18, 47, 47, 187, 188, 251, 252, - 191, 134, 251, 252, 47, 47, 318, 47, 238, 239, - 47, 134, 47, 238, 38, 47, 47, 47, 5, 5, - 343, 251, 252, -1, -1, 181, 251, 252, 181, -1, - 187, 188, 262, 286, 191, 238, -1, 286, 134, 187, - 188, 236, 237, 191, -1, 240, 134, 238, -1, -1, - -1, -1, -1, -1, 187, 188, 286, -1, 191, -1, - -1, 286, -1, -1, 187, 188, -1, -1, 191, 231, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 238, 277, 313, 314, -1, -1, 317, 313, 314, - 238, 187, 188, -1, -1, 191, -1, -1, 293, 294, - 295, 296, -1, 191, -1, 238, -1, -1, -1, -1, - 313, 314, 342, 343, 344, 238, -1, 342, 343, 344, - 315, 316, 313, 314, -1, -1, -1, 25, 26, -1, - 28, 361, 362, -1, -1, -1, 361, 362, -1, 342, - 343, 344, 238, 41, -1, 134, 44, -1, 310, -1, - 345, 342, 343, 344, -1, -1, 313, 314, 361, 362, - -1, 323, -1, -1, -1, 313, 314, -1, -1, -1, - 361, 362, -1, 335, -1, 337, -1, 339, -1, -1, - 313, 314, -1, 81, 82, 342, 343, 344, -1, -1, - 313, 314, -1, -1, 342, 343, 344, -1, 187, 188, - -1, -1, 191, -1, 361, 362, -1, -1, -1, 342, - 343, 344, -1, 361, 362, -1, -1, 313, 314, 342, - 343, 344, -1, -1, -1, 313, 314, -1, 361, 362, - -1, -1, -1, -1, -1, -1, -1, -1, 361, 362, - -1, 25, 26, -1, 28, -1, 342, 343, 344, 238, - -1, -1, -1, -1, 342, 5, 344, 41, -1, -1, - 44, -1, -1, -1, -1, 361, 362, -1, -1, -1, - -1, -1, -1, 361, 362, 25, 26, 27, 28, 29, - 30, 31, -1, 33, 34, 35, 36, 37, -1, -1, - -1, 41, 42, -1, -1, 45, -1, 81, 82, -1, - -1, -1, 25, 26, -1, 28, -1, -1, -1, -1, - 60, 61, -1, -1, -1, -1, -1, -1, 41, -1, - 5, 44, -1, -1, 313, 314, -1, 77, -1, -1, - 80, 81, 82, 83, 84, 85, 86, -1, -1, -1, - 25, 26, 27, 28, 29, 30, 31, -1, 33, 34, - 35, 36, 37, 342, 343, 344, 41, -1, 81, 82, - 45, -1, 47, -1, 25, 26, -1, 28, 25, 26, - -1, 28, 361, 362, -1, 60, 61, -1, -1, -1, - 41, -1, 5, 44, 41, -1, -1, 44, -1, -1, - -1, -1, 77, -1, -1, 80, 81, 82, 83, 84, - 85, 86, 25, 26, 27, 28, 29, 30, 31, -1, - 33, 34, 35, 36, 37, -1, -1, -1, 41, -1, - 81, 82, 45, -1, 81, 82, -1, -1, 28, -1, - -1, -1, -1, 33, 34, 35, 36, 60, 61, -1, - -1, 41, -1, -1, 5, -1, -1, -1, 48, 49, - -1, -1, -1, -1, 77, -1, -1, 80, 81, 82, - 83, 84, 85, 86, 25, 26, 27, 28, 29, 30, - 31, -1, 33, 34, 35, 36, 37, -1, -1, -1, - 41, 81, 82, -1, 45, -1, -1, -1, -1, -1, - -1, 6, 7, -1, 9, 10, -1, -1, -1, 60, - 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 25, -1, -1, 28, -1, -1, 77, -1, -1, 80, - 81, 82, 83, 84, 85, 86, 41, -1, -1, 44, - 28, -1, -1, 48, 49, 33, 34, 35, 36, -1, - -1, -1, -1, 41, -1, -1, -1, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, -1, -1, - -1, -1, -1, -1, -1, 8, 81, 82, 11, 12, - 13, -1, 15, 16, 17, -1, 19, 20, 21, 22, - 23, 24, 25, 81, 82, 28, -1, -1, -1, -1, - 33, 34, 35, 36, -1, -1, 39, 40, 41, -1, - -1, -1, -1, -1, 8, 48, 49, 11, 12, 13, - -1, 15, 16, 17, -1, 19, 20, 21, 22, 23, - 24, 25, -1, -1, 28, -1, -1, -1, -1, 33, - 34, 35, 36, -1, -1, 39, 40, 41, 81, 82, - -1, -1, -1, 8, 48, 49, 11, 12, 13, -1, - 15, 16, 17, -1, 19, 20, 21, 22, 23, 24, - 25, -1, -1, 28, -1, -1, 28, -1, 33, 34, - 35, 36, -1, -1, 39, -1, 41, 81, 82, 41, - -1, -1, 44, 48, 49, -1, 48, 49, -1, -1, + 0, 26, 27, 26, 27, 5, 1, 83, 40, 14, + 21, 194, 247, 132, 6, 7, 31, 38, 18, 84, + 40, 36, 37, 38, 39, 0, 26, 27, 135, 44, + 50, 26, 27, 65, 40, 46, 61, 31, 61, 39, + 28, 29, 50, 31, 81, 82, 83, 35, 28, 29, + 44, 31, 40, 135, 80, 35, 44, 19, 86, 47, + 86, 61, 41, 89, 44, 48, 61, 47, 85, 84, + 85, 41, 41, 94, 50, 37, 46, 46, 40, 41, + 41, 41, 85, 41, 84, 46, 46, 194, 46, 41, + 84, 85, 42, 85, 46, 44, 84, 85, 88, 89, + 125, 126, 125, 126, 84, 85, 41, 44, 190, 191, + 41, 46, 194, 135, 41, 46, 40, 46, 237, 46, + 239, 240, 357, 41, 44, 125, 126, 48, 46, 129, + 125, 126, 94, 133, 45, 135, 40, 50, 50, 139, + 135, 40, 325, 326, 40, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 40, 40, 247, 128, 40, 190, 191, + 49, 40, 194, 356, 40, 358, 138, 45, 140, 184, + 142, 41, 144, 53, 54, 79, 80, 81, 82, 83, + 190, 191, 375, 376, 194, 190, 191, 50, 223, 194, + 223, 320, 50, 50, 31, 50, 89, 50, 49, 79, + 80, 81, 82, 83, 176, 49, 335, 44, 325, 326, + 47, 49, 40, 223, 40, 247, 188, 40, 223, 40, + 349, 45, 351, 135, 353, 260, 261, 260, 261, 40, + 50, 50, 17, 325, 326, 40, 50, 247, 248, 356, + 50, 358, 247, 50, 330, 21, 50, 84, 85, 50, + 260, 261, 50, 50, 41, 260, 261, 50, 375, 376, + 50, 296, 50, 296, 356, 357, 358, 5, 5, 357, + -1, 184, -1, 245, 246, -1, 184, 249, 190, 191, + -1, 135, 194, 375, 376, -1, 296, -1, -1, -1, + -1, 296, -1, 325, 326, -1, -1, -1, -1, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, -1, 285, -1, 325, 326, 135, -1, 329, + 325, 326, 135, -1, 356, 357, 358, 135, -1, -1, + -1, 303, 304, 305, 306, 247, 190, 191, -1, -1, + 194, -1, -1, 375, 376, -1, 356, 357, 358, -1, + -1, 356, 357, 358, -1, 327, 328, -1, -1, -1, + -1, 135, -1, -1, -1, 375, 376, -1, -1, -1, + 375, 376, 190, 191, -1, 8, 194, 190, 191, -1, + -1, 194, 190, 191, -1, -1, 194, 359, -1, -1, + -1, -1, -1, 247, -1, 28, 29, 30, 31, 32, + 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, + -1, 44, 45, 325, 326, 48, 190, 191, -1, -1, + 194, 28, 29, -1, 31, -1, -1, -1, 35, 247, + 63, 64, -1, -1, 247, -1, -1, 44, -1, 247, + 47, -1, -1, -1, 356, 357, 358, 80, -1, -1, + 83, 84, 85, 86, 87, 88, 89, -1, -1, -1, + -1, -1, -1, 375, 376, -1, -1, 28, 29, -1, + 31, 325, 326, 247, 35, -1, -1, 84, 85, -1, + -1, -1, -1, 44, -1, -1, 47, -1, -1, -1, + 28, 29, -1, 31, -1, -1, -1, 35, -1, -1, + -1, -1, 356, 357, 358, -1, 44, 325, 326, 47, + -1, -1, 325, 326, -1, -1, -1, 325, 326, -1, + -1, 375, 376, 84, 85, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 356, 357, + 358, -1, -1, 356, 357, 358, 84, 85, 356, 357, + 358, 325, 326, -1, -1, -1, -1, 375, 376, -1, + -1, -1, 375, 376, -1, 31, -1, 375, 376, -1, + 36, 37, 38, 39, -1, -1, -1, -1, 44, -1, + -1, -1, 356, 357, 358, 51, 52, -1, -1, -1, + -1, -1, 3, 4, 5, -1, -1, -1, -1, -1, + 11, 375, 376, 14, 15, 16, -1, 18, 19, 20, + -1, 22, 23, 24, 25, 26, 27, 28, 84, 85, + 31, -1, -1, -1, -1, 36, 37, 38, 39, -1, + -1, 42, 43, 44, -1, -1, 3, 4, 5, -1, + 51, 52, -1, -1, 11, -1, -1, 14, 15, 16, + -1, 18, 19, 20, -1, 22, 23, 24, 25, 26, + 27, 28, -1, -1, 31, -1, -1, -1, -1, 36, + 37, 38, 39, 84, 85, 42, 43, 44, -1, -1, + 3, 4, 5, -1, 51, 52, -1, -1, 11, -1, + -1, 14, 15, 16, -1, 18, 19, 20, -1, 22, + 23, 24, 25, 26, 27, 28, -1, -1, 31, -1, + 8, -1, -1, 36, 37, 38, 39, 84, 85, 42, + -1, 44, -1, -1, -1, -1, -1, -1, 51, 52, + 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, + 38, 39, 40, -1, -1, -1, 44, -1, -1, -1, + 48, -1, 50, -1, -1, -1, -1, 28, 29, -1, + 31, 84, 85, -1, 35, 63, 64, -1, -1, -1, + -1, -1, 8, 44, -1, -1, 47, -1, -1, -1, + -1, -1, 80, -1, -1, 83, 84, 85, 86, 87, + 88, 89, 28, 29, 30, 31, 32, 33, 34, -1, + 36, 37, 38, 39, 40, -1, -1, -1, 44, -1, + -1, -1, 48, 84, 85, -1, 28, 29, -1, 31, + -1, -1, -1, 35, -1, -1, -1, 63, 64, -1, + -1, -1, 44, -1, 8, 47, -1, -1, -1, -1, + -1, -1, -1, -1, 80, -1, -1, 83, 84, 85, + 86, 87, 88, 89, 28, 29, 30, 31, 32, 33, + 34, -1, 36, 37, 38, 39, 40, -1, -1, -1, + 44, -1, 84, 85, 48, -1, 28, 29, -1, 31, + -1, 9, 10, 35, 12, 13, -1, -1, -1, 63, + 64, -1, 44, -1, -1, 47, -1, -1, -1, -1, + 28, -1, -1, 31, -1, -1, 80, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 44, -1, -1, 47, + -1, -1, -1, 51, 52, -1, -1, -1, -1, -1, + -1, -1, 84, 85, -1, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 28, 29, + -1, 31, -1, 31, -1, 35, 84, 85, -1, -1, + -1, -1, -1, -1, 44, -1, 44, 47, -1, 47, + -1, -1, -1, 51, 52, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 41, -1, + -1, -1, -1, 46, 84, 85, 84, 85, -1, -1, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, -1, -1, 38, -1, -1, 81, 82, 43, 81, - 82, -1, -1, -1, -1, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 73, 74, - 75, 76, 77, 78, 79, 80, 38, -1, 50, 51, - -1, 43, 54, 55, 56, 57, 58, 59, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, -1, -1, - -1, 73, 74, 75, 76, 77, 78, 79, 80, -1, - -1, 73, 74, 75, 76, 77, 78, 79, 80, 38, - -1, 50, 51, -1, 43, 54, 55, 56, 57, 58, - 59, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, -1, -1, -1, -1, 74, 75, 76, 77, 78, - 79, 80, -1, -1, 73, 74, 75, 76, 77, 78, - 79, 80, 38, -1, -1, -1, -1, 43, -1, -1, - -1, -1, 38, -1, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, -1, -1, -1, 73, 74, 75, - 76, 77, 78, 79, 80, 38, -1, 73, 74, 75, - 76, 77, 78, 79, 80, 38, -1, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, -1, -1, -1, - 73, 74, 75, 76, 77, 78, 79, 80, 38, -1, - 73, 74, 75, 76, 77, 78, 79, 80, 38, -1, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - -1, -1, -1, 73, 74, 75, 76, 77, 78, 79, - 80, 38, -1, 73, 74, 75, 76, 77, 78, 79, - 80, 38, -1, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, -1, -1, -1, 73, 74, 75, 76, - 77, 78, 79, 80, -1, -1, 73, 74, 75, 76, - 77, 78, 79, 80, 42, -1, -1, -1, -1, -1, - -1, -1, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 73, 74, 75, 76, 77, - 78, 79, 80, 42, -1, -1, -1, -1, -1, -1, - -1, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 73, 74, 75, 76, 77, 78, - 79, 80, 42, -1, -1, -1, -1, -1, -1, -1, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + -1, -1, -1, 76, 77, 78, 79, 80, 81, 82, + 83, 41, -1, 53, 54, -1, 46, 57, 58, 59, + 60, 61, 62, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, -1, -1, -1, 76, 77, 78, 79, + 80, 81, 82, 83, -1, -1, 76, 77, 78, 79, + 80, 81, 82, 83, 41, -1, 53, 54, -1, 46, + 57, 58, 59, 60, 61, 62, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, + 77, 78, 79, 80, 81, 82, 83, -1, -1, 76, + 77, 78, 79, 80, 81, 82, 83, 41, -1, -1, + -1, -1, 46, -1, -1, -1, -1, 41, -1, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, -1, + -1, -1, 76, 77, 78, 79, 80, 81, 82, 83, + 41, -1, 76, 77, 78, 79, 80, 81, 82, 83, + 41, -1, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, -1, -1, -1, 76, 77, 78, 79, 80, + 81, 82, 83, 41, -1, 76, 77, 78, 79, 80, + 81, 82, 83, 41, -1, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, -1, -1, -1, 76, 77, + 78, 79, 80, 81, 82, 83, 41, -1, 76, 77, + 78, 79, 80, 81, 82, 83, 41, -1, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, + -1, 76, 77, 78, 79, 80, 81, 82, 83, -1, + -1, 76, 77, 78, 79, 80, 81, 82, 83, 45, + -1, -1, -1, -1, -1, -1, -1, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 73, 74, 75, 76, 77, 78, 79, - 80, 43, -1, -1, -1, -1, -1, -1, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 47, -1, - -1, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 73, 74, 75, 76, 77, 78, 79, 80, -1, - -1, -1, -1, -1, 73, 74, 75, 76, 77, 78, - 79, 80, 47, -1, -1, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 47, -1, -1, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 73, 74, - 75, 76, 77, 78, 79, 80, -1, -1, -1, -1, - -1, 73, 74, 75, 76, 77, 78, 79, 80, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 50, - 51, -1, 53, 54, 55, 56, 57, 58, 59, -1, - -1, -1, 73, 74, 75, 76, 77, 78, 79, 80, - -1, -1, 73, 74, 75, 76, 77, 78, 79, 80, - 50, 51, -1, -1, 54, 55, 56, 57, 58, 59, - 50, 51, -1, -1, 54, 55, 56, 57, 58, 59, - -1, -1, -1, -1, -1, 75, 76, 77, 78, 79, - 80, -1, -1, -1, -1, -1, 76, 77, 78, 79, - 80, 50, 51, -1, -1, -1, -1, 56, 57, 58, - 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 76, 77, 78, - 79, 80 + 76, 77, 78, 79, 80, 81, 82, 83, 45, -1, + -1, -1, -1, -1, -1, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, + 77, 78, 79, 80, 81, 82, 83, 45, -1, -1, + -1, -1, -1, -1, -1, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 76, 77, + 78, 79, 80, 81, 82, 83, 46, -1, -1, -1, + -1, -1, -1, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 50, -1, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 76, 77, 78, 79, + 80, 81, 82, 83, -1, -1, -1, -1, -1, 76, + 77, 78, 79, 80, 81, 82, 83, 50, -1, -1, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 50, -1, -1, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 76, 77, 78, 79, 80, 81, 82, + 83, -1, -1, -1, -1, -1, 76, 77, 78, 79, + 80, 81, 82, 83, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 53, 54, -1, 56, 57, 58, + 59, 60, 61, 62, -1, -1, -1, 76, 77, 78, + 79, 80, 81, 82, 83, -1, -1, 76, 77, 78, + 79, 80, 81, 82, 83, 53, 54, -1, -1, 57, + 58, 59, 60, 61, 62, 53, 54, -1, -1, 57, + 58, 59, 60, 61, 62, -1, -1, -1, -1, 77, + -1, 79, 80, 81, 82, 83, -1, -1, -1, -1, + -1, 79, 80, 81, 82, 83, 53, 54, -1, -1, + -1, -1, 59, 60, 61, 62, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 79, 80, 81, 82, 83 }; const unsigned char parser::yystos_[] = { - 0, 3, 4, 82, 96, 97, 98, 99, 100, 101, - 102, 157, 81, 158, 37, 0, 98, 99, 37, 62, - 47, 83, 160, 103, 157, 5, 25, 26, 27, 28, - 29, 30, 31, 33, 34, 35, 36, 37, 41, 45, - 60, 61, 77, 80, 84, 85, 86, 129, 131, 132, - 133, 134, 135, 136, 137, 138, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 38, 38, 43, 41, 137, 138, 157, 158, - 137, 138, 41, 129, 41, 42, 129, 139, 140, 141, - 157, 129, 129, 85, 86, 82, 47, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 73, 74, 75, - 76, 77, 78, 79, 80, 25, 26, 41, 44, 137, - 138, 37, 45, 47, 39, 105, 157, 41, 45, 41, - 38, 43, 129, 43, 42, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 137, 138, 137, 138, 129, 32, 157, - 139, 140, 157, 8, 11, 12, 13, 15, 16, 17, - 19, 20, 21, 22, 23, 24, 40, 48, 49, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 0, 6, 7, 85, 99, 100, 101, 102, 103, 104, + 105, 163, 84, 164, 40, 0, 101, 102, 40, 65, + 50, 86, 166, 106, 163, 8, 28, 29, 30, 31, + 32, 33, 34, 36, 37, 38, 39, 40, 44, 48, + 63, 64, 80, 83, 87, 88, 89, 135, 137, 138, + 139, 140, 141, 142, 143, 144, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 41, 41, 46, 44, 143, 144, 163, 164, + 143, 144, 44, 135, 44, 45, 135, 145, 146, 147, + 163, 135, 135, 88, 89, 85, 50, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 76, 77, 78, + 79, 80, 81, 82, 83, 28, 29, 35, 44, 47, + 143, 144, 40, 48, 50, 42, 108, 163, 44, 48, + 44, 41, 46, 135, 46, 45, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 143, 144, 143, 144, 135, 163, + 145, 146, 163, 3, 4, 5, 11, 14, 15, 16, + 18, 19, 20, 22, 23, 24, 25, 26, 27, 43, + 51, 52, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 130, 134, 135, 144, 145, 147, 151, 152, - 153, 154, 157, 129, 157, 129, 129, 42, 129, 42, - 38, 37, 129, 47, 37, 47, 37, 37, 37, 37, - 37, 77, 160, 163, 165, 46, 47, 47, 47, 129, - 134, 147, 147, 40, 104, 47, 47, 47, 6, 7, - 9, 10, 44, 48, 49, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 42, 43, 42, 139, - 47, 38, 129, 129, 127, 130, 147, 157, 129, 46, - 46, 46, 47, 37, 37, 37, 37, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 42, 129, - 37, 38, 47, 38, 38, 47, 18, 43, 38, 129, - 129, 129, 129, 37, 38, 139, 104, 104, 128, 129, - 129, 157, 105, 38, 38, 43, 38, 43, 38, 43, - 139, 38, 14, 47, 38, 18, 47, 47, 139, 47, - 139, 47, 139, 38, 104, 127, 104, 129, 38, 38, - 38, 38, 38, 47, 47, 47, 104, 104 + 125, 126, 127, 128, 129, 130, 131, 132, 136, 140, + 141, 150, 151, 153, 157, 158, 159, 160, 163, 135, + 163, 135, 135, 45, 135, 45, 41, 40, 50, 40, + 40, 135, 50, 40, 50, 40, 40, 40, 40, 40, + 80, 166, 169, 171, 49, 50, 50, 50, 135, 140, + 153, 153, 43, 107, 50, 50, 50, 9, 10, 12, + 13, 51, 52, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 45, 46, 45, 145, 145, 145, + 50, 41, 135, 135, 133, 136, 153, 163, 135, 49, + 49, 49, 50, 40, 40, 40, 40, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 45, 135, + 40, 41, 41, 41, 50, 41, 41, 50, 21, 46, + 41, 135, 135, 135, 135, 40, 41, 145, 50, 50, + 107, 107, 134, 135, 135, 163, 108, 41, 41, 46, + 41, 46, 41, 46, 145, 41, 17, 50, 41, 21, + 50, 50, 145, 50, 145, 50, 145, 41, 107, 133, + 107, 135, 41, 41, 41, 41, 41, 50, 50, 50, + 107, 107 }; const unsigned char parser::yyr1_[] = { - 0, 95, 96, 96, 97, 97, 97, 97, 98, 99, - 99, 99, 100, 101, 102, 103, 103, 103, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 105, - 105, 106, 106, 107, 107, 108, 109, 110, 110, 111, - 112, 112, 113, 113, 114, 115, 115, 116, 117, 118, - 119, 120, 120, 121, 122, 122, 122, 123, 124, 125, - 126, 126, 127, 127, 128, 128, 129, 129, 129, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 131, 131, 131, 131, 131, 131, - 131, 131, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 134, 134, 134, 134, 135, 135, 135, 135, - 136, 136, 136, 136, 137, 137, 138, 138, 139, 139, - 140, 140, 141, 142, 142, 143, 144, 145, 146, 147, - 147, 147, 147, 147, 147, 147, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167 + 0, 98, 99, 99, 100, 100, 100, 100, 101, 102, + 102, 102, 103, 104, 105, 106, 106, 106, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 108, 108, 109, 109, 110, 110, 111, 112, + 113, 113, 114, 115, 115, 116, 116, 117, 118, 118, + 119, 120, 121, 122, 123, 123, 124, 125, 125, 125, + 126, 127, 128, 129, 129, 130, 131, 132, 133, 133, + 134, 134, 135, 135, 135, 136, 136, 136, 136, 136, + 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, + 137, 137, 137, 137, 137, 137, 137, 137, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 140, 140, + 140, 140, 141, 141, 141, 141, 142, 142, 142, 142, + 143, 143, 144, 144, 145, 145, 146, 146, 147, 148, + 148, 149, 150, 151, 152, 153, 153, 153, 153, 153, + 153, 153, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173 }; const signed char @@ -3905,23 +4022,24 @@ namespace xsk { namespace gsc { namespace h1 { 0, 2, 1, 0, 2, 2, 1, 1, 3, 1, 1, 1, 5, 4, 5, 3, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, - 2, 2, 1, 2, 2, 2, 6, 8, 6, 3, - 8, 6, 8, 6, 2, 2, 4, 5, 7, 5, - 9, 7, 9, 5, 3, 3, 3, 2, 2, 2, - 3, 2, 1, 0, 1, 0, 1, 1, 1, 2, - 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 3, 2, 2, 1, 2, 2, 2, 6, + 8, 6, 3, 8, 6, 8, 6, 2, 2, 4, + 5, 7, 5, 9, 7, 9, 5, 3, 3, 3, + 2, 2, 2, 3, 2, 2, 5, 5, 1, 0, + 1, 0, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, - 2, 2, 3, 3, 4, 6, 8, 9, 1, 1, - 3, 1, 0, 2, 3, 3, 4, 3, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, + 2, 2, 2, 2, 3, 3, 2, 2, 3, 3, + 4, 6, 8, 9, 1, 1, 3, 1, 0, 2, + 3, 3, 4, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, - 7, 2, 2, 1, 1, 1, 1 + 2, 1, 1, 1, 1, 1, 7, 2, 2, 1, + 1, 1, 1 }; @@ -3931,26 +4049,27 @@ namespace xsk { namespace gsc { namespace h1 { const short parser::yyrline_[] = { - 0, 233, 233, 234, 238, 240, 242, 244, 249, 254, - 255, 256, 260, 265, 270, 275, 277, 280, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 308, - 309, 313, 315, 320, 322, 327, 332, 337, 339, 344, - 349, 351, 356, 358, 363, 368, 370, 375, 380, 385, - 390, 395, 397, 402, 407, 409, 411, 416, 421, 426, - 431, 433, 438, 439, 443, 444, 448, 449, 450, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 472, 473, 474, 475, 476, 477, - 478, 479, 483, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 496, 497, 498, 499, 500, 501, 502, 503, - 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, - 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, - 524, 525, 529, 530, 531, 532, 536, 537, 538, 539, - 543, 544, 545, 546, 550, 552, 557, 559, 564, 565, - 569, 571, 577, 581, 583, 588, 593, 598, 603, 608, - 609, 610, 611, 612, 613, 614, 615, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, - 631, 632, 633, 634, 635, 636, 637 + 0, 239, 239, 240, 244, 246, 248, 250, 255, 260, + 261, 262, 266, 271, 276, 281, 283, 286, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 317, 318, 322, 324, 329, 331, 336, 341, + 346, 348, 353, 358, 360, 365, 367, 372, 377, 379, + 384, 389, 394, 399, 404, 406, 411, 416, 418, 420, + 425, 430, 435, 440, 442, 447, 452, 457, 462, 463, + 467, 468, 472, 473, 474, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, + 496, 497, 498, 499, 500, 501, 502, 503, 507, 508, + 509, 510, 511, 512, 513, 514, 515, 516, 520, 521, + 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 553, 554, + 555, 556, 560, 561, 562, 563, 567, 568, 569, 570, + 574, 576, 581, 583, 588, 589, 593, 595, 601, 605, + 607, 612, 617, 622, 627, 632, 633, 634, 635, 636, + 637, 638, 639, 642, 643, 644, 645, 646, 647, 648, + 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, + 659, 660, 661 }; void @@ -3983,9 +4102,9 @@ namespace xsk { namespace gsc { namespace h1 { #line 13 "parser.ypp" } } } // xsk::gsc::h1 -#line 3987 "parser.cpp" +#line 4106 "parser.cpp" -#line 639 "parser.ypp" +#line 663 "parser.ypp" void xsk::gsc::h1::parser::error(const xsk::gsc::location& loc, const std::string& msg) diff --git a/src/h1/xsk/parser.hpp b/src/h1/xsk/parser.hpp index d2311ec3..58fd840b 100644 --- a/src/h1/xsk/parser.hpp +++ b/src/h1/xsk/parser.hpp @@ -510,88 +510,97 @@ namespace xsk { namespace gsc { namespace h1 { // stmt_break char dummy27[sizeof (stmt_break_ptr)]; + // stmt_breakpoint + char dummy28[sizeof (stmt_breakpoint_ptr)]; + // stmt_call - char dummy28[sizeof (stmt_call_ptr)]; + char dummy29[sizeof (stmt_call_ptr)]; // stmt_case - char dummy29[sizeof (stmt_case_ptr)]; + char dummy30[sizeof (stmt_case_ptr)]; // stmt_continue - char dummy30[sizeof (stmt_continue_ptr)]; + char dummy31[sizeof (stmt_continue_ptr)]; // stmt_default - char dummy31[sizeof (stmt_default_ptr)]; + char dummy32[sizeof (stmt_default_ptr)]; // stmt_endon - char dummy32[sizeof (stmt_endon_ptr)]; + char dummy33[sizeof (stmt_endon_ptr)]; // stmt_for - char dummy33[sizeof (stmt_for_ptr)]; + char dummy34[sizeof (stmt_for_ptr)]; // stmt_foreach - char dummy34[sizeof (stmt_foreach_ptr)]; + char dummy35[sizeof (stmt_foreach_ptr)]; // stmt_if - char dummy35[sizeof (stmt_if_ptr)]; + char dummy36[sizeof (stmt_if_ptr)]; // stmt_ifelse - char dummy36[sizeof (stmt_ifelse_ptr)]; + char dummy37[sizeof (stmt_ifelse_ptr)]; // stmt_block // stmt_list - char dummy37[sizeof (stmt_list_ptr)]; + char dummy38[sizeof (stmt_list_ptr)]; // stmt_notify - char dummy38[sizeof (stmt_notify_ptr)]; + char dummy39[sizeof (stmt_notify_ptr)]; + + // stmt_prof_begin + char dummy40[sizeof (stmt_prof_begin_ptr)]; + + // stmt_prof_end + char dummy41[sizeof (stmt_prof_end_ptr)]; // stmt // for_stmt - char dummy39[sizeof (stmt_ptr)]; + char dummy42[sizeof (stmt_ptr)]; // stmt_return - char dummy40[sizeof (stmt_return_ptr)]; + char dummy43[sizeof (stmt_return_ptr)]; // stmt_switch - char dummy41[sizeof (stmt_switch_ptr)]; + char dummy44[sizeof (stmt_switch_ptr)]; // stmt_wait - char dummy42[sizeof (stmt_wait_ptr)]; + char dummy45[sizeof (stmt_wait_ptr)]; // stmt_waitframe - char dummy43[sizeof (stmt_waitframe_ptr)]; + char dummy46[sizeof (stmt_waitframe_ptr)]; // stmt_waittill - char dummy44[sizeof (stmt_waittill_ptr)]; + char dummy47[sizeof (stmt_waittill_ptr)]; // stmt_waittillframeend - char dummy45[sizeof (stmt_waittillframeend_ptr)]; + char dummy48[sizeof (stmt_waittillframeend_ptr)]; // stmt_waittillmatch - char dummy46[sizeof (stmt_waittillmatch_ptr)]; + char dummy49[sizeof (stmt_waittillmatch_ptr)]; // stmt_while - char dummy47[sizeof (stmt_while_ptr)]; + char dummy50[sizeof (stmt_while_ptr)]; // string - char dummy48[sizeof (string_ptr)]; + char dummy51[sizeof (string_ptr)]; // thisthread - char dummy49[sizeof (thisthread_ptr)]; + char dummy52[sizeof (thisthread_ptr)]; // thread - char dummy50[sizeof (thread_ptr)]; + char dummy53[sizeof (thread_ptr)]; // true - char dummy51[sizeof (true_ptr)]; + char dummy54[sizeof (true_ptr)]; // undefined - char dummy52[sizeof (undefined_ptr)]; + char dummy55[sizeof (undefined_ptr)]; // usingtree - char dummy53[sizeof (usingtree_ptr)]; + char dummy56[sizeof (usingtree_ptr)]; // vector - char dummy54[sizeof (vector_ptr)]; + char dummy57[sizeof (vector_ptr)]; }; /// The size of the largest semantic type. @@ -643,98 +652,101 @@ namespace xsk { namespace gsc { namespace h1 { H1EOF = 0, // "end of file" H1error = 1, // error H1UNDEF = 2, // "invalid token" - INCLUDE = 3, // "#include" - USINGTREE = 4, // "#using_animtree" - ANIMTREE = 5, // "#animtree" - ENDON = 6, // "endon" - NOTIFY = 7, // "notify" - WAIT = 8, // "wait" - WAITTILL = 9, // "waittill" - WAITTILLMATCH = 10, // "waittillmatch" - WAITTILLFRAMEEND = 11, // "waittillframeend" - WAITFRAME = 12, // "waitframe" - IF = 13, // "if" - ELSE = 14, // "else" - WHILE = 15, // "while" - FOR = 16, // "for" - FOREACH = 17, // "foreach" - IN = 18, // "in" - SWITCH = 19, // "switch" - CASE = 20, // "case" - DEFAULT = 21, // "default" - BREAK = 22, // "break" - CONTINUE = 23, // "continue" - RETURN = 24, // "return" - THREAD = 25, // "thread" - CHILDTHREAD = 26, // "childthread" - THISTHREAD = 27, // "thisthread" - CALL = 28, // "call" - TRUE = 29, // "true" - FALSE = 30, // "false" - UNDEFINED = 31, // "undefined" - SIZE = 32, // "size" - GAME = 33, // "game" - SELF = 34, // "self" - ANIM = 35, // "anim" - LEVEL = 36, // "level" - LPAREN = 37, // "(" - RPAREN = 38, // ")" - LBRACE = 39, // "{" - RBRACE = 40, // "}" - LBRACKET = 41, // "[" - RBRACKET = 42, // "]" - COMMA = 43, // "," - DOT = 44, // "." - DOUBLECOLON = 45, // "::" - COLON = 46, // ":" - SEMICOLON = 47, // ";" - INCREMENT = 48, // "++" - DECREMENT = 49, // "--" - LSHIFT = 50, // "<<" - RSHIFT = 51, // ">>" - OR = 52, // "||" - AND = 53, // "&&" - EQUALITY = 54, // "==" - INEQUALITY = 55, // "!=" - LESS_EQUAL = 56, // "<=" - GREATER_EQUAL = 57, // ">=" - LESS = 58, // "<" - GREATER = 59, // ">" - NOT = 60, // "!" - COMPLEMENT = 61, // "~" - ASSIGN = 62, // "=" - ASSIGN_ADD = 63, // "+=" - ASSIGN_SUB = 64, // "-=" - ASSIGN_MULT = 65, // "*=" - ASSIGN_DIV = 66, // "/=" - ASSIGN_MOD = 67, // "%=" - ASSIGN_BITWISE_OR = 68, // "|=" - ASSIGN_BITWISE_AND = 69, // "&=" - ASSIGN_BITWISE_EXOR = 70, // "^=" - ASSIGN_RSHIFT = 71, // ">>=" - ASSIGN_LSHIFT = 72, // "<<=" - BITWISE_OR = 73, // "|" - BITWISE_AND = 74, // "&" - BITWISE_EXOR = 75, // "^" - ADD = 76, // "+" - SUB = 77, // "-" - MULT = 78, // "*" - DIV = 79, // "/" - MOD = 80, // "%" - FILE = 81, // "file path" - NAME = 82, // "identifier" - STRING = 83, // "string literal" - ISTRING = 84, // "localized string" - FLOAT = 85, // "float" - INTEGER = 86, // "int" - ADD_ARRAY = 87, // ADD_ARRAY - THEN = 88, // THEN - NEG = 89, // NEG - ANIMREF = 90, // ANIMREF - PREINC = 91, // PREINC - PREDEC = 92, // PREDEC - POSTINC = 93, // POSTINC - POSTDEC = 94 // POSTDEC + BREAKPOINT = 3, // "breakpoint" + PROFBEGIN = 4, // "prof_begin" + PROFEND = 5, // "prof_end" + INCLUDE = 6, // "#include" + USINGTREE = 7, // "#using_animtree" + ANIMTREE = 8, // "#animtree" + ENDON = 9, // "endon" + NOTIFY = 10, // "notify" + WAIT = 11, // "wait" + WAITTILL = 12, // "waittill" + WAITTILLMATCH = 13, // "waittillmatch" + WAITTILLFRAMEEND = 14, // "waittillframeend" + WAITFRAME = 15, // "waitframe" + IF = 16, // "if" + ELSE = 17, // "else" + WHILE = 18, // "while" + FOR = 19, // "for" + FOREACH = 20, // "foreach" + IN = 21, // "in" + SWITCH = 22, // "switch" + CASE = 23, // "case" + DEFAULT = 24, // "default" + BREAK = 25, // "break" + CONTINUE = 26, // "continue" + RETURN = 27, // "return" + THREAD = 28, // "thread" + CHILDTHREAD = 29, // "childthread" + THISTHREAD = 30, // "thisthread" + CALL = 31, // "call" + TRUE = 32, // "true" + FALSE = 33, // "false" + UNDEFINED = 34, // "undefined" + SIZE = 35, // ".size" + GAME = 36, // "game" + SELF = 37, // "self" + ANIM = 38, // "anim" + LEVEL = 39, // "level" + LPAREN = 40, // "(" + RPAREN = 41, // ")" + LBRACE = 42, // "{" + RBRACE = 43, // "}" + LBRACKET = 44, // "[" + RBRACKET = 45, // "]" + COMMA = 46, // "," + DOT = 47, // "." + DOUBLECOLON = 48, // "::" + COLON = 49, // ":" + SEMICOLON = 50, // ";" + INCREMENT = 51, // "++" + DECREMENT = 52, // "--" + LSHIFT = 53, // "<<" + RSHIFT = 54, // ">>" + OR = 55, // "||" + AND = 56, // "&&" + EQUALITY = 57, // "==" + INEQUALITY = 58, // "!=" + LESS_EQUAL = 59, // "<=" + GREATER_EQUAL = 60, // ">=" + LESS = 61, // "<" + GREATER = 62, // ">" + NOT = 63, // "!" + COMPLEMENT = 64, // "~" + ASSIGN = 65, // "=" + ASSIGN_ADD = 66, // "+=" + ASSIGN_SUB = 67, // "-=" + ASSIGN_MULT = 68, // "*=" + ASSIGN_DIV = 69, // "/=" + ASSIGN_MOD = 70, // "%=" + ASSIGN_BITWISE_OR = 71, // "|=" + ASSIGN_BITWISE_AND = 72, // "&=" + ASSIGN_BITWISE_EXOR = 73, // "^=" + ASSIGN_RSHIFT = 74, // ">>=" + ASSIGN_LSHIFT = 75, // "<<=" + BITWISE_OR = 76, // "|" + BITWISE_AND = 77, // "&" + BITWISE_EXOR = 78, // "^" + ADD = 79, // "+" + SUB = 80, // "-" + MULT = 81, // "*" + DIV = 82, // "/" + MOD = 83, // "%" + FILE = 84, // "file path" + NAME = 85, // "identifier" + STRING = 86, // "string literal" + ISTRING = 87, // "localized string" + FLOAT = 88, // "float" + INTEGER = 89, // "int" + ADD_ARRAY = 90, // ADD_ARRAY + THEN = 91, // THEN + NEG = 92, // NEG + ANIMREF = 93, // ANIMREF + PREINC = 94, // PREINC + PREDEC = 95, // PREDEC + POSTINC = 96, // POSTINC + POSTDEC = 97 // POSTDEC }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; @@ -751,176 +763,182 @@ namespace xsk { namespace gsc { namespace h1 { { enum symbol_kind_type { - YYNTOKENS = 95, ///< Number of tokens. + YYNTOKENS = 98, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error S_YYUNDEF = 2, // "invalid token" - S_INCLUDE = 3, // "#include" - S_USINGTREE = 4, // "#using_animtree" - S_ANIMTREE = 5, // "#animtree" - S_ENDON = 6, // "endon" - S_NOTIFY = 7, // "notify" - S_WAIT = 8, // "wait" - S_WAITTILL = 9, // "waittill" - S_WAITTILLMATCH = 10, // "waittillmatch" - S_WAITTILLFRAMEEND = 11, // "waittillframeend" - S_WAITFRAME = 12, // "waitframe" - S_IF = 13, // "if" - S_ELSE = 14, // "else" - S_WHILE = 15, // "while" - S_FOR = 16, // "for" - S_FOREACH = 17, // "foreach" - S_IN = 18, // "in" - S_SWITCH = 19, // "switch" - S_CASE = 20, // "case" - S_DEFAULT = 21, // "default" - S_BREAK = 22, // "break" - S_CONTINUE = 23, // "continue" - S_RETURN = 24, // "return" - S_THREAD = 25, // "thread" - S_CHILDTHREAD = 26, // "childthread" - S_THISTHREAD = 27, // "thisthread" - S_CALL = 28, // "call" - S_TRUE = 29, // "true" - S_FALSE = 30, // "false" - S_UNDEFINED = 31, // "undefined" - S_SIZE = 32, // "size" - S_GAME = 33, // "game" - S_SELF = 34, // "self" - S_ANIM = 35, // "anim" - S_LEVEL = 36, // "level" - S_LPAREN = 37, // "(" - S_RPAREN = 38, // ")" - S_LBRACE = 39, // "{" - S_RBRACE = 40, // "}" - S_LBRACKET = 41, // "[" - S_RBRACKET = 42, // "]" - S_COMMA = 43, // "," - S_DOT = 44, // "." - S_DOUBLECOLON = 45, // "::" - S_COLON = 46, // ":" - S_SEMICOLON = 47, // ";" - S_INCREMENT = 48, // "++" - S_DECREMENT = 49, // "--" - S_LSHIFT = 50, // "<<" - S_RSHIFT = 51, // ">>" - S_OR = 52, // "||" - S_AND = 53, // "&&" - S_EQUALITY = 54, // "==" - S_INEQUALITY = 55, // "!=" - S_LESS_EQUAL = 56, // "<=" - S_GREATER_EQUAL = 57, // ">=" - S_LESS = 58, // "<" - S_GREATER = 59, // ">" - S_NOT = 60, // "!" - S_COMPLEMENT = 61, // "~" - S_ASSIGN = 62, // "=" - S_ASSIGN_ADD = 63, // "+=" - S_ASSIGN_SUB = 64, // "-=" - S_ASSIGN_MULT = 65, // "*=" - S_ASSIGN_DIV = 66, // "/=" - S_ASSIGN_MOD = 67, // "%=" - S_ASSIGN_BITWISE_OR = 68, // "|=" - S_ASSIGN_BITWISE_AND = 69, // "&=" - S_ASSIGN_BITWISE_EXOR = 70, // "^=" - S_ASSIGN_RSHIFT = 71, // ">>=" - S_ASSIGN_LSHIFT = 72, // "<<=" - S_BITWISE_OR = 73, // "|" - S_BITWISE_AND = 74, // "&" - S_BITWISE_EXOR = 75, // "^" - S_ADD = 76, // "+" - S_SUB = 77, // "-" - S_MULT = 78, // "*" - S_DIV = 79, // "/" - S_MOD = 80, // "%" - S_FILE = 81, // "file path" - S_NAME = 82, // "identifier" - S_STRING = 83, // "string literal" - S_ISTRING = 84, // "localized string" - S_FLOAT = 85, // "float" - S_INTEGER = 86, // "int" - S_ADD_ARRAY = 87, // ADD_ARRAY - S_THEN = 88, // THEN - S_NEG = 89, // NEG - S_ANIMREF = 90, // ANIMREF - S_PREINC = 91, // PREINC - S_PREDEC = 92, // PREDEC - S_POSTINC = 93, // POSTINC - S_POSTDEC = 94, // POSTDEC - S_YYACCEPT = 95, // $accept - S_root = 96, // root - S_program = 97, // program - S_include = 98, // include - S_define = 99, // define - S_usingtree = 100, // usingtree - S_constant = 101, // constant - S_thread = 102, // thread - S_parameters = 103, // parameters - S_stmt = 104, // stmt - S_stmt_block = 105, // stmt_block - S_stmt_list = 106, // stmt_list - S_stmt_call = 107, // stmt_call - S_stmt_assign = 108, // stmt_assign - S_stmt_endon = 109, // stmt_endon - S_stmt_notify = 110, // stmt_notify - S_stmt_wait = 111, // stmt_wait - S_stmt_waittill = 112, // stmt_waittill - S_stmt_waittillmatch = 113, // stmt_waittillmatch - S_stmt_waittillframeend = 114, // stmt_waittillframeend - S_stmt_waitframe = 115, // stmt_waitframe - S_stmt_if = 116, // stmt_if - S_stmt_ifelse = 117, // stmt_ifelse - S_stmt_while = 118, // stmt_while - S_stmt_for = 119, // stmt_for - S_stmt_foreach = 120, // stmt_foreach - S_stmt_switch = 121, // stmt_switch - S_stmt_case = 122, // stmt_case - S_stmt_default = 123, // stmt_default - S_stmt_break = 124, // stmt_break - S_stmt_continue = 125, // stmt_continue - S_stmt_return = 126, // stmt_return - S_for_stmt = 127, // for_stmt - S_for_expr = 128, // for_expr - S_expr = 129, // expr - S_expr_assign = 130, // expr_assign - S_expr_compare = 131, // expr_compare - S_expr_binary = 132, // expr_binary - S_expr_primitive = 133, // expr_primitive - S_expr_call = 134, // expr_call - S_expr_call_thread = 135, // expr_call_thread - S_expr_call_childthread = 136, // expr_call_childthread - S_expr_call_function = 137, // expr_call_function - S_expr_call_pointer = 138, // expr_call_pointer - S_expr_arguments = 139, // expr_arguments - S_expr_arguments_filled = 140, // expr_arguments_filled - S_expr_arguments_empty = 141, // expr_arguments_empty - S_expr_function = 142, // expr_function - S_expr_add_array = 143, // expr_add_array - S_expr_array = 144, // expr_array - S_expr_field = 145, // expr_field - S_expr_size = 146, // expr_size - S_object = 147, // object - S_thisthread = 148, // thisthread - S_empty_array = 149, // empty_array - S_undefined = 150, // undefined - S_game = 151, // game - S_self = 152, // self - S_anim = 153, // anim - S_level = 154, // level - S_animation = 155, // animation - S_animtree = 156, // animtree - S_name = 157, // name - S_file = 158, // file - S_istring = 159, // istring - S_string = 160, // string - S_vector = 161, // vector - S_neg_float = 162, // neg_float - S_neg_integer = 163, // neg_integer - S_float = 164, // float - S_integer = 165, // integer - S_false = 166, // false - S_true = 167 // true + S_BREAKPOINT = 3, // "breakpoint" + S_PROFBEGIN = 4, // "prof_begin" + S_PROFEND = 5, // "prof_end" + S_INCLUDE = 6, // "#include" + S_USINGTREE = 7, // "#using_animtree" + S_ANIMTREE = 8, // "#animtree" + S_ENDON = 9, // "endon" + S_NOTIFY = 10, // "notify" + S_WAIT = 11, // "wait" + S_WAITTILL = 12, // "waittill" + S_WAITTILLMATCH = 13, // "waittillmatch" + S_WAITTILLFRAMEEND = 14, // "waittillframeend" + S_WAITFRAME = 15, // "waitframe" + S_IF = 16, // "if" + S_ELSE = 17, // "else" + S_WHILE = 18, // "while" + S_FOR = 19, // "for" + S_FOREACH = 20, // "foreach" + S_IN = 21, // "in" + S_SWITCH = 22, // "switch" + S_CASE = 23, // "case" + S_DEFAULT = 24, // "default" + S_BREAK = 25, // "break" + S_CONTINUE = 26, // "continue" + S_RETURN = 27, // "return" + S_THREAD = 28, // "thread" + S_CHILDTHREAD = 29, // "childthread" + S_THISTHREAD = 30, // "thisthread" + S_CALL = 31, // "call" + S_TRUE = 32, // "true" + S_FALSE = 33, // "false" + S_UNDEFINED = 34, // "undefined" + S_SIZE = 35, // ".size" + S_GAME = 36, // "game" + S_SELF = 37, // "self" + S_ANIM = 38, // "anim" + S_LEVEL = 39, // "level" + S_LPAREN = 40, // "(" + S_RPAREN = 41, // ")" + S_LBRACE = 42, // "{" + S_RBRACE = 43, // "}" + S_LBRACKET = 44, // "[" + S_RBRACKET = 45, // "]" + S_COMMA = 46, // "," + S_DOT = 47, // "." + S_DOUBLECOLON = 48, // "::" + S_COLON = 49, // ":" + S_SEMICOLON = 50, // ";" + S_INCREMENT = 51, // "++" + S_DECREMENT = 52, // "--" + S_LSHIFT = 53, // "<<" + S_RSHIFT = 54, // ">>" + S_OR = 55, // "||" + S_AND = 56, // "&&" + S_EQUALITY = 57, // "==" + S_INEQUALITY = 58, // "!=" + S_LESS_EQUAL = 59, // "<=" + S_GREATER_EQUAL = 60, // ">=" + S_LESS = 61, // "<" + S_GREATER = 62, // ">" + S_NOT = 63, // "!" + S_COMPLEMENT = 64, // "~" + S_ASSIGN = 65, // "=" + S_ASSIGN_ADD = 66, // "+=" + S_ASSIGN_SUB = 67, // "-=" + S_ASSIGN_MULT = 68, // "*=" + S_ASSIGN_DIV = 69, // "/=" + S_ASSIGN_MOD = 70, // "%=" + S_ASSIGN_BITWISE_OR = 71, // "|=" + S_ASSIGN_BITWISE_AND = 72, // "&=" + S_ASSIGN_BITWISE_EXOR = 73, // "^=" + S_ASSIGN_RSHIFT = 74, // ">>=" + S_ASSIGN_LSHIFT = 75, // "<<=" + S_BITWISE_OR = 76, // "|" + S_BITWISE_AND = 77, // "&" + S_BITWISE_EXOR = 78, // "^" + S_ADD = 79, // "+" + S_SUB = 80, // "-" + S_MULT = 81, // "*" + S_DIV = 82, // "/" + S_MOD = 83, // "%" + S_FILE = 84, // "file path" + S_NAME = 85, // "identifier" + S_STRING = 86, // "string literal" + S_ISTRING = 87, // "localized string" + S_FLOAT = 88, // "float" + S_INTEGER = 89, // "int" + S_ADD_ARRAY = 90, // ADD_ARRAY + S_THEN = 91, // THEN + S_NEG = 92, // NEG + S_ANIMREF = 93, // ANIMREF + S_PREINC = 94, // PREINC + S_PREDEC = 95, // PREDEC + S_POSTINC = 96, // POSTINC + S_POSTDEC = 97, // POSTDEC + S_YYACCEPT = 98, // $accept + S_root = 99, // root + S_program = 100, // program + S_include = 101, // include + S_define = 102, // define + S_usingtree = 103, // usingtree + S_constant = 104, // constant + S_thread = 105, // thread + S_parameters = 106, // parameters + S_stmt = 107, // stmt + S_stmt_block = 108, // stmt_block + S_stmt_list = 109, // stmt_list + S_stmt_call = 110, // stmt_call + S_stmt_assign = 111, // stmt_assign + S_stmt_endon = 112, // stmt_endon + S_stmt_notify = 113, // stmt_notify + S_stmt_wait = 114, // stmt_wait + S_stmt_waittill = 115, // stmt_waittill + S_stmt_waittillmatch = 116, // stmt_waittillmatch + S_stmt_waittillframeend = 117, // stmt_waittillframeend + S_stmt_waitframe = 118, // stmt_waitframe + S_stmt_if = 119, // stmt_if + S_stmt_ifelse = 120, // stmt_ifelse + S_stmt_while = 121, // stmt_while + S_stmt_for = 122, // stmt_for + S_stmt_foreach = 123, // stmt_foreach + S_stmt_switch = 124, // stmt_switch + S_stmt_case = 125, // stmt_case + S_stmt_default = 126, // stmt_default + S_stmt_break = 127, // stmt_break + S_stmt_continue = 128, // stmt_continue + S_stmt_return = 129, // stmt_return + S_stmt_breakpoint = 130, // stmt_breakpoint + S_stmt_prof_begin = 131, // stmt_prof_begin + S_stmt_prof_end = 132, // stmt_prof_end + S_for_stmt = 133, // for_stmt + S_for_expr = 134, // for_expr + S_expr = 135, // expr + S_expr_assign = 136, // expr_assign + S_expr_compare = 137, // expr_compare + S_expr_binary = 138, // expr_binary + S_expr_primitive = 139, // expr_primitive + S_expr_call = 140, // expr_call + S_expr_call_thread = 141, // expr_call_thread + S_expr_call_childthread = 142, // expr_call_childthread + S_expr_call_function = 143, // expr_call_function + S_expr_call_pointer = 144, // expr_call_pointer + S_expr_arguments = 145, // expr_arguments + S_expr_arguments_filled = 146, // expr_arguments_filled + S_expr_arguments_empty = 147, // expr_arguments_empty + S_expr_function = 148, // expr_function + S_expr_add_array = 149, // expr_add_array + S_expr_array = 150, // expr_array + S_expr_field = 151, // expr_field + S_expr_size = 152, // expr_size + S_object = 153, // object + S_thisthread = 154, // thisthread + S_empty_array = 155, // empty_array + S_undefined = 156, // undefined + S_game = 157, // game + S_self = 158, // self + S_anim = 159, // anim + S_level = 160, // level + S_animation = 161, // animation + S_animtree = 162, // animtree + S_name = 163, // name + S_file = 164, // file + S_istring = 165, // istring + S_string = 166, // string + S_vector = 167, // vector + S_neg_float = 168, // neg_float + S_neg_integer = 169, // neg_integer + S_float = 170, // float + S_integer = 171, // integer + S_false = 172, // false + S_true = 173 // true }; }; @@ -1086,6 +1104,10 @@ namespace xsk { namespace gsc { namespace h1 { value.move< stmt_break_ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.move< stmt_breakpoint_ptr > (std::move (that.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.move< stmt_call_ptr > (std::move (that.value)); break; @@ -1131,6 +1153,14 @@ namespace xsk { namespace gsc { namespace h1 { value.move< stmt_notify_ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.move< stmt_prof_begin_ptr > (std::move (that.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.move< stmt_prof_end_ptr > (std::move (that.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.move< stmt_ptr > (std::move (that.value)); @@ -1597,6 +1627,20 @@ namespace xsk { namespace gsc { namespace h1 { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, stmt_breakpoint_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_breakpoint_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_call_ptr&& v, location_type&& l) : Base (t) @@ -1751,6 +1795,34 @@ namespace xsk { namespace gsc { namespace h1 { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, stmt_prof_begin_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_prof_begin_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_prof_end_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_prof_end_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_ptr&& v, location_type&& l) : Base (t) @@ -2126,6 +2198,10 @@ switch (yykind) value.template destroy< stmt_break_ptr > (); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.template destroy< stmt_breakpoint_ptr > (); + break; + case symbol_kind::S_stmt_call: // stmt_call value.template destroy< stmt_call_ptr > (); break; @@ -2171,6 +2247,14 @@ switch (yykind) value.template destroy< stmt_notify_ptr > (); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.template destroy< stmt_prof_begin_ptr > (); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.template destroy< stmt_prof_end_ptr > (); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.template destroy< stmt_ptr > (); @@ -2437,6 +2521,51 @@ switch (yykind) return symbol_type (token::H1UNDEF, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_BREAKPOINT (location_type l) + { + return symbol_type (token::BREAKPOINT, std::move (l)); + } +#else + static + symbol_type + make_BREAKPOINT (const location_type& l) + { + return symbol_type (token::BREAKPOINT, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_PROFBEGIN (location_type l) + { + return symbol_type (token::PROFBEGIN, std::move (l)); + } +#else + static + symbol_type + make_PROFBEGIN (const location_type& l) + { + return symbol_type (token::PROFBEGIN, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_PROFEND (location_type l) + { + return symbol_type (token::PROFEND, std::move (l)); + } +#else + static + symbol_type + make_PROFEND (const location_type& l) + { + return symbol_type (token::PROFEND, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4161,8 +4290,8 @@ switch (yykind) /// Constants. enum { - yylast_ = 1581, ///< Last index in yytable_. - yynnts_ = 73, ///< Number of nonterminal symbols. + yylast_ = 1646, ///< Last index in yytable_. + yynnts_ = 76, ///< Number of nonterminal symbols. yyfinal_ = 15 ///< Termination state number. }; @@ -4319,6 +4448,10 @@ switch (yykind) value.copy< stmt_break_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.copy< stmt_breakpoint_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.copy< stmt_call_ptr > (YY_MOVE (that.value)); break; @@ -4364,6 +4497,14 @@ switch (yykind) value.copy< stmt_notify_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.copy< stmt_prof_begin_ptr > (YY_MOVE (that.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.copy< stmt_prof_end_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.copy< stmt_ptr > (YY_MOVE (that.value)); @@ -4587,6 +4728,10 @@ switch (yykind) value.move< stmt_break_ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.move< stmt_breakpoint_ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.move< stmt_call_ptr > (YY_MOVE (s.value)); break; @@ -4632,6 +4777,14 @@ switch (yykind) value.move< stmt_notify_ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.move< stmt_prof_begin_ptr > (YY_MOVE (s.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.move< stmt_prof_end_ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.move< stmt_ptr > (YY_MOVE (s.value)); @@ -4760,7 +4913,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::h1 -#line 4764 "parser.hpp" +#line 4917 "parser.hpp" diff --git a/src/h2/xsk/lexer.cpp b/src/h2/xsk/lexer.cpp index ae3961bc..ec6340b8 100644 --- a/src/h2/xsk/lexer.cpp +++ b/src/h2/xsk/lexer.cpp @@ -553,8 +553,8 @@ static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 97 -#define YY_END_OF_BUFFER 98 +#define YY_NUM_RULES 100 +#define YY_END_OF_BUFFER 101 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -562,39 +562,42 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[286] = +static const flex_int16_t yy_accept[305] = { 0, - 0, 0, 0, 0, 0, 0, 98, 96, 1, 2, - 85, 96, 96, 84, 88, 96, 46, 47, 82, 80, - 52, 81, 53, 83, 95, 55, 56, 69, 79, 70, - 91, 50, 51, 89, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 48, - 87, 49, 86, 5, 6, 5, 9, 10, 9, 66, - 0, 93, 0, 0, 0, 0, 75, 0, 64, 0, - 77, 0, 0, 73, 57, 71, 58, 72, 94, 8, - 4, 3, 74, 94, 95, 0, 0, 54, 61, 67, - 65, 68, 62, 91, 78, 91, 91, 91, 91, 91, + 0, 0, 0, 0, 0, 0, 101, 99, 1, 2, + 88, 99, 99, 87, 91, 99, 49, 50, 85, 83, + 55, 84, 56, 86, 98, 58, 59, 72, 82, 73, + 94, 53, 54, 92, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 51, 90, 52, 89, 5, 6, 5, 9, 10, 9, + 69, 0, 96, 0, 0, 0, 0, 78, 0, 67, + 0, 80, 0, 0, 76, 60, 74, 61, 75, 97, + 0, 8, 4, 3, 77, 97, 98, 0, 0, 57, + 64, 70, 68, 71, 65, 94, 81, 94, 94, 94, - 91, 91, 91, 91, 91, 91, 22, 27, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 76, - 63, 7, 11, 0, 93, 0, 0, 0, 0, 0, - 92, 0, 0, 0, 0, 93, 0, 94, 3, 94, - 94, 90, 59, 60, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 25, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 0, 0, - 0, 0, 92, 0, 0, 92, 0, 44, 91, 37, - 29, 91, 91, 91, 23, 91, 91, 91, 42, 91, - 91, 91, 43, 41, 91, 91, 91, 38, 91, 17, + 94, 94, 94, 94, 94, 94, 94, 94, 25, 30, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 79, 66, 7, 11, 0, 96, 0, 0, 0, + 0, 0, 95, 0, 0, 0, 0, 96, 0, 97, + 0, 3, 97, 97, 93, 62, 63, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 28, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 0, 0, 0, 0, 95, 0, 0, 95, 0, + 0, 47, 94, 40, 32, 94, 94, 94, 26, 94, + 94, 94, 45, 94, 94, 94, 94, 46, 94, 94, - 91, 0, 0, 0, 31, 91, 91, 91, 15, 39, - 91, 45, 91, 91, 91, 91, 91, 91, 91, 91, - 24, 0, 0, 0, 91, 91, 91, 91, 16, 33, - 28, 91, 34, 91, 91, 91, 0, 0, 0, 91, - 91, 30, 26, 91, 91, 91, 91, 0, 12, 0, - 91, 32, 91, 91, 91, 18, 14, 0, 91, 91, - 40, 21, 91, 91, 0, 91, 36, 91, 91, 0, - 35, 91, 91, 0, 91, 91, 0, 91, 19, 0, - 91, 13, 91, 20, 0 + 94, 41, 94, 20, 94, 0, 0, 0, 44, 34, + 94, 94, 94, 18, 42, 94, 48, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 27, 0, 0, 0, + 94, 94, 94, 94, 94, 19, 94, 94, 36, 31, + 94, 37, 94, 94, 94, 0, 0, 0, 94, 94, + 94, 33, 29, 94, 94, 94, 94, 94, 94, 0, + 15, 0, 94, 94, 35, 94, 14, 94, 94, 94, + 21, 17, 0, 94, 94, 94, 94, 43, 24, 94, + 94, 0, 12, 94, 13, 39, 94, 94, 0, 38, + 94, 94, 0, 94, 94, 0, 94, 22, 0, 94, + + 16, 94, 23, 0 } ; static const YY_CHAR yy_ec[256] = @@ -611,8 +614,8 @@ static const YY_CHAR yy_ec[256] = 25, 26, 27, 28, 29, 1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 24, 39, 40, 41, 42, - 43, 24, 24, 44, 45, 46, 47, 48, 49, 24, - 50, 51, 52, 53, 54, 55, 1, 1, 1, 1, + 43, 44, 24, 45, 46, 47, 48, 49, 50, 24, + 51, 52, 53, 54, 55, 56, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -629,228 +632,240 @@ static const YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static const YY_CHAR yy_meta[56] = +static const YY_CHAR yy_meta[57] = { 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 4, 1, 1, 1, 1, 1, 4, 1, 5, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 1, 1, 1, 1 + 4, 4, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[300] = +static const flex_int16_t yy_base[319] = { 0, - 0, 0, 53, 54, 55, 56, 540, 541, 541, 541, - 517, 55, 33, 516, 64, 58, 541, 541, 515, 55, - 541, 60, 518, 73, 71, 516, 541, 70, 512, 71, - 507, 541, 541, 510, 57, 44, 70, 72, 75, 78, - 48, 76, 86, 79, 90, 93, 88, 84, 103, 541, - 81, 541, 541, 541, 541, 514, 541, 541, 513, 541, - 104, 541, 132, 487, 486, 482, 541, 118, 541, 119, - 541, 127, 138, 541, 541, 541, 541, 541, 120, 541, - 541, 0, 541, 121, 133, 134, 0, 541, 504, 541, - 541, 541, 503, 498, 541, 38, 120, 117, 135, 126, + 0, 0, 54, 55, 56, 57, 574, 575, 575, 575, + 551, 56, 35, 550, 63, 55, 575, 575, 549, 56, + 575, 55, 56, 74, 71, 551, 575, 54, 547, 70, + 542, 575, 575, 545, 53, 58, 64, 72, 73, 74, + 79, 84, 82, 85, 86, 88, 95, 97, 94, 107, + 575, 96, 575, 575, 575, 575, 549, 575, 575, 548, + 575, 120, 575, 127, 522, 521, 516, 575, 122, 575, + 115, 575, 126, 140, 575, 575, 575, 575, 575, 120, + 523, 575, 575, 0, 575, 121, 141, 135, 0, 575, + 538, 575, 575, 575, 537, 532, 575, 132, 128, 134, - 137, 122, 143, 139, 140, 144, 497, 496, 145, 148, - 149, 151, 152, 154, 160, 155, 156, 161, 162, 541, - 541, 541, 541, 185, 191, 202, 483, 488, 481, 192, - 541, 203, 200, 207, 204, 205, 212, 541, 0, 201, - 541, 492, 541, 541, 186, 194, 197, 206, 199, 196, - 215, 209, 208, 218, 220, 221, 222, 223, 224, 227, - 226, 231, 233, 232, 238, 239, 241, 242, 476, 476, - 473, 264, 265, 271, 266, 270, 277, 488, 255, 487, - 486, 262, 263, 257, 485, 258, 259, 272, 484, 273, - 279, 157, 483, 482, 280, 281, 285, 481, 282, 283, + 137, 139, 138, 142, 114, 143, 145, 146, 531, 530, + 150, 151, 152, 153, 156, 159, 163, 158, 160, 165, + 166, 575, 575, 575, 575, 189, 197, 202, 517, 522, + 515, 204, 575, 207, 205, 208, 209, 210, 213, 575, + 500, 0, 202, 575, 525, 575, 575, 199, 212, 187, + 195, 206, 198, 217, 215, 218, 222, 224, 225, 226, + 227, 228, 229, 231, 236, 230, 238, 241, 244, 243, + 245, 509, 509, 506, 268, 269, 276, 271, 273, 283, + 513, 520, 261, 519, 518, 258, 263, 262, 517, 270, + 272, 277, 516, 278, 279, 282, 287, 515, 289, 290, - 290, 460, 458, 468, 477, 284, 293, 294, 476, 475, - 296, 474, 295, 297, 299, 300, 305, 306, 307, 314, - 473, 454, 464, 467, 316, 315, 317, 320, 469, 468, - 467, 321, 466, 322, 324, 329, 457, 456, 459, 323, - 332, 462, 461, 334, 344, 330, 333, 452, 541, 443, - 346, 458, 349, 348, 350, 351, 541, 445, 357, 356, - 456, 455, 359, 364, 426, 362, 393, 367, 365, 372, - 391, 372, 370, 371, 373, 375, 380, 374, 384, 372, - 378, 541, 383, 379, 541, 420, 425, 430, 435, 438, - 440, 445, 450, 455, 460, 465, 357, 470, 475 + 293, 514, 291, 294, 296, 492, 490, 501, 575, 298, + 299, 301, 305, 510, 509, 302, 508, 307, 313, 309, + 312, 322, 324, 314, 310, 327, 507, 487, 498, 501, + 328, 330, 334, 336, 335, 503, 340, 337, 502, 501, + 342, 500, 338, 343, 344, 491, 490, 493, 350, 349, + 351, 496, 495, 355, 360, 363, 364, 366, 369, 486, + 575, 477, 370, 374, 492, 373, 491, 375, 377, 380, + 378, 575, 478, 376, 390, 389, 391, 489, 488, 392, + 395, 472, 486, 396, 472, 424, 400, 401, 402, 421, + 402, 406, 397, 407, 408, 406, 410, 352, 259, 409, + 575, 413, 200, 575, 451, 456, 461, 466, 469, 471, + 476, 481, 486, 491, 496, 84, 501, 506 } ; -static const flex_int16_t yy_def[300] = +static const flex_int16_t yy_def[319] = { 0, - 285, 1, 286, 286, 287, 287, 285, 285, 285, 285, - 285, 288, 285, 285, 285, 289, 285, 285, 285, 285, - 285, 285, 285, 285, 290, 285, 285, 285, 285, 285, - 291, 285, 285, 285, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 288, 285, 292, 285, 285, 285, 285, 293, 285, 294, - 285, 289, 295, 285, 285, 285, 285, 285, 285, 285, - 285, 296, 285, 285, 290, 290, 297, 285, 285, 285, - 285, 285, 285, 291, 285, 291, 291, 291, 291, 291, + 304, 1, 305, 305, 306, 306, 304, 304, 304, 304, + 304, 307, 304, 304, 304, 308, 304, 304, 304, 304, + 304, 304, 304, 304, 309, 304, 304, 304, 304, 304, + 310, 304, 304, 304, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 307, 304, 311, 304, 304, 304, 304, 312, 304, + 313, 304, 308, 314, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 315, 304, 304, 309, 309, 316, 304, + 304, 304, 304, 304, 304, 310, 304, 310, 310, 310, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 285, - 285, 285, 285, 288, 288, 292, 285, 285, 285, 293, - 285, 298, 294, 299, 289, 289, 295, 285, 296, 285, - 285, 297, 285, 285, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 285, 285, - 285, 293, 293, 298, 294, 294, 299, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 304, 304, 304, 304, 307, 307, 311, 304, 304, + 304, 312, 304, 317, 313, 318, 308, 308, 314, 304, + 304, 315, 304, 304, 316, 304, 304, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 304, 304, 304, 312, 312, 317, 313, 313, 318, + 304, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 291, 285, 285, 285, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 285, 285, 285, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 285, 285, 285, 291, - 291, 291, 291, 291, 291, 291, 291, 285, 285, 285, - 291, 291, 291, 291, 291, 291, 285, 285, 291, 291, - 291, 291, 291, 291, 285, 291, 291, 291, 291, 285, - 291, 291, 291, 285, 291, 291, 285, 291, 291, 285, - 291, 285, 291, 291, 0, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285 + 310, 310, 310, 310, 310, 304, 304, 304, 304, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 304, 304, 304, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 304, 304, 304, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 304, + 304, 304, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 304, 304, 310, 310, 310, 310, 310, 310, 310, + 310, 304, 310, 310, 310, 310, 310, 310, 304, 310, + 310, 310, 304, 310, 310, 304, 310, 310, 304, 310, + 304, 310, 310, 0, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304 } ; -static const flex_int16_t yy_nxt[597] = +static const flex_int16_t yy_nxt[632] = { 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 8, 33, 34, 31, 35, 36, 37, 38, 39, 40, 41, 31, 42, 31, 43, - 31, 44, 31, 45, 46, 47, 48, 31, 49, 31, - 31, 50, 51, 52, 53, 55, 55, 58, 58, 62, - 59, 59, 64, 87, 56, 56, 62, 75, 68, 87, - 65, 69, 70, 87, 77, 145, 76, 106, 80, 66, - 63, 78, 87, 73, 81, 71, 84, 97, 85, 82, - 89, 90, 92, 93, 83, 87, 87, 87, 96, 98, + 31, 44, 31, 45, 46, 47, 48, 49, 31, 50, + 31, 31, 51, 52, 53, 54, 56, 56, 59, 59, + 63, 60, 60, 63, 65, 57, 57, 69, 76, 78, + 70, 71, 66, 80, 91, 92, 79, 77, 89, 82, + 74, 64, 67, 89, 72, 83, 86, 145, 87, 89, + 84, 94, 95, 100, 98, 85, 89, 89, 89, 89, - 87, 87, 120, 87, 87, 101, 99, 104, 62, 87, - 107, 87, 100, 87, 102, 87, 103, 108, 87, 109, - 105, 110, 131, 111, 115, 117, 112, 131, 87, 63, - 113, 116, 118, 121, 61, 62, 125, 79, 140, 119, - 72, 114, 87, 132, 134, 87, 136, 87, 84, 285, - 85, 87, 73, 146, 138, 141, 147, 126, 87, 87, - 87, 148, 87, 137, 87, 87, 152, 150, 87, 87, - 87, 151, 149, 87, 87, 153, 87, 87, 154, 87, - 87, 87, 87, 155, 156, 87, 87, 87, 166, 62, - 160, 162, 157, 158, 159, 62, 131, 163, 167, 168, + 101, 81, 99, 106, 89, 103, 102, 89, 108, 89, + 89, 89, 104, 89, 105, 111, 107, 122, 109, 89, + 89, 114, 89, 133, 63, 110, 133, 112, 115, 62, + 113, 127, 89, 117, 63, 119, 120, 80, 143, 89, + 136, 118, 73, 121, 116, 64, 156, 134, 138, 123, + 304, 74, 128, 89, 140, 144, 86, 89, 87, 89, + 89, 149, 89, 89, 89, 139, 89, 89, 89, 148, + 89, 89, 154, 150, 152, 89, 89, 89, 89, 151, + 153, 89, 157, 89, 89, 89, 159, 155, 89, 158, + 89, 89, 169, 63, 162, 164, 165, 161, 160, 163, - 214, 165, 161, 164, 61, 130, 125, 173, 131, 133, - 63, 87, 62, 62, 72, 176, 63, 132, 140, 87, - 136, 87, 87, 179, 87, 134, 178, 126, 174, 73, - 73, 87, 177, 87, 87, 141, 180, 137, 182, 181, - 87, 183, 185, 87, 184, 87, 87, 87, 87, 87, - 186, 87, 87, 188, 189, 190, 87, 87, 87, 194, - 191, 193, 187, 87, 87, 197, 87, 87, 131, 131, - 192, 198, 199, 130, 131, 173, 195, 196, 131, 133, - 87, 201, 87, 87, 87, 176, 200, 87, 87, 132, - 132, 134, 210, 205, 206, 134, 174, 87, 87, 209, + 166, 63, 170, 171, 62, 168, 127, 167, 133, 132, + 135, 176, 89, 133, 64, 73, 179, 63, 63, 143, + 89, 138, 64, 89, 89, 89, 184, 128, 185, 134, + 136, 89, 177, 180, 74, 74, 144, 89, 139, 182, + 89, 183, 89, 89, 187, 186, 188, 89, 189, 89, + 89, 89, 89, 89, 89, 89, 89, 192, 193, 194, + 190, 89, 196, 89, 195, 198, 89, 191, 89, 89, + 89, 201, 133, 133, 202, 200, 197, 203, 132, 133, + 176, 133, 199, 89, 205, 135, 89, 89, 89, 204, + 211, 179, 301, 134, 134, 89, 136, 89, 136, 210, - 207, 211, 177, 208, 87, 87, 87, 87, 87, 87, - 87, 215, 212, 213, 217, 87, 218, 219, 87, 87, - 87, 87, 87, 221, 87, 87, 216, 228, 220, 225, - 87, 87, 87, 227, 226, 231, 232, 233, 230, 87, - 87, 87, 87, 234, 229, 87, 87, 87, 87, 87, - 235, 236, 240, 246, 87, 87, 243, 87, 87, 87, - 142, 241, 242, 245, 244, 252, 251, 253, 247, 87, - 255, 87, 256, 87, 87, 87, 87, 254, 260, 259, - 261, 87, 87, 262, 87, 263, 266, 87, 267, 87, - 87, 264, 87, 269, 271, 87, 272, 87, 87, 87, + 212, 177, 89, 89, 89, 215, 216, 89, 180, 213, + 219, 214, 89, 218, 89, 89, 89, 217, 89, 89, + 221, 89, 223, 89, 89, 224, 89, 89, 225, 227, + 89, 220, 89, 235, 89, 89, 222, 89, 89, 89, + 226, 231, 233, 237, 234, 232, 238, 89, 240, 89, + 239, 243, 89, 89, 244, 89, 242, 236, 241, 89, + 89, 89, 89, 89, 245, 89, 250, 89, 89, 89, + 249, 253, 258, 254, 89, 89, 89, 89, 255, 257, + 89, 251, 252, 259, 265, 89, 256, 263, 89, 89, + 266, 89, 267, 264, 89, 89, 268, 269, 89, 89, - 87, 276, 268, 87, 87, 282, 278, 281, 87, 87, - 273, 279, 275, 280, 277, 284, 87, 274, 87, 283, - 54, 54, 54, 54, 54, 57, 57, 57, 57, 57, - 61, 61, 61, 61, 61, 72, 72, 72, 72, 72, - 86, 86, 86, 94, 94, 124, 124, 124, 124, 124, - 130, 130, 130, 130, 130, 133, 133, 133, 133, 133, - 135, 135, 135, 135, 135, 139, 270, 139, 139, 139, - 172, 172, 172, 172, 172, 175, 175, 175, 175, 175, - 87, 87, 265, 87, 258, 257, 87, 87, 250, 249, - 248, 87, 87, 87, 87, 239, 238, 237, 87, 87, + 89, 89, 89, 89, 277, 89, 270, 275, 271, 278, + 276, 274, 280, 279, 89, 89, 89, 89, 281, 284, + 89, 89, 283, 286, 288, 89, 89, 89, 290, 291, + 285, 89, 89, 89, 89, 89, 287, 295, 89, 299, + 297, 296, 294, 300, 298, 303, 89, 292, 293, 89, + 302, 55, 55, 55, 55, 55, 58, 58, 58, 58, + 58, 62, 62, 62, 62, 62, 73, 73, 73, 73, + 73, 88, 88, 88, 96, 96, 126, 126, 126, 126, + 126, 132, 132, 132, 132, 132, 135, 135, 135, 135, + 135, 137, 137, 137, 137, 137, 142, 89, 142, 142, - 87, 87, 87, 224, 223, 222, 87, 87, 87, 87, - 87, 87, 87, 87, 204, 203, 202, 87, 171, 170, - 169, 87, 87, 87, 144, 143, 129, 128, 127, 123, - 122, 95, 87, 91, 88, 79, 74, 67, 60, 285, - 7, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285 + 142, 175, 175, 175, 175, 175, 178, 178, 178, 178, + 178, 89, 289, 89, 89, 282, 89, 89, 273, 272, + 89, 89, 262, 261, 260, 89, 89, 89, 89, 248, + 247, 246, 89, 89, 89, 89, 230, 229, 228, 89, + 89, 89, 89, 89, 89, 89, 209, 208, 207, 206, + 89, 181, 174, 173, 172, 89, 89, 89, 147, 146, + 141, 131, 130, 129, 125, 124, 97, 89, 93, 90, + 75, 68, 61, 304, 7, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304 } ; -static const flex_int16_t yy_chk[597] = +static const flex_int16_t yy_chk[632] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 4, 5, 6, 12, - 5, 6, 13, 96, 3, 4, 16, 20, 15, 36, - 13, 15, 15, 41, 22, 96, 20, 41, 24, 13, - 12, 22, 35, 16, 24, 15, 25, 36, 25, 24, - 28, 28, 30, 30, 24, 37, 25, 38, 35, 37, + 1, 1, 1, 1, 1, 1, 3, 4, 5, 6, + 12, 5, 6, 16, 13, 3, 4, 15, 20, 22, + 15, 15, 13, 23, 28, 28, 22, 20, 35, 24, + 16, 12, 13, 36, 15, 24, 25, 316, 25, 37, + 24, 30, 30, 37, 35, 24, 25, 38, 39, 40, - 39, 42, 51, 40, 44, 38, 37, 40, 61, 48, - 42, 43, 37, 47, 39, 45, 39, 42, 46, 43, - 40, 44, 68, 45, 47, 48, 46, 70, 49, 61, - 46, 47, 49, 51, 63, 72, 63, 79, 84, 49, - 73, 46, 98, 68, 70, 97, 73, 102, 85, 86, - 85, 100, 72, 97, 79, 84, 98, 63, 85, 86, - 99, 98, 101, 73, 104, 105, 102, 100, 103, 106, - 109, 101, 99, 110, 111, 103, 112, 113, 104, 114, - 116, 117, 192, 105, 106, 115, 118, 119, 117, 124, - 112, 114, 109, 110, 111, 125, 130, 115, 118, 119, + 37, 23, 36, 40, 41, 38, 37, 43, 41, 42, + 44, 45, 39, 46, 39, 43, 40, 52, 42, 49, + 47, 46, 48, 71, 62, 42, 69, 44, 47, 64, + 45, 64, 50, 48, 73, 49, 50, 80, 86, 105, + 71, 48, 74, 50, 47, 62, 105, 69, 74, 52, + 88, 73, 64, 99, 80, 86, 87, 98, 87, 100, + 88, 99, 101, 103, 102, 74, 87, 104, 106, 98, + 107, 108, 103, 100, 101, 111, 112, 113, 114, 100, + 102, 115, 106, 118, 116, 119, 108, 104, 117, 107, + 120, 121, 119, 126, 113, 115, 116, 112, 111, 114, - 192, 116, 113, 115, 126, 132, 126, 132, 133, 134, - 124, 145, 135, 136, 137, 134, 125, 130, 140, 146, - 137, 150, 147, 146, 149, 133, 145, 126, 132, 135, - 136, 148, 134, 153, 152, 140, 147, 137, 149, 148, - 151, 150, 152, 154, 151, 155, 156, 157, 158, 159, - 153, 161, 160, 155, 156, 157, 162, 164, 163, 161, - 158, 160, 154, 165, 166, 164, 167, 168, 172, 173, - 159, 165, 166, 174, 175, 174, 162, 163, 176, 177, - 179, 168, 184, 186, 187, 177, 167, 182, 183, 172, - 173, 175, 187, 179, 182, 176, 174, 188, 190, 186, + 117, 127, 120, 121, 128, 118, 128, 117, 132, 134, + 136, 134, 150, 135, 126, 139, 136, 137, 138, 143, + 151, 139, 127, 153, 148, 303, 150, 128, 151, 132, + 135, 152, 134, 136, 137, 138, 143, 149, 139, 148, + 155, 149, 154, 156, 153, 152, 154, 157, 155, 158, + 159, 160, 161, 162, 163, 166, 164, 158, 159, 160, + 156, 165, 162, 167, 161, 164, 168, 157, 170, 169, + 171, 167, 175, 176, 168, 166, 163, 169, 177, 178, + 177, 179, 165, 186, 171, 180, 183, 188, 187, 170, + 186, 180, 299, 175, 176, 190, 178, 191, 179, 183, - 183, 188, 177, 184, 191, 195, 196, 199, 200, 206, - 197, 195, 190, 191, 197, 201, 199, 200, 207, 208, - 213, 211, 214, 201, 215, 216, 196, 211, 200, 206, - 217, 218, 219, 208, 207, 215, 216, 217, 214, 220, - 226, 225, 227, 218, 213, 228, 232, 234, 240, 235, - 219, 220, 225, 235, 236, 246, 228, 241, 247, 244, - 297, 226, 227, 234, 232, 241, 240, 244, 236, 245, - 246, 251, 247, 254, 253, 255, 256, 245, 253, 251, - 254, 260, 259, 255, 263, 256, 259, 266, 260, 264, - 269, 256, 268, 264, 266, 273, 268, 272, 275, 278, + 187, 177, 192, 194, 195, 191, 192, 196, 180, 188, + 196, 190, 197, 195, 199, 200, 203, 194, 201, 204, + 199, 205, 201, 210, 211, 203, 212, 216, 204, 205, + 213, 197, 218, 216, 220, 225, 200, 221, 219, 224, + 204, 210, 212, 219, 213, 211, 219, 222, 221, 223, + 220, 224, 226, 231, 225, 232, 223, 218, 222, 233, + 235, 234, 238, 243, 226, 237, 232, 241, 244, 245, + 231, 235, 244, 237, 250, 249, 251, 298, 238, 243, + 254, 233, 234, 245, 251, 255, 241, 249, 256, 257, + 254, 258, 255, 250, 259, 263, 256, 257, 266, 264, - 276, 273, 263, 281, 284, 280, 275, 278, 283, 279, - 269, 276, 272, 277, 274, 283, 271, 270, 267, 281, - 286, 286, 286, 286, 286, 287, 287, 287, 287, 287, - 288, 288, 288, 288, 288, 289, 289, 289, 289, 289, - 290, 290, 290, 291, 291, 292, 292, 292, 292, 292, - 293, 293, 293, 293, 293, 294, 294, 294, 294, 294, - 295, 295, 295, 295, 295, 296, 265, 296, 296, 296, - 298, 298, 298, 298, 298, 299, 299, 299, 299, 299, - 262, 261, 258, 252, 250, 248, 243, 242, 239, 238, - 237, 233, 231, 230, 229, 224, 223, 222, 221, 212, + 268, 274, 269, 271, 268, 270, 258, 264, 259, 269, + 266, 263, 271, 270, 276, 275, 277, 280, 271, 275, + 281, 284, 274, 277, 281, 287, 288, 291, 284, 287, + 276, 292, 294, 295, 300, 297, 280, 292, 302, 296, + 294, 293, 291, 297, 295, 302, 290, 288, 289, 286, + 300, 305, 305, 305, 305, 305, 306, 306, 306, 306, + 306, 307, 307, 307, 307, 307, 308, 308, 308, 308, + 308, 309, 309, 309, 310, 310, 311, 311, 311, 311, + 311, 312, 312, 312, 312, 312, 313, 313, 313, 313, + 313, 314, 314, 314, 314, 314, 315, 285, 315, 315, - 210, 209, 205, 204, 203, 202, 198, 194, 193, 189, - 185, 181, 180, 178, 171, 170, 169, 142, 129, 128, - 127, 108, 107, 94, 93, 89, 66, 65, 64, 59, - 56, 34, 31, 29, 26, 23, 19, 14, 11, 7, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285 + 315, 317, 317, 317, 317, 317, 318, 318, 318, 318, + 318, 283, 282, 279, 278, 273, 267, 265, 262, 260, + 253, 252, 248, 247, 246, 242, 240, 239, 236, 230, + 229, 228, 227, 217, 215, 214, 208, 207, 206, 202, + 198, 193, 189, 185, 184, 182, 181, 174, 173, 172, + 145, 141, 131, 130, 129, 110, 109, 96, 95, 91, + 81, 67, 66, 65, 60, 57, 34, 31, 29, 26, + 19, 14, 11, 7, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304 } ; /* The intent behind this definition is that it'll catch @@ -871,9 +886,9 @@ static const flex_int16_t yy_chk[597] = #line 23 "lexer.lpp" #define YY_USER_ACTION loc.columns(yyleng); -#line 874 "lexer.cpp" +#line 889 "lexer.cpp" -#line 876 "lexer.cpp" +#line 891 "lexer.cpp" #define INITIAL 0 #define COMMENT_BLOCK_STATE 1 @@ -1141,7 +1156,7 @@ YY_DECL loc.step(); -#line 1144 "lexer.cpp" +#line 1159 "lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1168,13 +1183,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 286 ) + if ( yy_current_state >= 305 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 285 ); + while ( yy_current_state != 304 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -1255,443 +1270,458 @@ YY_RULE_SETUP case 12: YY_RULE_SETUP #line 59 "lexer.lpp" -{ return h2::parser::make_INCLUDE(loc); } +{ return h2::parser::make_BREAKPOINT(loc); } YY_BREAK case 13: YY_RULE_SETUP #line 60 "lexer.lpp" -{ return h2::parser::make_USINGTREE(loc); } +{ return h2::parser::make_PROFBEGIN(loc); } YY_BREAK case 14: YY_RULE_SETUP #line 61 "lexer.lpp" -{ return h2::parser::make_ANIMTREE(loc); } +{ return h2::parser::make_PROFEND(loc); } YY_BREAK case 15: YY_RULE_SETUP #line 62 "lexer.lpp" -{ return h2::parser::make_ENDON(loc); } +{ return h2::parser::make_INCLUDE(loc); } YY_BREAK case 16: YY_RULE_SETUP #line 63 "lexer.lpp" -{ return h2::parser::make_NOTIFY(loc); } +{ return h2::parser::make_USINGTREE(loc); } YY_BREAK case 17: YY_RULE_SETUP #line 64 "lexer.lpp" -{ return h2::parser::make_WAIT(loc); } +{ return h2::parser::make_ANIMTREE(loc); } YY_BREAK case 18: YY_RULE_SETUP #line 65 "lexer.lpp" -{ return h2::parser::make_WAITTILL(loc); } +{ return h2::parser::make_ENDON(loc); } YY_BREAK case 19: YY_RULE_SETUP #line 66 "lexer.lpp" -{ return h2::parser::make_WAITTILLMATCH(loc); } +{ return h2::parser::make_NOTIFY(loc); } YY_BREAK case 20: YY_RULE_SETUP #line 67 "lexer.lpp" -{ return h2::parser::make_WAITTILLFRAMEEND(loc); } +{ return h2::parser::make_WAIT(loc); } YY_BREAK case 21: YY_RULE_SETUP #line 68 "lexer.lpp" -{ return h2::parser::make_WAITFRAME(loc); } +{ return h2::parser::make_WAITTILL(loc); } YY_BREAK case 22: YY_RULE_SETUP #line 69 "lexer.lpp" -{ return h2::parser::make_IF(loc); } +{ return h2::parser::make_WAITTILLMATCH(loc); } YY_BREAK case 23: YY_RULE_SETUP #line 70 "lexer.lpp" -{ return h2::parser::make_ELSE(loc); } +{ return h2::parser::make_WAITTILLFRAMEEND(loc); } YY_BREAK case 24: YY_RULE_SETUP #line 71 "lexer.lpp" -{ return h2::parser::make_WHILE(loc); } +{ return h2::parser::make_WAITFRAME(loc); } YY_BREAK case 25: YY_RULE_SETUP #line 72 "lexer.lpp" -{ return h2::parser::make_FOR(loc); } +{ return h2::parser::make_IF(loc); } YY_BREAK case 26: YY_RULE_SETUP #line 73 "lexer.lpp" -{ return h2::parser::make_FOREACH(loc); } +{ return h2::parser::make_ELSE(loc); } YY_BREAK case 27: YY_RULE_SETUP #line 74 "lexer.lpp" -{ return h2::parser::make_IN(loc); } +{ return h2::parser::make_WHILE(loc); } YY_BREAK case 28: YY_RULE_SETUP #line 75 "lexer.lpp" -{ return h2::parser::make_SWITCH(loc); } +{ return h2::parser::make_FOR(loc); } YY_BREAK case 29: YY_RULE_SETUP #line 76 "lexer.lpp" -{ return h2::parser::make_CASE(loc); } +{ return h2::parser::make_FOREACH(loc); } YY_BREAK case 30: YY_RULE_SETUP #line 77 "lexer.lpp" -{ return h2::parser::make_DEFAULT(loc); } +{ return h2::parser::make_IN(loc); } YY_BREAK case 31: YY_RULE_SETUP #line 78 "lexer.lpp" -{ return h2::parser::make_BREAK(loc); } +{ return h2::parser::make_SWITCH(loc); } YY_BREAK case 32: YY_RULE_SETUP #line 79 "lexer.lpp" -{ return h2::parser::make_CONTINUE(loc); } +{ return h2::parser::make_CASE(loc); } YY_BREAK case 33: YY_RULE_SETUP #line 80 "lexer.lpp" -{ return h2::parser::make_RETURN(loc); } +{ return h2::parser::make_DEFAULT(loc); } YY_BREAK case 34: YY_RULE_SETUP #line 81 "lexer.lpp" -{ return h2::parser::make_THREAD(loc); } +{ return h2::parser::make_BREAK(loc); } YY_BREAK case 35: YY_RULE_SETUP #line 82 "lexer.lpp" -{ return h2::parser::make_CHILDTHREAD(loc); } +{ return h2::parser::make_CONTINUE(loc); } YY_BREAK case 36: YY_RULE_SETUP #line 83 "lexer.lpp" -{ return h2::parser::make_THISTHREAD(loc); } +{ return h2::parser::make_RETURN(loc); } YY_BREAK case 37: YY_RULE_SETUP #line 84 "lexer.lpp" -{ return h2::parser::make_CALL(loc); } +{ return h2::parser::make_THREAD(loc); } YY_BREAK case 38: YY_RULE_SETUP #line 85 "lexer.lpp" -{ return h2::parser::make_TRUE(loc); } +{ return h2::parser::make_CHILDTHREAD(loc); } YY_BREAK case 39: YY_RULE_SETUP #line 86 "lexer.lpp" -{ return h2::parser::make_FALSE(loc); } +{ return h2::parser::make_THISTHREAD(loc); } YY_BREAK case 40: YY_RULE_SETUP #line 87 "lexer.lpp" -{ return h2::parser::make_UNDEFINED(loc); } +{ return h2::parser::make_CALL(loc); } YY_BREAK case 41: YY_RULE_SETUP #line 88 "lexer.lpp" -{ return h2::parser::make_SIZE(loc); } +{ return h2::parser::make_TRUE(loc); } YY_BREAK case 42: YY_RULE_SETUP #line 89 "lexer.lpp" -{ return h2::parser::make_GAME(loc); } +{ return h2::parser::make_FALSE(loc); } YY_BREAK case 43: YY_RULE_SETUP #line 90 "lexer.lpp" -{ return h2::parser::make_SELF(loc); } +{ return h2::parser::make_UNDEFINED(loc); } YY_BREAK case 44: YY_RULE_SETUP #line 91 "lexer.lpp" -{ return h2::parser::make_ANIM(loc); } +{ return h2::parser::make_SIZE(loc); } YY_BREAK case 45: YY_RULE_SETUP #line 92 "lexer.lpp" -{ return h2::parser::make_LEVEL(loc); } +{ return h2::parser::make_GAME(loc); } YY_BREAK case 46: YY_RULE_SETUP #line 93 "lexer.lpp" -{ return h2::parser::make_LPAREN(loc); } +{ return h2::parser::make_SELF(loc); } YY_BREAK case 47: YY_RULE_SETUP #line 94 "lexer.lpp" -{ return h2::parser::make_RPAREN(loc); } +{ return h2::parser::make_ANIM(loc); } YY_BREAK case 48: YY_RULE_SETUP #line 95 "lexer.lpp" -{ return h2::parser::make_LBRACE(loc); } +{ return h2::parser::make_LEVEL(loc); } YY_BREAK case 49: YY_RULE_SETUP #line 96 "lexer.lpp" -{ return h2::parser::make_RBRACE(loc); } +{ return h2::parser::make_LPAREN(loc); } YY_BREAK case 50: YY_RULE_SETUP #line 97 "lexer.lpp" -{ return h2::parser::make_LBRACKET(loc); } +{ return h2::parser::make_RPAREN(loc); } YY_BREAK case 51: YY_RULE_SETUP #line 98 "lexer.lpp" -{ return h2::parser::make_RBRACKET(loc); } +{ return h2::parser::make_LBRACE(loc); } YY_BREAK case 52: YY_RULE_SETUP #line 99 "lexer.lpp" -{ return h2::parser::make_COMMA(loc); } +{ return h2::parser::make_RBRACE(loc); } YY_BREAK case 53: YY_RULE_SETUP #line 100 "lexer.lpp" -{ return h2::parser::make_DOT(loc); } +{ return h2::parser::make_LBRACKET(loc); } YY_BREAK case 54: YY_RULE_SETUP #line 101 "lexer.lpp" -{ return h2::parser::make_DOUBLECOLON(loc); } +{ return h2::parser::make_RBRACKET(loc); } YY_BREAK case 55: YY_RULE_SETUP #line 102 "lexer.lpp" -{ return h2::parser::make_COLON(loc); } +{ return h2::parser::make_COMMA(loc); } YY_BREAK case 56: YY_RULE_SETUP #line 103 "lexer.lpp" -{ return h2::parser::make_SEMICOLON(loc); } +{ return h2::parser::make_DOT(loc); } YY_BREAK case 57: YY_RULE_SETUP #line 104 "lexer.lpp" -{ return h2::parser::make_INCREMENT(loc); } +{ return h2::parser::make_DOUBLECOLON(loc); } YY_BREAK case 58: YY_RULE_SETUP #line 105 "lexer.lpp" -{ return h2::parser::make_DECREMENT(loc); } +{ return h2::parser::make_COLON(loc); } YY_BREAK case 59: YY_RULE_SETUP #line 106 "lexer.lpp" -{ return h2::parser::make_ASSIGN_LSHIFT(loc); } +{ return h2::parser::make_SEMICOLON(loc); } YY_BREAK case 60: YY_RULE_SETUP #line 107 "lexer.lpp" -{ return h2::parser::make_ASSIGN_RSHIFT(loc); } +{ return h2::parser::make_INCREMENT(loc); } YY_BREAK case 61: YY_RULE_SETUP #line 108 "lexer.lpp" -{ return h2::parser::make_LSHIFT(loc); } +{ return h2::parser::make_DECREMENT(loc); } YY_BREAK case 62: YY_RULE_SETUP #line 109 "lexer.lpp" -{ return h2::parser::make_RSHIFT(loc); } +{ return h2::parser::make_ASSIGN_LSHIFT(loc); } YY_BREAK case 63: YY_RULE_SETUP #line 110 "lexer.lpp" -{ return h2::parser::make_OR(loc); } +{ return h2::parser::make_ASSIGN_RSHIFT(loc); } YY_BREAK case 64: YY_RULE_SETUP #line 111 "lexer.lpp" -{ return h2::parser::make_AND(loc); } +{ return h2::parser::make_LSHIFT(loc); } YY_BREAK case 65: YY_RULE_SETUP #line 112 "lexer.lpp" -{ return h2::parser::make_EQUALITY(loc); } +{ return h2::parser::make_RSHIFT(loc); } YY_BREAK case 66: YY_RULE_SETUP #line 113 "lexer.lpp" -{ return h2::parser::make_INEQUALITY(loc); } +{ return h2::parser::make_OR(loc); } YY_BREAK case 67: YY_RULE_SETUP #line 114 "lexer.lpp" -{ return h2::parser::make_LESS_EQUAL(loc); } +{ return h2::parser::make_AND(loc); } YY_BREAK case 68: YY_RULE_SETUP #line 115 "lexer.lpp" -{ return h2::parser::make_GREATER_EQUAL(loc); } +{ return h2::parser::make_EQUALITY(loc); } YY_BREAK case 69: YY_RULE_SETUP #line 116 "lexer.lpp" -{ return h2::parser::make_LESS(loc); } +{ return h2::parser::make_INEQUALITY(loc); } YY_BREAK case 70: YY_RULE_SETUP #line 117 "lexer.lpp" -{ return h2::parser::make_GREATER(loc); } +{ return h2::parser::make_LESS_EQUAL(loc); } YY_BREAK case 71: YY_RULE_SETUP #line 118 "lexer.lpp" -{ return h2::parser::make_ASSIGN_ADD(loc); } +{ return h2::parser::make_GREATER_EQUAL(loc); } YY_BREAK case 72: YY_RULE_SETUP #line 119 "lexer.lpp" -{ return h2::parser::make_ASSIGN_SUB(loc); } +{ return h2::parser::make_LESS(loc); } YY_BREAK case 73: YY_RULE_SETUP #line 120 "lexer.lpp" -{ return h2::parser::make_ASSIGN_MULT(loc); } +{ return h2::parser::make_GREATER(loc); } YY_BREAK case 74: YY_RULE_SETUP #line 121 "lexer.lpp" -{ return h2::parser::make_ASSIGN_DIV(loc); } +{ return h2::parser::make_ASSIGN_ADD(loc); } YY_BREAK case 75: YY_RULE_SETUP #line 122 "lexer.lpp" -{ return h2::parser::make_ASSIGN_MOD(loc); } +{ return h2::parser::make_ASSIGN_SUB(loc); } YY_BREAK case 76: YY_RULE_SETUP #line 123 "lexer.lpp" -{ return h2::parser::make_ASSIGN_BITWISE_OR(loc); } +{ return h2::parser::make_ASSIGN_MULT(loc); } YY_BREAK case 77: YY_RULE_SETUP #line 124 "lexer.lpp" -{ return h2::parser::make_ASSIGN_BITWISE_AND(loc); } +{ return h2::parser::make_ASSIGN_DIV(loc); } YY_BREAK case 78: YY_RULE_SETUP #line 125 "lexer.lpp" -{ return h2::parser::make_ASSIGN_BITWISE_EXOR(loc); } +{ return h2::parser::make_ASSIGN_MOD(loc); } YY_BREAK case 79: YY_RULE_SETUP #line 126 "lexer.lpp" -{ return h2::parser::make_ASSIGN(loc); } +{ return h2::parser::make_ASSIGN_BITWISE_OR(loc); } YY_BREAK case 80: YY_RULE_SETUP #line 127 "lexer.lpp" -{ return h2::parser::make_ADD(loc); } +{ return h2::parser::make_ASSIGN_BITWISE_AND(loc); } YY_BREAK case 81: YY_RULE_SETUP #line 128 "lexer.lpp" -{ return h2::parser::make_SUB(loc); } +{ return h2::parser::make_ASSIGN_BITWISE_EXOR(loc); } YY_BREAK case 82: YY_RULE_SETUP #line 129 "lexer.lpp" -{ return h2::parser::make_MULT(loc); } +{ return h2::parser::make_ASSIGN(loc); } YY_BREAK case 83: YY_RULE_SETUP #line 130 "lexer.lpp" -{ return h2::parser::make_DIV(loc); } +{ return h2::parser::make_ADD(loc); } YY_BREAK case 84: YY_RULE_SETUP #line 131 "lexer.lpp" -{ return h2::parser::make_MOD(loc); } +{ return h2::parser::make_SUB(loc); } YY_BREAK case 85: YY_RULE_SETUP #line 132 "lexer.lpp" -{ return h2::parser::make_NOT(loc); } +{ return h2::parser::make_MULT(loc); } YY_BREAK case 86: YY_RULE_SETUP #line 133 "lexer.lpp" -{ return h2::parser::make_COMPLEMENT(loc); } +{ return h2::parser::make_DIV(loc); } YY_BREAK case 87: YY_RULE_SETUP #line 134 "lexer.lpp" -{ return h2::parser::make_BITWISE_OR(loc); } +{ return h2::parser::make_MOD(loc); } YY_BREAK case 88: YY_RULE_SETUP #line 135 "lexer.lpp" -{ return h2::parser::make_BITWISE_AND(loc); } +{ return h2::parser::make_NOT(loc); } YY_BREAK case 89: YY_RULE_SETUP #line 136 "lexer.lpp" -{ return h2::parser::make_BITWISE_EXOR(loc); } +{ return h2::parser::make_COMPLEMENT(loc); } YY_BREAK case 90: YY_RULE_SETUP #line 137 "lexer.lpp" -{ return h2::parser::make_FILE(utils::string::fordslash(yytext), loc); } +{ return h2::parser::make_BITWISE_OR(loc); } YY_BREAK case 91: YY_RULE_SETUP #line 138 "lexer.lpp" -{ return h2::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); } +{ return h2::parser::make_BITWISE_AND(loc); } YY_BREAK case 92: -/* rule 92 can match eol */ YY_RULE_SETUP #line 139 "lexer.lpp" -{ return h2::parser::make_ISTRING(std::string(yytext).substr(1), loc); } +{ return h2::parser::make_BITWISE_EXOR(loc); } YY_BREAK case 93: -/* rule 93 can match eol */ YY_RULE_SETUP #line 140 "lexer.lpp" -{ return h2::parser::make_STRING(std::string(yytext), loc); } +{ return h2::parser::make_FILE(utils::string::fordslash(yytext), loc); } YY_BREAK case 94: YY_RULE_SETUP #line 141 "lexer.lpp" -{ return h2::parser::make_FLOAT(std::string(yytext), loc); } +{ return h2::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); } YY_BREAK case 95: +/* rule 95 can match eol */ YY_RULE_SETUP #line 142 "lexer.lpp" +{ return h2::parser::make_ISTRING(std::string(yytext).substr(1), loc); } + YY_BREAK +case 96: +/* rule 96 can match eol */ +YY_RULE_SETUP +#line 143 "lexer.lpp" +{ return h2::parser::make_STRING(std::string(yytext), loc); } + YY_BREAK +case 97: +YY_RULE_SETUP +#line 144 "lexer.lpp" +{ return h2::parser::make_FLOAT(std::string(yytext), loc); } + YY_BREAK +case 98: +YY_RULE_SETUP +#line 145 "lexer.lpp" { return h2::parser::make_INTEGER(std::string(yytext), loc); } YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT_BLOCK_STATE): case YY_STATE_EOF(DEVELOPER_BLOCK_STATE): -#line 143 "lexer.lpp" +#line 146 "lexer.lpp" { return h2::parser::make_H2EOF(loc); } YY_BREAK -case 96: -/* rule 96 can match eol */ +case 99: +/* rule 99 can match eol */ YY_RULE_SETUP -#line 144 "lexer.lpp" +#line 147 "lexer.lpp" { throw h2::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); } YY_BREAK -case 97: +case 100: YY_RULE_SETUP -#line 146 "lexer.lpp" +#line 149 "lexer.lpp" ECHO; YY_BREAK -#line 1694 "lexer.cpp" +#line 1724 "lexer.cpp" case YY_END_OF_BUFFER: { @@ -1989,7 +2019,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 286 ) + if ( yy_current_state >= 305 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2018,11 +2048,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 286 ) + if ( yy_current_state >= 305 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 285); + yy_is_jam = (yy_current_state == 304); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -2821,6 +2851,6 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 146 "lexer.lpp" +#line 149 "lexer.lpp" diff --git a/src/h2/xsk/lexer.hpp b/src/h2/xsk/lexer.hpp index 6c764da3..ab2cd5ba 100644 --- a/src/h2/xsk/lexer.hpp +++ b/src/h2/xsk/lexer.hpp @@ -700,7 +700,7 @@ extern int yylex (yyscan_t yyscanner); #undef yyTABLES_NAME #endif -#line 146 "lexer.lpp" +#line 149 "lexer.lpp" #line 706 "lexer.hpp" diff --git a/src/h2/xsk/parser.cpp b/src/h2/xsk/parser.cpp index 27cdd9b2..c167c71a 100644 --- a/src/h2/xsk/parser.cpp +++ b/src/h2/xsk/parser.cpp @@ -345,6 +345,10 @@ namespace xsk { namespace gsc { namespace h2 { value.YY_MOVE_OR_COPY< stmt_break_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.YY_MOVE_OR_COPY< stmt_breakpoint_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.YY_MOVE_OR_COPY< stmt_call_ptr > (YY_MOVE (that.value)); break; @@ -390,6 +394,14 @@ namespace xsk { namespace gsc { namespace h2 { value.YY_MOVE_OR_COPY< stmt_notify_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.YY_MOVE_OR_COPY< stmt_prof_begin_ptr > (YY_MOVE (that.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.YY_MOVE_OR_COPY< stmt_prof_end_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.YY_MOVE_OR_COPY< stmt_ptr > (YY_MOVE (that.value)); @@ -599,6 +611,10 @@ namespace xsk { namespace gsc { namespace h2 { value.move< stmt_break_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.move< stmt_breakpoint_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.move< stmt_call_ptr > (YY_MOVE (that.value)); break; @@ -644,6 +660,14 @@ namespace xsk { namespace gsc { namespace h2 { value.move< stmt_notify_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.move< stmt_prof_begin_ptr > (YY_MOVE (that.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.move< stmt_prof_end_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.move< stmt_ptr > (YY_MOVE (that.value)); @@ -853,6 +877,10 @@ namespace xsk { namespace gsc { namespace h2 { value.copy< stmt_break_ptr > (that.value); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.copy< stmt_breakpoint_ptr > (that.value); + break; + case symbol_kind::S_stmt_call: // stmt_call value.copy< stmt_call_ptr > (that.value); break; @@ -898,6 +926,14 @@ namespace xsk { namespace gsc { namespace h2 { value.copy< stmt_notify_ptr > (that.value); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.copy< stmt_prof_begin_ptr > (that.value); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.copy< stmt_prof_end_ptr > (that.value); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.copy< stmt_ptr > (that.value); @@ -1106,6 +1142,10 @@ namespace xsk { namespace gsc { namespace h2 { value.move< stmt_break_ptr > (that.value); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.move< stmt_breakpoint_ptr > (that.value); + break; + case symbol_kind::S_stmt_call: // stmt_call value.move< stmt_call_ptr > (that.value); break; @@ -1151,6 +1191,14 @@ namespace xsk { namespace gsc { namespace h2 { value.move< stmt_notify_ptr > (that.value); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.move< stmt_prof_begin_ptr > (that.value); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.move< stmt_prof_end_ptr > (that.value); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.move< stmt_ptr > (that.value); @@ -1614,6 +1662,10 @@ namespace xsk { namespace gsc { namespace h2 { yylhs.value.emplace< stmt_break_ptr > (); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + yylhs.value.emplace< stmt_breakpoint_ptr > (); + break; + case symbol_kind::S_stmt_call: // stmt_call yylhs.value.emplace< stmt_call_ptr > (); break; @@ -1659,6 +1711,14 @@ namespace xsk { namespace gsc { namespace h2 { yylhs.value.emplace< stmt_notify_ptr > (); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + yylhs.value.emplace< stmt_prof_begin_ptr > (); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + yylhs.value.emplace< stmt_prof_end_ptr > (); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt yylhs.value.emplace< stmt_ptr > (); @@ -1745,1177 +1805,1213 @@ namespace xsk { namespace gsc { namespace h2 { switch (yyn) { case 2: // root: program -#line 233 "parser.ypp" - { ast = std::move(yystack_[0].value.as < program_ptr > ()); } -#line 1751 "parser.cpp" - break; - - case 3: // root: %empty -#line 234 "parser.ypp" - { ast = std::make_unique(yylhs.location); } -#line 1757 "parser.cpp" - break; - - case 4: // program: program include #line 239 "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 1763 "parser.cpp" - break; - - case 5: // program: program define -#line 241 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } -#line 1769 "parser.cpp" - break; - - case 6: // program: include -#line 243 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } -#line 1775 "parser.cpp" - break; - - case 7: // program: define -#line 245 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } -#line 1781 "parser.cpp" - break; - - case 8: // include: "#include" file ";" -#line 250 "parser.ypp" - { yylhs.value.as < include_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < file_ptr > ())); } -#line 1787 "parser.cpp" - break; - - case 9: // define: usingtree -#line 254 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_usingtree = std::move(yystack_[0].value.as < usingtree_ptr > ()); } -#line 1793 "parser.cpp" - break; - - case 10: // define: constant -#line 255 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_constant = std::move(yystack_[0].value.as < constant_ptr > ()); } -#line 1799 "parser.cpp" - break; - - case 11: // define: thread -#line 256 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_thread = std::move(yystack_[0].value.as < thread_ptr > ()); } -#line 1805 "parser.cpp" - break; - - case 12: // usingtree: "#using_animtree" "(" string ")" ";" -#line 261 "parser.ypp" - { yylhs.value.as < usingtree_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < string_ptr > ())); } + { ast = std::move(yystack_[0].value.as < program_ptr > ()); } #line 1811 "parser.cpp" break; - case 13: // constant: name "=" expr ";" -#line 266 "parser.ypp" - { yylhs.value.as < constant_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 3: // root: %empty +#line 240 "parser.ypp" + { ast = std::make_unique(yylhs.location); } #line 1817 "parser.cpp" break; - case 14: // thread: name "(" parameters ")" stmt_block -#line 271 "parser.ypp" - { yylhs.value.as < thread_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < name_ptr > ()), std::move(yystack_[2].value.as < parameters_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } + case 4: // program: program include +#line 245 "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 1823 "parser.cpp" break; - case 15: // parameters: parameters "," name -#line 276 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::move(yystack_[2].value.as < parameters_ptr > ()); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } + case 5: // program: program define +#line 247 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1829 "parser.cpp" break; - case 16: // parameters: name -#line 278 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } + case 6: // program: include +#line 249 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } #line 1835 "parser.cpp" break; - case 17: // parameters: %empty -#line 280 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); } + case 7: // program: define +#line 251 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1841 "parser.cpp" break; - case 18: // stmt: stmt_block -#line 284 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_list = std::move(yystack_[0].value.as < stmt_list_ptr > ()); } + case 8: // include: "#include" file ";" +#line 256 "parser.ypp" + { yylhs.value.as < include_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < file_ptr > ())); } #line 1847 "parser.cpp" break; - case 19: // stmt: stmt_call -#line 285 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_call = std::move(yystack_[0].value.as < stmt_call_ptr > ()); } + case 9: // define: usingtree +#line 260 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_usingtree = std::move(yystack_[0].value.as < usingtree_ptr > ()); } #line 1853 "parser.cpp" break; - case 20: // stmt: stmt_assign -#line 286 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_assign = std::move(yystack_[0].value.as < stmt_assign_ptr > ()); } + case 10: // define: constant +#line 261 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_constant = std::move(yystack_[0].value.as < constant_ptr > ()); } #line 1859 "parser.cpp" break; - case 21: // stmt: stmt_endon -#line 287 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_endon = std::move(yystack_[0].value.as < stmt_endon_ptr > ()); } + case 11: // define: thread +#line 262 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_thread = std::move(yystack_[0].value.as < thread_ptr > ()); } #line 1865 "parser.cpp" break; - case 22: // stmt: stmt_notify -#line 288 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_notify = std::move(yystack_[0].value.as < stmt_notify_ptr > ()); } + case 12: // usingtree: "#using_animtree" "(" string ")" ";" +#line 267 "parser.ypp" + { yylhs.value.as < usingtree_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < string_ptr > ())); } #line 1871 "parser.cpp" break; - case 23: // stmt: stmt_wait -#line 289 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_wait = std::move(yystack_[0].value.as < stmt_wait_ptr > ()); } + case 13: // constant: name "=" expr ";" +#line 272 "parser.ypp" + { yylhs.value.as < constant_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } #line 1877 "parser.cpp" break; - case 24: // stmt: stmt_waittill -#line 290 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill_ptr > ()); } + case 14: // thread: name "(" parameters ")" stmt_block +#line 277 "parser.ypp" + { yylhs.value.as < thread_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < name_ptr > ()), std::move(yystack_[2].value.as < parameters_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } #line 1883 "parser.cpp" break; - case 25: // stmt: stmt_waittillmatch -#line 291 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch_ptr > ()); } + case 15: // parameters: parameters "," name +#line 282 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::move(yystack_[2].value.as < parameters_ptr > ()); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } #line 1889 "parser.cpp" break; - case 26: // stmt: stmt_waittillframeend -#line 292 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend_ptr > ()); } + case 16: // parameters: name +#line 284 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } #line 1895 "parser.cpp" break; - case 27: // stmt: stmt_waitframe -#line 293 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waitframe = std::move(yystack_[0].value.as < stmt_waitframe_ptr > ()); } + case 17: // parameters: %empty +#line 286 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); } #line 1901 "parser.cpp" break; - case 28: // stmt: stmt_if -#line 294 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_if = std::move(yystack_[0].value.as < stmt_if_ptr > ()); } + case 18: // stmt: stmt_block +#line 290 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_list = std::move(yystack_[0].value.as < stmt_list_ptr > ()); } #line 1907 "parser.cpp" break; - case 29: // stmt: stmt_ifelse -#line 295 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse_ptr > ()); } + case 19: // stmt: stmt_call +#line 291 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_call = std::move(yystack_[0].value.as < stmt_call_ptr > ()); } #line 1913 "parser.cpp" break; - case 30: // stmt: stmt_while -#line 296 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_while = std::move(yystack_[0].value.as < stmt_while_ptr > ()); } + case 20: // stmt: stmt_assign +#line 292 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_assign = std::move(yystack_[0].value.as < stmt_assign_ptr > ()); } #line 1919 "parser.cpp" break; - case 31: // stmt: stmt_for -#line 297 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_for = std::move(yystack_[0].value.as < stmt_for_ptr > ()); } + case 21: // stmt: stmt_endon +#line 293 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_endon = std::move(yystack_[0].value.as < stmt_endon_ptr > ()); } #line 1925 "parser.cpp" break; - case 32: // stmt: stmt_foreach -#line 298 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach_ptr > ()); } + case 22: // stmt: stmt_notify +#line 294 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_notify = std::move(yystack_[0].value.as < stmt_notify_ptr > ()); } #line 1931 "parser.cpp" break; - case 33: // stmt: stmt_switch -#line 299 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_switch = std::move(yystack_[0].value.as < stmt_switch_ptr > ()); } + case 23: // stmt: stmt_wait +#line 295 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_wait = std::move(yystack_[0].value.as < stmt_wait_ptr > ()); } #line 1937 "parser.cpp" break; - case 34: // stmt: stmt_case -#line 300 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_case = std::move(yystack_[0].value.as < stmt_case_ptr > ()); } + case 24: // stmt: stmt_waittill +#line 296 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill_ptr > ()); } #line 1943 "parser.cpp" break; - case 35: // stmt: stmt_default -#line 301 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_default = std::move(yystack_[0].value.as < stmt_default_ptr > ()); } + case 25: // stmt: stmt_waittillmatch +#line 297 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch_ptr > ()); } #line 1949 "parser.cpp" break; - case 36: // stmt: stmt_break -#line 302 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_break = std::move(yystack_[0].value.as < stmt_break_ptr > ()); } + case 26: // stmt: stmt_waittillframeend +#line 298 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend_ptr > ()); } #line 1955 "parser.cpp" break; - case 37: // stmt: stmt_continue -#line 303 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_continue = std::move(yystack_[0].value.as < stmt_continue_ptr > ()); } + case 27: // stmt: stmt_waitframe +#line 299 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waitframe = std::move(yystack_[0].value.as < stmt_waitframe_ptr > ()); } #line 1961 "parser.cpp" break; - case 38: // stmt: stmt_return -#line 304 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_return = std::move(yystack_[0].value.as < stmt_return_ptr > ()); } + case 28: // stmt: stmt_if +#line 300 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_if = std::move(yystack_[0].value.as < stmt_if_ptr > ()); } #line 1967 "parser.cpp" break; - case 39: // stmt_block: "{" stmt_list "}" -#line 308 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); } + case 29: // stmt: stmt_ifelse +#line 301 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse_ptr > ()); } #line 1973 "parser.cpp" break; - case 40: // stmt_block: "{" "}" -#line 309 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); } + case 30: // stmt: stmt_while +#line 302 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_while = std::move(yystack_[0].value.as < stmt_while_ptr > ()); } #line 1979 "parser.cpp" break; - case 41: // stmt_list: stmt_list stmt -#line 314 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 31: // stmt: stmt_for +#line 303 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_for = std::move(yystack_[0].value.as < stmt_for_ptr > ()); } #line 1985 "parser.cpp" break; - case 42: // stmt_list: stmt -#line 316 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 32: // stmt: stmt_foreach +#line 304 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach_ptr > ()); } #line 1991 "parser.cpp" break; - case 43: // stmt_call: expr_call ";" -#line 321 "parser.ypp" - { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } + case 33: // stmt: stmt_switch +#line 305 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_switch = std::move(yystack_[0].value.as < stmt_switch_ptr > ()); } #line 1997 "parser.cpp" break; - case 44: // stmt_call: expr_call_thread ";" -#line 323 "parser.ypp" - { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } + case 34: // stmt: stmt_case +#line 306 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_case = std::move(yystack_[0].value.as < stmt_case_ptr > ()); } #line 2003 "parser.cpp" break; - case 45: // stmt_assign: expr_assign ";" -#line 328 "parser.ypp" - { yylhs.value.as < stmt_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_assign_ptr > ())); } + case 35: // stmt: stmt_default +#line 307 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_default = std::move(yystack_[0].value.as < stmt_default_ptr > ()); } #line 2009 "parser.cpp" break; - case 46: // stmt_endon: object "endon" "(" expr ")" ";" -#line 333 "parser.ypp" - { yylhs.value.as < stmt_endon_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ())); } + case 36: // stmt: stmt_break +#line 308 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_break = std::move(yystack_[0].value.as < stmt_break_ptr > ()); } #line 2015 "parser.cpp" break; - case 47: // stmt_notify: object "notify" "(" expr "," expr_arguments ")" ";" -#line 338 "parser.ypp" - { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 37: // stmt: stmt_continue +#line 309 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_continue = std::move(yystack_[0].value.as < stmt_continue_ptr > ()); } #line 2021 "parser.cpp" break; - case 48: // stmt_notify: object "notify" "(" expr ")" ";" -#line 340 "parser.ypp" - { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 38: // stmt: stmt_return +#line 310 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_return = std::move(yystack_[0].value.as < stmt_return_ptr > ()); } #line 2027 "parser.cpp" break; - case 49: // stmt_wait: "wait" expr ";" -#line 345 "parser.ypp" - { yylhs.value.as < stmt_wait_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } + case 39: // stmt: stmt_breakpoint +#line 311 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_breakpoint = std::move(yystack_[0].value.as < stmt_breakpoint_ptr > ()); } #line 2033 "parser.cpp" break; - case 50: // stmt_waittill: object "waittill" "(" expr "," expr_arguments ")" ";" -#line 350 "parser.ypp" - { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 40: // stmt: stmt_prof_begin +#line 312 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_prof_begin = std::move(yystack_[0].value.as < stmt_prof_begin_ptr > ()); } #line 2039 "parser.cpp" break; - case 51: // stmt_waittill: object "waittill" "(" expr ")" ";" -#line 352 "parser.ypp" - { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 41: // stmt: stmt_prof_end +#line 313 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_prof_end = std::move(yystack_[0].value.as < stmt_prof_end_ptr > ()); } #line 2045 "parser.cpp" break; - case 52: // stmt_waittillmatch: object "waittillmatch" "(" expr "," expr_arguments ")" ";" -#line 357 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 42: // stmt_block: "{" stmt_list "}" +#line 317 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); } #line 2051 "parser.cpp" break; - case 53: // stmt_waittillmatch: object "waittillmatch" "(" expr ")" ";" -#line 359 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 43: // stmt_block: "{" "}" +#line 318 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); } #line 2057 "parser.cpp" break; - case 54: // stmt_waittillframeend: "waittillframeend" ";" -#line 364 "parser.ypp" - { yylhs.value.as < stmt_waittillframeend_ptr > () = std::make_unique(yylhs.location); } + case 44: // stmt_list: stmt_list stmt +#line 323 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2063 "parser.cpp" break; - case 55: // stmt_waitframe: "waitframe" ";" -#line 369 "parser.ypp" - { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } + case 45: // stmt_list: stmt +#line 325 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2069 "parser.cpp" break; - case 56: // stmt_waitframe: "waitframe" "(" ")" ";" -#line 371 "parser.ypp" - { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } + case 46: // stmt_call: expr_call ";" +#line 330 "parser.ypp" + { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } #line 2075 "parser.cpp" break; - case 57: // stmt_if: "if" "(" expr ")" stmt -#line 376 "parser.ypp" - { yylhs.value.as < stmt_if_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 47: // stmt_call: expr_call_thread ";" +#line 332 "parser.ypp" + { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } #line 2081 "parser.cpp" break; - case 58: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 381 "parser.ypp" - { yylhs.value.as < stmt_ifelse_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 48: // stmt_assign: expr_assign ";" +#line 337 "parser.ypp" + { yylhs.value.as < stmt_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_assign_ptr > ())); } #line 2087 "parser.cpp" break; - case 59: // stmt_while: "while" "(" expr ")" stmt -#line 386 "parser.ypp" - { yylhs.value.as < stmt_while_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 49: // stmt_endon: object "endon" "(" expr ")" ";" +#line 342 "parser.ypp" + { yylhs.value.as < stmt_endon_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ())); } #line 2093 "parser.cpp" break; - case 60: // stmt_for: "for" "(" for_stmt ";" for_expr ";" for_stmt ")" stmt -#line 391 "parser.ypp" - { yylhs.value.as < stmt_for_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[6].value.as < stmt_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 50: // stmt_notify: object "notify" "(" expr "," expr_arguments ")" ";" +#line 347 "parser.ypp" + { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2099 "parser.cpp" break; - case 61: // stmt_foreach: "foreach" "(" name "in" expr ")" stmt -#line 396 "parser.ypp" - { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 51: // stmt_notify: object "notify" "(" expr ")" ";" +#line 349 "parser.ypp" + { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2105 "parser.cpp" break; - case 62: // stmt_foreach: "foreach" "(" name "," name "in" expr ")" stmt -#line 398 "parser.ypp" - { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[6].value.as < name_ptr > ())), expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 52: // stmt_wait: "wait" expr ";" +#line 354 "parser.ypp" + { yylhs.value.as < stmt_wait_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2111 "parser.cpp" break; - case 63: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 403 "parser.ypp" - { yylhs.value.as < stmt_switch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } + case 53: // stmt_waittill: object "waittill" "(" expr "," expr_arguments ")" ";" +#line 359 "parser.ypp" + { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2117 "parser.cpp" break; - case 64: // stmt_case: "case" integer ":" -#line 408 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } + case 54: // stmt_waittill: object "waittill" "(" expr ")" ";" +#line 361 "parser.ypp" + { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2123 "parser.cpp" break; - case 65: // stmt_case: "case" neg_integer ":" -#line 410 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } + case 55: // stmt_waittillmatch: object "waittillmatch" "(" expr "," expr_arguments ")" ";" +#line 366 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2129 "parser.cpp" break; - case 66: // stmt_case: "case" string ":" -#line 412 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < string_ptr > ())), std::make_unique(yylhs.location)); } + case 56: // stmt_waittillmatch: object "waittillmatch" "(" expr ")" ";" +#line 368 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2135 "parser.cpp" break; - case 67: // stmt_default: "default" ":" -#line 417 "parser.ypp" - { yylhs.value.as < stmt_default_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } + case 57: // stmt_waittillframeend: "waittillframeend" ";" +#line 373 "parser.ypp" + { yylhs.value.as < stmt_waittillframeend_ptr > () = std::make_unique(yylhs.location); } #line 2141 "parser.cpp" break; - case 68: // stmt_break: "break" ";" -#line 422 "parser.ypp" - { yylhs.value.as < stmt_break_ptr > () = std::make_unique(yylhs.location); } + case 58: // stmt_waitframe: "waitframe" ";" +#line 378 "parser.ypp" + { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } #line 2147 "parser.cpp" break; - case 69: // stmt_continue: "continue" ";" -#line 427 "parser.ypp" - { yylhs.value.as < stmt_continue_ptr > () = std::make_unique(yylhs.location); } + case 59: // stmt_waitframe: "waitframe" "(" ")" ";" +#line 380 "parser.ypp" + { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } #line 2153 "parser.cpp" break; - case 70: // stmt_return: "return" expr ";" -#line 432 "parser.ypp" - { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } + case 60: // stmt_if: "if" "(" expr ")" stmt +#line 385 "parser.ypp" + { yylhs.value.as < stmt_if_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2159 "parser.cpp" break; - case 71: // stmt_return: "return" ";" -#line 434 "parser.ypp" - { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } + case 61: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 390 "parser.ypp" + { yylhs.value.as < stmt_ifelse_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2165 "parser.cpp" break; - case 72: // for_stmt: expr_assign -#line 438 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_list = std::make_unique(yylhs.location); yylhs.value.as < stmt_ptr > ().as_list->stmts.push_back(stmt_ptr(std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_assign_ptr > ())))); } + case 62: // stmt_while: "while" "(" expr ")" stmt +#line 395 "parser.ypp" + { yylhs.value.as < stmt_while_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2171 "parser.cpp" break; - case 73: // for_stmt: %empty -#line 439 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_node = std::make_unique(yylhs.location); } + case 63: // stmt_for: "for" "(" for_stmt ";" for_expr ";" for_stmt ")" stmt +#line 400 "parser.ypp" + { yylhs.value.as < stmt_for_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[6].value.as < stmt_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2177 "parser.cpp" break; - case 74: // for_expr: expr -#line 443 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 64: // stmt_foreach: "foreach" "(" name "in" expr ")" stmt +#line 405 "parser.ypp" + { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2183 "parser.cpp" break; - case 75: // for_expr: %empty -#line 444 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location); } + case 65: // stmt_foreach: "foreach" "(" name "," name "in" expr ")" stmt +#line 407 "parser.ypp" + { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[6].value.as < name_ptr > ())), expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2189 "parser.cpp" break; - case 76: // expr: expr_compare -#line 448 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 66: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 412 "parser.ypp" + { yylhs.value.as < stmt_switch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } #line 2195 "parser.cpp" break; - case 77: // expr: expr_binary -#line 449 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 67: // stmt_case: "case" integer ":" +#line 417 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } #line 2201 "parser.cpp" break; - case 78: // expr: expr_primitive -#line 450 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 68: // stmt_case: "case" neg_integer ":" +#line 419 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } #line 2207 "parser.cpp" break; - case 79: // expr_assign: "++" object -#line 454 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } + case 69: // stmt_case: "case" string ":" +#line 421 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < string_ptr > ())), std::make_unique(yylhs.location)); } #line 2213 "parser.cpp" break; - case 80: // expr_assign: "--" object -#line 455 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } + case 70: // stmt_default: "default" ":" +#line 426 "parser.ypp" + { yylhs.value.as < stmt_default_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2219 "parser.cpp" break; - case 81: // expr_assign: object "++" -#line 456 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 71: // stmt_break: "break" ";" +#line 431 "parser.ypp" + { yylhs.value.as < stmt_break_ptr > () = std::make_unique(yylhs.location); } #line 2225 "parser.cpp" break; - case 82: // expr_assign: object "--" -#line 457 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 72: // stmt_continue: "continue" ";" +#line 436 "parser.ypp" + { yylhs.value.as < stmt_continue_ptr > () = std::make_unique(yylhs.location); } #line 2231 "parser.cpp" break; - case 83: // expr_assign: object "=" expr -#line 458 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 73: // stmt_return: "return" expr ";" +#line 441 "parser.ypp" + { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2237 "parser.cpp" break; - case 84: // expr_assign: object "|=" expr -#line 459 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 74: // stmt_return: "return" ";" +#line 443 "parser.ypp" + { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2243 "parser.cpp" break; - case 85: // expr_assign: object "&=" expr -#line 460 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 75: // stmt_breakpoint: "breakpoint" ";" +#line 448 "parser.ypp" + { yylhs.value.as < stmt_breakpoint_ptr > () = std::make_unique(yylhs.location); } #line 2249 "parser.cpp" break; - case 86: // expr_assign: object "^=" expr -#line 461 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 76: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" +#line 453 "parser.ypp" + { yylhs.value.as < stmt_prof_begin_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2255 "parser.cpp" break; - case 87: // expr_assign: object "<<=" expr -#line 462 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()),std::move( yystack_[0].value.as < expr_ptr > ())); } + case 77: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" +#line 458 "parser.ypp" + { yylhs.value.as < stmt_prof_end_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2261 "parser.cpp" break; - case 88: // expr_assign: object ">>=" expr -#line 463 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 78: // for_stmt: expr_assign +#line 462 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_list = std::make_unique(yylhs.location); yylhs.value.as < stmt_ptr > ().as_list->stmts.push_back(stmt_ptr(std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_assign_ptr > ())))); } #line 2267 "parser.cpp" break; - case 89: // expr_assign: object "+=" expr -#line 464 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 79: // for_stmt: %empty +#line 463 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_node = std::make_unique(yylhs.location); } #line 2273 "parser.cpp" break; - case 90: // expr_assign: object "-=" expr -#line 465 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 80: // for_expr: expr +#line 467 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2279 "parser.cpp" break; - case 91: // expr_assign: object "*=" expr -#line 466 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 81: // for_expr: %empty +#line 468 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location); } #line 2285 "parser.cpp" break; - case 92: // expr_assign: object "/=" expr -#line 467 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 82: // expr: expr_compare +#line 472 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2291 "parser.cpp" break; - case 93: // expr_assign: object "%=" expr -#line 468 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 83: // expr: expr_binary +#line 473 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2297 "parser.cpp" break; - case 94: // expr_compare: expr "||" expr -#line 472 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 84: // expr: expr_primitive +#line 474 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2303 "parser.cpp" break; - case 95: // expr_compare: expr "&&" expr -#line 473 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 85: // expr_assign: "++" object +#line 478 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } #line 2309 "parser.cpp" break; - case 96: // expr_compare: expr "==" expr -#line 474 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 86: // expr_assign: "--" object +#line 479 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } #line 2315 "parser.cpp" break; - case 97: // expr_compare: expr "!=" expr -#line 475 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 87: // expr_assign: object "++" +#line 480 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2321 "parser.cpp" break; - case 98: // expr_compare: expr "<=" expr -#line 476 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 88: // expr_assign: object "--" +#line 481 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2327 "parser.cpp" break; - case 99: // expr_compare: expr ">=" expr -#line 477 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 89: // expr_assign: object "=" expr +#line 482 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2333 "parser.cpp" break; - case 100: // expr_compare: expr "<" expr -#line 478 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 90: // expr_assign: object "|=" expr +#line 483 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2339 "parser.cpp" break; - case 101: // expr_compare: expr ">" expr -#line 479 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 91: // expr_assign: object "&=" expr +#line 484 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2345 "parser.cpp" break; - case 102: // expr_binary: expr "|" expr -#line 483 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 92: // expr_assign: object "^=" expr +#line 485 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2351 "parser.cpp" break; - case 103: // expr_binary: expr "&" expr -#line 484 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 93: // expr_assign: object "<<=" expr +#line 486 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()),std::move( yystack_[0].value.as < expr_ptr > ())); } #line 2357 "parser.cpp" break; - case 104: // expr_binary: expr "^" expr -#line 485 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 94: // expr_assign: object ">>=" expr +#line 487 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2363 "parser.cpp" break; - case 105: // expr_binary: expr "<<" expr -#line 486 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 95: // expr_assign: object "+=" expr +#line 488 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2369 "parser.cpp" break; - case 106: // expr_binary: expr ">>" expr -#line 487 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 96: // expr_assign: object "-=" expr +#line 489 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2375 "parser.cpp" break; - case 107: // expr_binary: expr "+" expr -#line 488 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 97: // expr_assign: object "*=" expr +#line 490 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2381 "parser.cpp" break; - case 108: // expr_binary: expr "-" expr -#line 489 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 98: // expr_assign: object "/=" expr +#line 491 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2387 "parser.cpp" break; - case 109: // expr_binary: expr "*" expr -#line 490 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 99: // expr_assign: object "%=" expr +#line 492 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2393 "parser.cpp" break; - case 110: // expr_binary: expr "/" expr -#line 491 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 100: // expr_compare: expr "||" expr +#line 496 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2399 "parser.cpp" break; - case 111: // expr_binary: expr "%" expr -#line 492 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 101: // expr_compare: expr "&&" expr +#line 497 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2405 "parser.cpp" break; - case 112: // expr_primitive: "(" expr ")" -#line 496 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[1].value.as < expr_ptr > ()); } + case 102: // expr_compare: expr "==" expr +#line 498 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2411 "parser.cpp" break; - case 113: // expr_primitive: "~" expr -#line 497 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } + case 103: // expr_compare: expr "!=" expr +#line 499 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2417 "parser.cpp" break; - case 114: // expr_primitive: "!" expr -#line 498 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } + case 104: // expr_compare: expr "<=" expr +#line 500 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2423 "parser.cpp" break; - case 115: // expr_primitive: expr_call -#line 499 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 105: // expr_compare: expr ">=" expr +#line 501 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2429 "parser.cpp" break; - case 116: // expr_primitive: expr_call_thread -#line 500 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 106: // expr_compare: expr "<" expr +#line 502 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2435 "parser.cpp" break; - case 117: // expr_primitive: expr_call_childthread -#line 501 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 107: // expr_compare: expr ">" expr +#line 503 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2441 "parser.cpp" break; - case 118: // expr_primitive: expr_function -#line 502 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 108: // expr_binary: expr "|" expr +#line 507 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2447 "parser.cpp" break; - case 119: // expr_primitive: expr_add_array -#line 503 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 109: // expr_binary: expr "&" expr +#line 508 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2453 "parser.cpp" break; - case 120: // expr_primitive: expr_array -#line 504 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 110: // expr_binary: expr "^" expr +#line 509 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2459 "parser.cpp" break; - case 121: // expr_primitive: expr_field -#line 505 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 111: // expr_binary: expr "<<" expr +#line 510 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2465 "parser.cpp" break; - case 122: // expr_primitive: expr_size -#line 506 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 112: // expr_binary: expr ">>" expr +#line 511 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2471 "parser.cpp" break; - case 123: // expr_primitive: thisthread -#line 507 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < thisthread_ptr > ()); } + case 113: // expr_binary: expr "+" expr +#line 512 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2477 "parser.cpp" break; - case 124: // expr_primitive: empty_array -#line 508 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < empty_array_ptr > ()); } + case 114: // expr_binary: expr "-" expr +#line 513 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2483 "parser.cpp" break; - case 125: // expr_primitive: undefined -#line 509 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < undefined_ptr > ()); } + case 115: // expr_binary: expr "*" expr +#line 514 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2489 "parser.cpp" break; - case 126: // expr_primitive: game -#line 510 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < game_ptr > ()); } + case 116: // expr_binary: expr "/" expr +#line 515 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2495 "parser.cpp" break; - case 127: // expr_primitive: self -#line 511 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < self_ptr > ()); } + case 117: // expr_binary: expr "%" expr +#line 516 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2501 "parser.cpp" break; - case 128: // expr_primitive: anim -#line 512 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < anim_ptr > ()); } + case 118: // expr_primitive: "(" expr ")" +#line 520 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[1].value.as < expr_ptr > ()); } #line 2507 "parser.cpp" break; - case 129: // expr_primitive: level -#line 513 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < level_ptr > ()); } + case 119: // expr_primitive: "~" expr +#line 521 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2513 "parser.cpp" break; - case 130: // expr_primitive: animation -#line 514 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animation_ptr > ()); } + case 120: // expr_primitive: "!" expr +#line 522 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2519 "parser.cpp" break; - case 131: // expr_primitive: animtree -#line 515 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animtree_ptr > ()); } + case 121: // expr_primitive: expr_call +#line 523 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2525 "parser.cpp" break; - case 132: // expr_primitive: name -#line 516 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < name_ptr > ()); } + case 122: // expr_primitive: expr_call_thread +#line 524 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2531 "parser.cpp" break; - case 133: // expr_primitive: istring -#line 517 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < istring_ptr > ()); } + case 123: // expr_primitive: expr_call_childthread +#line 525 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2537 "parser.cpp" break; - case 134: // expr_primitive: string -#line 518 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < string_ptr > ()); } + case 124: // expr_primitive: expr_function +#line 526 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2543 "parser.cpp" break; - case 135: // expr_primitive: vector -#line 519 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < vector_ptr > ()); } + case 125: // expr_primitive: expr_add_array +#line 527 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2549 "parser.cpp" break; - case 136: // expr_primitive: neg_float -#line 520 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } + case 126: // expr_primitive: expr_array +#line 528 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2555 "parser.cpp" break; - case 137: // expr_primitive: neg_integer -#line 521 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } + case 127: // expr_primitive: expr_field +#line 529 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2561 "parser.cpp" break; - case 138: // expr_primitive: float -#line 522 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } + case 128: // expr_primitive: expr_size +#line 530 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2567 "parser.cpp" break; - case 139: // expr_primitive: integer -#line 523 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } + case 129: // expr_primitive: thisthread +#line 531 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < thisthread_ptr > ()); } #line 2573 "parser.cpp" break; - case 140: // expr_primitive: false -#line 524 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < false_ptr > ()); } + case 130: // expr_primitive: empty_array +#line 532 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < empty_array_ptr > ()); } #line 2579 "parser.cpp" break; - case 141: // expr_primitive: true -#line 525 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < true_ptr > ()); } + case 131: // expr_primitive: undefined +#line 533 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < undefined_ptr > ()); } #line 2585 "parser.cpp" break; - case 142: // expr_call: expr_call_function -#line 529 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 132: // expr_primitive: game +#line 534 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < game_ptr > ()); } #line 2591 "parser.cpp" break; - case 143: // expr_call: expr_call_pointer -#line 530 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 133: // expr_primitive: self +#line 535 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < self_ptr > ()); } #line 2597 "parser.cpp" break; - case 144: // expr_call: object expr_call_function -#line 531 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 134: // expr_primitive: anim +#line 536 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < anim_ptr > ()); } #line 2603 "parser.cpp" break; - case 145: // expr_call: object expr_call_pointer -#line 532 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 135: // expr_primitive: level +#line 537 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < level_ptr > ()); } #line 2609 "parser.cpp" break; - case 146: // expr_call_thread: "thread" expr_call_function -#line 536 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 136: // expr_primitive: animation +#line 538 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animation_ptr > ()); } #line 2615 "parser.cpp" break; - case 147: // expr_call_thread: "thread" expr_call_pointer -#line 537 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 137: // expr_primitive: animtree +#line 539 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animtree_ptr > ()); } #line 2621 "parser.cpp" break; - case 148: // expr_call_thread: object "thread" expr_call_function -#line 538 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 138: // expr_primitive: name +#line 540 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < name_ptr > ()); } #line 2627 "parser.cpp" break; - case 149: // expr_call_thread: object "thread" expr_call_pointer -#line 539 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 139: // expr_primitive: istring +#line 541 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < istring_ptr > ()); } #line 2633 "parser.cpp" break; - case 150: // expr_call_childthread: "childthread" expr_call_function -#line 543 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 140: // expr_primitive: string +#line 542 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < string_ptr > ()); } #line 2639 "parser.cpp" break; - case 151: // expr_call_childthread: "childthread" expr_call_pointer -#line 544 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 141: // expr_primitive: vector +#line 543 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < vector_ptr > ()); } #line 2645 "parser.cpp" break; - case 152: // expr_call_childthread: object "childthread" expr_call_function -#line 545 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 142: // expr_primitive: neg_float +#line 544 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } #line 2651 "parser.cpp" break; - case 153: // expr_call_childthread: object "childthread" expr_call_pointer -#line 546 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 143: // expr_primitive: neg_integer +#line 545 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } #line 2657 "parser.cpp" break; - case 154: // expr_call_function: name "(" expr_arguments ")" -#line 551 "parser.ypp" - {yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::make_unique(), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 144: // expr_primitive: float +#line 546 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } #line 2663 "parser.cpp" break; - case 155: // expr_call_function: file "::" name "(" expr_arguments ")" -#line 553 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < file_ptr > ()), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 145: // expr_primitive: integer +#line 547 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } #line 2669 "parser.cpp" break; - case 156: // expr_call_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 558 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, false, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 146: // expr_primitive: false +#line 548 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < false_ptr > ()); } #line 2675 "parser.cpp" break; - case 157: // expr_call_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 560 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, true, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 147: // expr_primitive: true +#line 549 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < true_ptr > ()); } #line 2681 "parser.cpp" break; - case 158: // expr_arguments: expr_arguments_filled -#line 564 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } + case 148: // expr_call: expr_call_function +#line 553 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2687 "parser.cpp" break; - case 159: // expr_arguments: expr_arguments_empty -#line 565 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } + case 149: // expr_call: expr_call_pointer +#line 554 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2693 "parser.cpp" break; - case 160: // expr_arguments_filled: expr_arguments "," expr -#line 570 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[2].value.as < expr_arguments_ptr > ()); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } + case 150: // expr_call: object expr_call_function +#line 555 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2699 "parser.cpp" break; - case 161: // expr_arguments_filled: expr -#line 572 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } + case 151: // expr_call: object expr_call_pointer +#line 556 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2705 "parser.cpp" break; - case 162: // expr_arguments_empty: %empty -#line 577 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); } + case 152: // expr_call_thread: "thread" expr_call_function +#line 560 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2711 "parser.cpp" break; - case 163: // expr_function: "::" name -#line 582 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < name_ptr > ())); } + case 153: // expr_call_thread: "thread" expr_call_pointer +#line 561 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2717 "parser.cpp" break; - case 164: // expr_function: file "::" name -#line 584 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < file_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } + case 154: // expr_call_thread: object "thread" expr_call_function +#line 562 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2723 "parser.cpp" break; - case 165: // expr_add_array: "[" expr_arguments_filled "]" -#line 589 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 155: // expr_call_thread: object "thread" expr_call_pointer +#line 563 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2729 "parser.cpp" break; - case 166: // expr_array: object "[" expr "]" -#line 594 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < node_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 156: // expr_call_childthread: "childthread" expr_call_function +#line 567 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2735 "parser.cpp" break; - case 167: // expr_field: object "." name -#line 599 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } + case 157: // expr_call_childthread: "childthread" expr_call_pointer +#line 568 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2741 "parser.cpp" break; - case 168: // expr_size: object "." "size" -#line 604 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ())); } + case 158: // expr_call_childthread: object "childthread" expr_call_function +#line 569 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2747 "parser.cpp" break; - case 169: // object: expr_call -#line 608 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 159: // expr_call_childthread: object "childthread" expr_call_pointer +#line 570 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2753 "parser.cpp" break; - case 170: // object: expr_array -#line 609 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } + case 160: // expr_call_function: name "(" expr_arguments ")" +#line 575 "parser.ypp" + {yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::make_unique(), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2759 "parser.cpp" break; - case 171: // object: expr_field -#line 610 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } + case 161: // expr_call_function: file "::" name "(" expr_arguments ")" +#line 577 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < file_ptr > ()), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2765 "parser.cpp" break; - case 172: // object: game -#line 611 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < game_ptr > ()); } + case 162: // expr_call_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 582 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, false, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2771 "parser.cpp" break; - case 173: // object: self -#line 612 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < self_ptr > ()); } + case 163: // expr_call_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 584 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, true, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2777 "parser.cpp" break; - case 174: // object: anim -#line 613 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < anim_ptr > ()); } + case 164: // expr_arguments: expr_arguments_filled +#line 588 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } #line 2783 "parser.cpp" break; - case 175: // object: level -#line 614 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < level_ptr > ()); } + case 165: // expr_arguments: expr_arguments_empty +#line 589 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } #line 2789 "parser.cpp" break; - case 176: // object: name -#line 615 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < name_ptr > ()); } + case 166: // expr_arguments_filled: expr_arguments "," expr +#line 594 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[2].value.as < expr_arguments_ptr > ()); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2795 "parser.cpp" break; - case 177: // thisthread: "thisthread" -#line 618 "parser.ypp" - { yylhs.value.as < thisthread_ptr > () = std::make_unique(yylhs.location); } + case 167: // expr_arguments_filled: expr +#line 596 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2801 "parser.cpp" break; - case 178: // empty_array: "[" "]" -#line 619 "parser.ypp" - { yylhs.value.as < empty_array_ptr > () = std::make_unique(yylhs.location); } + case 168: // expr_arguments_empty: %empty +#line 601 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); } #line 2807 "parser.cpp" break; - case 179: // undefined: "undefined" -#line 620 "parser.ypp" - { yylhs.value.as < undefined_ptr > () = std::make_unique(yylhs.location); } + case 169: // expr_function: "::" name +#line 606 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2813 "parser.cpp" break; - case 180: // game: "game" -#line 621 "parser.ypp" - { yylhs.value.as < game_ptr > () = std::make_unique(yylhs.location); } + case 170: // expr_function: file "::" name +#line 608 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < file_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2819 "parser.cpp" break; - case 181: // self: "self" -#line 622 "parser.ypp" - { yylhs.value.as < self_ptr > () = std::make_unique(yylhs.location); } + case 171: // expr_add_array: "[" expr_arguments_filled "]" +#line 613 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2825 "parser.cpp" break; - case 182: // anim: "anim" -#line 623 "parser.ypp" - { yylhs.value.as < anim_ptr > () = std::make_unique(yylhs.location); } + case 172: // expr_array: object "[" expr "]" +#line 618 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < node_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2831 "parser.cpp" break; - case 183: // level: "level" -#line 624 "parser.ypp" - { yylhs.value.as < level_ptr > () = std::make_unique(yylhs.location); } + case 173: // expr_field: object "." name +#line 623 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2837 "parser.cpp" break; - case 184: // animation: "%" "identifier" -#line 625 "parser.ypp" - { yylhs.value.as < animation_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 174: // expr_size: object ".size" +#line 628 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2843 "parser.cpp" break; - case 185: // animtree: "#animtree" -#line 626 "parser.ypp" - { yylhs.value.as < animtree_ptr > () = std::make_unique(yylhs.location); } + case 175: // object: expr_call +#line 632 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2849 "parser.cpp" break; - case 186: // name: "identifier" -#line 627 "parser.ypp" - { yylhs.value.as < name_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 176: // object: expr_array +#line 633 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2855 "parser.cpp" break; - case 187: // file: "file path" -#line 628 "parser.ypp" - { yylhs.value.as < file_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 177: // object: expr_field +#line 634 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2861 "parser.cpp" break; - case 188: // istring: "localized string" -#line 629 "parser.ypp" - { yylhs.value.as < istring_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 178: // object: game +#line 635 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < game_ptr > ()); } #line 2867 "parser.cpp" break; - case 189: // string: "string literal" -#line 630 "parser.ypp" - { yylhs.value.as < string_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 179: // object: self +#line 636 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < self_ptr > ()); } #line 2873 "parser.cpp" break; - case 190: // vector: "(" expr "," expr "," expr ")" -#line 631 "parser.ypp" - { yylhs.value.as < vector_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[3].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 180: // object: anim +#line 637 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < anim_ptr > ()); } #line 2879 "parser.cpp" break; - case 191: // neg_float: "-" "float" -#line 632 "parser.ypp" - { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 181: // object: level +#line 638 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < level_ptr > ()); } #line 2885 "parser.cpp" break; - case 192: // neg_integer: "-" "int" -#line 633 "parser.ypp" - { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 182: // object: name +#line 639 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < name_ptr > ()); } #line 2891 "parser.cpp" break; - case 193: // float: "float" -#line 634 "parser.ypp" - { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 183: // thisthread: "thisthread" +#line 642 "parser.ypp" + { yylhs.value.as < thisthread_ptr > () = std::make_unique(yylhs.location); } #line 2897 "parser.cpp" break; - case 194: // integer: "int" -#line 635 "parser.ypp" - { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 184: // empty_array: "[" "]" +#line 643 "parser.ypp" + { yylhs.value.as < empty_array_ptr > () = std::make_unique(yylhs.location); } #line 2903 "parser.cpp" break; - case 195: // false: "false" -#line 636 "parser.ypp" - { yylhs.value.as < false_ptr > () = std::make_unique(yylhs.location); } + case 185: // undefined: "undefined" +#line 644 "parser.ypp" + { yylhs.value.as < undefined_ptr > () = std::make_unique(yylhs.location); } #line 2909 "parser.cpp" break; - case 196: // true: "true" -#line 637 "parser.ypp" - { yylhs.value.as < true_ptr > () = std::make_unique(yylhs.location); } + case 186: // game: "game" +#line 645 "parser.ypp" + { yylhs.value.as < game_ptr > () = std::make_unique(yylhs.location); } #line 2915 "parser.cpp" break; + case 187: // self: "self" +#line 646 "parser.ypp" + { yylhs.value.as < self_ptr > () = std::make_unique(yylhs.location); } +#line 2921 "parser.cpp" + break; -#line 2919 "parser.cpp" + case 188: // anim: "anim" +#line 647 "parser.ypp" + { yylhs.value.as < anim_ptr > () = std::make_unique(yylhs.location); } +#line 2927 "parser.cpp" + break; + + case 189: // level: "level" +#line 648 "parser.ypp" + { yylhs.value.as < level_ptr > () = std::make_unique(yylhs.location); } +#line 2933 "parser.cpp" + break; + + case 190: // animation: "%" "identifier" +#line 649 "parser.ypp" + { yylhs.value.as < animation_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2939 "parser.cpp" + break; + + case 191: // animtree: "#animtree" +#line 650 "parser.ypp" + { yylhs.value.as < animtree_ptr > () = std::make_unique(yylhs.location); } +#line 2945 "parser.cpp" + break; + + case 192: // name: "identifier" +#line 651 "parser.ypp" + { yylhs.value.as < name_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2951 "parser.cpp" + break; + + case 193: // file: "file path" +#line 652 "parser.ypp" + { yylhs.value.as < file_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2957 "parser.cpp" + break; + + case 194: // istring: "localized string" +#line 653 "parser.ypp" + { yylhs.value.as < istring_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2963 "parser.cpp" + break; + + case 195: // string: "string literal" +#line 654 "parser.ypp" + { yylhs.value.as < string_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2969 "parser.cpp" + break; + + case 196: // vector: "(" expr "," expr "," expr ")" +#line 655 "parser.ypp" + { yylhs.value.as < vector_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[3].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } +#line 2975 "parser.cpp" + break; + + case 197: // neg_float: "-" "float" +#line 656 "parser.ypp" + { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 2981 "parser.cpp" + break; + + case 198: // neg_integer: "-" "int" +#line 657 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 2987 "parser.cpp" + break; + + case 199: // float: "float" +#line 658 "parser.ypp" + { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2993 "parser.cpp" + break; + + case 200: // integer: "int" +#line 659 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2999 "parser.cpp" + break; + + case 201: // false: "false" +#line 660 "parser.ypp" + { yylhs.value.as < false_ptr > () = std::make_unique(yylhs.location); } +#line 3005 "parser.cpp" + break; + + case 202: // true: "true" +#line 661 "parser.ypp" + { yylhs.value.as < true_ptr > () = std::make_unique(yylhs.location); } +#line 3011 "parser.cpp" + break; + + +#line 3015 "parser.cpp" default: break; @@ -3099,24 +3195,26 @@ namespace xsk { namespace gsc { namespace h2 { { static const char *const yy_sname[] = { - "end of file", "error", "invalid token", "#include", "#using_animtree", - "#animtree", "endon", "notify", "wait", "waittill", "waittillmatch", - "waittillframeend", "waitframe", "if", "else", "while", "for", "foreach", - "in", "switch", "case", "default", "break", "continue", "return", - "thread", "childthread", "thisthread", "call", "true", "false", - "undefined", "size", "game", "self", "anim", "level", "(", ")", "{", "}", - "[", "]", ",", ".", "::", ":", ";", "++", "--", "<<", ">>", "||", "&&", - "==", "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", - "%=", "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", - "%", "file path", "identifier", "string literal", "localized string", - "float", "int", "ADD_ARRAY", "THEN", "NEG", "ANIMREF", "PREINC", - "PREDEC", "POSTINC", "POSTDEC", "$accept", "root", "program", "include", - "define", "usingtree", "constant", "thread", "parameters", "stmt", - "stmt_block", "stmt_list", "stmt_call", "stmt_assign", "stmt_endon", - "stmt_notify", "stmt_wait", "stmt_waittill", "stmt_waittillmatch", + "end of file", "error", "invalid token", "breakpoint", "prof_begin", + "prof_end", "#include", "#using_animtree", "#animtree", "endon", + "notify", "wait", "waittill", "waittillmatch", "waittillframeend", + "waitframe", "if", "else", "while", "for", "foreach", "in", "switch", + "case", "default", "break", "continue", "return", "thread", + "childthread", "thisthread", "call", "true", "false", "undefined", + ".size", "game", "self", "anim", "level", "(", ")", "{", "}", "[", "]", + ",", ".", "::", ":", ";", "++", "--", "<<", ">>", "||", "&&", "==", "!=", + "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", "|=", + "&=", "^=", ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", "%", + "file path", "identifier", "string literal", "localized string", "float", + "int", "ADD_ARRAY", "THEN", "NEG", "ANIMREF", "PREINC", "PREDEC", + "POSTINC", "POSTDEC", "$accept", "root", "program", "include", "define", + "usingtree", "constant", "thread", "parameters", "stmt", "stmt_block", + "stmt_list", "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", + "stmt_wait", "stmt_waittill", "stmt_waittillmatch", "stmt_waittillframeend", "stmt_waitframe", "stmt_if", "stmt_ifelse", "stmt_while", "stmt_for", "stmt_foreach", "stmt_switch", "stmt_case", - "stmt_default", "stmt_break", "stmt_continue", "stmt_return", "for_stmt", + "stmt_default", "stmt_break", "stmt_continue", "stmt_return", + "stmt_breakpoint", "stmt_prof_begin", "stmt_prof_end", "for_stmt", "for_expr", "expr", "expr_assign", "expr_compare", "expr_binary", "expr_primitive", "expr_call", "expr_call_thread", "expr_call_childthread", "expr_call_function", "expr_call_pointer", @@ -3390,513 +3488,532 @@ namespace xsk { namespace gsc { namespace h2 { } - const short parser::yypact_ninf_ = -230; + const short parser::yypact_ninf_ = -236; - const short parser::yytable_ninf_ = -177; + const short parser::yytable_ninf_ = -183; const short parser::yypact_[] = { - 7, -67, -20, -230, 53, 7, -230, -230, -230, -230, - -230, -21, -230, 13, -10, -230, -230, -230, -3, 607, - -230, -230, 25, -15, -230, -230, 41, 41, -230, 29, - -230, -230, -230, -230, -230, -230, -230, 607, 480, -3, - 607, 607, -50, -1, -230, -230, -230, 1341, -230, -230, - -230, 18, -230, -230, -230, -230, -230, -230, 23, 30, - -230, 332, -230, -230, -230, 446, 507, 569, 573, -230, - -230, -4, 38, -230, -230, -230, -230, -230, -230, -230, - -230, -230, 47, 85, -3, 56, -230, -230, 84, 64, - -230, -230, 86, 905, 480, -230, 1419, 90, 95, -230, - -230, -230, -230, -230, -230, -230, -230, 607, 607, 607, - 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, - 607, 607, 607, 607, 607, 41, 41, 669, -17, -230, - -230, 607, -3, -230, 787, -230, -230, 607, -3, 607, - -230, 607, 1212, 607, -230, 124, 124, 1429, 938, 1501, - 1501, 40, 40, 40, 40, 981, 1460, 1470, 101, 101, - -230, -230, -230, -230, -230, -230, -230, 1251, -230, -230, - -13, -230, 103, 607, 94, -18, 123, 126, 128, 130, - 131, 9, 125, 135, 138, 545, -230, 732, 732, -230, - -230, 826, -230, -230, -230, -230, -230, -230, -230, -230, - -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, - -230, -230, 139, 143, 148, -230, -230, 715, -230, -230, - -230, -230, 84, 1212, 103, 1290, 1328, 133, 1419, -230, - -230, 607, 1375, -230, 132, -230, 607, 607, 630, -3, - 607, 91, 151, 159, 160, -230, -230, -230, -230, 1388, - -230, 6, 6, -230, -230, -230, -230, -230, 152, 172, - 173, 174, -3, -230, -230, 607, 607, 607, 607, 607, - 607, 607, 607, 607, 607, 607, 170, 607, 176, 14, - -230, 177, 1044, 1077, 178, -230, 868, 2, 1087, -230, - -230, -230, -230, 607, 607, 607, 607, 1419, 1419, 1419, - 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 182, 1120, - 607, -230, -230, 865, 865, 607, 607, -3, 85, 1130, - 948, 991, 1034, 607, -230, 42, 207, -230, 187, 1419, - 1163, 205, -230, 188, 190, 607, 193, 607, 195, 607, - 55, -230, 865, 630, 865, 607, -230, -230, 58, -230, - 70, -230, 72, -230, -230, 206, -230, 1173, 198, 199, - 200, 865, 865, -230, -230, -230, -230, -230 + 8, -65, -6, -236, 25, 8, -236, -236, -236, -236, + -236, -32, -236, -8, -28, -236, -236, -236, -17, 774, + -236, -236, 21, 30, -236, -236, 6, 6, -236, 51, + -236, -236, -236, -236, -236, -236, -236, 774, 377, -17, + 774, 774, 10, -3, -236, -236, -236, 1403, -236, -236, + -236, 20, -236, -236, -236, -236, -236, -236, 403, 449, + -236, 472, -236, -236, -236, 739, 798, 858, 930, -236, + -236, 12, 17, -236, -236, -236, -236, -236, -236, -236, + -236, -236, 24, 50, -17, 63, -236, -236, 76, 79, + -236, -236, 80, 967, 377, -236, 1481, 71, 89, -236, + -236, -236, -236, -236, -236, -236, -236, 774, 774, 774, + 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, + 774, 774, 774, 774, 774, 6, 6, -236, 836, -17, + -236, -236, 774, -17, -236, 599, -236, -236, 774, -17, + 774, -236, 774, 1274, 774, -236, 106, 106, 1491, 1000, + 1563, 1563, 130, 130, 130, 130, 1043, 1532, 1522, -37, + -37, -236, -236, -236, -236, -236, -236, -236, 1313, -236, + 31, -236, 96, 87, 101, 104, 774, 88, -20, 123, + 124, 127, 131, 134, -26, 121, 147, 152, 712, -236, + -15, -15, -236, -236, 643, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, 153, 155, + 157, -236, -236, 882, -236, -236, -236, -236, 76, 1274, + 96, 1352, 1390, 132, 1481, -236, -236, 774, -236, 774, + 774, 1437, -236, 140, -236, 774, 774, 544, -17, 774, + 117, 159, 166, 172, -236, -236, -236, -236, 1450, -236, + 173, 173, -236, -236, -236, -236, -236, 182, 184, 187, + 189, -236, -236, 774, 774, 774, 774, 774, 774, 774, + 774, 774, 774, 774, 186, 774, 199, 39, 40, 42, + -236, 190, 1106, 1139, 191, -236, 932, -11, 1149, -236, + -236, -236, -236, 774, 774, 774, 774, 1481, 1481, 1481, + 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 205, 1182, + 774, -236, 196, 200, -236, 687, 687, 774, 774, -17, + 50, 1192, 1010, 1053, 1096, 774, -236, 48, -236, -236, + 225, -236, 203, 1481, 1225, 234, -236, 206, 209, 774, + 212, 774, 213, 774, 65, -236, 687, 544, 687, 774, + -236, -236, 69, -236, 73, -236, 82, -236, -236, 223, + -236, 1235, 217, 220, 222, 687, 687, -236, -236, -236, + -236, -236 }; const unsigned char parser::yydefact_[] = { - 3, 0, 0, 186, 0, 2, 6, 7, 9, 10, - 11, 0, 187, 0, 0, 1, 4, 5, 17, 0, - 8, 189, 0, 0, 16, 185, 0, 0, 177, 0, - 196, 195, 179, 180, 181, 182, 183, 0, 162, 0, - 0, 0, 0, 0, 188, 193, 194, 0, 76, 77, - 78, 115, 116, 117, 142, 143, 118, 119, 120, 121, - 122, 0, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 0, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 0, 0, 0, 0, 146, 147, 0, 0, - 150, 151, 0, 0, 162, 178, 161, 0, 158, 159, - 163, 114, 113, 191, 192, 184, 13, 0, 0, 0, + 3, 0, 0, 192, 0, 2, 6, 7, 9, 10, + 11, 0, 193, 0, 0, 1, 4, 5, 17, 0, + 8, 195, 0, 0, 16, 191, 0, 0, 183, 0, + 202, 201, 185, 186, 187, 188, 189, 0, 168, 0, + 0, 0, 0, 0, 194, 199, 200, 0, 82, 83, + 84, 121, 122, 123, 148, 149, 124, 125, 126, 127, + 128, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 0, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 0, 0, 0, 0, 152, 153, 0, 0, + 156, 157, 0, 0, 168, 184, 167, 0, 164, 165, + 169, 120, 119, 197, 198, 190, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, - 145, 162, 0, 12, 0, 14, 15, 0, 0, 0, - 112, 0, 161, 0, 165, 105, 106, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 107, 108, - 109, 110, 111, 148, 149, 152, 153, 0, 168, 167, - 0, 158, 164, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 40, 0, 0, 42, - 18, 0, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 0, 169, 0, 170, 171, 0, 172, 173, - 174, 175, 176, 0, 0, 0, 0, 0, 160, 166, - 154, 162, 0, 54, 0, 55, 0, 0, 73, 0, - 0, 0, 0, 0, 0, 67, 68, 69, 71, 0, - 169, 79, 80, 39, 41, 45, 43, 44, 0, 0, - 0, 0, 0, 81, 82, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 174, 0, 0, + 150, 151, 168, 0, 12, 0, 14, 15, 0, 0, + 0, 118, 0, 167, 0, 171, 111, 112, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 113, + 114, 115, 116, 117, 154, 155, 158, 159, 0, 173, + 0, 164, 170, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, + 0, 0, 45, 18, 0, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 0, 175, + 0, 176, 177, 0, 178, 179, 180, 181, 182, 0, + 0, 0, 0, 0, 166, 172, 160, 168, 75, 168, + 168, 0, 57, 0, 58, 0, 0, 79, 0, 0, + 0, 0, 0, 0, 70, 71, 72, 74, 0, 175, + 85, 86, 42, 44, 48, 46, 47, 0, 0, 0, + 0, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 49, 0, 0, 0, 0, 72, 0, 0, 0, 66, - 65, 64, 70, 0, 0, 0, 0, 83, 89, 90, - 91, 92, 93, 84, 85, 86, 88, 87, 0, 0, - 162, 155, 56, 0, 0, 75, 0, 0, 0, 0, - 0, 0, 0, 162, 190, 0, 57, 59, 0, 74, - 0, 0, 63, 0, 0, 162, 0, 162, 0, 162, - 0, 156, 0, 73, 0, 0, 46, 48, 0, 51, - 0, 53, 0, 157, 58, 0, 61, 0, 0, 0, - 0, 0, 0, 47, 50, 52, 60, 62 + 52, 0, 0, 0, 0, 78, 0, 0, 0, 69, + 68, 67, 73, 0, 0, 0, 0, 89, 95, 96, + 97, 98, 99, 90, 91, 92, 94, 93, 0, 0, + 168, 161, 0, 0, 59, 0, 0, 81, 0, 0, + 0, 0, 0, 0, 0, 168, 196, 0, 76, 77, + 60, 62, 0, 80, 0, 0, 66, 0, 0, 168, + 0, 168, 0, 168, 0, 162, 0, 79, 0, 0, + 49, 51, 0, 54, 0, 56, 0, 163, 61, 0, + 64, 0, 0, 0, 0, 0, 0, 50, 53, 55, + 63, 65 }; const short parser::yypgoto_[] = { - -230, -230, -230, 243, 244, -230, -230, -230, -230, -178, - -82, -230, -230, -230, -230, -230, -230, -230, -230, -230, - -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, - -230, -230, -93, -230, 35, -229, -230, -230, -230, 27, - 142, -230, -23, -19, 68, -26, -230, -230, -230, 39, - 73, -230, 82, -230, -230, -230, 97, 107, 134, 241, - -230, -230, 0, 5, -230, -12, -230, -230, 74, -230, - 77, -230, -230 + -236, -236, -236, 272, 273, -236, -236, -236, -236, -183, + -76, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -78, -236, 38, -235, -236, + -236, -236, -82, -107, -236, -25, -23, -119, -21, -236, + -236, -236, -22, 98, -236, 156, -236, -236, -236, 192, + 197, 202, 236, -236, -236, 0, 5, -236, -5, -236, + -236, 97, -236, 102, -236, -236 }; const short parser::yydefgoto_[] = { - 0, 4, 5, 6, 7, 8, 9, 10, 23, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 284, 328, 96, 212, 48, 49, 50, 51, - 52, 53, 54, 55, 97, 171, 99, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81 + 0, 4, 5, 6, 7, 8, 9, 10, 23, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 294, 342, 96, 218, 48, + 49, 50, 51, 52, 53, 54, 55, 97, 171, 99, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81 }; const short parser::yytable_[] = { - 11, 135, 22, 86, 90, 11, 13, 87, 91, 285, - 1, 2, 98, 254, 12, 168, 18, 14, 24, 234, - 316, -176, -176, 83, -176, 230, 88, 88, 84, 235, - 143, 89, 89, 131, 29, 103, 104, -176, 129, 100, - -176, 19, 130, -169, -169, 317, -169, 127, -170, -170, - 262, -170, 311, 15, 47, -171, -171, 143, -171, -169, - 20, 88, -169, 82, -170, 3, 89, -170, 98, 29, - 92, -171, 93, 21, -171, 101, 102, -176, -176, 3, - 341, 105, 85, 132, 136, 143, 241, 12, 3, 3, - 107, 108, 21, 353, 133, 46, 358, 137, 143, -169, - -169, 143, 163, 165, -170, -170, 164, 166, 359, 138, - 360, -171, -171, 143, 285, 143, 120, 121, 122, 123, - 124, 131, 12, 3, 134, 88, 88, 139, 169, 142, - 89, 89, 172, 143, 222, 326, 327, 144, 224, 89, - 231, 233, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 236, 213, 167, 237, 354, 238, 356, 239, 240, 242, - 281, 245, 223, 215, 225, 278, 226, 104, 228, 122, - 123, 124, 246, 366, 367, 247, 255, 222, 222, 293, - 256, 222, 89, 89, 129, 257, 89, 289, 130, 170, - 120, 121, 122, 123, 124, 290, 291, 216, 232, 294, - 295, 296, 308, 310, 250, 250, 217, 88, 213, 323, - 249, 342, 89, 345, 312, 315, 215, 215, 129, 129, - 215, 218, 130, 130, 343, 346, 332, 347, 222, 287, - 349, 219, 351, 89, 361, 363, 364, 365, 16, 17, - 355, 88, 88, 0, 0, 243, 89, 89, 244, 0, - 216, 216, 169, 129, 216, 250, 0, 130, 220, 251, - 252, 282, 283, 217, 0, 288, 214, 215, 0, 0, - 0, 0, 0, 0, 218, 218, 88, 0, 218, 0, - 0, 89, 0, 0, 219, 219, 0, 0, 219, 279, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 216, 309, 222, 222, 0, 0, 331, 89, 89, - 286, 220, 220, 0, 0, 220, 0, 0, 319, 320, - 321, 322, 0, 214, 0, 218, 0, 0, 0, 0, - 213, 213, 222, 222, 222, 219, 0, 89, 89, 89, - 329, 330, 215, 215, 0, 0, 0, 125, 126, 0, - 29, 222, 222, 0, 0, 0, 89, 89, 0, 213, - 250, 213, 220, 127, 0, 221, 128, 0, 325, 0, - 357, 215, 215, 215, 0, 0, 216, 216, 213, 213, - 0, 340, 0, 0, 0, 217, 217, 0, 0, 0, - 215, 215, 0, 348, 0, 350, 0, 352, 0, 0, - 218, 218, 0, 12, 3, 216, 216, 216, 0, 0, - 219, 219, 0, 0, 217, 286, 217, 0, 221, 221, - 0, 0, 221, 0, 216, 216, 0, 0, 0, 218, - 218, 218, 0, 217, 217, 0, 0, 220, 220, 219, - 219, 219, 0, 0, 0, 214, 214, 0, 218, 218, - 0, 0, 0, 0, 0, 0, 0, 0, 219, 219, - 0, -172, -172, 0, -172, 0, 220, 220, 220, 221, - 0, 0, 0, 0, 214, 25, 214, -172, 0, 0, - -172, 0, 0, 0, 0, 220, 220, 0, 0, 0, - 0, 0, 0, 214, 214, 26, 27, 28, 29, 30, + 11, 86, 90, 87, 91, 11, 13, 136, 18, 22, + 328, 263, 295, 170, 1, 2, 29, 98, 24, 12, + 243, 33, 34, 35, 36, 15, 88, 88, 220, 85, + 244, 89, 89, 19, 14, 329, 130, 29, 131, 100, + -182, -182, 20, -182, 122, 123, 124, -182, -175, -175, + 85, -175, 132, 219, 250, -175, -182, 47, 21, -182, + 21, 88, 82, 46, -175, 133, 89, -175, 3, 12, + 3, 83, 236, 98, 134, 93, 84, 144, 101, 102, + 321, 322, 105, 323, 137, 144, 144, 220, 144, 355, + 12, 3, 135, 3, 144, 92, -182, -182, 103, 104, + 164, 166, 165, 167, -175, -175, 367, 138, 259, 259, + 372, 144, 219, 221, 373, 144, 132, 144, 287, 144, + 288, 289, 295, 374, 140, 88, 88, 139, 144, 169, + 89, 89, 143, 172, 145, 228, 237, 238, 242, 230, + 89, 239, 340, 341, 240, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 245, 246, 259, 168, 247, 221, 221, + 254, 248, 221, 368, 249, 370, 229, 286, 231, 251, + 232, 291, 234, 107, 108, 120, 121, 122, 123, 124, + 228, 228, 380, 381, 228, 89, 89, 255, 130, 89, + 131, 337, 256, 264, 29, 265, 104, 266, 299, 120, + 121, 122, 123, 124, 241, 300, 354, 128, 220, 220, + 129, 301, 303, 88, 304, 221, 258, 305, 89, 306, + 362, 318, 364, 222, 366, 130, 130, 131, 131, 320, + 324, 327, 356, 219, 219, 335, 338, 228, 297, 220, + 339, 220, 89, 357, 346, 359, 360, 12, 3, 361, + 88, 88, 363, 365, 375, 89, 89, 377, 220, 220, + 378, 130, 379, 131, 219, 259, 219, 16, 17, 369, + 0, 252, 0, 292, 293, 0, 253, 298, 222, 222, + 0, 223, 222, 219, 219, 0, 88, 0, 0, 0, + 0, 89, 0, 221, 221, 0, 0, 0, 0, 0, + 0, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 0, 319, 0, 228, 228, 224, 0, 345, + 89, 89, 225, 0, 221, 221, 221, 226, 0, 0, + 0, 331, 332, 333, 334, 222, 260, 261, 0, 0, + 223, 0, 0, 221, 221, 0, 228, 228, 228, 0, + 0, 89, 89, 89, 0, 343, 344, 0, 0, 0, + 0, 227, 0, 0, 0, 228, 228, 0, 0, 0, + 89, 89, 224, 224, 0, 25, 224, 225, 225, 0, + 0, 225, 226, 226, 0, 0, 226, 371, 0, 0, + 0, 0, 0, 296, 0, 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, 35, 36, 37, 0, 0, - 0, 94, 95, 0, 0, 39, 0, -172, -172, 0, - 0, 0, -173, -173, 0, -173, 0, 0, 0, 0, - 40, 41, 0, 0, 0, 0, 0, 0, -173, 0, - 25, -173, 0, 0, 221, 221, 0, 42, 0, 0, + 0, 94, 95, 222, 222, 39, 227, 227, 0, 0, + 227, -176, -176, 0, -176, 0, 0, 0, -176, 224, + 40, 41, 0, 0, 225, 0, 0, -176, 0, 226, + -176, 0, 0, 0, 222, 222, 222, 42, 0, 0, 43, 12, 3, 21, 44, 45, 46, 0, 0, 0, + 0, 0, 0, 222, 222, 0, 0, -177, -177, 0, + -177, 223, 223, 227, -177, 0, 0, -176, -176, 0, + 0, 0, 0, -177, 0, 0, -177, 0, 0, 0, + 125, 126, 0, 29, 0, 0, 0, 127, 0, 0, + 0, 0, 223, 296, 223, 0, 128, 224, 224, 129, + 0, 0, 225, 225, 0, 0, 0, 226, 226, 0, + 0, 223, 223, -177, -177, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, + 224, 0, 0, 225, 225, 225, 12, 3, 226, 226, + 226, 227, 227, 0, 0, 0, 0, 224, 224, 0, + 0, 0, 225, 225, 0, 29, 0, 226, 226, 0, + 33, 34, 35, 36, 0, 0, 0, 0, 85, 0, + 0, 0, 227, 227, 227, 190, 191, 0, 0, 0, + 0, 0, 173, 174, 175, 0, 0, 0, 0, 0, + 176, 227, 227, 177, 178, 179, 0, 180, 181, 182, + 0, 183, 184, 185, 186, 187, 188, 26, 12, 3, + 29, 0, 0, 0, 0, 33, 34, 35, 36, 0, + 0, 135, 189, 85, 0, 0, 173, 174, 175, 0, + 190, 191, 0, 0, 176, 0, 0, 177, 178, 179, + 0, 180, 181, 182, 0, 183, 184, 185, 186, 187, + 188, 26, 0, 0, 29, 0, 0, 0, 0, 33, + 34, 35, 36, 12, 3, 135, 262, 85, 0, 0, + 173, 174, 175, 0, 190, 191, 0, 0, 176, 0, + 0, 177, 178, 179, 0, 180, 181, 182, 0, 183, + 184, 185, 186, 187, 188, 26, 0, 0, 29, 0, + 25, 0, 0, 33, 34, 35, 36, 12, 3, 135, + 0, 85, 0, 0, 0, 0, 0, 0, 190, 191, 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, - 35, 36, 37, 221, 221, 221, 38, 0, -173, -173, - 39, 0, 248, 0, -174, -174, 0, -174, -175, -175, - 0, -175, 221, 221, 0, 40, 41, 0, 0, 0, - -174, 0, 25, -174, -175, 0, 0, -175, 0, 0, + 35, 36, 37, 0, 0, 0, 38, 0, 0, 0, + 39, 0, 257, 0, 0, 0, 0, -178, -178, 0, + -178, 12, 3, 0, -178, 40, 41, 0, 0, 0, + 0, 0, 25, -178, 0, 0, -178, 0, 0, 0, 0, 0, 42, 0, 0, 43, 12, 3, 21, 44, 45, 46, 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, 35, 36, 37, 0, 0, 0, 38, 0, - -174, -174, 39, 0, -175, -175, 0, 0, 29, 0, - 0, 0, 0, 33, 34, 35, 36, 40, 41, 0, - 0, 85, 0, 0, 25, 0, 0, 0, 187, 188, + 0, 0, 39, -178, -178, 0, -179, -179, 0, -179, + 0, 0, 0, -179, 0, 0, 0, 40, 41, 0, + 0, 0, -179, 0, 25, -179, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 43, 12, 3, 21, 44, 45, 46, 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, 35, 36, 37, 0, 0, 0, - 94, 12, 3, 0, 39, 0, 0, 0, 0, 0, - 0, 258, 259, 0, 260, 261, 0, 0, 0, 40, - 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 94, 0, -179, -179, 39, 0, -180, -180, 0, -180, + 0, 267, 268, -180, 269, 270, 0, 0, 0, 40, + 41, 0, -180, 0, 0, -180, 0, 0, 0, 0, 125, 0, 0, 29, 0, 0, 42, 0, 0, 43, - 12, 3, 21, 44, 45, 46, 127, 0, 0, 262, - 29, 0, 0, 263, 264, 33, 34, 35, 36, 0, - 0, 0, 0, 85, 0, 0, 0, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 0, 0, - 0, 0, 0, 0, 0, 173, 12, 3, 174, 175, - 176, 0, 177, 178, 179, 0, 180, 181, 182, 183, - 184, 185, 26, 12, 3, 29, 0, 0, 0, 0, - 33, 34, 35, 36, 0, 0, 134, 186, 85, 0, - 0, 0, 0, 0, 173, 187, 188, 174, 175, 176, - 0, 177, 178, 179, 0, 180, 181, 182, 183, 184, - 185, 26, 0, 0, 29, 0, 0, 0, 0, 33, - 34, 35, 36, 0, 0, 134, 253, 85, 12, 3, - 0, 0, 0, 173, 187, 188, 174, 175, 176, 0, - 177, 178, 179, 0, 180, 181, 182, 183, 184, 185, - 26, 0, 0, 29, 0, 0, 29, 0, 33, 34, - 35, 36, 0, 0, 134, 0, 85, 12, 3, 127, - 0, 0, 262, 187, 188, 0, 263, 264, 0, 0, + 12, 3, 21, 44, 45, 46, 128, 0, 0, 129, + 0, 0, 0, 271, 272, 0, 0, 0, 0, 0, + 0, 0, -180, -180, 0, 0, 0, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, -181, -181, + 0, -181, 0, 29, 0, -181, 12, 3, 0, 0, + 0, 0, 0, 0, -181, 0, 128, -181, 0, 129, + 0, 0, 0, 271, 272, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 141, 0, + 0, 0, 0, 142, -181, -181, 12, 3, 0, 0, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 0, 0, 140, 0, 0, 12, 3, 141, 12, - 3, 0, 0, 0, 0, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, - 119, 120, 121, 122, 123, 124, 334, 0, 107, 108, - 0, 335, 111, 112, 113, 114, 115, 116, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 336, - 0, 107, 108, 0, 337, 111, 112, 113, 114, 115, - 116, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 0, 0, 0, 0, 118, 119, 120, 121, 122, - 123, 124, 0, 0, 117, 118, 119, 120, 121, 122, - 123, 124, 338, 0, 0, 0, 0, 339, 0, 0, - 0, 0, 313, 0, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 0, 0, 0, 117, 118, 119, - 120, 121, 122, 123, 124, 314, 0, 117, 118, 119, - 120, 121, 122, 123, 124, 318, 0, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, - 117, 118, 119, 120, 121, 122, 123, 124, 324, 0, - 117, 118, 119, 120, 121, 122, 123, 124, 333, 0, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 344, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 362, 0, 107, 108, 109, 110, 111, 112, 113, + 124, 348, 0, 107, 108, 0, 349, 111, 112, 113, 114, 115, 116, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, 124, 0, 0, 117, 118, 119, 120, - 121, 122, 123, 124, 227, 0, 0, 0, 0, 0, - 0, 0, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 229, 0, 0, 0, 0, 0, 0, - 0, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 117, 118, 119, 120, 121, 122, - 123, 124, 276, 0, 0, 0, 0, 0, 0, 0, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 277, 0, 0, 0, 0, 0, 0, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 106, 0, - 0, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 0, - 0, 0, 0, 0, 117, 118, 119, 120, 121, 122, - 123, 124, 280, 0, 0, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 292, 0, 0, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 0, 0, 0, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 107, + 121, 122, 123, 124, 350, 0, 107, 108, 0, 351, + 111, 112, 113, 114, 115, 116, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 0, 0, 0, 0, + 118, 119, 120, 121, 122, 123, 124, 0, 0, 117, + 118, 119, 120, 121, 122, 123, 124, 352, 0, 0, + 0, 0, 353, 0, 0, 0, 0, 325, 0, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 107, - 108, 0, 110, 111, 112, 113, 114, 115, 116, 0, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, 124, - 0, 0, 117, 118, 119, 120, 121, 122, 123, 124, - 107, 108, 0, 0, 111, 112, 113, 114, 115, 116, - 107, 108, 0, 0, 111, 112, 113, 114, 115, 116, - 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, - 124, 0, 0, 0, 0, 0, 120, 121, 122, 123, - 124, 107, 108, 0, 0, 0, 0, 113, 114, 115, - 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 120, 121, 122, - 123, 124 + 326, 0, 117, 118, 119, 120, 121, 122, 123, 124, + 330, 0, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 0, 0, 0, 117, 118, 119, 120, 121, + 122, 123, 124, 336, 0, 117, 118, 119, 120, 121, + 122, 123, 124, 347, 0, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 0, 0, 0, 117, 118, + 119, 120, 121, 122, 123, 124, 358, 0, 117, 118, + 119, 120, 121, 122, 123, 124, 376, 0, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, + 0, 117, 118, 119, 120, 121, 122, 123, 124, 0, + 0, 117, 118, 119, 120, 121, 122, 123, 124, 233, + 0, 0, 0, 0, 0, 0, 0, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 117, 118, 119, 120, 121, 122, 123, 124, 235, 0, + 0, 0, 0, 0, 0, 0, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, + 118, 119, 120, 121, 122, 123, 124, 284, 0, 0, + 0, 0, 0, 0, 0, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, + 119, 120, 121, 122, 123, 124, 285, 0, 0, 0, + 0, 0, 0, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 106, 0, 0, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 0, 0, 0, 0, 0, 117, + 118, 119, 120, 121, 122, 123, 124, 290, 0, 0, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 302, 0, 0, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 0, 0, 0, 0, 0, 117, 118, 119, 120, + 121, 122, 123, 124, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 107, 108, 0, 110, 111, 112, + 113, 114, 115, 116, 0, 0, 0, 117, 118, 119, + 120, 121, 122, 123, 124, 0, 0, 117, 118, 119, + 120, 121, 122, 123, 124, 107, 108, 0, 0, 111, + 112, 113, 114, 115, 116, 107, 108, 0, 0, 111, + 112, 113, 114, 115, 116, 0, 0, 0, 0, 118, + 0, 120, 121, 122, 123, 124, 0, 0, 0, 0, + 0, 120, 121, 122, 123, 124, 107, 108, 0, 0, + 0, 0, 113, 114, 115, 116, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 120, 121, 122, 123, 124 }; const short parser::yycheck_[] = { - 0, 83, 14, 26, 27, 5, 1, 26, 27, 238, - 3, 4, 38, 191, 81, 32, 37, 37, 18, 37, - 18, 25, 26, 38, 28, 38, 26, 27, 43, 47, - 43, 26, 27, 37, 28, 85, 86, 41, 61, 39, - 44, 62, 61, 25, 26, 43, 28, 41, 25, 26, - 44, 28, 38, 0, 19, 25, 26, 43, 28, 41, - 47, 61, 44, 38, 41, 82, 61, 44, 94, 28, - 41, 41, 37, 83, 44, 40, 41, 81, 82, 82, - 38, 82, 41, 45, 84, 43, 77, 81, 82, 82, - 50, 51, 83, 38, 47, 86, 38, 41, 43, 81, - 82, 43, 125, 126, 81, 82, 125, 126, 38, 45, - 38, 81, 82, 43, 343, 43, 76, 77, 78, 79, - 80, 37, 81, 82, 39, 125, 126, 41, 128, 94, - 125, 126, 132, 43, 134, 313, 314, 42, 138, 134, - 37, 47, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 37, 134, 127, 37, 342, 37, 344, 37, 37, 181, - 38, 46, 137, 134, 139, 42, 141, 86, 143, 78, - 79, 80, 47, 361, 362, 47, 47, 187, 188, 37, - 47, 191, 187, 188, 217, 47, 191, 46, 217, 131, - 76, 77, 78, 79, 80, 46, 46, 134, 173, 37, - 37, 37, 42, 37, 187, 188, 134, 217, 191, 37, - 185, 14, 217, 18, 47, 47, 187, 188, 251, 252, - 191, 134, 251, 252, 47, 47, 318, 47, 238, 239, - 47, 134, 47, 238, 38, 47, 47, 47, 5, 5, - 343, 251, 252, -1, -1, 181, 251, 252, 181, -1, - 187, 188, 262, 286, 191, 238, -1, 286, 134, 187, - 188, 236, 237, 191, -1, 240, 134, 238, -1, -1, - -1, -1, -1, -1, 187, 188, 286, -1, 191, -1, - -1, 286, -1, -1, 187, 188, -1, -1, 191, 231, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 238, 277, 313, 314, -1, -1, 317, 313, 314, - 238, 187, 188, -1, -1, 191, -1, -1, 293, 294, - 295, 296, -1, 191, -1, 238, -1, -1, -1, -1, - 313, 314, 342, 343, 344, 238, -1, 342, 343, 344, - 315, 316, 313, 314, -1, -1, -1, 25, 26, -1, - 28, 361, 362, -1, -1, -1, 361, 362, -1, 342, - 343, 344, 238, 41, -1, 134, 44, -1, 310, -1, - 345, 342, 343, 344, -1, -1, 313, 314, 361, 362, - -1, 323, -1, -1, -1, 313, 314, -1, -1, -1, - 361, 362, -1, 335, -1, 337, -1, 339, -1, -1, - 313, 314, -1, 81, 82, 342, 343, 344, -1, -1, - 313, 314, -1, -1, 342, 343, 344, -1, 187, 188, - -1, -1, 191, -1, 361, 362, -1, -1, -1, 342, - 343, 344, -1, 361, 362, -1, -1, 313, 314, 342, - 343, 344, -1, -1, -1, 313, 314, -1, 361, 362, - -1, -1, -1, -1, -1, -1, -1, -1, 361, 362, - -1, 25, 26, -1, 28, -1, 342, 343, 344, 238, - -1, -1, -1, -1, 342, 5, 344, 41, -1, -1, - 44, -1, -1, -1, -1, 361, 362, -1, -1, -1, - -1, -1, -1, 361, 362, 25, 26, 27, 28, 29, - 30, 31, -1, 33, 34, 35, 36, 37, -1, -1, - -1, 41, 42, -1, -1, 45, -1, 81, 82, -1, - -1, -1, 25, 26, -1, 28, -1, -1, -1, -1, - 60, 61, -1, -1, -1, -1, -1, -1, 41, -1, - 5, 44, -1, -1, 313, 314, -1, 77, -1, -1, - 80, 81, 82, 83, 84, 85, 86, -1, -1, -1, - 25, 26, 27, 28, 29, 30, 31, -1, 33, 34, - 35, 36, 37, 342, 343, 344, 41, -1, 81, 82, - 45, -1, 47, -1, 25, 26, -1, 28, 25, 26, - -1, 28, 361, 362, -1, 60, 61, -1, -1, -1, - 41, -1, 5, 44, 41, -1, -1, 44, -1, -1, - -1, -1, 77, -1, -1, 80, 81, 82, 83, 84, - 85, 86, 25, 26, 27, 28, 29, 30, 31, -1, - 33, 34, 35, 36, 37, -1, -1, -1, 41, -1, - 81, 82, 45, -1, 81, 82, -1, -1, 28, -1, - -1, -1, -1, 33, 34, 35, 36, 60, 61, -1, - -1, 41, -1, -1, 5, -1, -1, -1, 48, 49, - -1, -1, -1, -1, 77, -1, -1, 80, 81, 82, - 83, 84, 85, 86, 25, 26, 27, 28, 29, 30, - 31, -1, 33, 34, 35, 36, 37, -1, -1, -1, - 41, 81, 82, -1, 45, -1, -1, -1, -1, -1, - -1, 6, 7, -1, 9, 10, -1, -1, -1, 60, - 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 25, -1, -1, 28, -1, -1, 77, -1, -1, 80, - 81, 82, 83, 84, 85, 86, 41, -1, -1, 44, - 28, -1, -1, 48, 49, 33, 34, 35, 36, -1, - -1, -1, -1, 41, -1, -1, -1, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, -1, -1, - -1, -1, -1, -1, -1, 8, 81, 82, 11, 12, - 13, -1, 15, 16, 17, -1, 19, 20, 21, 22, - 23, 24, 25, 81, 82, 28, -1, -1, -1, -1, - 33, 34, 35, 36, -1, -1, 39, 40, 41, -1, - -1, -1, -1, -1, 8, 48, 49, 11, 12, 13, - -1, 15, 16, 17, -1, 19, 20, 21, 22, 23, - 24, 25, -1, -1, 28, -1, -1, -1, -1, 33, - 34, 35, 36, -1, -1, 39, 40, 41, 81, 82, - -1, -1, -1, 8, 48, 49, 11, 12, 13, -1, - 15, 16, 17, -1, 19, 20, 21, 22, 23, 24, - 25, -1, -1, 28, -1, -1, 28, -1, 33, 34, - 35, 36, -1, -1, 39, -1, 41, 81, 82, 41, - -1, -1, 44, 48, 49, -1, 48, 49, -1, -1, + 0, 26, 27, 26, 27, 5, 1, 83, 40, 14, + 21, 194, 247, 132, 6, 7, 31, 38, 18, 84, + 40, 36, 37, 38, 39, 0, 26, 27, 135, 44, + 50, 26, 27, 65, 40, 46, 61, 31, 61, 39, + 28, 29, 50, 31, 81, 82, 83, 35, 28, 29, + 44, 31, 40, 135, 80, 35, 44, 19, 86, 47, + 86, 61, 41, 89, 44, 48, 61, 47, 85, 84, + 85, 41, 41, 94, 50, 37, 46, 46, 40, 41, + 41, 41, 85, 41, 84, 46, 46, 194, 46, 41, + 84, 85, 42, 85, 46, 44, 84, 85, 88, 89, + 125, 126, 125, 126, 84, 85, 41, 44, 190, 191, + 41, 46, 194, 135, 41, 46, 40, 46, 237, 46, + 239, 240, 357, 41, 44, 125, 126, 48, 46, 129, + 125, 126, 94, 133, 45, 135, 40, 50, 50, 139, + 135, 40, 325, 326, 40, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 40, 40, 247, 128, 40, 190, 191, + 49, 40, 194, 356, 40, 358, 138, 45, 140, 184, + 142, 41, 144, 53, 54, 79, 80, 81, 82, 83, + 190, 191, 375, 376, 194, 190, 191, 50, 223, 194, + 223, 320, 50, 50, 31, 50, 89, 50, 49, 79, + 80, 81, 82, 83, 176, 49, 335, 44, 325, 326, + 47, 49, 40, 223, 40, 247, 188, 40, 223, 40, + 349, 45, 351, 135, 353, 260, 261, 260, 261, 40, + 50, 50, 17, 325, 326, 40, 50, 247, 248, 356, + 50, 358, 247, 50, 330, 21, 50, 84, 85, 50, + 260, 261, 50, 50, 41, 260, 261, 50, 375, 376, + 50, 296, 50, 296, 356, 357, 358, 5, 5, 357, + -1, 184, -1, 245, 246, -1, 184, 249, 190, 191, + -1, 135, 194, 375, 376, -1, 296, -1, -1, -1, + -1, 296, -1, 325, 326, -1, -1, -1, -1, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, -1, 285, -1, 325, 326, 135, -1, 329, + 325, 326, 135, -1, 356, 357, 358, 135, -1, -1, + -1, 303, 304, 305, 306, 247, 190, 191, -1, -1, + 194, -1, -1, 375, 376, -1, 356, 357, 358, -1, + -1, 356, 357, 358, -1, 327, 328, -1, -1, -1, + -1, 135, -1, -1, -1, 375, 376, -1, -1, -1, + 375, 376, 190, 191, -1, 8, 194, 190, 191, -1, + -1, 194, 190, 191, -1, -1, 194, 359, -1, -1, + -1, -1, -1, 247, -1, 28, 29, 30, 31, 32, + 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, + -1, 44, 45, 325, 326, 48, 190, 191, -1, -1, + 194, 28, 29, -1, 31, -1, -1, -1, 35, 247, + 63, 64, -1, -1, 247, -1, -1, 44, -1, 247, + 47, -1, -1, -1, 356, 357, 358, 80, -1, -1, + 83, 84, 85, 86, 87, 88, 89, -1, -1, -1, + -1, -1, -1, 375, 376, -1, -1, 28, 29, -1, + 31, 325, 326, 247, 35, -1, -1, 84, 85, -1, + -1, -1, -1, 44, -1, -1, 47, -1, -1, -1, + 28, 29, -1, 31, -1, -1, -1, 35, -1, -1, + -1, -1, 356, 357, 358, -1, 44, 325, 326, 47, + -1, -1, 325, 326, -1, -1, -1, 325, 326, -1, + -1, 375, 376, 84, 85, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 356, 357, + 358, -1, -1, 356, 357, 358, 84, 85, 356, 357, + 358, 325, 326, -1, -1, -1, -1, 375, 376, -1, + -1, -1, 375, 376, -1, 31, -1, 375, 376, -1, + 36, 37, 38, 39, -1, -1, -1, -1, 44, -1, + -1, -1, 356, 357, 358, 51, 52, -1, -1, -1, + -1, -1, 3, 4, 5, -1, -1, -1, -1, -1, + 11, 375, 376, 14, 15, 16, -1, 18, 19, 20, + -1, 22, 23, 24, 25, 26, 27, 28, 84, 85, + 31, -1, -1, -1, -1, 36, 37, 38, 39, -1, + -1, 42, 43, 44, -1, -1, 3, 4, 5, -1, + 51, 52, -1, -1, 11, -1, -1, 14, 15, 16, + -1, 18, 19, 20, -1, 22, 23, 24, 25, 26, + 27, 28, -1, -1, 31, -1, -1, -1, -1, 36, + 37, 38, 39, 84, 85, 42, 43, 44, -1, -1, + 3, 4, 5, -1, 51, 52, -1, -1, 11, -1, + -1, 14, 15, 16, -1, 18, 19, 20, -1, 22, + 23, 24, 25, 26, 27, 28, -1, -1, 31, -1, + 8, -1, -1, 36, 37, 38, 39, 84, 85, 42, + -1, 44, -1, -1, -1, -1, -1, -1, 51, 52, + 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, + 38, 39, 40, -1, -1, -1, 44, -1, -1, -1, + 48, -1, 50, -1, -1, -1, -1, 28, 29, -1, + 31, 84, 85, -1, 35, 63, 64, -1, -1, -1, + -1, -1, 8, 44, -1, -1, 47, -1, -1, -1, + -1, -1, 80, -1, -1, 83, 84, 85, 86, 87, + 88, 89, 28, 29, 30, 31, 32, 33, 34, -1, + 36, 37, 38, 39, 40, -1, -1, -1, 44, -1, + -1, -1, 48, 84, 85, -1, 28, 29, -1, 31, + -1, -1, -1, 35, -1, -1, -1, 63, 64, -1, + -1, -1, 44, -1, 8, 47, -1, -1, -1, -1, + -1, -1, -1, -1, 80, -1, -1, 83, 84, 85, + 86, 87, 88, 89, 28, 29, 30, 31, 32, 33, + 34, -1, 36, 37, 38, 39, 40, -1, -1, -1, + 44, -1, 84, 85, 48, -1, 28, 29, -1, 31, + -1, 9, 10, 35, 12, 13, -1, -1, -1, 63, + 64, -1, 44, -1, -1, 47, -1, -1, -1, -1, + 28, -1, -1, 31, -1, -1, 80, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 44, -1, -1, 47, + -1, -1, -1, 51, 52, -1, -1, -1, -1, -1, + -1, -1, 84, 85, -1, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 28, 29, + -1, 31, -1, 31, -1, 35, 84, 85, -1, -1, + -1, -1, -1, -1, 44, -1, 44, 47, -1, 47, + -1, -1, -1, 51, 52, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 41, -1, + -1, -1, -1, 46, 84, 85, 84, 85, -1, -1, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, -1, -1, 38, -1, -1, 81, 82, 43, 81, - 82, -1, -1, -1, -1, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 73, 74, - 75, 76, 77, 78, 79, 80, 38, -1, 50, 51, - -1, 43, 54, 55, 56, 57, 58, 59, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, -1, -1, - -1, 73, 74, 75, 76, 77, 78, 79, 80, -1, - -1, 73, 74, 75, 76, 77, 78, 79, 80, 38, - -1, 50, 51, -1, 43, 54, 55, 56, 57, 58, - 59, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, -1, -1, -1, -1, 74, 75, 76, 77, 78, - 79, 80, -1, -1, 73, 74, 75, 76, 77, 78, - 79, 80, 38, -1, -1, -1, -1, 43, -1, -1, - -1, -1, 38, -1, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, -1, -1, -1, 73, 74, 75, - 76, 77, 78, 79, 80, 38, -1, 73, 74, 75, - 76, 77, 78, 79, 80, 38, -1, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, -1, -1, -1, - 73, 74, 75, 76, 77, 78, 79, 80, 38, -1, - 73, 74, 75, 76, 77, 78, 79, 80, 38, -1, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - -1, -1, -1, 73, 74, 75, 76, 77, 78, 79, - 80, 38, -1, 73, 74, 75, 76, 77, 78, 79, - 80, 38, -1, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, -1, -1, -1, 73, 74, 75, 76, - 77, 78, 79, 80, -1, -1, 73, 74, 75, 76, - 77, 78, 79, 80, 42, -1, -1, -1, -1, -1, - -1, -1, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 73, 74, 75, 76, 77, - 78, 79, 80, 42, -1, -1, -1, -1, -1, -1, - -1, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 73, 74, 75, 76, 77, 78, - 79, 80, 42, -1, -1, -1, -1, -1, -1, -1, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + -1, -1, -1, 76, 77, 78, 79, 80, 81, 82, + 83, 41, -1, 53, 54, -1, 46, 57, 58, 59, + 60, 61, 62, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, -1, -1, -1, 76, 77, 78, 79, + 80, 81, 82, 83, -1, -1, 76, 77, 78, 79, + 80, 81, 82, 83, 41, -1, 53, 54, -1, 46, + 57, 58, 59, 60, 61, 62, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, + 77, 78, 79, 80, 81, 82, 83, -1, -1, 76, + 77, 78, 79, 80, 81, 82, 83, 41, -1, -1, + -1, -1, 46, -1, -1, -1, -1, 41, -1, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, -1, + -1, -1, 76, 77, 78, 79, 80, 81, 82, 83, + 41, -1, 76, 77, 78, 79, 80, 81, 82, 83, + 41, -1, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, -1, -1, -1, 76, 77, 78, 79, 80, + 81, 82, 83, 41, -1, 76, 77, 78, 79, 80, + 81, 82, 83, 41, -1, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, -1, -1, -1, 76, 77, + 78, 79, 80, 81, 82, 83, 41, -1, 76, 77, + 78, 79, 80, 81, 82, 83, 41, -1, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, + -1, 76, 77, 78, 79, 80, 81, 82, 83, -1, + -1, 76, 77, 78, 79, 80, 81, 82, 83, 45, + -1, -1, -1, -1, -1, -1, -1, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 73, 74, 75, 76, 77, 78, 79, - 80, 43, -1, -1, -1, -1, -1, -1, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 47, -1, - -1, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 73, 74, 75, 76, 77, 78, 79, 80, -1, - -1, -1, -1, -1, 73, 74, 75, 76, 77, 78, - 79, 80, 47, -1, -1, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 47, -1, -1, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 73, 74, - 75, 76, 77, 78, 79, 80, -1, -1, -1, -1, - -1, 73, 74, 75, 76, 77, 78, 79, 80, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 50, - 51, -1, 53, 54, 55, 56, 57, 58, 59, -1, - -1, -1, 73, 74, 75, 76, 77, 78, 79, 80, - -1, -1, 73, 74, 75, 76, 77, 78, 79, 80, - 50, 51, -1, -1, 54, 55, 56, 57, 58, 59, - 50, 51, -1, -1, 54, 55, 56, 57, 58, 59, - -1, -1, -1, -1, -1, 75, 76, 77, 78, 79, - 80, -1, -1, -1, -1, -1, 76, 77, 78, 79, - 80, 50, 51, -1, -1, -1, -1, 56, 57, 58, - 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 76, 77, 78, - 79, 80 + 76, 77, 78, 79, 80, 81, 82, 83, 45, -1, + -1, -1, -1, -1, -1, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, + 77, 78, 79, 80, 81, 82, 83, 45, -1, -1, + -1, -1, -1, -1, -1, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 76, 77, + 78, 79, 80, 81, 82, 83, 46, -1, -1, -1, + -1, -1, -1, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 50, -1, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 76, 77, 78, 79, + 80, 81, 82, 83, -1, -1, -1, -1, -1, 76, + 77, 78, 79, 80, 81, 82, 83, 50, -1, -1, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 50, -1, -1, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 76, 77, 78, 79, 80, 81, 82, + 83, -1, -1, -1, -1, -1, 76, 77, 78, 79, + 80, 81, 82, 83, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 53, 54, -1, 56, 57, 58, + 59, 60, 61, 62, -1, -1, -1, 76, 77, 78, + 79, 80, 81, 82, 83, -1, -1, 76, 77, 78, + 79, 80, 81, 82, 83, 53, 54, -1, -1, 57, + 58, 59, 60, 61, 62, 53, 54, -1, -1, 57, + 58, 59, 60, 61, 62, -1, -1, -1, -1, 77, + -1, 79, 80, 81, 82, 83, -1, -1, -1, -1, + -1, 79, 80, 81, 82, 83, 53, 54, -1, -1, + -1, -1, 59, 60, 61, 62, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 79, 80, 81, 82, 83 }; const unsigned char parser::yystos_[] = { - 0, 3, 4, 82, 96, 97, 98, 99, 100, 101, - 102, 157, 81, 158, 37, 0, 98, 99, 37, 62, - 47, 83, 160, 103, 157, 5, 25, 26, 27, 28, - 29, 30, 31, 33, 34, 35, 36, 37, 41, 45, - 60, 61, 77, 80, 84, 85, 86, 129, 131, 132, - 133, 134, 135, 136, 137, 138, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 38, 38, 43, 41, 137, 138, 157, 158, - 137, 138, 41, 129, 41, 42, 129, 139, 140, 141, - 157, 129, 129, 85, 86, 82, 47, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 73, 74, 75, - 76, 77, 78, 79, 80, 25, 26, 41, 44, 137, - 138, 37, 45, 47, 39, 105, 157, 41, 45, 41, - 38, 43, 129, 43, 42, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 137, 138, 137, 138, 129, 32, 157, - 139, 140, 157, 8, 11, 12, 13, 15, 16, 17, - 19, 20, 21, 22, 23, 24, 40, 48, 49, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 0, 6, 7, 85, 99, 100, 101, 102, 103, 104, + 105, 163, 84, 164, 40, 0, 101, 102, 40, 65, + 50, 86, 166, 106, 163, 8, 28, 29, 30, 31, + 32, 33, 34, 36, 37, 38, 39, 40, 44, 48, + 63, 64, 80, 83, 87, 88, 89, 135, 137, 138, + 139, 140, 141, 142, 143, 144, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 41, 41, 46, 44, 143, 144, 163, 164, + 143, 144, 44, 135, 44, 45, 135, 145, 146, 147, + 163, 135, 135, 88, 89, 85, 50, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 76, 77, 78, + 79, 80, 81, 82, 83, 28, 29, 35, 44, 47, + 143, 144, 40, 48, 50, 42, 108, 163, 44, 48, + 44, 41, 46, 135, 46, 45, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 143, 144, 143, 144, 135, 163, + 145, 146, 163, 3, 4, 5, 11, 14, 15, 16, + 18, 19, 20, 22, 23, 24, 25, 26, 27, 43, + 51, 52, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 130, 134, 135, 144, 145, 147, 151, 152, - 153, 154, 157, 129, 157, 129, 129, 42, 129, 42, - 38, 37, 129, 47, 37, 47, 37, 37, 37, 37, - 37, 77, 160, 163, 165, 46, 47, 47, 47, 129, - 134, 147, 147, 40, 104, 47, 47, 47, 6, 7, - 9, 10, 44, 48, 49, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 42, 43, 42, 139, - 47, 38, 129, 129, 127, 130, 147, 157, 129, 46, - 46, 46, 47, 37, 37, 37, 37, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 42, 129, - 37, 38, 47, 38, 38, 47, 18, 43, 38, 129, - 129, 129, 129, 37, 38, 139, 104, 104, 128, 129, - 129, 157, 105, 38, 38, 43, 38, 43, 38, 43, - 139, 38, 14, 47, 38, 18, 47, 47, 139, 47, - 139, 47, 139, 38, 104, 127, 104, 129, 38, 38, - 38, 38, 38, 47, 47, 47, 104, 104 + 125, 126, 127, 128, 129, 130, 131, 132, 136, 140, + 141, 150, 151, 153, 157, 158, 159, 160, 163, 135, + 163, 135, 135, 45, 135, 45, 41, 40, 50, 40, + 40, 135, 50, 40, 50, 40, 40, 40, 40, 40, + 80, 166, 169, 171, 49, 50, 50, 50, 135, 140, + 153, 153, 43, 107, 50, 50, 50, 9, 10, 12, + 13, 51, 52, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 45, 46, 45, 145, 145, 145, + 50, 41, 135, 135, 133, 136, 153, 163, 135, 49, + 49, 49, 50, 40, 40, 40, 40, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 45, 135, + 40, 41, 41, 41, 50, 41, 41, 50, 21, 46, + 41, 135, 135, 135, 135, 40, 41, 145, 50, 50, + 107, 107, 134, 135, 135, 163, 108, 41, 41, 46, + 41, 46, 41, 46, 145, 41, 17, 50, 41, 21, + 50, 50, 145, 50, 145, 50, 145, 41, 107, 133, + 107, 135, 41, 41, 41, 41, 41, 50, 50, 50, + 107, 107 }; const unsigned char parser::yyr1_[] = { - 0, 95, 96, 96, 97, 97, 97, 97, 98, 99, - 99, 99, 100, 101, 102, 103, 103, 103, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 105, - 105, 106, 106, 107, 107, 108, 109, 110, 110, 111, - 112, 112, 113, 113, 114, 115, 115, 116, 117, 118, - 119, 120, 120, 121, 122, 122, 122, 123, 124, 125, - 126, 126, 127, 127, 128, 128, 129, 129, 129, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 131, 131, 131, 131, 131, 131, - 131, 131, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 134, 134, 134, 134, 135, 135, 135, 135, - 136, 136, 136, 136, 137, 137, 138, 138, 139, 139, - 140, 140, 141, 142, 142, 143, 144, 145, 146, 147, - 147, 147, 147, 147, 147, 147, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167 + 0, 98, 99, 99, 100, 100, 100, 100, 101, 102, + 102, 102, 103, 104, 105, 106, 106, 106, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 108, 108, 109, 109, 110, 110, 111, 112, + 113, 113, 114, 115, 115, 116, 116, 117, 118, 118, + 119, 120, 121, 122, 123, 123, 124, 125, 125, 125, + 126, 127, 128, 129, 129, 130, 131, 132, 133, 133, + 134, 134, 135, 135, 135, 136, 136, 136, 136, 136, + 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, + 137, 137, 137, 137, 137, 137, 137, 137, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 140, 140, + 140, 140, 141, 141, 141, 141, 142, 142, 142, 142, + 143, 143, 144, 144, 145, 145, 146, 146, 147, 148, + 148, 149, 150, 151, 152, 153, 153, 153, 153, 153, + 153, 153, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173 }; const signed char @@ -3905,23 +4022,24 @@ namespace xsk { namespace gsc { namespace h2 { 0, 2, 1, 0, 2, 2, 1, 1, 3, 1, 1, 1, 5, 4, 5, 3, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, - 2, 2, 1, 2, 2, 2, 6, 8, 6, 3, - 8, 6, 8, 6, 2, 2, 4, 5, 7, 5, - 9, 7, 9, 5, 3, 3, 3, 2, 2, 2, - 3, 2, 1, 0, 1, 0, 1, 1, 1, 2, - 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 3, 2, 2, 1, 2, 2, 2, 6, + 8, 6, 3, 8, 6, 8, 6, 2, 2, 4, + 5, 7, 5, 9, 7, 9, 5, 3, 3, 3, + 2, 2, 2, 3, 2, 2, 5, 5, 1, 0, + 1, 0, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, - 2, 2, 3, 3, 4, 6, 8, 9, 1, 1, - 3, 1, 0, 2, 3, 3, 4, 3, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, + 2, 2, 2, 2, 3, 3, 2, 2, 3, 3, + 4, 6, 8, 9, 1, 1, 3, 1, 0, 2, + 3, 3, 4, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, - 7, 2, 2, 1, 1, 1, 1 + 2, 1, 1, 1, 1, 1, 7, 2, 2, 1, + 1, 1, 1 }; @@ -3931,26 +4049,27 @@ namespace xsk { namespace gsc { namespace h2 { const short parser::yyrline_[] = { - 0, 233, 233, 234, 238, 240, 242, 244, 249, 254, - 255, 256, 260, 265, 270, 275, 277, 280, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 308, - 309, 313, 315, 320, 322, 327, 332, 337, 339, 344, - 349, 351, 356, 358, 363, 368, 370, 375, 380, 385, - 390, 395, 397, 402, 407, 409, 411, 416, 421, 426, - 431, 433, 438, 439, 443, 444, 448, 449, 450, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 472, 473, 474, 475, 476, 477, - 478, 479, 483, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 496, 497, 498, 499, 500, 501, 502, 503, - 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, - 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, - 524, 525, 529, 530, 531, 532, 536, 537, 538, 539, - 543, 544, 545, 546, 550, 552, 557, 559, 564, 565, - 569, 571, 577, 581, 583, 588, 593, 598, 603, 608, - 609, 610, 611, 612, 613, 614, 615, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, - 631, 632, 633, 634, 635, 636, 637 + 0, 239, 239, 240, 244, 246, 248, 250, 255, 260, + 261, 262, 266, 271, 276, 281, 283, 286, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 317, 318, 322, 324, 329, 331, 336, 341, + 346, 348, 353, 358, 360, 365, 367, 372, 377, 379, + 384, 389, 394, 399, 404, 406, 411, 416, 418, 420, + 425, 430, 435, 440, 442, 447, 452, 457, 462, 463, + 467, 468, 472, 473, 474, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, + 496, 497, 498, 499, 500, 501, 502, 503, 507, 508, + 509, 510, 511, 512, 513, 514, 515, 516, 520, 521, + 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 553, 554, + 555, 556, 560, 561, 562, 563, 567, 568, 569, 570, + 574, 576, 581, 583, 588, 589, 593, 595, 601, 605, + 607, 612, 617, 622, 627, 632, 633, 634, 635, 636, + 637, 638, 639, 642, 643, 644, 645, 646, 647, 648, + 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, + 659, 660, 661 }; void @@ -3983,9 +4102,9 @@ namespace xsk { namespace gsc { namespace h2 { #line 13 "parser.ypp" } } } // xsk::gsc::h2 -#line 3987 "parser.cpp" +#line 4106 "parser.cpp" -#line 639 "parser.ypp" +#line 663 "parser.ypp" void xsk::gsc::h2::parser::error(const xsk::gsc::location& loc, const std::string& msg) diff --git a/src/h2/xsk/parser.hpp b/src/h2/xsk/parser.hpp index 58e8f902..219e31d7 100644 --- a/src/h2/xsk/parser.hpp +++ b/src/h2/xsk/parser.hpp @@ -510,88 +510,97 @@ namespace xsk { namespace gsc { namespace h2 { // stmt_break char dummy27[sizeof (stmt_break_ptr)]; + // stmt_breakpoint + char dummy28[sizeof (stmt_breakpoint_ptr)]; + // stmt_call - char dummy28[sizeof (stmt_call_ptr)]; + char dummy29[sizeof (stmt_call_ptr)]; // stmt_case - char dummy29[sizeof (stmt_case_ptr)]; + char dummy30[sizeof (stmt_case_ptr)]; // stmt_continue - char dummy30[sizeof (stmt_continue_ptr)]; + char dummy31[sizeof (stmt_continue_ptr)]; // stmt_default - char dummy31[sizeof (stmt_default_ptr)]; + char dummy32[sizeof (stmt_default_ptr)]; // stmt_endon - char dummy32[sizeof (stmt_endon_ptr)]; + char dummy33[sizeof (stmt_endon_ptr)]; // stmt_for - char dummy33[sizeof (stmt_for_ptr)]; + char dummy34[sizeof (stmt_for_ptr)]; // stmt_foreach - char dummy34[sizeof (stmt_foreach_ptr)]; + char dummy35[sizeof (stmt_foreach_ptr)]; // stmt_if - char dummy35[sizeof (stmt_if_ptr)]; + char dummy36[sizeof (stmt_if_ptr)]; // stmt_ifelse - char dummy36[sizeof (stmt_ifelse_ptr)]; + char dummy37[sizeof (stmt_ifelse_ptr)]; // stmt_block // stmt_list - char dummy37[sizeof (stmt_list_ptr)]; + char dummy38[sizeof (stmt_list_ptr)]; // stmt_notify - char dummy38[sizeof (stmt_notify_ptr)]; + char dummy39[sizeof (stmt_notify_ptr)]; + + // stmt_prof_begin + char dummy40[sizeof (stmt_prof_begin_ptr)]; + + // stmt_prof_end + char dummy41[sizeof (stmt_prof_end_ptr)]; // stmt // for_stmt - char dummy39[sizeof (stmt_ptr)]; + char dummy42[sizeof (stmt_ptr)]; // stmt_return - char dummy40[sizeof (stmt_return_ptr)]; + char dummy43[sizeof (stmt_return_ptr)]; // stmt_switch - char dummy41[sizeof (stmt_switch_ptr)]; + char dummy44[sizeof (stmt_switch_ptr)]; // stmt_wait - char dummy42[sizeof (stmt_wait_ptr)]; + char dummy45[sizeof (stmt_wait_ptr)]; // stmt_waitframe - char dummy43[sizeof (stmt_waitframe_ptr)]; + char dummy46[sizeof (stmt_waitframe_ptr)]; // stmt_waittill - char dummy44[sizeof (stmt_waittill_ptr)]; + char dummy47[sizeof (stmt_waittill_ptr)]; // stmt_waittillframeend - char dummy45[sizeof (stmt_waittillframeend_ptr)]; + char dummy48[sizeof (stmt_waittillframeend_ptr)]; // stmt_waittillmatch - char dummy46[sizeof (stmt_waittillmatch_ptr)]; + char dummy49[sizeof (stmt_waittillmatch_ptr)]; // stmt_while - char dummy47[sizeof (stmt_while_ptr)]; + char dummy50[sizeof (stmt_while_ptr)]; // string - char dummy48[sizeof (string_ptr)]; + char dummy51[sizeof (string_ptr)]; // thisthread - char dummy49[sizeof (thisthread_ptr)]; + char dummy52[sizeof (thisthread_ptr)]; // thread - char dummy50[sizeof (thread_ptr)]; + char dummy53[sizeof (thread_ptr)]; // true - char dummy51[sizeof (true_ptr)]; + char dummy54[sizeof (true_ptr)]; // undefined - char dummy52[sizeof (undefined_ptr)]; + char dummy55[sizeof (undefined_ptr)]; // usingtree - char dummy53[sizeof (usingtree_ptr)]; + char dummy56[sizeof (usingtree_ptr)]; // vector - char dummy54[sizeof (vector_ptr)]; + char dummy57[sizeof (vector_ptr)]; }; /// The size of the largest semantic type. @@ -643,98 +652,101 @@ namespace xsk { namespace gsc { namespace h2 { H2EOF = 0, // "end of file" H2error = 1, // error H2UNDEF = 2, // "invalid token" - INCLUDE = 3, // "#include" - USINGTREE = 4, // "#using_animtree" - ANIMTREE = 5, // "#animtree" - ENDON = 6, // "endon" - NOTIFY = 7, // "notify" - WAIT = 8, // "wait" - WAITTILL = 9, // "waittill" - WAITTILLMATCH = 10, // "waittillmatch" - WAITTILLFRAMEEND = 11, // "waittillframeend" - WAITFRAME = 12, // "waitframe" - IF = 13, // "if" - ELSE = 14, // "else" - WHILE = 15, // "while" - FOR = 16, // "for" - FOREACH = 17, // "foreach" - IN = 18, // "in" - SWITCH = 19, // "switch" - CASE = 20, // "case" - DEFAULT = 21, // "default" - BREAK = 22, // "break" - CONTINUE = 23, // "continue" - RETURN = 24, // "return" - THREAD = 25, // "thread" - CHILDTHREAD = 26, // "childthread" - THISTHREAD = 27, // "thisthread" - CALL = 28, // "call" - TRUE = 29, // "true" - FALSE = 30, // "false" - UNDEFINED = 31, // "undefined" - SIZE = 32, // "size" - GAME = 33, // "game" - SELF = 34, // "self" - ANIM = 35, // "anim" - LEVEL = 36, // "level" - LPAREN = 37, // "(" - RPAREN = 38, // ")" - LBRACE = 39, // "{" - RBRACE = 40, // "}" - LBRACKET = 41, // "[" - RBRACKET = 42, // "]" - COMMA = 43, // "," - DOT = 44, // "." - DOUBLECOLON = 45, // "::" - COLON = 46, // ":" - SEMICOLON = 47, // ";" - INCREMENT = 48, // "++" - DECREMENT = 49, // "--" - LSHIFT = 50, // "<<" - RSHIFT = 51, // ">>" - OR = 52, // "||" - AND = 53, // "&&" - EQUALITY = 54, // "==" - INEQUALITY = 55, // "!=" - LESS_EQUAL = 56, // "<=" - GREATER_EQUAL = 57, // ">=" - LESS = 58, // "<" - GREATER = 59, // ">" - NOT = 60, // "!" - COMPLEMENT = 61, // "~" - ASSIGN = 62, // "=" - ASSIGN_ADD = 63, // "+=" - ASSIGN_SUB = 64, // "-=" - ASSIGN_MULT = 65, // "*=" - ASSIGN_DIV = 66, // "/=" - ASSIGN_MOD = 67, // "%=" - ASSIGN_BITWISE_OR = 68, // "|=" - ASSIGN_BITWISE_AND = 69, // "&=" - ASSIGN_BITWISE_EXOR = 70, // "^=" - ASSIGN_RSHIFT = 71, // ">>=" - ASSIGN_LSHIFT = 72, // "<<=" - BITWISE_OR = 73, // "|" - BITWISE_AND = 74, // "&" - BITWISE_EXOR = 75, // "^" - ADD = 76, // "+" - SUB = 77, // "-" - MULT = 78, // "*" - DIV = 79, // "/" - MOD = 80, // "%" - FILE = 81, // "file path" - NAME = 82, // "identifier" - STRING = 83, // "string literal" - ISTRING = 84, // "localized string" - FLOAT = 85, // "float" - INTEGER = 86, // "int" - ADD_ARRAY = 87, // ADD_ARRAY - THEN = 88, // THEN - NEG = 89, // NEG - ANIMREF = 90, // ANIMREF - PREINC = 91, // PREINC - PREDEC = 92, // PREDEC - POSTINC = 93, // POSTINC - POSTDEC = 94 // POSTDEC + BREAKPOINT = 3, // "breakpoint" + PROFBEGIN = 4, // "prof_begin" + PROFEND = 5, // "prof_end" + INCLUDE = 6, // "#include" + USINGTREE = 7, // "#using_animtree" + ANIMTREE = 8, // "#animtree" + ENDON = 9, // "endon" + NOTIFY = 10, // "notify" + WAIT = 11, // "wait" + WAITTILL = 12, // "waittill" + WAITTILLMATCH = 13, // "waittillmatch" + WAITTILLFRAMEEND = 14, // "waittillframeend" + WAITFRAME = 15, // "waitframe" + IF = 16, // "if" + ELSE = 17, // "else" + WHILE = 18, // "while" + FOR = 19, // "for" + FOREACH = 20, // "foreach" + IN = 21, // "in" + SWITCH = 22, // "switch" + CASE = 23, // "case" + DEFAULT = 24, // "default" + BREAK = 25, // "break" + CONTINUE = 26, // "continue" + RETURN = 27, // "return" + THREAD = 28, // "thread" + CHILDTHREAD = 29, // "childthread" + THISTHREAD = 30, // "thisthread" + CALL = 31, // "call" + TRUE = 32, // "true" + FALSE = 33, // "false" + UNDEFINED = 34, // "undefined" + SIZE = 35, // ".size" + GAME = 36, // "game" + SELF = 37, // "self" + ANIM = 38, // "anim" + LEVEL = 39, // "level" + LPAREN = 40, // "(" + RPAREN = 41, // ")" + LBRACE = 42, // "{" + RBRACE = 43, // "}" + LBRACKET = 44, // "[" + RBRACKET = 45, // "]" + COMMA = 46, // "," + DOT = 47, // "." + DOUBLECOLON = 48, // "::" + COLON = 49, // ":" + SEMICOLON = 50, // ";" + INCREMENT = 51, // "++" + DECREMENT = 52, // "--" + LSHIFT = 53, // "<<" + RSHIFT = 54, // ">>" + OR = 55, // "||" + AND = 56, // "&&" + EQUALITY = 57, // "==" + INEQUALITY = 58, // "!=" + LESS_EQUAL = 59, // "<=" + GREATER_EQUAL = 60, // ">=" + LESS = 61, // "<" + GREATER = 62, // ">" + NOT = 63, // "!" + COMPLEMENT = 64, // "~" + ASSIGN = 65, // "=" + ASSIGN_ADD = 66, // "+=" + ASSIGN_SUB = 67, // "-=" + ASSIGN_MULT = 68, // "*=" + ASSIGN_DIV = 69, // "/=" + ASSIGN_MOD = 70, // "%=" + ASSIGN_BITWISE_OR = 71, // "|=" + ASSIGN_BITWISE_AND = 72, // "&=" + ASSIGN_BITWISE_EXOR = 73, // "^=" + ASSIGN_RSHIFT = 74, // ">>=" + ASSIGN_LSHIFT = 75, // "<<=" + BITWISE_OR = 76, // "|" + BITWISE_AND = 77, // "&" + BITWISE_EXOR = 78, // "^" + ADD = 79, // "+" + SUB = 80, // "-" + MULT = 81, // "*" + DIV = 82, // "/" + MOD = 83, // "%" + FILE = 84, // "file path" + NAME = 85, // "identifier" + STRING = 86, // "string literal" + ISTRING = 87, // "localized string" + FLOAT = 88, // "float" + INTEGER = 89, // "int" + ADD_ARRAY = 90, // ADD_ARRAY + THEN = 91, // THEN + NEG = 92, // NEG + ANIMREF = 93, // ANIMREF + PREINC = 94, // PREINC + PREDEC = 95, // PREDEC + POSTINC = 96, // POSTINC + POSTDEC = 97 // POSTDEC }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; @@ -751,176 +763,182 @@ namespace xsk { namespace gsc { namespace h2 { { enum symbol_kind_type { - YYNTOKENS = 95, ///< Number of tokens. + YYNTOKENS = 98, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error S_YYUNDEF = 2, // "invalid token" - S_INCLUDE = 3, // "#include" - S_USINGTREE = 4, // "#using_animtree" - S_ANIMTREE = 5, // "#animtree" - S_ENDON = 6, // "endon" - S_NOTIFY = 7, // "notify" - S_WAIT = 8, // "wait" - S_WAITTILL = 9, // "waittill" - S_WAITTILLMATCH = 10, // "waittillmatch" - S_WAITTILLFRAMEEND = 11, // "waittillframeend" - S_WAITFRAME = 12, // "waitframe" - S_IF = 13, // "if" - S_ELSE = 14, // "else" - S_WHILE = 15, // "while" - S_FOR = 16, // "for" - S_FOREACH = 17, // "foreach" - S_IN = 18, // "in" - S_SWITCH = 19, // "switch" - S_CASE = 20, // "case" - S_DEFAULT = 21, // "default" - S_BREAK = 22, // "break" - S_CONTINUE = 23, // "continue" - S_RETURN = 24, // "return" - S_THREAD = 25, // "thread" - S_CHILDTHREAD = 26, // "childthread" - S_THISTHREAD = 27, // "thisthread" - S_CALL = 28, // "call" - S_TRUE = 29, // "true" - S_FALSE = 30, // "false" - S_UNDEFINED = 31, // "undefined" - S_SIZE = 32, // "size" - S_GAME = 33, // "game" - S_SELF = 34, // "self" - S_ANIM = 35, // "anim" - S_LEVEL = 36, // "level" - S_LPAREN = 37, // "(" - S_RPAREN = 38, // ")" - S_LBRACE = 39, // "{" - S_RBRACE = 40, // "}" - S_LBRACKET = 41, // "[" - S_RBRACKET = 42, // "]" - S_COMMA = 43, // "," - S_DOT = 44, // "." - S_DOUBLECOLON = 45, // "::" - S_COLON = 46, // ":" - S_SEMICOLON = 47, // ";" - S_INCREMENT = 48, // "++" - S_DECREMENT = 49, // "--" - S_LSHIFT = 50, // "<<" - S_RSHIFT = 51, // ">>" - S_OR = 52, // "||" - S_AND = 53, // "&&" - S_EQUALITY = 54, // "==" - S_INEQUALITY = 55, // "!=" - S_LESS_EQUAL = 56, // "<=" - S_GREATER_EQUAL = 57, // ">=" - S_LESS = 58, // "<" - S_GREATER = 59, // ">" - S_NOT = 60, // "!" - S_COMPLEMENT = 61, // "~" - S_ASSIGN = 62, // "=" - S_ASSIGN_ADD = 63, // "+=" - S_ASSIGN_SUB = 64, // "-=" - S_ASSIGN_MULT = 65, // "*=" - S_ASSIGN_DIV = 66, // "/=" - S_ASSIGN_MOD = 67, // "%=" - S_ASSIGN_BITWISE_OR = 68, // "|=" - S_ASSIGN_BITWISE_AND = 69, // "&=" - S_ASSIGN_BITWISE_EXOR = 70, // "^=" - S_ASSIGN_RSHIFT = 71, // ">>=" - S_ASSIGN_LSHIFT = 72, // "<<=" - S_BITWISE_OR = 73, // "|" - S_BITWISE_AND = 74, // "&" - S_BITWISE_EXOR = 75, // "^" - S_ADD = 76, // "+" - S_SUB = 77, // "-" - S_MULT = 78, // "*" - S_DIV = 79, // "/" - S_MOD = 80, // "%" - S_FILE = 81, // "file path" - S_NAME = 82, // "identifier" - S_STRING = 83, // "string literal" - S_ISTRING = 84, // "localized string" - S_FLOAT = 85, // "float" - S_INTEGER = 86, // "int" - S_ADD_ARRAY = 87, // ADD_ARRAY - S_THEN = 88, // THEN - S_NEG = 89, // NEG - S_ANIMREF = 90, // ANIMREF - S_PREINC = 91, // PREINC - S_PREDEC = 92, // PREDEC - S_POSTINC = 93, // POSTINC - S_POSTDEC = 94, // POSTDEC - S_YYACCEPT = 95, // $accept - S_root = 96, // root - S_program = 97, // program - S_include = 98, // include - S_define = 99, // define - S_usingtree = 100, // usingtree - S_constant = 101, // constant - S_thread = 102, // thread - S_parameters = 103, // parameters - S_stmt = 104, // stmt - S_stmt_block = 105, // stmt_block - S_stmt_list = 106, // stmt_list - S_stmt_call = 107, // stmt_call - S_stmt_assign = 108, // stmt_assign - S_stmt_endon = 109, // stmt_endon - S_stmt_notify = 110, // stmt_notify - S_stmt_wait = 111, // stmt_wait - S_stmt_waittill = 112, // stmt_waittill - S_stmt_waittillmatch = 113, // stmt_waittillmatch - S_stmt_waittillframeend = 114, // stmt_waittillframeend - S_stmt_waitframe = 115, // stmt_waitframe - S_stmt_if = 116, // stmt_if - S_stmt_ifelse = 117, // stmt_ifelse - S_stmt_while = 118, // stmt_while - S_stmt_for = 119, // stmt_for - S_stmt_foreach = 120, // stmt_foreach - S_stmt_switch = 121, // stmt_switch - S_stmt_case = 122, // stmt_case - S_stmt_default = 123, // stmt_default - S_stmt_break = 124, // stmt_break - S_stmt_continue = 125, // stmt_continue - S_stmt_return = 126, // stmt_return - S_for_stmt = 127, // for_stmt - S_for_expr = 128, // for_expr - S_expr = 129, // expr - S_expr_assign = 130, // expr_assign - S_expr_compare = 131, // expr_compare - S_expr_binary = 132, // expr_binary - S_expr_primitive = 133, // expr_primitive - S_expr_call = 134, // expr_call - S_expr_call_thread = 135, // expr_call_thread - S_expr_call_childthread = 136, // expr_call_childthread - S_expr_call_function = 137, // expr_call_function - S_expr_call_pointer = 138, // expr_call_pointer - S_expr_arguments = 139, // expr_arguments - S_expr_arguments_filled = 140, // expr_arguments_filled - S_expr_arguments_empty = 141, // expr_arguments_empty - S_expr_function = 142, // expr_function - S_expr_add_array = 143, // expr_add_array - S_expr_array = 144, // expr_array - S_expr_field = 145, // expr_field - S_expr_size = 146, // expr_size - S_object = 147, // object - S_thisthread = 148, // thisthread - S_empty_array = 149, // empty_array - S_undefined = 150, // undefined - S_game = 151, // game - S_self = 152, // self - S_anim = 153, // anim - S_level = 154, // level - S_animation = 155, // animation - S_animtree = 156, // animtree - S_name = 157, // name - S_file = 158, // file - S_istring = 159, // istring - S_string = 160, // string - S_vector = 161, // vector - S_neg_float = 162, // neg_float - S_neg_integer = 163, // neg_integer - S_float = 164, // float - S_integer = 165, // integer - S_false = 166, // false - S_true = 167 // true + S_BREAKPOINT = 3, // "breakpoint" + S_PROFBEGIN = 4, // "prof_begin" + S_PROFEND = 5, // "prof_end" + S_INCLUDE = 6, // "#include" + S_USINGTREE = 7, // "#using_animtree" + S_ANIMTREE = 8, // "#animtree" + S_ENDON = 9, // "endon" + S_NOTIFY = 10, // "notify" + S_WAIT = 11, // "wait" + S_WAITTILL = 12, // "waittill" + S_WAITTILLMATCH = 13, // "waittillmatch" + S_WAITTILLFRAMEEND = 14, // "waittillframeend" + S_WAITFRAME = 15, // "waitframe" + S_IF = 16, // "if" + S_ELSE = 17, // "else" + S_WHILE = 18, // "while" + S_FOR = 19, // "for" + S_FOREACH = 20, // "foreach" + S_IN = 21, // "in" + S_SWITCH = 22, // "switch" + S_CASE = 23, // "case" + S_DEFAULT = 24, // "default" + S_BREAK = 25, // "break" + S_CONTINUE = 26, // "continue" + S_RETURN = 27, // "return" + S_THREAD = 28, // "thread" + S_CHILDTHREAD = 29, // "childthread" + S_THISTHREAD = 30, // "thisthread" + S_CALL = 31, // "call" + S_TRUE = 32, // "true" + S_FALSE = 33, // "false" + S_UNDEFINED = 34, // "undefined" + S_SIZE = 35, // ".size" + S_GAME = 36, // "game" + S_SELF = 37, // "self" + S_ANIM = 38, // "anim" + S_LEVEL = 39, // "level" + S_LPAREN = 40, // "(" + S_RPAREN = 41, // ")" + S_LBRACE = 42, // "{" + S_RBRACE = 43, // "}" + S_LBRACKET = 44, // "[" + S_RBRACKET = 45, // "]" + S_COMMA = 46, // "," + S_DOT = 47, // "." + S_DOUBLECOLON = 48, // "::" + S_COLON = 49, // ":" + S_SEMICOLON = 50, // ";" + S_INCREMENT = 51, // "++" + S_DECREMENT = 52, // "--" + S_LSHIFT = 53, // "<<" + S_RSHIFT = 54, // ">>" + S_OR = 55, // "||" + S_AND = 56, // "&&" + S_EQUALITY = 57, // "==" + S_INEQUALITY = 58, // "!=" + S_LESS_EQUAL = 59, // "<=" + S_GREATER_EQUAL = 60, // ">=" + S_LESS = 61, // "<" + S_GREATER = 62, // ">" + S_NOT = 63, // "!" + S_COMPLEMENT = 64, // "~" + S_ASSIGN = 65, // "=" + S_ASSIGN_ADD = 66, // "+=" + S_ASSIGN_SUB = 67, // "-=" + S_ASSIGN_MULT = 68, // "*=" + S_ASSIGN_DIV = 69, // "/=" + S_ASSIGN_MOD = 70, // "%=" + S_ASSIGN_BITWISE_OR = 71, // "|=" + S_ASSIGN_BITWISE_AND = 72, // "&=" + S_ASSIGN_BITWISE_EXOR = 73, // "^=" + S_ASSIGN_RSHIFT = 74, // ">>=" + S_ASSIGN_LSHIFT = 75, // "<<=" + S_BITWISE_OR = 76, // "|" + S_BITWISE_AND = 77, // "&" + S_BITWISE_EXOR = 78, // "^" + S_ADD = 79, // "+" + S_SUB = 80, // "-" + S_MULT = 81, // "*" + S_DIV = 82, // "/" + S_MOD = 83, // "%" + S_FILE = 84, // "file path" + S_NAME = 85, // "identifier" + S_STRING = 86, // "string literal" + S_ISTRING = 87, // "localized string" + S_FLOAT = 88, // "float" + S_INTEGER = 89, // "int" + S_ADD_ARRAY = 90, // ADD_ARRAY + S_THEN = 91, // THEN + S_NEG = 92, // NEG + S_ANIMREF = 93, // ANIMREF + S_PREINC = 94, // PREINC + S_PREDEC = 95, // PREDEC + S_POSTINC = 96, // POSTINC + S_POSTDEC = 97, // POSTDEC + S_YYACCEPT = 98, // $accept + S_root = 99, // root + S_program = 100, // program + S_include = 101, // include + S_define = 102, // define + S_usingtree = 103, // usingtree + S_constant = 104, // constant + S_thread = 105, // thread + S_parameters = 106, // parameters + S_stmt = 107, // stmt + S_stmt_block = 108, // stmt_block + S_stmt_list = 109, // stmt_list + S_stmt_call = 110, // stmt_call + S_stmt_assign = 111, // stmt_assign + S_stmt_endon = 112, // stmt_endon + S_stmt_notify = 113, // stmt_notify + S_stmt_wait = 114, // stmt_wait + S_stmt_waittill = 115, // stmt_waittill + S_stmt_waittillmatch = 116, // stmt_waittillmatch + S_stmt_waittillframeend = 117, // stmt_waittillframeend + S_stmt_waitframe = 118, // stmt_waitframe + S_stmt_if = 119, // stmt_if + S_stmt_ifelse = 120, // stmt_ifelse + S_stmt_while = 121, // stmt_while + S_stmt_for = 122, // stmt_for + S_stmt_foreach = 123, // stmt_foreach + S_stmt_switch = 124, // stmt_switch + S_stmt_case = 125, // stmt_case + S_stmt_default = 126, // stmt_default + S_stmt_break = 127, // stmt_break + S_stmt_continue = 128, // stmt_continue + S_stmt_return = 129, // stmt_return + S_stmt_breakpoint = 130, // stmt_breakpoint + S_stmt_prof_begin = 131, // stmt_prof_begin + S_stmt_prof_end = 132, // stmt_prof_end + S_for_stmt = 133, // for_stmt + S_for_expr = 134, // for_expr + S_expr = 135, // expr + S_expr_assign = 136, // expr_assign + S_expr_compare = 137, // expr_compare + S_expr_binary = 138, // expr_binary + S_expr_primitive = 139, // expr_primitive + S_expr_call = 140, // expr_call + S_expr_call_thread = 141, // expr_call_thread + S_expr_call_childthread = 142, // expr_call_childthread + S_expr_call_function = 143, // expr_call_function + S_expr_call_pointer = 144, // expr_call_pointer + S_expr_arguments = 145, // expr_arguments + S_expr_arguments_filled = 146, // expr_arguments_filled + S_expr_arguments_empty = 147, // expr_arguments_empty + S_expr_function = 148, // expr_function + S_expr_add_array = 149, // expr_add_array + S_expr_array = 150, // expr_array + S_expr_field = 151, // expr_field + S_expr_size = 152, // expr_size + S_object = 153, // object + S_thisthread = 154, // thisthread + S_empty_array = 155, // empty_array + S_undefined = 156, // undefined + S_game = 157, // game + S_self = 158, // self + S_anim = 159, // anim + S_level = 160, // level + S_animation = 161, // animation + S_animtree = 162, // animtree + S_name = 163, // name + S_file = 164, // file + S_istring = 165, // istring + S_string = 166, // string + S_vector = 167, // vector + S_neg_float = 168, // neg_float + S_neg_integer = 169, // neg_integer + S_float = 170, // float + S_integer = 171, // integer + S_false = 172, // false + S_true = 173 // true }; }; @@ -1086,6 +1104,10 @@ namespace xsk { namespace gsc { namespace h2 { value.move< stmt_break_ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.move< stmt_breakpoint_ptr > (std::move (that.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.move< stmt_call_ptr > (std::move (that.value)); break; @@ -1131,6 +1153,14 @@ namespace xsk { namespace gsc { namespace h2 { value.move< stmt_notify_ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.move< stmt_prof_begin_ptr > (std::move (that.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.move< stmt_prof_end_ptr > (std::move (that.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.move< stmt_ptr > (std::move (that.value)); @@ -1597,6 +1627,20 @@ namespace xsk { namespace gsc { namespace h2 { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, stmt_breakpoint_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_breakpoint_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_call_ptr&& v, location_type&& l) : Base (t) @@ -1751,6 +1795,34 @@ namespace xsk { namespace gsc { namespace h2 { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, stmt_prof_begin_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_prof_begin_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_prof_end_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_prof_end_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_ptr&& v, location_type&& l) : Base (t) @@ -2126,6 +2198,10 @@ switch (yykind) value.template destroy< stmt_break_ptr > (); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.template destroy< stmt_breakpoint_ptr > (); + break; + case symbol_kind::S_stmt_call: // stmt_call value.template destroy< stmt_call_ptr > (); break; @@ -2171,6 +2247,14 @@ switch (yykind) value.template destroy< stmt_notify_ptr > (); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.template destroy< stmt_prof_begin_ptr > (); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.template destroy< stmt_prof_end_ptr > (); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.template destroy< stmt_ptr > (); @@ -2437,6 +2521,51 @@ switch (yykind) return symbol_type (token::H2UNDEF, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_BREAKPOINT (location_type l) + { + return symbol_type (token::BREAKPOINT, std::move (l)); + } +#else + static + symbol_type + make_BREAKPOINT (const location_type& l) + { + return symbol_type (token::BREAKPOINT, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_PROFBEGIN (location_type l) + { + return symbol_type (token::PROFBEGIN, std::move (l)); + } +#else + static + symbol_type + make_PROFBEGIN (const location_type& l) + { + return symbol_type (token::PROFBEGIN, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_PROFEND (location_type l) + { + return symbol_type (token::PROFEND, std::move (l)); + } +#else + static + symbol_type + make_PROFEND (const location_type& l) + { + return symbol_type (token::PROFEND, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4161,8 +4290,8 @@ switch (yykind) /// Constants. enum { - yylast_ = 1581, ///< Last index in yytable_. - yynnts_ = 73, ///< Number of nonterminal symbols. + yylast_ = 1646, ///< Last index in yytable_. + yynnts_ = 76, ///< Number of nonterminal symbols. yyfinal_ = 15 ///< Termination state number. }; @@ -4319,6 +4448,10 @@ switch (yykind) value.copy< stmt_break_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.copy< stmt_breakpoint_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.copy< stmt_call_ptr > (YY_MOVE (that.value)); break; @@ -4364,6 +4497,14 @@ switch (yykind) value.copy< stmt_notify_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.copy< stmt_prof_begin_ptr > (YY_MOVE (that.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.copy< stmt_prof_end_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.copy< stmt_ptr > (YY_MOVE (that.value)); @@ -4587,6 +4728,10 @@ switch (yykind) value.move< stmt_break_ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.move< stmt_breakpoint_ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.move< stmt_call_ptr > (YY_MOVE (s.value)); break; @@ -4632,6 +4777,14 @@ switch (yykind) value.move< stmt_notify_ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.move< stmt_prof_begin_ptr > (YY_MOVE (s.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.move< stmt_prof_end_ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.move< stmt_ptr > (YY_MOVE (s.value)); @@ -4760,7 +4913,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::h2 -#line 4764 "parser.hpp" +#line 4917 "parser.hpp" diff --git a/src/iw5/xsk/lexer.cpp b/src/iw5/xsk/lexer.cpp index 002dbbcf..c509172c 100644 --- a/src/iw5/xsk/lexer.cpp +++ b/src/iw5/xsk/lexer.cpp @@ -553,8 +553,8 @@ static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 96 -#define YY_END_OF_BUFFER 97 +#define YY_NUM_RULES 99 +#define YY_END_OF_BUFFER 100 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -562,38 +562,41 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[281] = +static const flex_int16_t yy_accept[300] = { 0, - 0, 0, 0, 0, 0, 0, 97, 95, 1, 2, - 84, 95, 95, 83, 87, 95, 45, 46, 81, 79, - 51, 80, 52, 82, 94, 54, 55, 68, 78, 69, - 90, 49, 50, 88, 90, 90, 90, 90, 90, 90, - 90, 90, 90, 90, 90, 90, 90, 90, 90, 47, - 86, 48, 85, 5, 6, 5, 9, 10, 9, 65, - 0, 92, 0, 0, 0, 0, 74, 0, 63, 0, - 76, 0, 0, 72, 56, 70, 57, 71, 93, 8, - 4, 3, 73, 93, 94, 0, 0, 53, 60, 66, - 64, 67, 61, 90, 77, 90, 90, 90, 90, 90, + 0, 0, 0, 0, 0, 0, 100, 98, 1, 2, + 87, 98, 98, 86, 90, 98, 48, 49, 84, 82, + 54, 83, 55, 85, 97, 57, 58, 71, 81, 72, + 93, 52, 53, 91, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 50, 89, 51, 88, 5, 6, 5, 9, 10, 9, + 68, 0, 95, 0, 0, 0, 0, 77, 0, 66, + 0, 79, 0, 0, 75, 59, 73, 60, 74, 96, + 0, 8, 4, 3, 76, 96, 97, 0, 0, 56, + 63, 69, 67, 70, 64, 93, 80, 93, 93, 93, - 90, 90, 90, 90, 90, 90, 21, 26, 90, 90, - 90, 90, 90, 90, 90, 90, 90, 90, 90, 75, - 62, 7, 11, 0, 92, 0, 0, 0, 0, 0, - 91, 0, 0, 0, 0, 92, 0, 93, 3, 93, - 93, 89, 58, 59, 90, 90, 90, 90, 90, 90, - 90, 90, 90, 90, 24, 90, 90, 90, 90, 90, - 90, 90, 90, 90, 90, 90, 90, 90, 0, 0, - 0, 0, 91, 0, 0, 91, 0, 43, 90, 36, - 28, 90, 90, 90, 22, 90, 90, 90, 41, 90, - 90, 90, 42, 40, 90, 90, 90, 37, 90, 17, + 93, 93, 93, 93, 93, 93, 93, 93, 24, 29, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 78, 65, 7, 11, 0, 95, 0, 0, 0, + 0, 0, 94, 0, 0, 0, 0, 95, 0, 96, + 0, 3, 96, 96, 92, 61, 62, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 27, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 0, 0, 0, 0, 94, 0, 0, 94, 0, + 0, 46, 93, 39, 31, 93, 93, 93, 25, 93, + 93, 93, 44, 93, 93, 93, 93, 45, 93, 93, + + 93, 40, 93, 20, 93, 0, 0, 0, 43, 33, + 93, 93, 93, 18, 41, 93, 47, 93, 93, 93, + 93, 93, 93, 93, 93, 26, 0, 0, 0, 93, + 93, 93, 93, 93, 19, 93, 93, 35, 30, 93, + 36, 93, 93, 0, 0, 0, 93, 93, 93, 32, + 28, 93, 93, 93, 93, 93, 0, 15, 0, 93, + 93, 34, 93, 14, 93, 93, 21, 17, 0, 93, + 93, 93, 93, 42, 93, 93, 0, 12, 93, 13, + 38, 93, 93, 0, 37, 93, 93, 0, 93, 93, + 0, 93, 22, 0, 93, 16, 93, 23, 0 - 90, 0, 0, 0, 30, 90, 90, 90, 15, 38, - 90, 44, 90, 90, 90, 90, 90, 90, 90, 23, - 0, 0, 0, 90, 90, 90, 90, 16, 32, 27, - 90, 33, 90, 90, 0, 0, 0, 90, 90, 29, - 25, 90, 90, 90, 0, 12, 0, 90, 31, 90, - 90, 18, 14, 0, 90, 90, 39, 90, 90, 0, - 90, 35, 90, 90, 0, 34, 90, 90, 0, 90, - 90, 0, 90, 19, 0, 90, 13, 90, 20, 0 } ; static const YY_CHAR yy_ec[256] = @@ -610,8 +613,8 @@ static const YY_CHAR yy_ec[256] = 25, 26, 27, 28, 29, 1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 24, 39, 40, 41, 42, - 43, 24, 24, 44, 45, 46, 47, 48, 49, 24, - 50, 51, 52, 53, 54, 55, 1, 1, 1, 1, + 43, 44, 24, 45, 46, 47, 48, 49, 50, 24, + 51, 52, 53, 54, 55, 56, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -628,224 +631,238 @@ static const YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static const YY_CHAR yy_meta[56] = +static const YY_CHAR yy_meta[57] = { 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 4, 1, 1, 1, 1, 1, 4, 1, 5, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 1, 1, 1, 1 + 4, 4, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[295] = +static const flex_int16_t yy_base[314] = { 0, - 0, 0, 53, 54, 55, 56, 530, 531, 531, 531, - 507, 55, 33, 506, 64, 58, 531, 531, 505, 55, - 531, 60, 508, 73, 71, 506, 531, 70, 502, 71, - 497, 531, 531, 500, 57, 44, 70, 72, 75, 78, - 48, 76, 86, 79, 90, 93, 88, 84, 103, 531, - 81, 531, 531, 531, 531, 504, 531, 531, 503, 531, - 104, 531, 132, 477, 476, 472, 531, 118, 531, 119, - 531, 127, 138, 531, 531, 531, 531, 531, 120, 531, - 531, 0, 531, 121, 133, 134, 0, 531, 494, 531, - 531, 531, 493, 488, 531, 38, 120, 117, 135, 126, + 0, 0, 54, 55, 56, 57, 564, 565, 565, 565, + 541, 56, 35, 540, 63, 55, 565, 565, 539, 56, + 565, 55, 56, 74, 71, 541, 565, 54, 537, 70, + 532, 565, 565, 535, 53, 58, 64, 72, 73, 74, + 79, 84, 82, 85, 86, 88, 95, 97, 94, 107, + 565, 96, 565, 565, 565, 565, 539, 565, 565, 538, + 565, 120, 565, 127, 512, 511, 506, 565, 122, 565, + 115, 565, 126, 140, 565, 565, 565, 565, 565, 120, + 513, 565, 565, 0, 565, 121, 141, 135, 0, 565, + 528, 565, 565, 565, 527, 522, 565, 132, 128, 134, - 137, 122, 143, 139, 140, 144, 487, 486, 145, 148, - 149, 151, 152, 154, 160, 155, 156, 161, 162, 531, - 531, 531, 531, 185, 191, 202, 473, 478, 471, 192, - 531, 203, 200, 207, 204, 205, 212, 531, 0, 201, - 531, 482, 531, 531, 186, 194, 197, 206, 199, 196, - 215, 209, 208, 218, 220, 221, 222, 223, 224, 227, - 226, 231, 233, 232, 238, 239, 241, 242, 466, 466, - 463, 264, 265, 271, 266, 270, 277, 478, 255, 477, - 476, 262, 263, 257, 475, 258, 259, 272, 474, 273, - 279, 157, 473, 472, 280, 281, 285, 471, 282, 283, + 137, 139, 138, 142, 114, 143, 145, 146, 521, 520, + 150, 151, 152, 153, 156, 159, 163, 158, 160, 165, + 166, 565, 565, 565, 565, 189, 197, 202, 507, 512, + 505, 204, 565, 207, 205, 208, 209, 210, 213, 565, + 490, 0, 202, 565, 515, 565, 565, 199, 212, 187, + 195, 206, 198, 217, 215, 218, 222, 224, 225, 226, + 227, 228, 229, 231, 236, 230, 238, 241, 244, 243, + 245, 499, 499, 496, 268, 269, 276, 271, 273, 283, + 503, 510, 261, 509, 508, 258, 263, 262, 507, 270, + 272, 277, 506, 278, 279, 282, 287, 505, 289, 290, - 284, 450, 448, 458, 467, 290, 293, 294, 466, 465, - 296, 464, 295, 297, 300, 304, 298, 306, 312, 463, - 444, 454, 457, 314, 299, 307, 317, 459, 458, 457, - 316, 456, 321, 322, 447, 446, 449, 323, 330, 452, - 451, 331, 332, 329, 442, 531, 433, 342, 448, 344, - 326, 345, 531, 435, 347, 346, 446, 349, 352, 430, - 355, 444, 357, 358, 423, 429, 359, 363, 363, 364, - 365, 372, 371, 377, 365, 366, 531, 368, 370, 531, - 408, 413, 418, 423, 426, 428, 433, 438, 443, 448, - 453, 357, 458, 463 + 293, 504, 291, 294, 296, 482, 480, 491, 565, 298, + 299, 301, 305, 500, 499, 302, 498, 303, 313, 307, + 314, 322, 324, 326, 327, 497, 477, 488, 491, 312, + 330, 310, 334, 335, 493, 336, 337, 492, 491, 340, + 490, 342, 343, 481, 480, 483, 348, 345, 354, 486, + 485, 351, 349, 363, 365, 352, 476, 565, 467, 367, + 368, 482, 369, 481, 370, 372, 375, 565, 468, 377, + 378, 380, 385, 466, 386, 387, 403, 417, 388, 416, + 414, 389, 394, 389, 408, 397, 400, 331, 399, 402, + 339, 401, 309, 259, 403, 565, 404, 200, 565, 445, + 450, 455, 460, 463, 465, 470, 475, 480, 485, 490, + 84, 495, 500 } ; -static const flex_int16_t yy_def[295] = +static const flex_int16_t yy_def[314] = { 0, - 280, 1, 281, 281, 282, 282, 280, 280, 280, 280, - 280, 283, 280, 280, 280, 284, 280, 280, 280, 280, - 280, 280, 280, 280, 285, 280, 280, 280, 280, 280, - 286, 280, 280, 280, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, 286, 280, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 283, 280, 287, 280, 280, 280, 280, 288, 280, 289, - 280, 284, 290, 280, 280, 280, 280, 280, 280, 280, - 280, 291, 280, 280, 285, 285, 292, 280, 280, 280, - 280, 280, 280, 286, 280, 286, 286, 286, 286, 286, + 299, 1, 300, 300, 301, 301, 299, 299, 299, 299, + 299, 302, 299, 299, 299, 303, 299, 299, 299, 299, + 299, 299, 299, 299, 304, 299, 299, 299, 299, 299, + 305, 299, 299, 299, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 302, 299, 306, 299, 299, 299, 299, 307, 299, + 308, 299, 303, 309, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 310, 299, 299, 304, 304, 311, 299, + 299, 299, 299, 299, 299, 305, 299, 305, 305, 305, - 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, 286, 280, - 280, 280, 280, 283, 283, 287, 280, 280, 280, 288, - 280, 293, 289, 294, 284, 284, 290, 280, 291, 280, - 280, 292, 280, 280, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, 280, 280, - 280, 288, 288, 293, 289, 289, 294, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 299, 299, 299, 299, 302, 302, 306, 299, 299, + 299, 307, 299, 312, 308, 313, 303, 303, 309, 299, + 299, 310, 299, 299, 311, 299, 299, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 299, 299, 299, 307, 307, 312, 308, 308, 313, + 299, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 286, 280, 280, 280, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, - 280, 280, 280, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 280, 280, 280, 286, 286, 286, - 286, 286, 286, 286, 280, 280, 280, 286, 286, 286, - 286, 286, 280, 280, 286, 286, 286, 286, 286, 280, - 286, 286, 286, 286, 280, 286, 286, 286, 280, 286, - 286, 280, 286, 286, 280, 286, 280, 286, 286, 0, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280 + 305, 305, 305, 305, 305, 299, 299, 299, 299, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 299, 299, 299, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 299, 299, 299, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 299, 299, 299, 305, + 305, 305, 305, 305, 305, 305, 305, 299, 299, 305, + 305, 305, 305, 305, 305, 305, 299, 305, 305, 305, + 305, 305, 305, 299, 305, 305, 305, 299, 305, 305, + 299, 305, 305, 299, 305, 299, 305, 305, 0, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299 } ; -static const flex_int16_t yy_nxt[587] = +static const flex_int16_t yy_nxt[622] = { 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 8, 33, 34, 31, 35, 36, 37, 38, 39, 40, 41, 31, 42, 31, 43, - 31, 44, 31, 45, 46, 47, 48, 31, 49, 31, - 31, 50, 51, 52, 53, 55, 55, 58, 58, 62, - 59, 59, 64, 87, 56, 56, 62, 75, 68, 87, - 65, 69, 70, 87, 77, 145, 76, 106, 80, 66, - 63, 78, 87, 73, 81, 71, 84, 97, 85, 82, - 89, 90, 92, 93, 83, 87, 87, 87, 96, 98, + 31, 44, 31, 45, 46, 47, 48, 49, 31, 50, + 31, 31, 51, 52, 53, 54, 56, 56, 59, 59, + 63, 60, 60, 63, 65, 57, 57, 69, 76, 78, + 70, 71, 66, 80, 91, 92, 79, 77, 89, 82, + 74, 64, 67, 89, 72, 83, 86, 145, 87, 89, + 84, 94, 95, 100, 98, 85, 89, 89, 89, 89, - 87, 87, 120, 87, 87, 101, 99, 104, 62, 87, - 107, 87, 100, 87, 102, 87, 103, 108, 87, 109, - 105, 110, 131, 111, 115, 117, 112, 131, 87, 63, - 113, 116, 118, 121, 61, 62, 125, 79, 140, 119, - 72, 114, 87, 132, 134, 87, 136, 87, 84, 280, - 85, 87, 73, 146, 138, 141, 147, 126, 87, 87, - 87, 148, 87, 137, 87, 87, 152, 150, 87, 87, - 87, 151, 149, 87, 87, 153, 87, 87, 154, 87, - 87, 87, 87, 155, 156, 87, 87, 87, 166, 62, - 160, 162, 157, 158, 159, 62, 131, 163, 167, 168, + 101, 81, 99, 106, 89, 103, 102, 89, 108, 89, + 89, 89, 104, 89, 105, 111, 107, 122, 109, 89, + 89, 114, 89, 133, 63, 110, 133, 112, 115, 62, + 113, 127, 89, 117, 63, 119, 120, 80, 143, 89, + 136, 118, 73, 121, 116, 64, 156, 134, 138, 123, + 299, 74, 128, 89, 140, 144, 86, 89, 87, 89, + 89, 149, 89, 89, 89, 139, 89, 89, 89, 148, + 89, 89, 154, 150, 152, 89, 89, 89, 89, 151, + 153, 89, 157, 89, 89, 89, 159, 155, 89, 158, + 89, 89, 169, 63, 162, 164, 165, 161, 160, 163, - 214, 165, 161, 164, 61, 130, 125, 173, 131, 133, - 63, 87, 62, 62, 72, 176, 63, 132, 140, 87, - 136, 87, 87, 179, 87, 134, 178, 126, 174, 73, - 73, 87, 177, 87, 87, 141, 180, 137, 182, 181, - 87, 183, 185, 87, 184, 87, 87, 87, 87, 87, - 186, 87, 87, 188, 189, 190, 87, 87, 87, 194, - 191, 193, 187, 87, 87, 197, 87, 87, 131, 131, - 192, 198, 199, 130, 131, 173, 195, 196, 131, 133, - 87, 201, 87, 87, 87, 176, 200, 87, 87, 132, - 132, 134, 210, 205, 206, 134, 174, 87, 87, 209, + 166, 63, 170, 171, 62, 168, 127, 167, 133, 132, + 135, 176, 89, 133, 64, 73, 179, 63, 63, 143, + 89, 138, 64, 89, 89, 89, 184, 128, 185, 134, + 136, 89, 177, 180, 74, 74, 144, 89, 139, 182, + 89, 183, 89, 89, 187, 186, 188, 89, 189, 89, + 89, 89, 89, 89, 89, 89, 89, 192, 193, 194, + 190, 89, 196, 89, 195, 198, 89, 191, 89, 89, + 89, 201, 133, 133, 202, 200, 197, 203, 132, 133, + 176, 133, 199, 89, 205, 135, 89, 89, 89, 204, + 211, 179, 296, 134, 134, 89, 136, 89, 136, 210, - 207, 211, 177, 208, 87, 87, 87, 87, 87, 87, - 87, 215, 212, 213, 217, 87, 218, 220, 87, 87, - 87, 87, 87, 87, 87, 87, 216, 227, 219, 87, - 232, 87, 87, 226, 225, 224, 230, 87, 229, 87, - 231, 87, 87, 233, 228, 239, 87, 87, 87, 234, - 238, 87, 240, 241, 87, 87, 87, 87, 257, 242, - 142, 244, 243, 249, 250, 251, 248, 87, 252, 87, - 87, 87, 87, 256, 87, 255, 261, 87, 262, 258, - 87, 264, 87, 87, 87, 259, 267, 266, 87, 87, - 87, 87, 263, 87, 271, 87, 87, 273, 277, 270, + 212, 177, 89, 89, 89, 215, 216, 89, 180, 213, + 219, 214, 89, 218, 89, 89, 89, 217, 89, 89, + 221, 89, 223, 89, 89, 224, 89, 89, 89, 226, + 89, 220, 89, 234, 89, 89, 222, 89, 89, 89, + 225, 230, 232, 236, 233, 231, 237, 89, 238, 89, + 239, 89, 89, 235, 247, 89, 241, 249, 240, 89, + 89, 89, 89, 242, 243, 89, 248, 89, 89, 252, + 89, 251, 294, 89, 89, 291, 89, 89, 253, 89, + 250, 264, 256, 255, 254, 260, 263, 262, 89, 261, + 89, 267, 89, 89, 89, 89, 265, 89, 266, 273, - 279, 274, 87, 268, 276, 275, 272, 278, 54, 54, - 54, 54, 54, 57, 57, 57, 57, 57, 61, 61, - 61, 61, 61, 72, 72, 72, 72, 72, 86, 86, - 86, 94, 94, 124, 124, 124, 124, 124, 130, 130, - 130, 130, 130, 133, 133, 133, 133, 133, 135, 135, - 135, 135, 135, 139, 87, 139, 139, 139, 172, 172, - 172, 172, 172, 175, 175, 175, 175, 175, 269, 87, - 265, 87, 260, 87, 254, 253, 87, 87, 247, 246, - 245, 87, 87, 87, 87, 237, 236, 235, 87, 87, - 87, 87, 87, 223, 222, 221, 87, 87, 87, 87, + 89, 271, 89, 89, 274, 89, 272, 279, 270, 275, + 89, 89, 89, 89, 89, 276, 283, 281, 286, 89, + 285, 280, 89, 278, 89, 89, 89, 89, 89, 89, + 282, 290, 292, 89, 295, 288, 298, 289, 293, 89, + 287, 89, 89, 284, 297, 55, 55, 55, 55, 55, + 58, 58, 58, 58, 58, 62, 62, 62, 62, 62, + 73, 73, 73, 73, 73, 88, 88, 88, 96, 96, + 126, 126, 126, 126, 126, 132, 132, 132, 132, 132, + 135, 135, 135, 135, 135, 137, 137, 137, 137, 137, + 142, 89, 142, 142, 142, 175, 175, 175, 175, 175, - 87, 87, 87, 87, 204, 203, 202, 87, 171, 170, - 169, 87, 87, 87, 144, 143, 129, 128, 127, 123, - 122, 95, 87, 91, 88, 79, 74, 67, 60, 280, - 7, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280 + 178, 178, 178, 178, 178, 277, 89, 89, 269, 268, + 89, 89, 259, 258, 257, 89, 89, 89, 89, 246, + 245, 244, 89, 89, 89, 89, 229, 228, 227, 89, + 89, 89, 89, 89, 89, 89, 209, 208, 207, 206, + 89, 181, 174, 173, 172, 89, 89, 89, 147, 146, + 141, 131, 130, 129, 125, 124, 97, 89, 93, 90, + 75, 68, 61, 299, 7, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299 } ; -static const flex_int16_t yy_chk[587] = +static const flex_int16_t yy_chk[622] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 4, 5, 6, 12, - 5, 6, 13, 96, 3, 4, 16, 20, 15, 36, - 13, 15, 15, 41, 22, 96, 20, 41, 24, 13, - 12, 22, 35, 16, 24, 15, 25, 36, 25, 24, - 28, 28, 30, 30, 24, 37, 25, 38, 35, 37, + 1, 1, 1, 1, 1, 1, 3, 4, 5, 6, + 12, 5, 6, 16, 13, 3, 4, 15, 20, 22, + 15, 15, 13, 23, 28, 28, 22, 20, 35, 24, + 16, 12, 13, 36, 15, 24, 25, 311, 25, 37, + 24, 30, 30, 37, 35, 24, 25, 38, 39, 40, - 39, 42, 51, 40, 44, 38, 37, 40, 61, 48, - 42, 43, 37, 47, 39, 45, 39, 42, 46, 43, - 40, 44, 68, 45, 47, 48, 46, 70, 49, 61, - 46, 47, 49, 51, 63, 72, 63, 79, 84, 49, - 73, 46, 98, 68, 70, 97, 73, 102, 85, 86, - 85, 100, 72, 97, 79, 84, 98, 63, 85, 86, - 99, 98, 101, 73, 104, 105, 102, 100, 103, 106, - 109, 101, 99, 110, 111, 103, 112, 113, 104, 114, - 116, 117, 192, 105, 106, 115, 118, 119, 117, 124, - 112, 114, 109, 110, 111, 125, 130, 115, 118, 119, + 37, 23, 36, 40, 41, 38, 37, 43, 41, 42, + 44, 45, 39, 46, 39, 43, 40, 52, 42, 49, + 47, 46, 48, 71, 62, 42, 69, 44, 47, 64, + 45, 64, 50, 48, 73, 49, 50, 80, 86, 105, + 71, 48, 74, 50, 47, 62, 105, 69, 74, 52, + 88, 73, 64, 99, 80, 86, 87, 98, 87, 100, + 88, 99, 101, 103, 102, 74, 87, 104, 106, 98, + 107, 108, 103, 100, 101, 111, 112, 113, 114, 100, + 102, 115, 106, 118, 116, 119, 108, 104, 117, 107, + 120, 121, 119, 126, 113, 115, 116, 112, 111, 114, - 192, 116, 113, 115, 126, 132, 126, 132, 133, 134, - 124, 145, 135, 136, 137, 134, 125, 130, 140, 146, - 137, 150, 147, 146, 149, 133, 145, 126, 132, 135, - 136, 148, 134, 153, 152, 140, 147, 137, 149, 148, - 151, 150, 152, 154, 151, 155, 156, 157, 158, 159, - 153, 161, 160, 155, 156, 157, 162, 164, 163, 161, - 158, 160, 154, 165, 166, 164, 167, 168, 172, 173, - 159, 165, 166, 174, 175, 174, 162, 163, 176, 177, - 179, 168, 184, 186, 187, 177, 167, 182, 183, 172, - 173, 175, 187, 179, 182, 176, 174, 188, 190, 186, + 117, 127, 120, 121, 128, 118, 128, 117, 132, 134, + 136, 134, 150, 135, 126, 139, 136, 137, 138, 143, + 151, 139, 127, 153, 148, 298, 150, 128, 151, 132, + 135, 152, 134, 136, 137, 138, 143, 149, 139, 148, + 155, 149, 154, 156, 153, 152, 154, 157, 155, 158, + 159, 160, 161, 162, 163, 166, 164, 158, 159, 160, + 156, 165, 162, 167, 161, 164, 168, 157, 170, 169, + 171, 167, 175, 176, 168, 166, 163, 169, 177, 178, + 177, 179, 165, 186, 171, 180, 183, 188, 187, 170, + 186, 180, 294, 175, 176, 190, 178, 191, 179, 183, - 183, 188, 177, 184, 191, 195, 196, 199, 200, 201, - 197, 195, 190, 191, 197, 206, 199, 201, 207, 208, - 213, 211, 214, 217, 225, 215, 196, 211, 200, 216, - 217, 218, 226, 208, 207, 206, 215, 219, 214, 224, - 216, 231, 227, 218, 213, 225, 233, 234, 238, 219, - 224, 251, 226, 227, 244, 239, 242, 243, 251, 231, - 292, 234, 233, 239, 242, 243, 238, 248, 244, 250, - 252, 256, 255, 250, 258, 248, 255, 259, 256, 252, - 261, 259, 263, 264, 267, 252, 263, 261, 268, 270, - 271, 276, 258, 278, 268, 279, 273, 270, 275, 267, + 187, 177, 192, 194, 195, 191, 192, 196, 180, 188, + 196, 190, 197, 195, 199, 200, 203, 194, 201, 204, + 199, 205, 201, 210, 211, 203, 212, 216, 218, 205, + 213, 197, 220, 216, 293, 232, 200, 230, 219, 221, + 204, 210, 212, 219, 213, 211, 219, 222, 220, 223, + 221, 224, 225, 218, 230, 231, 223, 232, 222, 233, + 234, 236, 237, 224, 225, 240, 231, 242, 243, 236, + 248, 234, 291, 247, 253, 288, 252, 256, 237, 249, + 233, 253, 243, 242, 240, 247, 252, 249, 254, 248, + 255, 256, 260, 261, 263, 265, 254, 266, 255, 265, - 278, 271, 274, 264, 273, 272, 269, 276, 281, 281, - 281, 281, 281, 282, 282, 282, 282, 282, 283, 283, - 283, 283, 283, 284, 284, 284, 284, 284, 285, 285, - 285, 286, 286, 287, 287, 287, 287, 287, 288, 288, - 288, 288, 288, 289, 289, 289, 289, 289, 290, 290, - 290, 290, 290, 291, 266, 291, 291, 291, 293, 293, - 293, 293, 293, 294, 294, 294, 294, 294, 265, 262, - 260, 257, 254, 249, 247, 245, 241, 240, 237, 236, - 235, 232, 230, 229, 228, 223, 222, 221, 220, 212, - 210, 209, 205, 204, 203, 202, 198, 194, 193, 189, + 267, 261, 270, 271, 266, 272, 263, 271, 260, 267, + 273, 275, 276, 279, 282, 267, 276, 273, 282, 283, + 279, 272, 286, 270, 289, 287, 292, 290, 295, 297, + 275, 287, 289, 285, 292, 284, 297, 286, 290, 281, + 283, 280, 278, 277, 295, 300, 300, 300, 300, 300, + 301, 301, 301, 301, 301, 302, 302, 302, 302, 302, + 303, 303, 303, 303, 303, 304, 304, 304, 305, 305, + 306, 306, 306, 306, 306, 307, 307, 307, 307, 307, + 308, 308, 308, 308, 308, 309, 309, 309, 309, 309, + 310, 274, 310, 310, 310, 312, 312, 312, 312, 312, - 185, 181, 180, 178, 171, 170, 169, 142, 129, 128, - 127, 108, 107, 94, 93, 89, 66, 65, 64, 59, - 56, 34, 31, 29, 26, 23, 19, 14, 11, 7, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280 + 313, 313, 313, 313, 313, 269, 264, 262, 259, 257, + 251, 250, 246, 245, 244, 241, 239, 238, 235, 229, + 228, 227, 226, 217, 215, 214, 208, 207, 206, 202, + 198, 193, 189, 185, 184, 182, 181, 174, 173, 172, + 145, 141, 131, 130, 129, 110, 109, 96, 95, 91, + 81, 67, 66, 65, 60, 57, 34, 31, 29, 26, + 19, 14, 11, 7, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299 } ; /* The intent behind this definition is that it'll catch @@ -866,9 +883,9 @@ static const flex_int16_t yy_chk[587] = #line 23 "lexer.lpp" #define YY_USER_ACTION loc.columns(yyleng); -#line 869 "lexer.cpp" +#line 886 "lexer.cpp" -#line 871 "lexer.cpp" +#line 888 "lexer.cpp" #define INITIAL 0 #define COMMENT_BLOCK_STATE 1 @@ -1136,7 +1153,7 @@ YY_DECL loc.step(); -#line 1139 "lexer.cpp" +#line 1156 "lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1163,13 +1180,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 281 ) + if ( yy_current_state >= 300 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 280 ); + while ( yy_current_state != 299 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -1250,438 +1267,453 @@ YY_RULE_SETUP case 12: YY_RULE_SETUP #line 59 "lexer.lpp" -{ return iw5::parser::make_INCLUDE(loc); } +{ return iw5::parser::make_BREAKPOINT(loc); } YY_BREAK case 13: YY_RULE_SETUP #line 60 "lexer.lpp" -{ return iw5::parser::make_USINGTREE(loc); } +{ return iw5::parser::make_PROFBEGIN(loc); } YY_BREAK case 14: YY_RULE_SETUP #line 61 "lexer.lpp" -{ return iw5::parser::make_ANIMTREE(loc); } +{ return iw5::parser::make_PROFEND(loc); } YY_BREAK case 15: YY_RULE_SETUP #line 62 "lexer.lpp" -{ return iw5::parser::make_ENDON(loc); } +{ return iw5::parser::make_INCLUDE(loc); } YY_BREAK case 16: YY_RULE_SETUP #line 63 "lexer.lpp" -{ return iw5::parser::make_NOTIFY(loc); } +{ return iw5::parser::make_USINGTREE(loc); } YY_BREAK case 17: YY_RULE_SETUP #line 64 "lexer.lpp" -{ return iw5::parser::make_WAIT(loc); } +{ return iw5::parser::make_ANIMTREE(loc); } YY_BREAK case 18: YY_RULE_SETUP #line 65 "lexer.lpp" -{ return iw5::parser::make_WAITTILL(loc); } +{ return iw5::parser::make_ENDON(loc); } YY_BREAK case 19: YY_RULE_SETUP #line 66 "lexer.lpp" -{ return iw5::parser::make_WAITTILLMATCH(loc); } +{ return iw5::parser::make_NOTIFY(loc); } YY_BREAK case 20: YY_RULE_SETUP #line 67 "lexer.lpp" -{ return iw5::parser::make_WAITTILLFRAMEEND(loc); } +{ return iw5::parser::make_WAIT(loc); } YY_BREAK case 21: YY_RULE_SETUP #line 68 "lexer.lpp" -{ return iw5::parser::make_IF(loc); } +{ return iw5::parser::make_WAITTILL(loc); } YY_BREAK case 22: YY_RULE_SETUP #line 69 "lexer.lpp" -{ return iw5::parser::make_ELSE(loc); } +{ return iw5::parser::make_WAITTILLMATCH(loc); } YY_BREAK case 23: YY_RULE_SETUP #line 70 "lexer.lpp" -{ return iw5::parser::make_WHILE(loc); } +{ return iw5::parser::make_WAITTILLFRAMEEND(loc); } YY_BREAK case 24: YY_RULE_SETUP #line 71 "lexer.lpp" -{ return iw5::parser::make_FOR(loc); } +{ return iw5::parser::make_IF(loc); } YY_BREAK case 25: YY_RULE_SETUP #line 72 "lexer.lpp" -{ return iw5::parser::make_FOREACH(loc); } +{ return iw5::parser::make_ELSE(loc); } YY_BREAK case 26: YY_RULE_SETUP #line 73 "lexer.lpp" -{ return iw5::parser::make_IN(loc); } +{ return iw5::parser::make_WHILE(loc); } YY_BREAK case 27: YY_RULE_SETUP #line 74 "lexer.lpp" -{ return iw5::parser::make_SWITCH(loc); } +{ return iw5::parser::make_FOR(loc); } YY_BREAK case 28: YY_RULE_SETUP #line 75 "lexer.lpp" -{ return iw5::parser::make_CASE(loc); } +{ return iw5::parser::make_FOREACH(loc); } YY_BREAK case 29: YY_RULE_SETUP #line 76 "lexer.lpp" -{ return iw5::parser::make_DEFAULT(loc); } +{ return iw5::parser::make_IN(loc); } YY_BREAK case 30: YY_RULE_SETUP #line 77 "lexer.lpp" -{ return iw5::parser::make_BREAK(loc); } +{ return iw5::parser::make_SWITCH(loc); } YY_BREAK case 31: YY_RULE_SETUP #line 78 "lexer.lpp" -{ return iw5::parser::make_CONTINUE(loc); } +{ return iw5::parser::make_CASE(loc); } YY_BREAK case 32: YY_RULE_SETUP #line 79 "lexer.lpp" -{ return iw5::parser::make_RETURN(loc); } +{ return iw5::parser::make_DEFAULT(loc); } YY_BREAK case 33: YY_RULE_SETUP #line 80 "lexer.lpp" -{ return iw5::parser::make_THREAD(loc); } +{ return iw5::parser::make_BREAK(loc); } YY_BREAK case 34: YY_RULE_SETUP #line 81 "lexer.lpp" -{ return iw5::parser::make_CHILDTHREAD(loc); } +{ return iw5::parser::make_CONTINUE(loc); } YY_BREAK case 35: YY_RULE_SETUP #line 82 "lexer.lpp" -{ return iw5::parser::make_THISTHREAD(loc); } +{ return iw5::parser::make_RETURN(loc); } YY_BREAK case 36: YY_RULE_SETUP #line 83 "lexer.lpp" -{ return iw5::parser::make_CALL(loc); } +{ return iw5::parser::make_THREAD(loc); } YY_BREAK case 37: YY_RULE_SETUP #line 84 "lexer.lpp" -{ return iw5::parser::make_TRUE(loc); } +{ return iw5::parser::make_CHILDTHREAD(loc); } YY_BREAK case 38: YY_RULE_SETUP #line 85 "lexer.lpp" -{ return iw5::parser::make_FALSE(loc); } +{ return iw5::parser::make_THISTHREAD(loc); } YY_BREAK case 39: YY_RULE_SETUP #line 86 "lexer.lpp" -{ return iw5::parser::make_UNDEFINED(loc); } +{ return iw5::parser::make_CALL(loc); } YY_BREAK case 40: YY_RULE_SETUP #line 87 "lexer.lpp" -{ return iw5::parser::make_SIZE(loc); } +{ return iw5::parser::make_TRUE(loc); } YY_BREAK case 41: YY_RULE_SETUP #line 88 "lexer.lpp" -{ return iw5::parser::make_GAME(loc); } +{ return iw5::parser::make_FALSE(loc); } YY_BREAK case 42: YY_RULE_SETUP #line 89 "lexer.lpp" -{ return iw5::parser::make_SELF(loc); } +{ return iw5::parser::make_UNDEFINED(loc); } YY_BREAK case 43: YY_RULE_SETUP #line 90 "lexer.lpp" -{ return iw5::parser::make_ANIM(loc); } +{ return iw5::parser::make_SIZE(loc); } YY_BREAK case 44: YY_RULE_SETUP #line 91 "lexer.lpp" -{ return iw5::parser::make_LEVEL(loc); } +{ return iw5::parser::make_GAME(loc); } YY_BREAK case 45: YY_RULE_SETUP #line 92 "lexer.lpp" -{ return iw5::parser::make_LPAREN(loc); } +{ return iw5::parser::make_SELF(loc); } YY_BREAK case 46: YY_RULE_SETUP #line 93 "lexer.lpp" -{ return iw5::parser::make_RPAREN(loc); } +{ return iw5::parser::make_ANIM(loc); } YY_BREAK case 47: YY_RULE_SETUP #line 94 "lexer.lpp" -{ return iw5::parser::make_LBRACE(loc); } +{ return iw5::parser::make_LEVEL(loc); } YY_BREAK case 48: YY_RULE_SETUP #line 95 "lexer.lpp" -{ return iw5::parser::make_RBRACE(loc); } +{ return iw5::parser::make_LPAREN(loc); } YY_BREAK case 49: YY_RULE_SETUP #line 96 "lexer.lpp" -{ return iw5::parser::make_LBRACKET(loc); } +{ return iw5::parser::make_RPAREN(loc); } YY_BREAK case 50: YY_RULE_SETUP #line 97 "lexer.lpp" -{ return iw5::parser::make_RBRACKET(loc); } +{ return iw5::parser::make_LBRACE(loc); } YY_BREAK case 51: YY_RULE_SETUP #line 98 "lexer.lpp" -{ return iw5::parser::make_COMMA(loc); } +{ return iw5::parser::make_RBRACE(loc); } YY_BREAK case 52: YY_RULE_SETUP #line 99 "lexer.lpp" -{ return iw5::parser::make_DOT(loc); } +{ return iw5::parser::make_LBRACKET(loc); } YY_BREAK case 53: YY_RULE_SETUP #line 100 "lexer.lpp" -{ return iw5::parser::make_DOUBLECOLON(loc); } +{ return iw5::parser::make_RBRACKET(loc); } YY_BREAK case 54: YY_RULE_SETUP #line 101 "lexer.lpp" -{ return iw5::parser::make_COLON(loc); } +{ return iw5::parser::make_COMMA(loc); } YY_BREAK case 55: YY_RULE_SETUP #line 102 "lexer.lpp" -{ return iw5::parser::make_SEMICOLON(loc); } +{ return iw5::parser::make_DOT(loc); } YY_BREAK case 56: YY_RULE_SETUP #line 103 "lexer.lpp" -{ return iw5::parser::make_INCREMENT(loc); } +{ return iw5::parser::make_DOUBLECOLON(loc); } YY_BREAK case 57: YY_RULE_SETUP #line 104 "lexer.lpp" -{ return iw5::parser::make_DECREMENT(loc); } +{ return iw5::parser::make_COLON(loc); } YY_BREAK case 58: YY_RULE_SETUP #line 105 "lexer.lpp" -{ return iw5::parser::make_ASSIGN_LSHIFT(loc); } +{ return iw5::parser::make_SEMICOLON(loc); } YY_BREAK case 59: YY_RULE_SETUP #line 106 "lexer.lpp" -{ return iw5::parser::make_ASSIGN_RSHIFT(loc); } +{ return iw5::parser::make_INCREMENT(loc); } YY_BREAK case 60: YY_RULE_SETUP #line 107 "lexer.lpp" -{ return iw5::parser::make_LSHIFT(loc); } +{ return iw5::parser::make_DECREMENT(loc); } YY_BREAK case 61: YY_RULE_SETUP #line 108 "lexer.lpp" -{ return iw5::parser::make_RSHIFT(loc); } +{ return iw5::parser::make_ASSIGN_LSHIFT(loc); } YY_BREAK case 62: YY_RULE_SETUP #line 109 "lexer.lpp" -{ return iw5::parser::make_OR(loc); } +{ return iw5::parser::make_ASSIGN_RSHIFT(loc); } YY_BREAK case 63: YY_RULE_SETUP #line 110 "lexer.lpp" -{ return iw5::parser::make_AND(loc); } +{ return iw5::parser::make_LSHIFT(loc); } YY_BREAK case 64: YY_RULE_SETUP #line 111 "lexer.lpp" -{ return iw5::parser::make_EQUALITY(loc); } +{ return iw5::parser::make_RSHIFT(loc); } YY_BREAK case 65: YY_RULE_SETUP #line 112 "lexer.lpp" -{ return iw5::parser::make_INEQUALITY(loc); } +{ return iw5::parser::make_OR(loc); } YY_BREAK case 66: YY_RULE_SETUP #line 113 "lexer.lpp" -{ return iw5::parser::make_LESS_EQUAL(loc); } +{ return iw5::parser::make_AND(loc); } YY_BREAK case 67: YY_RULE_SETUP #line 114 "lexer.lpp" -{ return iw5::parser::make_GREATER_EQUAL(loc); } +{ return iw5::parser::make_EQUALITY(loc); } YY_BREAK case 68: YY_RULE_SETUP #line 115 "lexer.lpp" -{ return iw5::parser::make_LESS(loc); } +{ return iw5::parser::make_INEQUALITY(loc); } YY_BREAK case 69: YY_RULE_SETUP #line 116 "lexer.lpp" -{ return iw5::parser::make_GREATER(loc); } +{ return iw5::parser::make_LESS_EQUAL(loc); } YY_BREAK case 70: YY_RULE_SETUP #line 117 "lexer.lpp" -{ return iw5::parser::make_ASSIGN_ADD(loc); } +{ return iw5::parser::make_GREATER_EQUAL(loc); } YY_BREAK case 71: YY_RULE_SETUP #line 118 "lexer.lpp" -{ return iw5::parser::make_ASSIGN_SUB(loc); } +{ return iw5::parser::make_LESS(loc); } YY_BREAK case 72: YY_RULE_SETUP #line 119 "lexer.lpp" -{ return iw5::parser::make_ASSIGN_MULT(loc); } +{ return iw5::parser::make_GREATER(loc); } YY_BREAK case 73: YY_RULE_SETUP #line 120 "lexer.lpp" -{ return iw5::parser::make_ASSIGN_DIV(loc); } +{ return iw5::parser::make_ASSIGN_ADD(loc); } YY_BREAK case 74: YY_RULE_SETUP #line 121 "lexer.lpp" -{ return iw5::parser::make_ASSIGN_MOD(loc); } +{ return iw5::parser::make_ASSIGN_SUB(loc); } YY_BREAK case 75: YY_RULE_SETUP #line 122 "lexer.lpp" -{ return iw5::parser::make_ASSIGN_BITWISE_OR(loc); } +{ return iw5::parser::make_ASSIGN_MULT(loc); } YY_BREAK case 76: YY_RULE_SETUP #line 123 "lexer.lpp" -{ return iw5::parser::make_ASSIGN_BITWISE_AND(loc); } +{ return iw5::parser::make_ASSIGN_DIV(loc); } YY_BREAK case 77: YY_RULE_SETUP #line 124 "lexer.lpp" -{ return iw5::parser::make_ASSIGN_BITWISE_EXOR(loc); } +{ return iw5::parser::make_ASSIGN_MOD(loc); } YY_BREAK case 78: YY_RULE_SETUP #line 125 "lexer.lpp" -{ return iw5::parser::make_ASSIGN(loc); } +{ return iw5::parser::make_ASSIGN_BITWISE_OR(loc); } YY_BREAK case 79: YY_RULE_SETUP #line 126 "lexer.lpp" -{ return iw5::parser::make_ADD(loc); } +{ return iw5::parser::make_ASSIGN_BITWISE_AND(loc); } YY_BREAK case 80: YY_RULE_SETUP #line 127 "lexer.lpp" -{ return iw5::parser::make_SUB(loc); } +{ return iw5::parser::make_ASSIGN_BITWISE_EXOR(loc); } YY_BREAK case 81: YY_RULE_SETUP #line 128 "lexer.lpp" -{ return iw5::parser::make_MULT(loc); } +{ return iw5::parser::make_ASSIGN(loc); } YY_BREAK case 82: YY_RULE_SETUP #line 129 "lexer.lpp" -{ return iw5::parser::make_DIV(loc); } +{ return iw5::parser::make_ADD(loc); } YY_BREAK case 83: YY_RULE_SETUP #line 130 "lexer.lpp" -{ return iw5::parser::make_MOD(loc); } +{ return iw5::parser::make_SUB(loc); } YY_BREAK case 84: YY_RULE_SETUP #line 131 "lexer.lpp" -{ return iw5::parser::make_NOT(loc); } +{ return iw5::parser::make_MULT(loc); } YY_BREAK case 85: YY_RULE_SETUP #line 132 "lexer.lpp" -{ return iw5::parser::make_COMPLEMENT(loc); } +{ return iw5::parser::make_DIV(loc); } YY_BREAK case 86: YY_RULE_SETUP #line 133 "lexer.lpp" -{ return iw5::parser::make_BITWISE_OR(loc); } +{ return iw5::parser::make_MOD(loc); } YY_BREAK case 87: YY_RULE_SETUP #line 134 "lexer.lpp" -{ return iw5::parser::make_BITWISE_AND(loc); } +{ return iw5::parser::make_NOT(loc); } YY_BREAK case 88: YY_RULE_SETUP #line 135 "lexer.lpp" -{ return iw5::parser::make_BITWISE_EXOR(loc); } +{ return iw5::parser::make_COMPLEMENT(loc); } YY_BREAK case 89: YY_RULE_SETUP #line 136 "lexer.lpp" -{ return iw5::parser::make_FILE(utils::string::fordslash(yytext), loc); } +{ return iw5::parser::make_BITWISE_OR(loc); } YY_BREAK case 90: YY_RULE_SETUP #line 137 "lexer.lpp" -{ return iw5::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); } +{ return iw5::parser::make_BITWISE_AND(loc); } YY_BREAK case 91: -/* rule 91 can match eol */ YY_RULE_SETUP #line 138 "lexer.lpp" -{ return iw5::parser::make_ISTRING(std::string(yytext).substr(1), loc); } +{ return iw5::parser::make_BITWISE_EXOR(loc); } YY_BREAK case 92: -/* rule 92 can match eol */ YY_RULE_SETUP #line 139 "lexer.lpp" -{ return iw5::parser::make_STRING(std::string(yytext), loc); } +{ return iw5::parser::make_FILE(utils::string::fordslash(yytext), loc); } YY_BREAK case 93: YY_RULE_SETUP #line 140 "lexer.lpp" -{ return iw5::parser::make_FLOAT(std::string(yytext), loc); } +{ return iw5::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); } YY_BREAK case 94: +/* rule 94 can match eol */ YY_RULE_SETUP #line 141 "lexer.lpp" +{ return iw5::parser::make_ISTRING(std::string(yytext).substr(1), loc); } + YY_BREAK +case 95: +/* rule 95 can match eol */ +YY_RULE_SETUP +#line 142 "lexer.lpp" +{ return iw5::parser::make_STRING(std::string(yytext), loc); } + YY_BREAK +case 96: +YY_RULE_SETUP +#line 143 "lexer.lpp" +{ return iw5::parser::make_FLOAT(std::string(yytext), loc); } + YY_BREAK +case 97: +YY_RULE_SETUP +#line 144 "lexer.lpp" { return iw5::parser::make_INTEGER(std::string(yytext), loc); } YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT_BLOCK_STATE): case YY_STATE_EOF(DEVELOPER_BLOCK_STATE): -#line 142 "lexer.lpp" +#line 145 "lexer.lpp" { return iw5::parser::make_IW5EOF(loc); } YY_BREAK -case 95: -/* rule 95 can match eol */ +case 98: +/* rule 98 can match eol */ YY_RULE_SETUP -#line 143 "lexer.lpp" +#line 146 "lexer.lpp" { throw iw5::parser::syntax_error(loc, "bad token: '" + std::string(yytext) + "'"); } YY_BREAK -case 96: +case 99: YY_RULE_SETUP -#line 145 "lexer.lpp" +#line 148 "lexer.lpp" ECHO; YY_BREAK -#line 1684 "lexer.cpp" +#line 1716 "lexer.cpp" case YY_END_OF_BUFFER: { @@ -1979,7 +2011,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 281 ) + if ( yy_current_state >= 300 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2008,11 +2040,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 281 ) + if ( yy_current_state >= 300 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 280); + yy_is_jam = (yy_current_state == 299); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -2811,6 +2843,6 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 145 "lexer.lpp" +#line 148 "lexer.lpp" diff --git a/src/iw5/xsk/lexer.hpp b/src/iw5/xsk/lexer.hpp index 8269fee3..e1848bc6 100644 --- a/src/iw5/xsk/lexer.hpp +++ b/src/iw5/xsk/lexer.hpp @@ -700,7 +700,7 @@ extern int yylex (yyscan_t yyscanner); #undef yyTABLES_NAME #endif -#line 145 "lexer.lpp" +#line 148 "lexer.lpp" #line 706 "lexer.hpp" diff --git a/src/iw5/xsk/parser.cpp b/src/iw5/xsk/parser.cpp index 113cd80a..a4c8ba85 100644 --- a/src/iw5/xsk/parser.cpp +++ b/src/iw5/xsk/parser.cpp @@ -345,6 +345,10 @@ namespace xsk { namespace gsc { namespace iw5 { value.YY_MOVE_OR_COPY< stmt_break_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.YY_MOVE_OR_COPY< stmt_breakpoint_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.YY_MOVE_OR_COPY< stmt_call_ptr > (YY_MOVE (that.value)); break; @@ -390,6 +394,14 @@ namespace xsk { namespace gsc { namespace iw5 { value.YY_MOVE_OR_COPY< stmt_notify_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.YY_MOVE_OR_COPY< stmt_prof_begin_ptr > (YY_MOVE (that.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.YY_MOVE_OR_COPY< stmt_prof_end_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.YY_MOVE_OR_COPY< stmt_ptr > (YY_MOVE (that.value)); @@ -595,6 +607,10 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< stmt_break_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.move< stmt_breakpoint_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.move< stmt_call_ptr > (YY_MOVE (that.value)); break; @@ -640,6 +656,14 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< stmt_notify_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.move< stmt_prof_begin_ptr > (YY_MOVE (that.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.move< stmt_prof_end_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.move< stmt_ptr > (YY_MOVE (that.value)); @@ -845,6 +869,10 @@ namespace xsk { namespace gsc { namespace iw5 { value.copy< stmt_break_ptr > (that.value); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.copy< stmt_breakpoint_ptr > (that.value); + break; + case symbol_kind::S_stmt_call: // stmt_call value.copy< stmt_call_ptr > (that.value); break; @@ -890,6 +918,14 @@ namespace xsk { namespace gsc { namespace iw5 { value.copy< stmt_notify_ptr > (that.value); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.copy< stmt_prof_begin_ptr > (that.value); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.copy< stmt_prof_end_ptr > (that.value); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.copy< stmt_ptr > (that.value); @@ -1094,6 +1130,10 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< stmt_break_ptr > (that.value); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.move< stmt_breakpoint_ptr > (that.value); + break; + case symbol_kind::S_stmt_call: // stmt_call value.move< stmt_call_ptr > (that.value); break; @@ -1139,6 +1179,14 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< stmt_notify_ptr > (that.value); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.move< stmt_prof_begin_ptr > (that.value); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.move< stmt_prof_end_ptr > (that.value); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.move< stmt_ptr > (that.value); @@ -1598,6 +1646,10 @@ namespace xsk { namespace gsc { namespace iw5 { yylhs.value.emplace< stmt_break_ptr > (); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + yylhs.value.emplace< stmt_breakpoint_ptr > (); + break; + case symbol_kind::S_stmt_call: // stmt_call yylhs.value.emplace< stmt_call_ptr > (); break; @@ -1643,6 +1695,14 @@ namespace xsk { namespace gsc { namespace iw5 { yylhs.value.emplace< stmt_notify_ptr > (); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + yylhs.value.emplace< stmt_prof_begin_ptr > (); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + yylhs.value.emplace< stmt_prof_end_ptr > (); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt yylhs.value.emplace< stmt_ptr > (); @@ -1725,1159 +1785,1195 @@ namespace xsk { namespace gsc { namespace iw5 { switch (yyn) { case 2: // root: program -#line 231 "parser.ypp" - { ast = std::move(yystack_[0].value.as < program_ptr > ()); } -#line 1731 "parser.cpp" - break; - - case 3: // root: %empty -#line 232 "parser.ypp" - { ast = std::make_unique(yylhs.location); } -#line 1737 "parser.cpp" - break; - - case 4: // program: program include #line 237 "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 1743 "parser.cpp" - break; - - case 5: // program: program define -#line 239 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } -#line 1749 "parser.cpp" - break; - - case 6: // program: include -#line 241 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } -#line 1755 "parser.cpp" - break; - - case 7: // program: define -#line 243 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } -#line 1761 "parser.cpp" - break; - - case 8: // include: "#include" file ";" -#line 248 "parser.ypp" - { yylhs.value.as < include_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < file_ptr > ())); } -#line 1767 "parser.cpp" - break; - - case 9: // define: usingtree -#line 252 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_usingtree = std::move(yystack_[0].value.as < usingtree_ptr > ()); } -#line 1773 "parser.cpp" - break; - - case 10: // define: constant -#line 253 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_constant = std::move(yystack_[0].value.as < constant_ptr > ()); } -#line 1779 "parser.cpp" - break; - - case 11: // define: thread -#line 254 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_thread = std::move(yystack_[0].value.as < thread_ptr > ()); } -#line 1785 "parser.cpp" - break; - - case 12: // usingtree: "#using_animtree" "(" string ")" ";" -#line 259 "parser.ypp" - { yylhs.value.as < usingtree_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < string_ptr > ())); } + { ast = std::move(yystack_[0].value.as < program_ptr > ()); } #line 1791 "parser.cpp" break; - case 13: // constant: name "=" expr ";" -#line 264 "parser.ypp" - { yylhs.value.as < constant_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 3: // root: %empty +#line 238 "parser.ypp" + { ast = std::make_unique(yylhs.location); } #line 1797 "parser.cpp" break; - case 14: // thread: name "(" parameters ")" stmt_block -#line 269 "parser.ypp" - { yylhs.value.as < thread_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < name_ptr > ()), std::move(yystack_[2].value.as < parameters_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } + case 4: // program: program include +#line 243 "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 1803 "parser.cpp" break; - case 15: // parameters: parameters "," name -#line 274 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::move(yystack_[2].value.as < parameters_ptr > ()); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } + case 5: // program: program define +#line 245 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1809 "parser.cpp" break; - case 16: // parameters: name -#line 276 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } + case 6: // program: include +#line 247 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } #line 1815 "parser.cpp" break; - case 17: // parameters: %empty -#line 278 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); } + case 7: // program: define +#line 249 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1821 "parser.cpp" break; - case 18: // stmt: stmt_block -#line 282 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_list = std::move(yystack_[0].value.as < stmt_list_ptr > ()); } + case 8: // include: "#include" file ";" +#line 254 "parser.ypp" + { yylhs.value.as < include_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < file_ptr > ())); } #line 1827 "parser.cpp" break; - case 19: // stmt: stmt_call -#line 283 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_call = std::move(yystack_[0].value.as < stmt_call_ptr > ()); } + case 9: // define: usingtree +#line 258 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_usingtree = std::move(yystack_[0].value.as < usingtree_ptr > ()); } #line 1833 "parser.cpp" break; - case 20: // stmt: stmt_assign -#line 284 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_assign = std::move(yystack_[0].value.as < stmt_assign_ptr > ()); } + case 10: // define: constant +#line 259 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_constant = std::move(yystack_[0].value.as < constant_ptr > ()); } #line 1839 "parser.cpp" break; - case 21: // stmt: stmt_endon -#line 285 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_endon = std::move(yystack_[0].value.as < stmt_endon_ptr > ()); } + case 11: // define: thread +#line 260 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_thread = std::move(yystack_[0].value.as < thread_ptr > ()); } #line 1845 "parser.cpp" break; - case 22: // stmt: stmt_notify -#line 286 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_notify = std::move(yystack_[0].value.as < stmt_notify_ptr > ()); } + case 12: // usingtree: "#using_animtree" "(" string ")" ";" +#line 265 "parser.ypp" + { yylhs.value.as < usingtree_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < string_ptr > ())); } #line 1851 "parser.cpp" break; - case 23: // stmt: stmt_wait -#line 287 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_wait = std::move(yystack_[0].value.as < stmt_wait_ptr > ()); } + case 13: // constant: name "=" expr ";" +#line 270 "parser.ypp" + { yylhs.value.as < constant_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } #line 1857 "parser.cpp" break; - case 24: // stmt: stmt_waittill -#line 288 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill_ptr > ()); } + case 14: // thread: name "(" parameters ")" stmt_block +#line 275 "parser.ypp" + { yylhs.value.as < thread_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < name_ptr > ()), std::move(yystack_[2].value.as < parameters_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } #line 1863 "parser.cpp" break; - case 25: // stmt: stmt_waittillmatch -#line 289 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch_ptr > ()); } + case 15: // parameters: parameters "," name +#line 280 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::move(yystack_[2].value.as < parameters_ptr > ()); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } #line 1869 "parser.cpp" break; - case 26: // stmt: stmt_waittillframeend -#line 290 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend_ptr > ()); } + case 16: // parameters: name +#line 282 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } #line 1875 "parser.cpp" break; - case 27: // stmt: stmt_if -#line 291 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_if = std::move(yystack_[0].value.as < stmt_if_ptr > ()); } + case 17: // parameters: %empty +#line 284 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); } #line 1881 "parser.cpp" break; - case 28: // stmt: stmt_ifelse -#line 292 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse_ptr > ()); } + case 18: // stmt: stmt_block +#line 288 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_list = std::move(yystack_[0].value.as < stmt_list_ptr > ()); } #line 1887 "parser.cpp" break; - case 29: // stmt: stmt_while -#line 293 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_while = std::move(yystack_[0].value.as < stmt_while_ptr > ()); } + case 19: // stmt: stmt_call +#line 289 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_call = std::move(yystack_[0].value.as < stmt_call_ptr > ()); } #line 1893 "parser.cpp" break; - case 30: // stmt: stmt_for -#line 294 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_for = std::move(yystack_[0].value.as < stmt_for_ptr > ()); } + case 20: // stmt: stmt_assign +#line 290 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_assign = std::move(yystack_[0].value.as < stmt_assign_ptr > ()); } #line 1899 "parser.cpp" break; - case 31: // stmt: stmt_foreach -#line 295 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach_ptr > ()); } + case 21: // stmt: stmt_endon +#line 291 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_endon = std::move(yystack_[0].value.as < stmt_endon_ptr > ()); } #line 1905 "parser.cpp" break; - case 32: // stmt: stmt_switch -#line 296 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_switch = std::move(yystack_[0].value.as < stmt_switch_ptr > ()); } + case 22: // stmt: stmt_notify +#line 292 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_notify = std::move(yystack_[0].value.as < stmt_notify_ptr > ()); } #line 1911 "parser.cpp" break; - case 33: // stmt: stmt_case -#line 297 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_case = std::move(yystack_[0].value.as < stmt_case_ptr > ()); } + case 23: // stmt: stmt_wait +#line 293 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_wait = std::move(yystack_[0].value.as < stmt_wait_ptr > ()); } #line 1917 "parser.cpp" break; - case 34: // stmt: stmt_default -#line 298 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_default = std::move(yystack_[0].value.as < stmt_default_ptr > ()); } + case 24: // stmt: stmt_waittill +#line 294 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill_ptr > ()); } #line 1923 "parser.cpp" break; - case 35: // stmt: stmt_break -#line 299 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_break = std::move(yystack_[0].value.as < stmt_break_ptr > ()); } + case 25: // stmt: stmt_waittillmatch +#line 295 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch_ptr > ()); } #line 1929 "parser.cpp" break; - case 36: // stmt: stmt_continue -#line 300 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_continue = std::move(yystack_[0].value.as < stmt_continue_ptr > ()); } + case 26: // stmt: stmt_waittillframeend +#line 296 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend_ptr > ()); } #line 1935 "parser.cpp" break; - case 37: // stmt: stmt_return -#line 301 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_return = std::move(yystack_[0].value.as < stmt_return_ptr > ()); } + case 27: // stmt: stmt_if +#line 297 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_if = std::move(yystack_[0].value.as < stmt_if_ptr > ()); } #line 1941 "parser.cpp" break; - case 38: // stmt_block: "{" stmt_list "}" -#line 305 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); } + case 28: // stmt: stmt_ifelse +#line 298 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse_ptr > ()); } #line 1947 "parser.cpp" break; - case 39: // stmt_block: "{" "}" -#line 306 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); } + case 29: // stmt: stmt_while +#line 299 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_while = std::move(yystack_[0].value.as < stmt_while_ptr > ()); } #line 1953 "parser.cpp" break; - case 40: // stmt_list: stmt_list stmt -#line 311 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 30: // stmt: stmt_for +#line 300 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_for = std::move(yystack_[0].value.as < stmt_for_ptr > ()); } #line 1959 "parser.cpp" break; - case 41: // stmt_list: stmt -#line 313 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 31: // stmt: stmt_foreach +#line 301 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach_ptr > ()); } #line 1965 "parser.cpp" break; - case 42: // stmt_call: expr_call ";" -#line 318 "parser.ypp" - { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } + case 32: // stmt: stmt_switch +#line 302 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_switch = std::move(yystack_[0].value.as < stmt_switch_ptr > ()); } #line 1971 "parser.cpp" break; - case 43: // stmt_call: expr_call_thread ";" -#line 320 "parser.ypp" - { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } + case 33: // stmt: stmt_case +#line 303 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_case = std::move(yystack_[0].value.as < stmt_case_ptr > ()); } #line 1977 "parser.cpp" break; - case 44: // stmt_assign: expr_assign ";" -#line 325 "parser.ypp" - { yylhs.value.as < stmt_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_assign_ptr > ())); } + case 34: // stmt: stmt_default +#line 304 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_default = std::move(yystack_[0].value.as < stmt_default_ptr > ()); } #line 1983 "parser.cpp" break; - case 45: // stmt_endon: object "endon" "(" expr ")" ";" -#line 330 "parser.ypp" - { yylhs.value.as < stmt_endon_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ())); } + case 35: // stmt: stmt_break +#line 305 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_break = std::move(yystack_[0].value.as < stmt_break_ptr > ()); } #line 1989 "parser.cpp" break; - case 46: // stmt_notify: object "notify" "(" expr "," expr_arguments ")" ";" -#line 335 "parser.ypp" - { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 36: // stmt: stmt_continue +#line 306 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_continue = std::move(yystack_[0].value.as < stmt_continue_ptr > ()); } #line 1995 "parser.cpp" break; - case 47: // stmt_notify: object "notify" "(" expr ")" ";" -#line 337 "parser.ypp" - { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 37: // stmt: stmt_return +#line 307 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_return = std::move(yystack_[0].value.as < stmt_return_ptr > ()); } #line 2001 "parser.cpp" break; - case 48: // stmt_wait: "wait" expr ";" -#line 342 "parser.ypp" - { yylhs.value.as < stmt_wait_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } + case 38: // stmt: stmt_breakpoint +#line 308 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_breakpoint = std::move(yystack_[0].value.as < stmt_breakpoint_ptr > ()); } #line 2007 "parser.cpp" break; - case 49: // stmt_waittill: object "waittill" "(" expr "," expr_arguments ")" ";" -#line 347 "parser.ypp" - { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 39: // stmt: stmt_prof_begin +#line 309 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_prof_begin = std::move(yystack_[0].value.as < stmt_prof_begin_ptr > ()); } #line 2013 "parser.cpp" break; - case 50: // stmt_waittill: object "waittill" "(" expr ")" ";" -#line 349 "parser.ypp" - { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 40: // stmt: stmt_prof_end +#line 310 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_prof_end = std::move(yystack_[0].value.as < stmt_prof_end_ptr > ()); } #line 2019 "parser.cpp" break; - case 51: // stmt_waittillmatch: object "waittillmatch" "(" expr "," expr_arguments ")" ";" -#line 354 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 41: // stmt_block: "{" stmt_list "}" +#line 314 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); } #line 2025 "parser.cpp" break; - case 52: // stmt_waittillmatch: object "waittillmatch" "(" expr ")" ";" -#line 356 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 42: // stmt_block: "{" "}" +#line 315 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); } #line 2031 "parser.cpp" break; - case 53: // stmt_waittillframeend: "waittillframeend" ";" -#line 361 "parser.ypp" - { yylhs.value.as < stmt_waittillframeend_ptr > () = std::make_unique(yylhs.location); } + case 43: // stmt_list: stmt_list stmt +#line 320 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2037 "parser.cpp" break; - case 54: // stmt_if: "if" "(" expr ")" stmt -#line 366 "parser.ypp" - { yylhs.value.as < stmt_if_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 44: // stmt_list: stmt +#line 322 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2043 "parser.cpp" break; - case 55: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 371 "parser.ypp" - { yylhs.value.as < stmt_ifelse_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 45: // stmt_call: expr_call ";" +#line 327 "parser.ypp" + { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } #line 2049 "parser.cpp" break; - case 56: // stmt_while: "while" "(" expr ")" stmt -#line 376 "parser.ypp" - { yylhs.value.as < stmt_while_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 46: // stmt_call: expr_call_thread ";" +#line 329 "parser.ypp" + { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } #line 2055 "parser.cpp" break; - case 57: // stmt_for: "for" "(" for_stmt ";" for_expr ";" for_stmt ")" stmt -#line 381 "parser.ypp" - { yylhs.value.as < stmt_for_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[6].value.as < stmt_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 47: // stmt_assign: expr_assign ";" +#line 334 "parser.ypp" + { yylhs.value.as < stmt_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_assign_ptr > ())); } #line 2061 "parser.cpp" break; - case 58: // stmt_foreach: "foreach" "(" name "in" expr ")" stmt -#line 386 "parser.ypp" - { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 48: // stmt_endon: object "endon" "(" expr ")" ";" +#line 339 "parser.ypp" + { yylhs.value.as < stmt_endon_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ())); } #line 2067 "parser.cpp" break; - case 59: // stmt_foreach: "foreach" "(" name "," name "in" expr ")" stmt -#line 388 "parser.ypp" - { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[6].value.as < name_ptr > ())), expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 49: // stmt_notify: object "notify" "(" expr "," expr_arguments ")" ";" +#line 344 "parser.ypp" + { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2073 "parser.cpp" break; - case 60: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 393 "parser.ypp" - { yylhs.value.as < stmt_switch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } + case 50: // stmt_notify: object "notify" "(" expr ")" ";" +#line 346 "parser.ypp" + { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2079 "parser.cpp" break; - case 61: // stmt_case: "case" integer ":" -#line 398 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } + case 51: // stmt_wait: "wait" expr ";" +#line 351 "parser.ypp" + { yylhs.value.as < stmt_wait_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2085 "parser.cpp" break; - case 62: // stmt_case: "case" neg_integer ":" -#line 400 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } + case 52: // stmt_waittill: object "waittill" "(" expr "," expr_arguments ")" ";" +#line 356 "parser.ypp" + { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2091 "parser.cpp" break; - case 63: // stmt_case: "case" string ":" -#line 402 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < string_ptr > ())), std::make_unique(yylhs.location)); } + case 53: // stmt_waittill: object "waittill" "(" expr ")" ";" +#line 358 "parser.ypp" + { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2097 "parser.cpp" break; - case 64: // stmt_default: "default" ":" -#line 407 "parser.ypp" - { yylhs.value.as < stmt_default_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } + case 54: // stmt_waittillmatch: object "waittillmatch" "(" expr "," expr_arguments ")" ";" +#line 363 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2103 "parser.cpp" break; - case 65: // stmt_break: "break" ";" -#line 412 "parser.ypp" - { yylhs.value.as < stmt_break_ptr > () = std::make_unique(yylhs.location); } + case 55: // stmt_waittillmatch: object "waittillmatch" "(" expr ")" ";" +#line 365 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2109 "parser.cpp" break; - case 66: // stmt_continue: "continue" ";" -#line 417 "parser.ypp" - { yylhs.value.as < stmt_continue_ptr > () = std::make_unique(yylhs.location); } + case 56: // stmt_waittillframeend: "waittillframeend" ";" +#line 370 "parser.ypp" + { yylhs.value.as < stmt_waittillframeend_ptr > () = std::make_unique(yylhs.location); } #line 2115 "parser.cpp" break; - case 67: // stmt_return: "return" expr ";" -#line 422 "parser.ypp" - { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } + case 57: // stmt_if: "if" "(" expr ")" stmt +#line 375 "parser.ypp" + { yylhs.value.as < stmt_if_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2121 "parser.cpp" break; - case 68: // stmt_return: "return" ";" -#line 424 "parser.ypp" - { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } + case 58: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 380 "parser.ypp" + { yylhs.value.as < stmt_ifelse_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2127 "parser.cpp" break; - case 69: // for_stmt: expr_assign -#line 428 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_list = std::make_unique(yylhs.location); yylhs.value.as < stmt_ptr > ().as_list->stmts.push_back(stmt_ptr(std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_assign_ptr > ())))); } + case 59: // stmt_while: "while" "(" expr ")" stmt +#line 385 "parser.ypp" + { yylhs.value.as < stmt_while_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2133 "parser.cpp" break; - case 70: // for_stmt: %empty -#line 429 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_node = std::make_unique(yylhs.location); } + case 60: // stmt_for: "for" "(" for_stmt ";" for_expr ";" for_stmt ")" stmt +#line 390 "parser.ypp" + { yylhs.value.as < stmt_for_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[6].value.as < stmt_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2139 "parser.cpp" break; - case 71: // for_expr: expr -#line 433 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 61: // stmt_foreach: "foreach" "(" name "in" expr ")" stmt +#line 395 "parser.ypp" + { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2145 "parser.cpp" break; - case 72: // for_expr: %empty -#line 434 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location); } + case 62: // stmt_foreach: "foreach" "(" name "," name "in" expr ")" stmt +#line 397 "parser.ypp" + { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[6].value.as < name_ptr > ())), expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2151 "parser.cpp" break; - case 73: // expr: expr_compare -#line 438 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 63: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 402 "parser.ypp" + { yylhs.value.as < stmt_switch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } #line 2157 "parser.cpp" break; - case 74: // expr: expr_binary -#line 439 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 64: // stmt_case: "case" integer ":" +#line 407 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } #line 2163 "parser.cpp" break; - case 75: // expr: expr_primitive -#line 440 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 65: // stmt_case: "case" neg_integer ":" +#line 409 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } #line 2169 "parser.cpp" break; - case 76: // expr_assign: "++" object -#line 444 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } + case 66: // stmt_case: "case" string ":" +#line 411 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < string_ptr > ())), std::make_unique(yylhs.location)); } #line 2175 "parser.cpp" break; - case 77: // expr_assign: "--" object -#line 445 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } + case 67: // stmt_default: "default" ":" +#line 416 "parser.ypp" + { yylhs.value.as < stmt_default_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2181 "parser.cpp" break; - case 78: // expr_assign: object "++" -#line 446 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 68: // stmt_break: "break" ";" +#line 421 "parser.ypp" + { yylhs.value.as < stmt_break_ptr > () = std::make_unique(yylhs.location); } #line 2187 "parser.cpp" break; - case 79: // expr_assign: object "--" -#line 447 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 69: // stmt_continue: "continue" ";" +#line 426 "parser.ypp" + { yylhs.value.as < stmt_continue_ptr > () = std::make_unique(yylhs.location); } #line 2193 "parser.cpp" break; - case 80: // expr_assign: object "=" expr -#line 448 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 70: // stmt_return: "return" expr ";" +#line 431 "parser.ypp" + { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2199 "parser.cpp" break; - case 81: // expr_assign: object "|=" expr -#line 449 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 71: // stmt_return: "return" ";" +#line 433 "parser.ypp" + { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2205 "parser.cpp" break; - case 82: // expr_assign: object "&=" expr -#line 450 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 72: // stmt_breakpoint: "breakpoint" ";" +#line 438 "parser.ypp" + { yylhs.value.as < stmt_breakpoint_ptr > () = std::make_unique(yylhs.location); } #line 2211 "parser.cpp" break; - case 83: // expr_assign: object "^=" expr -#line 451 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 73: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" +#line 443 "parser.ypp" + { yylhs.value.as < stmt_prof_begin_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2217 "parser.cpp" break; - case 84: // expr_assign: object "<<=" expr -#line 452 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()),std::move( yystack_[0].value.as < expr_ptr > ())); } + case 74: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" +#line 448 "parser.ypp" + { yylhs.value.as < stmt_prof_end_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2223 "parser.cpp" break; - case 85: // expr_assign: object ">>=" expr -#line 453 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 75: // for_stmt: expr_assign +#line 452 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_list = std::make_unique(yylhs.location); yylhs.value.as < stmt_ptr > ().as_list->stmts.push_back(stmt_ptr(std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_assign_ptr > ())))); } #line 2229 "parser.cpp" break; - case 86: // expr_assign: object "+=" expr -#line 454 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 76: // for_stmt: %empty +#line 453 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_node = std::make_unique(yylhs.location); } #line 2235 "parser.cpp" break; - case 87: // expr_assign: object "-=" expr -#line 455 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 77: // for_expr: expr +#line 457 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2241 "parser.cpp" break; - case 88: // expr_assign: object "*=" expr -#line 456 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 78: // for_expr: %empty +#line 458 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location); } #line 2247 "parser.cpp" break; - case 89: // expr_assign: object "/=" expr -#line 457 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 79: // expr: expr_compare +#line 462 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2253 "parser.cpp" break; - case 90: // expr_assign: object "%=" expr -#line 458 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 80: // expr: expr_binary +#line 463 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2259 "parser.cpp" break; - case 91: // expr_compare: expr "||" expr -#line 462 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 81: // expr: expr_primitive +#line 464 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2265 "parser.cpp" break; - case 92: // expr_compare: expr "&&" expr -#line 463 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 82: // expr_assign: "++" object +#line 468 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } #line 2271 "parser.cpp" break; - case 93: // expr_compare: expr "==" expr -#line 464 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 83: // expr_assign: "--" object +#line 469 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } #line 2277 "parser.cpp" break; - case 94: // expr_compare: expr "!=" expr -#line 465 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 84: // expr_assign: object "++" +#line 470 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2283 "parser.cpp" break; - case 95: // expr_compare: expr "<=" expr -#line 466 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 85: // expr_assign: object "--" +#line 471 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2289 "parser.cpp" break; - case 96: // expr_compare: expr ">=" expr -#line 467 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 86: // expr_assign: object "=" expr +#line 472 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2295 "parser.cpp" break; - case 97: // expr_compare: expr "<" expr -#line 468 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 87: // expr_assign: object "|=" expr +#line 473 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2301 "parser.cpp" break; - case 98: // expr_compare: expr ">" expr -#line 469 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 88: // expr_assign: object "&=" expr +#line 474 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2307 "parser.cpp" break; - case 99: // expr_binary: expr "|" expr -#line 473 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 89: // expr_assign: object "^=" expr +#line 475 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2313 "parser.cpp" break; - case 100: // expr_binary: expr "&" expr -#line 474 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 90: // expr_assign: object "<<=" expr +#line 476 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()),std::move( yystack_[0].value.as < expr_ptr > ())); } #line 2319 "parser.cpp" break; - case 101: // expr_binary: expr "^" expr -#line 475 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 91: // expr_assign: object ">>=" expr +#line 477 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2325 "parser.cpp" break; - case 102: // expr_binary: expr "<<" expr -#line 476 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 92: // expr_assign: object "+=" expr +#line 478 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2331 "parser.cpp" break; - case 103: // expr_binary: expr ">>" expr -#line 477 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 93: // expr_assign: object "-=" expr +#line 479 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2337 "parser.cpp" break; - case 104: // expr_binary: expr "+" expr -#line 478 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 94: // expr_assign: object "*=" expr +#line 480 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2343 "parser.cpp" break; - case 105: // expr_binary: expr "-" expr -#line 479 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 95: // expr_assign: object "/=" expr +#line 481 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2349 "parser.cpp" break; - case 106: // expr_binary: expr "*" expr -#line 480 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 96: // expr_assign: object "%=" expr +#line 482 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2355 "parser.cpp" break; - case 107: // expr_binary: expr "/" expr -#line 481 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 97: // expr_compare: expr "||" expr +#line 486 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2361 "parser.cpp" break; - case 108: // expr_binary: expr "%" expr -#line 482 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 98: // expr_compare: expr "&&" expr +#line 487 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2367 "parser.cpp" break; - case 109: // expr_primitive: "(" expr ")" -#line 486 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[1].value.as < expr_ptr > ()); } + case 99: // expr_compare: expr "==" expr +#line 488 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2373 "parser.cpp" break; - case 110: // expr_primitive: "~" expr -#line 487 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } + case 100: // expr_compare: expr "!=" expr +#line 489 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2379 "parser.cpp" break; - case 111: // expr_primitive: "!" expr -#line 488 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } + case 101: // expr_compare: expr "<=" expr +#line 490 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2385 "parser.cpp" break; - case 112: // expr_primitive: expr_call -#line 489 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 102: // expr_compare: expr ">=" expr +#line 491 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2391 "parser.cpp" break; - case 113: // expr_primitive: expr_call_thread -#line 490 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 103: // expr_compare: expr "<" expr +#line 492 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2397 "parser.cpp" break; - case 114: // expr_primitive: expr_call_childthread -#line 491 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 104: // expr_compare: expr ">" expr +#line 493 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2403 "parser.cpp" break; - case 115: // expr_primitive: expr_function -#line 492 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 105: // expr_binary: expr "|" expr +#line 497 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2409 "parser.cpp" break; - case 116: // expr_primitive: expr_add_array -#line 493 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 106: // expr_binary: expr "&" expr +#line 498 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2415 "parser.cpp" break; - case 117: // expr_primitive: expr_array -#line 494 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 107: // expr_binary: expr "^" expr +#line 499 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2421 "parser.cpp" break; - case 118: // expr_primitive: expr_field -#line 495 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 108: // expr_binary: expr "<<" expr +#line 500 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2427 "parser.cpp" break; - case 119: // expr_primitive: expr_size -#line 496 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 109: // expr_binary: expr ">>" expr +#line 501 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2433 "parser.cpp" break; - case 120: // expr_primitive: thisthread -#line 497 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < thisthread_ptr > ()); } + case 110: // expr_binary: expr "+" expr +#line 502 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2439 "parser.cpp" break; - case 121: // expr_primitive: empty_array -#line 498 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < empty_array_ptr > ()); } + case 111: // expr_binary: expr "-" expr +#line 503 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2445 "parser.cpp" break; - case 122: // expr_primitive: undefined -#line 499 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < undefined_ptr > ()); } + case 112: // expr_binary: expr "*" expr +#line 504 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2451 "parser.cpp" break; - case 123: // expr_primitive: game -#line 500 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < game_ptr > ()); } + case 113: // expr_binary: expr "/" expr +#line 505 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2457 "parser.cpp" break; - case 124: // expr_primitive: self -#line 501 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < self_ptr > ()); } + case 114: // expr_binary: expr "%" expr +#line 506 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2463 "parser.cpp" break; - case 125: // expr_primitive: anim -#line 502 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < anim_ptr > ()); } + case 115: // expr_primitive: "(" expr ")" +#line 510 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[1].value.as < expr_ptr > ()); } #line 2469 "parser.cpp" break; - case 126: // expr_primitive: level -#line 503 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < level_ptr > ()); } + case 116: // expr_primitive: "~" expr +#line 511 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2475 "parser.cpp" break; - case 127: // expr_primitive: animation -#line 504 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animation_ptr > ()); } + case 117: // expr_primitive: "!" expr +#line 512 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2481 "parser.cpp" break; - case 128: // expr_primitive: animtree -#line 505 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animtree_ptr > ()); } + case 118: // expr_primitive: expr_call +#line 513 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2487 "parser.cpp" break; - case 129: // expr_primitive: name -#line 506 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < name_ptr > ()); } + case 119: // expr_primitive: expr_call_thread +#line 514 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2493 "parser.cpp" break; - case 130: // expr_primitive: istring -#line 507 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < istring_ptr > ()); } + case 120: // expr_primitive: expr_call_childthread +#line 515 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2499 "parser.cpp" break; - case 131: // expr_primitive: string -#line 508 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < string_ptr > ()); } + case 121: // expr_primitive: expr_function +#line 516 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2505 "parser.cpp" break; - case 132: // expr_primitive: vector -#line 509 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < vector_ptr > ()); } + case 122: // expr_primitive: expr_add_array +#line 517 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2511 "parser.cpp" break; - case 133: // expr_primitive: neg_float -#line 510 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } + case 123: // expr_primitive: expr_array +#line 518 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2517 "parser.cpp" break; - case 134: // expr_primitive: neg_integer -#line 511 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } + case 124: // expr_primitive: expr_field +#line 519 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2523 "parser.cpp" break; - case 135: // expr_primitive: float -#line 512 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } + case 125: // expr_primitive: expr_size +#line 520 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2529 "parser.cpp" break; - case 136: // expr_primitive: integer -#line 513 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } + case 126: // expr_primitive: thisthread +#line 521 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < thisthread_ptr > ()); } #line 2535 "parser.cpp" break; - case 137: // expr_primitive: false -#line 514 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < false_ptr > ()); } + case 127: // expr_primitive: empty_array +#line 522 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < empty_array_ptr > ()); } #line 2541 "parser.cpp" break; - case 138: // expr_primitive: true -#line 515 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < true_ptr > ()); } + case 128: // expr_primitive: undefined +#line 523 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < undefined_ptr > ()); } #line 2547 "parser.cpp" break; - case 139: // expr_call: expr_call_function -#line 519 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 129: // expr_primitive: game +#line 524 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < game_ptr > ()); } #line 2553 "parser.cpp" break; - case 140: // expr_call: expr_call_pointer -#line 520 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 130: // expr_primitive: self +#line 525 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < self_ptr > ()); } #line 2559 "parser.cpp" break; - case 141: // expr_call: object expr_call_function -#line 521 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 131: // expr_primitive: anim +#line 526 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < anim_ptr > ()); } #line 2565 "parser.cpp" break; - case 142: // expr_call: object expr_call_pointer -#line 522 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 132: // expr_primitive: level +#line 527 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < level_ptr > ()); } #line 2571 "parser.cpp" break; - case 143: // expr_call_thread: "thread" expr_call_function -#line 526 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 133: // expr_primitive: animation +#line 528 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animation_ptr > ()); } #line 2577 "parser.cpp" break; - case 144: // expr_call_thread: "thread" expr_call_pointer -#line 527 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 134: // expr_primitive: animtree +#line 529 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animtree_ptr > ()); } #line 2583 "parser.cpp" break; - case 145: // expr_call_thread: object "thread" expr_call_function -#line 528 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 135: // expr_primitive: name +#line 530 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < name_ptr > ()); } #line 2589 "parser.cpp" break; - case 146: // expr_call_thread: object "thread" expr_call_pointer -#line 529 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 136: // expr_primitive: istring +#line 531 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < istring_ptr > ()); } #line 2595 "parser.cpp" break; - case 147: // expr_call_childthread: "childthread" expr_call_function -#line 533 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 137: // expr_primitive: string +#line 532 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < string_ptr > ()); } #line 2601 "parser.cpp" break; - case 148: // expr_call_childthread: "childthread" expr_call_pointer -#line 534 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 138: // expr_primitive: vector +#line 533 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < vector_ptr > ()); } #line 2607 "parser.cpp" break; - case 149: // expr_call_childthread: object "childthread" expr_call_function -#line 535 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 139: // expr_primitive: neg_float +#line 534 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } #line 2613 "parser.cpp" break; - case 150: // expr_call_childthread: object "childthread" expr_call_pointer -#line 536 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 140: // expr_primitive: neg_integer +#line 535 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } #line 2619 "parser.cpp" break; - case 151: // expr_call_function: name "(" expr_arguments ")" -#line 541 "parser.ypp" - {yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::make_unique(), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 141: // expr_primitive: float +#line 536 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } #line 2625 "parser.cpp" break; - case 152: // expr_call_function: file "::" name "(" expr_arguments ")" -#line 543 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < file_ptr > ()), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 142: // expr_primitive: integer +#line 537 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } #line 2631 "parser.cpp" break; - case 153: // expr_call_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 548 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, false, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 143: // expr_primitive: false +#line 538 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < false_ptr > ()); } #line 2637 "parser.cpp" break; - case 154: // expr_call_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 550 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, true, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 144: // expr_primitive: true +#line 539 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < true_ptr > ()); } #line 2643 "parser.cpp" break; - case 155: // expr_arguments: expr_arguments_filled -#line 554 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } + case 145: // expr_call: expr_call_function +#line 543 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2649 "parser.cpp" break; - case 156: // expr_arguments: expr_arguments_empty -#line 555 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } + case 146: // expr_call: expr_call_pointer +#line 544 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2655 "parser.cpp" break; - case 157: // expr_arguments_filled: expr_arguments_filled "," expr -#line 560 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[2].value.as < expr_arguments_ptr > ()); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } + case 147: // expr_call: object expr_call_function +#line 545 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2661 "parser.cpp" break; - case 158: // expr_arguments_filled: expr -#line 562 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } + case 148: // expr_call: object expr_call_pointer +#line 546 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2667 "parser.cpp" break; - case 159: // expr_arguments_empty: %empty -#line 567 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); } + case 149: // expr_call_thread: "thread" expr_call_function +#line 550 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2673 "parser.cpp" break; - case 160: // expr_function: "::" name -#line 572 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < name_ptr > ())); } + case 150: // expr_call_thread: "thread" expr_call_pointer +#line 551 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2679 "parser.cpp" break; - case 161: // expr_function: file "::" name -#line 574 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < file_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } + case 151: // expr_call_thread: object "thread" expr_call_function +#line 552 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2685 "parser.cpp" break; - case 162: // expr_add_array: "[" expr_arguments_filled "]" -#line 579 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 152: // expr_call_thread: object "thread" expr_call_pointer +#line 553 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2691 "parser.cpp" break; - case 163: // expr_array: object "[" expr "]" -#line 584 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < node_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 153: // expr_call_childthread: "childthread" expr_call_function +#line 557 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2697 "parser.cpp" break; - case 164: // expr_field: object "." name -#line 589 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } + case 154: // expr_call_childthread: "childthread" expr_call_pointer +#line 558 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2703 "parser.cpp" break; - case 165: // expr_size: object "." "size" -#line 594 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ())); } + case 155: // expr_call_childthread: object "childthread" expr_call_function +#line 559 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2709 "parser.cpp" break; - case 166: // object: expr_call -#line 598 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 156: // expr_call_childthread: object "childthread" expr_call_pointer +#line 560 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2715 "parser.cpp" break; - case 167: // object: expr_array -#line 599 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } + case 157: // expr_call_function: name "(" expr_arguments ")" +#line 565 "parser.ypp" + {yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::make_unique(), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2721 "parser.cpp" break; - case 168: // object: expr_field -#line 600 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } + case 158: // expr_call_function: file "::" name "(" expr_arguments ")" +#line 567 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < file_ptr > ()), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2727 "parser.cpp" break; - case 169: // object: game -#line 601 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < game_ptr > ()); } + case 159: // expr_call_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 572 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, false, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2733 "parser.cpp" break; - case 170: // object: self -#line 602 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < self_ptr > ()); } + case 160: // expr_call_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 574 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, true, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2739 "parser.cpp" break; - case 171: // object: anim -#line 603 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < anim_ptr > ()); } + case 161: // expr_arguments: expr_arguments_filled +#line 578 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } #line 2745 "parser.cpp" break; - case 172: // object: level -#line 604 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < level_ptr > ()); } + case 162: // expr_arguments: expr_arguments_empty +#line 579 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } #line 2751 "parser.cpp" break; - case 173: // object: name -#line 605 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < name_ptr > ()); } + case 163: // expr_arguments_filled: expr_arguments_filled "," expr +#line 584 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[2].value.as < expr_arguments_ptr > ()); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2757 "parser.cpp" break; - case 174: // thisthread: "thisthread" -#line 608 "parser.ypp" - { yylhs.value.as < thisthread_ptr > () = std::make_unique(yylhs.location); } + case 164: // expr_arguments_filled: expr +#line 586 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2763 "parser.cpp" break; - case 175: // empty_array: "[" "]" -#line 609 "parser.ypp" - { yylhs.value.as < empty_array_ptr > () = std::make_unique(yylhs.location); } + case 165: // expr_arguments_empty: %empty +#line 591 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); } #line 2769 "parser.cpp" break; - case 176: // undefined: "undefined" -#line 610 "parser.ypp" - { yylhs.value.as < undefined_ptr > () = std::make_unique(yylhs.location); } + case 166: // expr_function: "::" name +#line 596 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2775 "parser.cpp" break; - case 177: // game: "game" -#line 611 "parser.ypp" - { yylhs.value.as < game_ptr > () = std::make_unique(yylhs.location); } + case 167: // expr_function: file "::" name +#line 598 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < file_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2781 "parser.cpp" break; - case 178: // self: "self" -#line 612 "parser.ypp" - { yylhs.value.as < self_ptr > () = std::make_unique(yylhs.location); } + case 168: // expr_add_array: "[" expr_arguments_filled "]" +#line 603 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2787 "parser.cpp" break; - case 179: // anim: "anim" -#line 613 "parser.ypp" - { yylhs.value.as < anim_ptr > () = std::make_unique(yylhs.location); } + case 169: // expr_array: object "[" expr "]" +#line 608 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < node_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2793 "parser.cpp" break; - case 180: // level: "level" -#line 614 "parser.ypp" - { yylhs.value.as < level_ptr > () = std::make_unique(yylhs.location); } + case 170: // expr_field: object "." name +#line 613 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2799 "parser.cpp" break; - case 181: // animation: "%" "identifier" -#line 615 "parser.ypp" - { yylhs.value.as < animation_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 171: // expr_size: object ".size" +#line 618 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2805 "parser.cpp" break; - case 182: // animtree: "#animtree" -#line 616 "parser.ypp" - { yylhs.value.as < animtree_ptr > () = std::make_unique(yylhs.location); } + case 172: // object: expr_call +#line 622 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2811 "parser.cpp" break; - case 183: // name: "identifier" -#line 617 "parser.ypp" - { yylhs.value.as < name_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 173: // object: expr_array +#line 623 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2817 "parser.cpp" break; - case 184: // file: "file path" -#line 618 "parser.ypp" - { yylhs.value.as < file_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 174: // object: expr_field +#line 624 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2823 "parser.cpp" break; - case 185: // istring: "localized string" -#line 619 "parser.ypp" - { yylhs.value.as < istring_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 175: // object: game +#line 625 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < game_ptr > ()); } #line 2829 "parser.cpp" break; - case 186: // string: "string literal" -#line 620 "parser.ypp" - { yylhs.value.as < string_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 176: // object: self +#line 626 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < self_ptr > ()); } #line 2835 "parser.cpp" break; - case 187: // vector: "(" expr "," expr "," expr ")" -#line 621 "parser.ypp" - { yylhs.value.as < vector_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[3].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 177: // object: anim +#line 627 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < anim_ptr > ()); } #line 2841 "parser.cpp" break; - case 188: // neg_float: "-" "float" -#line 622 "parser.ypp" - { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 178: // object: level +#line 628 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < level_ptr > ()); } #line 2847 "parser.cpp" break; - case 189: // neg_integer: "-" "int" -#line 623 "parser.ypp" - { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 179: // object: name +#line 629 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < name_ptr > ()); } #line 2853 "parser.cpp" break; - case 190: // float: "float" -#line 624 "parser.ypp" - { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 180: // thisthread: "thisthread" +#line 632 "parser.ypp" + { yylhs.value.as < thisthread_ptr > () = std::make_unique(yylhs.location); } #line 2859 "parser.cpp" break; - case 191: // integer: "int" -#line 625 "parser.ypp" - { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 181: // empty_array: "[" "]" +#line 633 "parser.ypp" + { yylhs.value.as < empty_array_ptr > () = std::make_unique(yylhs.location); } #line 2865 "parser.cpp" break; - case 192: // false: "false" -#line 626 "parser.ypp" - { yylhs.value.as < false_ptr > () = std::make_unique(yylhs.location); } + case 182: // undefined: "undefined" +#line 634 "parser.ypp" + { yylhs.value.as < undefined_ptr > () = std::make_unique(yylhs.location); } #line 2871 "parser.cpp" break; - case 193: // true: "true" -#line 627 "parser.ypp" - { yylhs.value.as < true_ptr > () = std::make_unique(yylhs.location); } + case 183: // game: "game" +#line 635 "parser.ypp" + { yylhs.value.as < game_ptr > () = std::make_unique(yylhs.location); } #line 2877 "parser.cpp" break; + case 184: // self: "self" +#line 636 "parser.ypp" + { yylhs.value.as < self_ptr > () = std::make_unique(yylhs.location); } +#line 2883 "parser.cpp" + break; -#line 2881 "parser.cpp" + case 185: // anim: "anim" +#line 637 "parser.ypp" + { yylhs.value.as < anim_ptr > () = std::make_unique(yylhs.location); } +#line 2889 "parser.cpp" + break; + + case 186: // level: "level" +#line 638 "parser.ypp" + { yylhs.value.as < level_ptr > () = std::make_unique(yylhs.location); } +#line 2895 "parser.cpp" + break; + + case 187: // animation: "%" "identifier" +#line 639 "parser.ypp" + { yylhs.value.as < animation_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2901 "parser.cpp" + break; + + case 188: // animtree: "#animtree" +#line 640 "parser.ypp" + { yylhs.value.as < animtree_ptr > () = std::make_unique(yylhs.location); } +#line 2907 "parser.cpp" + break; + + case 189: // name: "identifier" +#line 641 "parser.ypp" + { yylhs.value.as < name_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2913 "parser.cpp" + break; + + case 190: // file: "file path" +#line 642 "parser.ypp" + { yylhs.value.as < file_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2919 "parser.cpp" + break; + + case 191: // istring: "localized string" +#line 643 "parser.ypp" + { yylhs.value.as < istring_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2925 "parser.cpp" + break; + + case 192: // string: "string literal" +#line 644 "parser.ypp" + { yylhs.value.as < string_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2931 "parser.cpp" + break; + + case 193: // vector: "(" expr "," expr "," expr ")" +#line 645 "parser.ypp" + { yylhs.value.as < vector_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[3].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } +#line 2937 "parser.cpp" + break; + + case 194: // neg_float: "-" "float" +#line 646 "parser.ypp" + { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 2943 "parser.cpp" + break; + + case 195: // neg_integer: "-" "int" +#line 647 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 2949 "parser.cpp" + break; + + case 196: // float: "float" +#line 648 "parser.ypp" + { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2955 "parser.cpp" + break; + + case 197: // integer: "int" +#line 649 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2961 "parser.cpp" + break; + + case 198: // false: "false" +#line 650 "parser.ypp" + { yylhs.value.as < false_ptr > () = std::make_unique(yylhs.location); } +#line 2967 "parser.cpp" + break; + + case 199: // true: "true" +#line 651 "parser.ypp" + { yylhs.value.as < true_ptr > () = std::make_unique(yylhs.location); } +#line 2973 "parser.cpp" + break; + + +#line 2977 "parser.cpp" default: break; @@ -3061,33 +3157,34 @@ namespace xsk { namespace gsc { namespace iw5 { { static const char *const yy_sname[] = { - "end of file", "error", "invalid token", "#include", "#using_animtree", - "#animtree", "endon", "notify", "wait", "waittill", "waittillmatch", - "waittillframeend", "if", "else", "while", "for", "foreach", "in", - "switch", "case", "default", "break", "continue", "return", "thread", - "childthread", "thisthread", "call", "true", "false", "undefined", - "size", "game", "self", "anim", "level", "(", ")", "{", "}", "[", "]", - ",", ".", "::", ":", ";", "++", "--", "<<", ">>", "||", "&&", "==", "!=", - "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", "|=", - "&=", "^=", ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", "%", - "file path", "identifier", "string literal", "localized string", "float", - "int", "ADD_ARRAY", "THEN", "NEG", "ANIMREF", "PREINC", "PREDEC", - "POSTINC", "POSTDEC", "$accept", "root", "program", "include", "define", - "usingtree", "constant", "thread", "parameters", "stmt", "stmt_block", - "stmt_list", "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", - "stmt_wait", "stmt_waittill", "stmt_waittillmatch", - "stmt_waittillframeend", "stmt_if", "stmt_ifelse", "stmt_while", - "stmt_for", "stmt_foreach", "stmt_switch", "stmt_case", "stmt_default", - "stmt_break", "stmt_continue", "stmt_return", "for_stmt", "for_expr", - "expr", "expr_assign", "expr_compare", "expr_binary", "expr_primitive", - "expr_call", "expr_call_thread", "expr_call_childthread", - "expr_call_function", "expr_call_pointer", "expr_arguments", - "expr_arguments_filled", "expr_arguments_empty", "expr_function", - "expr_add_array", "expr_array", "expr_field", "expr_size", "object", - "thisthread", "empty_array", "undefined", "game", "self", "anim", - "level", "animation", "animtree", "name", "file", "istring", "string", - "vector", "neg_float", "neg_integer", "float", "integer", "false", - "true", YY_NULLPTR + "end of file", "error", "invalid token", "breakpoint", "prof_begin", + "prof_end", "#include", "#using_animtree", "#animtree", "endon", + "notify", "wait", "waittill", "waittillmatch", "waittillframeend", "if", + "else", "while", "for", "foreach", "in", "switch", "case", "default", + "break", "continue", "return", "thread", "childthread", "thisthread", + "call", "true", "false", "undefined", ".size", "game", "self", "anim", + "level", "(", ")", "{", "}", "[", "]", ",", ".", "::", ":", ";", "++", + "--", "<<", ">>", "||", "&&", "==", "!=", "<=", ">=", "<", ">", "!", "~", + "=", "+=", "-=", "*=", "/=", "%=", "|=", "&=", "^=", ">>=", "<<=", "|", + "&", "^", "+", "-", "*", "/", "%", "file path", "identifier", + "string literal", "localized string", "float", "int", "ADD_ARRAY", + "THEN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", + "$accept", "root", "program", "include", "define", "usingtree", + "constant", "thread", "parameters", "stmt", "stmt_block", "stmt_list", + "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", "stmt_wait", + "stmt_waittill", "stmt_waittillmatch", "stmt_waittillframeend", + "stmt_if", "stmt_ifelse", "stmt_while", "stmt_for", "stmt_foreach", + "stmt_switch", "stmt_case", "stmt_default", "stmt_break", + "stmt_continue", "stmt_return", "stmt_breakpoint", "stmt_prof_begin", + "stmt_prof_end", "for_stmt", "for_expr", "expr", "expr_assign", + "expr_compare", "expr_binary", "expr_primitive", "expr_call", + "expr_call_thread", "expr_call_childthread", "expr_call_function", + "expr_call_pointer", "expr_arguments", "expr_arguments_filled", + "expr_arguments_empty", "expr_function", "expr_add_array", "expr_array", + "expr_field", "expr_size", "object", "thisthread", "empty_array", + "undefined", "game", "self", "anim", "level", "animation", "animtree", + "name", "file", "istring", "string", "vector", "neg_float", + "neg_integer", "float", "integer", "false", "true", YY_NULLPTR }; return yy_sname[yysymbol]; } @@ -3352,515 +3449,510 @@ namespace xsk { namespace gsc { namespace iw5 { } - const short parser::yypact_ninf_ = -219; + const short parser::yypact_ninf_ = -240; - const short parser::yytable_ninf_ = -174; + const short parser::yytable_ninf_ = -180; const short parser::yypact_[] = { - -2, -63, -11, -219, 35, -2, -219, -219, -219, -219, - -219, -32, -219, -4, -31, -219, -219, -219, -29, 634, - -219, -219, 21, -23, -219, -219, -6, -6, -219, 22, - -219, -219, -219, -219, -219, -219, -219, 634, 451, -29, - 634, 634, -62, -13, -219, -219, -219, 1382, -219, -219, - -219, 30, -219, -219, -219, -219, -219, -219, 40, 183, - -219, 350, -219, -219, -219, 417, 529, 546, 595, -219, - -219, 13, 19, -219, -219, -219, -219, -219, -219, -219, - -219, -219, 23, 33, -29, 32, -219, -219, 42, 44, - -219, -219, 36, 946, 451, -219, 1460, 6, -219, -219, - -219, -219, -219, -219, -219, 634, 634, 634, 634, 634, - 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, - 634, 634, 634, -6, -6, 696, -21, -219, -219, 634, - -29, -219, 813, -219, -219, 634, -29, 634, -219, 634, - 1253, -219, 634, 327, 327, 1470, 979, 219, 219, 335, - 335, 335, 335, 1022, 1501, 1511, 8, 8, -219, -219, - -219, -219, -219, -219, -219, 1292, -219, -219, 53, 49, - -219, 56, 634, 50, 61, 64, 66, 76, 78, -52, - 71, 73, 79, 572, -219, 107, 107, -219, -219, 851, - -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, - -219, -219, -219, -219, -219, -219, -219, -219, -219, 85, - 87, 89, -219, -219, 742, -219, -219, -219, -219, 42, - 1253, 56, 1331, 1369, 86, 1460, -219, -219, 634, 1416, - -219, 634, 634, 657, -29, 634, 37, 93, 98, 99, - -219, -219, -219, -219, 1429, -219, 1, 1, -219, -219, - -219, -219, -219, 109, 110, 112, 113, -29, -219, -219, - 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, - 634, 114, 634, 120, 122, -219, 1085, 1118, 104, -219, - 911, 3, 1128, -219, -219, -219, -219, 634, 634, 634, - 634, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, - 1460, 1460, 121, 1161, 634, -219, 889, 889, 634, 634, - -29, 33, 1171, 989, 1032, 1075, 634, -219, 123, 148, - -219, 146, 1460, 1204, 145, -219, 152, 157, 634, 159, - 634, 160, 634, 172, -219, 889, 657, 889, 634, -219, - -219, 179, -219, 180, -219, 181, -219, -219, 184, -219, - 1214, 174, 176, 190, 889, 889, -219, -219, -219, -219, - -219 + 7, -68, -9, -240, 43, 7, -240, -240, -240, -240, + -240, -30, -240, -1, -21, -240, -240, -240, -24, 787, + -240, -240, 15, -29, -240, -240, 79, 79, -240, 28, + -240, -240, -240, -240, -240, -240, -240, 787, 663, -24, + 787, 787, -59, -11, -240, -240, -240, 1345, -240, -240, + -240, 24, -240, -240, -240, -240, -240, -240, 35, 269, + -240, 361, -240, -240, -240, 474, 686, 748, 756, -240, + -240, 10, 27, -240, -240, -240, -240, -240, -240, -240, + -240, -240, 31, 36, -24, 33, -240, -240, 44, 38, + -240, -240, 52, 909, 663, -240, 1423, 1, -240, -240, + -240, -240, -240, -240, -240, 787, 787, 787, 787, 787, + 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, + 787, 787, 787, 79, 79, -240, 849, -24, -240, -240, + 787, -24, -240, 550, -240, -240, 787, -24, 787, -240, + 787, 1216, -240, 787, 77, 77, 1433, 942, 405, 405, + 200, 200, 200, 200, 985, 1474, 1464, -61, -61, -240, + -240, -240, -240, -240, -240, -240, 1255, -240, 46, 42, + -240, 57, 54, 67, 71, 787, 65, 76, 78, 81, + 82, 86, -38, 87, 90, 91, 725, -240, 416, 416, + -240, -240, 594, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, 92, 94, 95, -240, -240, + 468, -240, -240, -240, -240, 44, 1216, 57, 1294, 1332, + 103, 1423, -240, -240, 787, -240, 787, 787, 1379, -240, + 787, 787, 378, -24, 787, 48, 100, 102, 104, -240, + -240, -240, -240, 1392, -240, 29, 29, -240, -240, -240, + -240, -240, 112, 114, 122, 125, -240, -240, 787, 787, + 787, 787, 787, 787, 787, 787, 787, 787, 787, 116, + 787, 148, 150, 151, 162, -240, 1048, 1081, 155, -240, + 874, -10, 1091, -240, -240, -240, -240, 787, 787, 787, + 787, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 166, 1124, 787, -240, 157, 161, 638, 638, + 787, 787, -24, 36, 1134, 952, 995, 1038, 787, -240, + 171, -240, -240, 110, -240, 163, 1423, 1167, 193, -240, + 168, 172, 787, 173, 787, 174, 787, 175, -240, 638, + 378, 638, 787, -240, -240, 184, -240, 186, -240, 187, + -240, -240, 188, -240, 1177, 180, 189, 191, 638, 638, + -240, -240, -240, -240, -240 }; const unsigned char parser::yydefact_[] = { - 3, 0, 0, 183, 0, 2, 6, 7, 9, 10, - 11, 0, 184, 0, 0, 1, 4, 5, 17, 0, - 8, 186, 0, 0, 16, 182, 0, 0, 174, 0, - 193, 192, 176, 177, 178, 179, 180, 0, 0, 0, - 0, 0, 0, 0, 185, 190, 191, 0, 73, 74, - 75, 112, 113, 114, 139, 140, 115, 116, 117, 118, - 119, 0, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 0, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 0, 0, 0, 0, 143, 144, 0, 0, - 147, 148, 0, 0, 0, 175, 158, 0, 160, 111, - 110, 188, 189, 181, 13, 0, 0, 0, 0, 0, + 3, 0, 0, 189, 0, 2, 6, 7, 9, 10, + 11, 0, 190, 0, 0, 1, 4, 5, 17, 0, + 8, 192, 0, 0, 16, 188, 0, 0, 180, 0, + 199, 198, 182, 183, 184, 185, 186, 0, 0, 0, + 0, 0, 0, 0, 191, 196, 197, 0, 79, 80, + 81, 118, 119, 120, 145, 146, 121, 122, 123, 124, + 125, 0, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 0, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 0, 0, 0, 0, 149, 150, 0, 0, + 153, 154, 0, 0, 0, 181, 164, 0, 166, 117, + 116, 194, 195, 187, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 141, 142, 159, - 0, 12, 0, 14, 15, 0, 0, 0, 109, 0, - 158, 162, 0, 102, 103, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 104, 105, 106, 107, - 108, 145, 146, 149, 150, 0, 165, 164, 0, 155, - 156, 161, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 39, 0, 0, 41, 18, 0, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 0, - 166, 0, 167, 168, 0, 169, 170, 171, 172, 173, - 0, 0, 0, 0, 0, 157, 163, 151, 159, 0, - 53, 0, 0, 70, 0, 0, 0, 0, 0, 0, - 64, 65, 66, 68, 0, 166, 76, 77, 38, 40, - 44, 42, 43, 0, 0, 0, 0, 0, 78, 79, + 0, 0, 0, 0, 0, 171, 0, 0, 147, 148, + 165, 0, 12, 0, 14, 15, 0, 0, 0, 115, + 0, 164, 168, 0, 108, 109, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 110, 111, 112, + 113, 114, 151, 152, 155, 156, 0, 170, 0, 161, + 162, 167, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, + 44, 18, 0, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 0, 172, 0, 173, 174, + 0, 175, 176, 177, 178, 179, 0, 0, 0, 0, + 0, 163, 169, 157, 165, 72, 165, 165, 0, 56, + 0, 0, 76, 0, 0, 0, 0, 0, 0, 67, + 68, 69, 71, 0, 172, 82, 83, 41, 43, 47, + 45, 46, 0, 0, 0, 0, 84, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 48, 0, 0, 0, 69, - 0, 0, 0, 63, 62, 61, 67, 0, 0, 0, - 0, 80, 86, 87, 88, 89, 90, 81, 82, 83, - 85, 84, 0, 0, 159, 152, 0, 0, 72, 0, - 0, 0, 0, 0, 0, 0, 159, 187, 0, 54, - 56, 0, 71, 0, 0, 60, 0, 0, 159, 0, - 159, 0, 159, 0, 153, 0, 70, 0, 0, 45, - 47, 0, 50, 0, 52, 0, 154, 55, 0, 58, - 0, 0, 0, 0, 0, 0, 46, 49, 51, 57, - 59 + 0, 0, 0, 0, 0, 51, 0, 0, 0, 75, + 0, 0, 0, 66, 65, 64, 70, 0, 0, 0, + 0, 86, 92, 93, 94, 95, 96, 87, 88, 89, + 91, 90, 0, 0, 165, 158, 0, 0, 0, 0, + 78, 0, 0, 0, 0, 0, 0, 0, 165, 193, + 0, 73, 74, 57, 59, 0, 77, 0, 0, 63, + 0, 0, 165, 0, 165, 0, 165, 0, 159, 0, + 76, 0, 0, 48, 50, 0, 53, 0, 55, 0, + 160, 58, 0, 61, 0, 0, 0, 0, 0, 0, + 49, 52, 54, 60, 62 }; const short parser::yypgoto_[] = { - -219, -219, -219, 222, 232, -219, -219, -219, -219, -153, - -76, -219, -219, -219, -219, -219, -219, -219, -219, -219, - -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, - -219, -97, -219, 58, -218, -219, -219, -219, -82, 72, - -219, -18, -15, -215, -35, -219, -219, -219, 26, 81, - -219, 116, -219, -219, -219, 167, 206, 212, 239, -219, - -219, 0, 5, -219, 2, -219, -219, 63, -219, 65, - -219, -219 + -240, -240, -240, 240, 243, -240, -240, -240, -240, -135, + -79, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -93, -240, 60, -239, -240, -240, + -240, -100, -110, -240, -25, -19, -212, -26, -240, -240, + -240, -43, 74, -240, 99, -240, -240, -240, 121, 156, + 178, 194, -240, -240, 0, 5, -240, 3, -240, -240, + 85, -240, 88, -240, -240 }; const short parser::yydefgoto_[] = { - 0, 4, 5, 6, 7, 8, 9, 10, 23, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 278, 321, 96, 209, 48, 49, 50, 51, 52, - 53, 54, 55, 168, 169, 170, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81 + 0, 4, 5, 6, 7, 8, 9, 10, 23, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 288, 335, 96, 215, 48, 49, + 50, 51, 52, 53, 54, 55, 168, 169, 170, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81 }; const short parser::yytable_[] = { - 11, 1, 2, 97, 18, 11, 13, 133, 86, 90, - 166, 87, 91, 274, 83, 279, 22, 12, 24, 84, - 309, 29, 101, 102, 236, 14, 88, 88, 29, 19, - 21, 89, 89, 46, 85, 15, 249, -173, -173, 98, - -173, 125, 20, 127, 257, 310, 128, 141, 142, 129, - 210, 21, 3, -173, -166, -166, -173, -166, 82, 97, - 3, 88, 92, 130, -167, -167, 89, -167, 103, 131, - -166, 132, 135, -166, 12, 3, 137, 47, 129, 3, - -167, 12, 3, -167, 134, 120, 121, 122, 136, 318, - 227, 142, 228, -173, -173, 93, 230, 231, 99, 100, - 232, 333, 233, 245, 245, 161, 163, 210, 162, 164, - -166, -166, 234, 341, 235, 343, 240, 345, 279, 241, - -167, -167, 102, 88, 88, 242, 167, 273, 89, 89, - 171, 250, 219, 251, 29, 252, 221, 89, 283, 33, - 34, 35, 36, 284, 285, 287, 288, 85, 289, 290, - 308, 245, 140, 319, 320, 302, 304, 316, 212, 305, - 334, 335, 338, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 237, 347, 165, 349, 219, 219, 12, 3, 219, - 89, 89, 336, 220, 89, 222, 127, 223, 339, 128, - 225, 359, 360, 340, 211, 342, 344, -168, -168, 346, - -168, 212, 212, 213, 88, 212, 351, 352, 353, 89, - 356, 354, 357, -168, 210, 210, -168, 16, 127, 127, - 229, 128, 128, 219, 281, 325, 358, 17, 89, 348, - 0, 244, 238, 0, 239, 0, 88, 88, 214, 0, - 0, 89, 89, 210, 245, 210, 0, 167, 0, 212, - 0, 211, 127, -168, -168, 128, 213, 213, 105, 106, - 213, 0, 210, 210, 111, 112, 113, 114, 0, 0, - 88, 0, 0, 0, 0, 89, 0, 0, 0, 276, - 277, 0, 0, 282, 118, 119, 120, 121, 122, 215, - 0, 246, 247, 0, 0, 214, 219, 219, 0, 0, - 324, 89, 89, 0, 213, 0, 0, 0, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 0, - 303, 0, 212, 212, 0, 219, 219, 219, 216, 0, - 89, 89, 89, 0, 217, 312, 313, 314, 315, 280, - 0, 0, 215, 215, 219, 219, 215, 0, 0, 89, - 89, 212, 212, 212, 0, 0, 322, 323, 0, 0, - 0, 218, 0, 0, 123, 124, 0, 29, 211, 211, - 212, 212, 0, 0, 105, 106, 0, 213, 213, 0, - 125, 216, 216, 126, 0, 216, 350, 217, 217, 0, - 215, 217, 118, 119, 120, 121, 122, 211, 0, 211, - 118, 119, 120, 121, 122, 0, 213, 213, 213, 0, - 0, 0, 214, 214, 218, 218, 211, 211, 218, 0, - 12, 3, 0, 0, 0, 213, 213, 0, 0, 216, - 0, -169, -169, 0, -169, 217, 0, 0, 0, 0, - 0, 214, 280, 214, 0, 0, 25, -169, 0, 0, - -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 214, 214, 218, 215, 215, 26, 27, 28, 29, 30, - 31, 32, 0, 33, 34, 35, 36, 37, 0, 0, - 0, 94, 95, 0, 0, 39, 0, -169, -169, 0, - 0, 0, 215, 215, 215, 0, 0, 0, 0, 0, - 40, 41, 216, 216, 0, 0, 0, 0, 217, 217, - 0, 215, 215, 0, 0, 0, 0, 42, 0, 0, - 43, 12, 3, 21, 44, 45, 46, 0, 0, 0, - 0, 216, 216, 216, 0, 218, 218, 217, 217, 217, - 0, 0, 0, -170, -170, 0, -170, 0, 0, 0, - 216, 216, 0, 0, 0, 0, 217, 217, 0, -170, - -171, -171, -170, -171, 218, 218, 218, 25, 0, 0, - 0, 0, 0, 0, 0, 0, -171, 0, 0, -171, - 0, 0, 0, 218, 218, 0, 26, 27, 28, 29, - 30, 31, 32, 0, 33, 34, 35, 36, 37, -170, - -170, 0, 38, 0, 0, 0, 39, 0, 243, -172, - -172, 0, -172, 0, 0, 0, -171, -171, 0, 0, - 0, 40, 41, 0, 0, -172, 0, 0, -172, 25, - 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, - 0, 43, 12, 3, 21, 44, 45, 46, 26, 27, - 28, 29, 30, 31, 32, 0, 33, 34, 35, 36, - 37, 0, 0, 0, 38, -172, -172, 0, 39, 0, - 0, 0, 0, 0, 29, 0, 0, 0, 0, 33, - 34, 35, 36, 40, 41, 0, 0, 85, 0, 0, - 0, 25, 0, 0, 185, 186, 0, 0, 0, 0, - 42, 0, 0, 43, 12, 3, 21, 44, 45, 46, - 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, - 35, 36, 37, 0, 0, 0, 94, 12, 3, 0, - 39, 0, 0, 0, 0, 0, 0, 0, 253, 254, - 0, 255, 256, 0, 0, 40, 41, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 123, 0, 0, 29, - 0, 0, 42, 0, 0, 43, 12, 3, 21, 44, - 45, 46, 125, 0, 0, 257, 0, 0, 0, 258, - 259, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 0, 0, 0, 0, 0, 0, - 0, 172, 12, 3, 173, 174, 0, 175, 176, 177, - 0, 178, 179, 180, 181, 182, 183, 26, 0, 0, + 11, 86, 90, 289, 134, 11, 13, 87, 91, 18, + 321, 83, 97, 1, 2, 12, 84, 22, 24, 120, + 121, 122, 282, 217, 283, 284, 88, 88, 101, 102, + 14, 89, 89, 216, 19, 322, 128, -179, -179, 98, + -179, 245, 129, 15, -179, 142, 143, 21, 20, 130, + 46, -172, -172, -179, -172, 82, -179, 258, -172, 29, + 3, 88, -173, -173, 21, -173, 89, -172, 97, -173, + -172, 92, 126, 103, 131, 127, 136, 133, -173, 47, + 132, -173, 217, 130, 135, 137, 233, 143, 254, 254, + 218, 3, 216, -179, -179, 138, 234, 93, 162, 164, + 99, 100, 330, 235, 163, 165, 236, -172, -172, 29, + 237, 289, 12, 3, 239, 240, 347, 241, -173, -173, + 242, 243, 85, 88, 88, 244, 349, 167, 89, 89, + 355, 171, 357, 225, 359, 249, 102, 227, 89, 250, + 251, 259, 254, 260, 261, 218, 218, 281, 293, 218, + 294, 297, 295, 298, 141, 118, 119, 120, 121, 122, + 312, 299, 12, 3, 300, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 333, 334, 246, 166, 314, 225, 225, + 315, 316, 225, 89, 89, 128, 226, 89, 228, 218, + 229, 129, 317, 231, 320, 328, 331, 219, 217, 217, + 332, 348, 350, 352, 361, 360, 363, 353, 216, 216, + 88, 354, 356, 358, 365, 89, 366, 367, 368, 370, + 128, 128, 220, 373, 374, 238, 129, 129, 371, 217, + 372, 217, 225, 291, 339, 16, 253, 89, 17, 216, + 254, 216, 105, 106, 221, 88, 88, 362, 217, 217, + 89, 89, 219, 219, 0, 128, 219, 247, 216, 216, + 248, 129, 0, 0, 0, 218, 218, 0, 118, 119, + 120, 121, 122, 0, 0, 0, 0, 255, 256, 222, + 88, 220, 0, 0, 0, 89, -174, -174, 0, -174, + 286, 287, 0, -174, 292, 0, 218, 218, 218, 221, + 221, 223, -174, 221, 0, -174, 219, 0, 225, 225, + 0, 0, 338, 89, 89, 218, 218, 224, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, + 313, 290, 0, 0, 222, 222, 0, 0, 222, 225, + 225, 225, -174, -174, 89, 89, 89, 324, 325, 326, + 327, 0, 0, 221, 0, 0, 223, 223, 225, 225, + 223, 0, 0, 89, 89, 0, 0, 0, 0, 0, + 336, 337, 224, 224, 0, 0, 224, 0, 123, 124, + 0, 29, 219, 219, 0, 125, 0, 0, 222, 0, + 0, 0, 0, 0, 126, 0, 0, 127, 29, 0, + 0, 0, 364, 33, 34, 35, 36, 220, 220, 0, + 223, 85, 0, 219, 219, 219, 0, 0, 188, 189, + 0, 0, 0, 0, 0, 0, 224, 0, 0, 221, + 221, 0, 219, 219, 12, 3, 29, 0, 220, 290, + 220, 33, 34, 35, 36, 0, 0, 105, 106, 85, + 0, 12, 3, 111, 112, 113, 114, 220, 220, 0, + 221, 221, 221, 0, 222, 222, 0, 262, 263, 0, + 264, 265, 0, 118, 119, 120, 121, 122, 0, 221, + 221, 0, 0, 0, 0, 123, 223, 223, 29, 12, + 3, -175, -175, 0, -175, 222, 222, 222, -175, 0, + 0, 126, 224, 224, 127, 0, 0, -175, 266, 267, + -175, 0, 0, 0, 222, 222, 0, 223, 223, 223, + 0, 0, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 224, 224, 224, 223, 223, 0, 0, + 0, 12, 3, 172, 173, 174, 0, -175, -175, 0, + 0, 175, 224, 224, 176, 177, 0, 178, 179, 180, + 0, 181, 182, 183, 184, 185, 186, 26, 0, 0, 29, 0, 0, 0, 0, 33, 34, 35, 36, 0, - 0, 132, 184, 85, 0, 0, 0, 0, 0, 172, - 185, 186, 173, 174, 0, 175, 176, 177, 0, 178, - 179, 180, 181, 182, 183, 26, 0, 0, 29, 0, - 0, 0, 0, 33, 34, 35, 36, 0, 0, 132, - 248, 85, 0, 12, 3, 0, 0, 172, 185, 186, - 173, 174, 0, 175, 176, 177, 0, 178, 179, 180, - 181, 182, 183, 26, 0, 0, 29, 0, 0, 0, - 0, 33, 34, 35, 36, 0, 0, 132, 0, 85, - 0, 12, 3, 0, 0, 0, 185, 186, 29, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 125, 0, 0, 257, 0, 0, 0, 258, 259, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, - 3, 0, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 138, 0, 0, 0, 0, 139, 0, - 0, 12, 3, 0, 0, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 115, 116, - 117, 118, 119, 120, 121, 122, 327, 0, 105, 106, - 0, 328, 109, 110, 111, 112, 113, 114, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 0, 0, - 0, 115, 116, 117, 118, 119, 120, 121, 122, 0, - 0, 115, 116, 117, 118, 119, 120, 121, 122, 329, - 0, 105, 106, 0, 330, 109, 110, 111, 112, 113, - 114, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 0, 0, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 0, 0, 115, 116, 117, 118, 119, 120, - 121, 122, 331, 0, 0, 0, 0, 332, 0, 0, - 0, 0, 306, 0, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 0, 0, 0, 115, 116, 117, - 118, 119, 120, 121, 122, 307, 0, 115, 116, 117, - 118, 119, 120, 121, 122, 311, 0, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 0, 0, 0, - 115, 116, 117, 118, 119, 120, 121, 122, 317, 0, - 115, 116, 117, 118, 119, 120, 121, 122, 326, 0, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 0, 0, 0, 115, 116, 117, 118, 119, 120, 121, - 122, 337, 0, 115, 116, 117, 118, 119, 120, 121, - 122, 355, 0, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 0, 0, 0, 115, 116, 117, 118, - 119, 120, 121, 122, 0, 0, 115, 116, 117, 118, - 119, 120, 121, 122, 224, 0, 0, 0, 0, 0, - 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 115, 116, 117, 118, 119, - 120, 121, 122, 226, 0, 0, 0, 0, 0, 0, + 0, 133, 187, 85, 0, 0, 0, 172, 173, 174, + 188, 189, 0, 0, 0, 175, 0, 0, 176, 177, + 0, 178, 179, 180, 0, 181, 182, 183, 184, 185, + 186, 26, 0, 0, 29, 0, 0, 0, 0, 33, + 34, 35, 36, 12, 3, 133, 257, 85, 0, 0, + 0, 172, 173, 174, 188, 189, 0, 0, 0, 175, + 0, 0, 176, 177, 0, 178, 179, 180, 0, 181, + 182, 183, 184, 185, 186, 26, 0, 0, 29, 0, + 0, 25, 0, 33, 34, 35, 36, 12, 3, 133, + 0, 85, 0, 0, 0, 0, 0, 0, 188, 189, + 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, + 35, 36, 37, 0, 0, 0, 94, 95, 0, 0, + 39, 0, 0, -176, -176, 0, -176, 0, 0, 0, + -176, 12, 3, 0, 0, 40, 41, 0, 0, -176, + 0, 0, -176, 25, 0, 0, 0, 0, 0, 0, + 0, 0, 42, 0, 0, 43, 12, 3, 21, 44, + 45, 46, 26, 27, 28, 29, 30, 31, 32, 0, + 33, 34, 35, 36, 37, 0, 0, 0, 38, -176, + -176, 0, 39, 0, 252, -177, -177, 0, -177, 0, + 0, 0, -177, -178, -178, 0, -178, 40, 41, 0, + -178, -177, 0, 0, -177, 25, 0, 0, 0, -178, + 0, 0, -178, 0, 42, 0, 0, 43, 12, 3, + 21, 44, 45, 46, 26, 27, 28, 29, 30, 31, + 32, 0, 33, 34, 35, 36, 37, 0, 0, 0, + 38, -177, -177, 0, 39, 0, 0, 0, 0, -178, + -178, 0, 0, 0, 0, 0, 0, 0, 0, 40, + 41, 0, 0, 0, 0, 0, 0, 25, 0, 0, + 0, 0, 0, 0, 0, 0, 42, 0, 0, 43, + 12, 3, 21, 44, 45, 46, 26, 27, 28, 29, + 30, 31, 32, 0, 33, 34, 35, 36, 37, 0, + 0, 0, 94, 0, 0, 0, 39, 0, 0, 0, + 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, + 0, 40, 41, 0, 0, 0, 0, 126, 0, 0, + 127, 0, 0, 0, 266, 267, 0, 0, 42, 0, + 0, 43, 12, 3, 21, 44, 45, 46, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 139, + 0, 0, 0, 0, 140, 0, 0, 12, 3, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 116, 117, 118, 119, 120, - 121, 122, 271, 0, 0, 0, 0, 0, 0, 0, + 121, 122, 341, 0, 105, 106, 0, 342, 109, 110, + 111, 112, 113, 114, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 0, 0, 0, 115, 116, 117, + 118, 119, 120, 121, 122, 0, 0, 115, 116, 117, + 118, 119, 120, 121, 122, 343, 0, 105, 106, 0, + 344, 109, 110, 111, 112, 113, 114, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 0, 0, 0, + 0, 116, 117, 118, 119, 120, 121, 122, 0, 0, + 115, 116, 117, 118, 119, 120, 121, 122, 345, 0, + 0, 0, 0, 346, 0, 0, 0, 0, 318, 0, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 116, 117, 118, 119, 120, 121, - 122, 272, 0, 0, 0, 0, 0, 0, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 104, 0, - 0, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 0, - 0, 0, 0, 0, 115, 116, 117, 118, 119, 120, - 121, 122, 275, 0, 0, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 286, 0, 0, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 0, 0, 0, 0, - 0, 115, 116, 117, 118, 119, 120, 121, 122, 105, + 122, 319, 0, 115, 116, 117, 118, 119, 120, 121, + 122, 323, 0, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 0, 0, 0, 115, 116, 117, 118, + 119, 120, 121, 122, 329, 0, 115, 116, 117, 118, + 119, 120, 121, 122, 340, 0, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 0, 0, 0, 115, + 116, 117, 118, 119, 120, 121, 122, 351, 0, 115, + 116, 117, 118, 119, 120, 121, 122, 369, 0, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 105, - 106, 0, 108, 109, 110, 111, 112, 113, 114, 0, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 0, 0, 0, 115, 116, 117, 118, 119, 120, 121, 122, 0, 0, 115, 116, 117, 118, 119, 120, 121, 122, - 105, 106, 0, 0, 109, 110, 111, 112, 113, 114, - 105, 106, 0, 0, 109, 110, 111, 112, 113, 114, - 0, 0, 0, 0, 0, 117, 118, 119, 120, 121, - 122, 0, 0, 0, 0, 0, 118, 119, 120, 121, - 122 + 230, 0, 0, 0, 0, 0, 0, 0, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 115, 116, 117, 118, 119, 120, 121, 122, 232, + 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 115, 116, 117, 118, 119, 120, 121, 122, 279, 0, + 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, + 116, 117, 118, 119, 120, 121, 122, 280, 0, 0, + 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 104, 0, 0, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 0, 0, 0, 0, 0, + 115, 116, 117, 118, 119, 120, 121, 122, 285, 0, + 0, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 296, 0, 0, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 0, 0, 0, 0, 0, 115, 116, 117, + 118, 119, 120, 121, 122, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 105, 106, 0, 108, 109, + 110, 111, 112, 113, 114, 0, 0, 0, 115, 116, + 117, 118, 119, 120, 121, 122, 0, 0, 115, 116, + 117, 118, 119, 120, 121, 122, 105, 106, 0, 0, + 109, 110, 111, 112, 113, 114, 105, 106, 0, 0, + 109, 110, 111, 112, 113, 114, 0, 0, 0, 0, + 116, 0, 118, 119, 120, 121, 122, 0, 0, 0, + 0, 0, 118, 119, 120, 121, 122 }; const short parser::yycheck_[] = { - 0, 3, 4, 38, 36, 5, 1, 83, 26, 27, - 31, 26, 27, 228, 37, 233, 14, 80, 18, 42, - 17, 27, 84, 85, 76, 36, 26, 27, 27, 61, - 82, 26, 27, 85, 40, 0, 189, 24, 25, 39, - 27, 40, 46, 61, 43, 42, 61, 41, 42, 36, - 132, 82, 81, 40, 24, 25, 43, 27, 37, 94, - 81, 61, 40, 44, 24, 25, 61, 27, 81, 46, - 40, 38, 40, 43, 80, 81, 40, 19, 36, 81, - 40, 80, 81, 43, 84, 77, 78, 79, 44, 304, - 37, 42, 36, 80, 81, 37, 46, 36, 40, 41, - 36, 316, 36, 185, 186, 123, 124, 189, 123, 124, - 80, 81, 36, 328, 36, 330, 45, 332, 336, 46, - 80, 81, 85, 123, 124, 46, 126, 41, 123, 124, - 130, 46, 132, 46, 27, 46, 136, 132, 45, 32, - 33, 34, 35, 45, 45, 36, 36, 40, 36, 36, - 46, 233, 94, 306, 307, 41, 36, 36, 132, 37, - 37, 13, 17, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 179, 335, 125, 337, 185, 186, 80, 81, 189, - 185, 186, 46, 135, 189, 137, 214, 139, 46, 214, - 142, 354, 355, 46, 132, 46, 46, 24, 25, 37, - 27, 185, 186, 132, 214, 189, 37, 37, 37, 214, - 46, 37, 46, 40, 306, 307, 43, 5, 246, 247, - 172, 246, 247, 233, 234, 311, 46, 5, 233, 336, - -1, 183, 179, -1, 179, -1, 246, 247, 132, -1, - -1, 246, 247, 335, 336, 337, -1, 257, -1, 233, - -1, 189, 280, 80, 81, 280, 185, 186, 49, 50, - 189, -1, 354, 355, 55, 56, 57, 58, -1, -1, - 280, -1, -1, -1, -1, 280, -1, -1, -1, 231, - 232, -1, -1, 235, 75, 76, 77, 78, 79, 132, - -1, 185, 186, -1, -1, 189, 306, 307, -1, -1, - 310, 306, 307, -1, 233, -1, -1, -1, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, -1, - 272, -1, 306, 307, -1, 335, 336, 337, 132, -1, - 335, 336, 337, -1, 132, 287, 288, 289, 290, 233, - -1, -1, 185, 186, 354, 355, 189, -1, -1, 354, - 355, 335, 336, 337, -1, -1, 308, 309, -1, -1, - -1, 132, -1, -1, 24, 25, -1, 27, 306, 307, - 354, 355, -1, -1, 49, 50, -1, 306, 307, -1, - 40, 185, 186, 43, -1, 189, 338, 185, 186, -1, - 233, 189, 75, 76, 77, 78, 79, 335, -1, 337, - 75, 76, 77, 78, 79, -1, 335, 336, 337, -1, - -1, -1, 306, 307, 185, 186, 354, 355, 189, -1, - 80, 81, -1, -1, -1, 354, 355, -1, -1, 233, - -1, 24, 25, -1, 27, 233, -1, -1, -1, -1, - -1, 335, 336, 337, -1, -1, 5, 40, -1, -1, - 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 354, 355, 233, 306, 307, 24, 25, 26, 27, 28, - 29, 30, -1, 32, 33, 34, 35, 36, -1, -1, - -1, 40, 41, -1, -1, 44, -1, 80, 81, -1, - -1, -1, 335, 336, 337, -1, -1, -1, -1, -1, - 59, 60, 306, 307, -1, -1, -1, -1, 306, 307, - -1, 354, 355, -1, -1, -1, -1, 76, -1, -1, - 79, 80, 81, 82, 83, 84, 85, -1, -1, -1, - -1, 335, 336, 337, -1, 306, 307, 335, 336, 337, - -1, -1, -1, 24, 25, -1, 27, -1, -1, -1, - 354, 355, -1, -1, -1, -1, 354, 355, -1, 40, - 24, 25, 43, 27, 335, 336, 337, 5, -1, -1, - -1, -1, -1, -1, -1, -1, 40, -1, -1, 43, - -1, -1, -1, 354, 355, -1, 24, 25, 26, 27, - 28, 29, 30, -1, 32, 33, 34, 35, 36, 80, - 81, -1, 40, -1, -1, -1, 44, -1, 46, 24, - 25, -1, 27, -1, -1, -1, 80, 81, -1, -1, - -1, 59, 60, -1, -1, 40, -1, -1, 43, 5, - -1, -1, -1, -1, -1, -1, -1, -1, 76, -1, - -1, 79, 80, 81, 82, 83, 84, 85, 24, 25, - 26, 27, 28, 29, 30, -1, 32, 33, 34, 35, - 36, -1, -1, -1, 40, 80, 81, -1, 44, -1, - -1, -1, -1, -1, 27, -1, -1, -1, -1, 32, - 33, 34, 35, 59, 60, -1, -1, 40, -1, -1, - -1, 5, -1, -1, 47, 48, -1, -1, -1, -1, - 76, -1, -1, 79, 80, 81, 82, 83, 84, 85, - 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, - 34, 35, 36, -1, -1, -1, 40, 80, 81, -1, - 44, -1, -1, -1, -1, -1, -1, -1, 6, 7, - -1, 9, 10, -1, -1, 59, 60, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 24, -1, -1, 27, - -1, -1, 76, -1, -1, 79, 80, 81, 82, 83, - 84, 85, 40, -1, -1, 43, -1, -1, -1, 47, - 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, -1, -1, -1, -1, -1, -1, - -1, 8, 80, 81, 11, 12, -1, 14, 15, 16, - -1, 18, 19, 20, 21, 22, 23, 24, -1, -1, - 27, -1, -1, -1, -1, 32, 33, 34, 35, -1, - -1, 38, 39, 40, -1, -1, -1, -1, -1, 8, - 47, 48, 11, 12, -1, 14, 15, 16, -1, 18, - 19, 20, 21, 22, 23, 24, -1, -1, 27, -1, - -1, -1, -1, 32, 33, 34, 35, -1, -1, 38, - 39, 40, -1, 80, 81, -1, -1, 8, 47, 48, - 11, 12, -1, 14, 15, 16, -1, 18, 19, 20, - 21, 22, 23, 24, -1, -1, 27, -1, -1, -1, - -1, 32, 33, 34, 35, -1, -1, 38, -1, 40, - -1, 80, 81, -1, -1, -1, 47, 48, 27, -1, + 0, 26, 27, 242, 83, 5, 1, 26, 27, 39, + 20, 40, 38, 6, 7, 83, 45, 14, 18, 80, + 81, 82, 234, 133, 236, 237, 26, 27, 87, 88, + 39, 26, 27, 133, 64, 45, 61, 27, 28, 39, + 30, 79, 61, 0, 34, 44, 45, 85, 49, 39, + 88, 27, 28, 43, 30, 40, 46, 192, 34, 30, + 84, 61, 27, 28, 85, 30, 61, 43, 94, 34, + 46, 43, 43, 84, 47, 46, 43, 41, 43, 19, + 49, 46, 192, 39, 84, 47, 40, 45, 188, 189, + 133, 84, 192, 83, 84, 43, 39, 37, 123, 124, + 40, 41, 314, 49, 123, 124, 39, 83, 84, 30, + 39, 350, 83, 84, 49, 39, 328, 39, 83, 84, + 39, 39, 43, 123, 124, 39, 16, 127, 123, 124, + 342, 131, 344, 133, 346, 48, 88, 137, 133, 49, + 49, 49, 242, 49, 49, 188, 189, 44, 48, 192, + 48, 39, 48, 39, 94, 78, 79, 80, 81, 82, + 44, 39, 83, 84, 39, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 318, 319, 182, 126, 39, 188, 189, + 40, 40, 192, 188, 189, 220, 136, 192, 138, 242, + 140, 220, 40, 143, 49, 39, 49, 133, 318, 319, + 49, 40, 49, 20, 349, 40, 351, 49, 318, 319, + 220, 49, 49, 49, 40, 220, 40, 40, 40, 49, + 255, 256, 133, 368, 369, 175, 255, 256, 49, 349, + 49, 351, 242, 243, 323, 5, 186, 242, 5, 349, + 350, 351, 52, 53, 133, 255, 256, 350, 368, 369, + 255, 256, 188, 189, -1, 290, 192, 182, 368, 369, + 182, 290, -1, -1, -1, 318, 319, -1, 78, 79, + 80, 81, 82, -1, -1, -1, -1, 188, 189, 133, + 290, 192, -1, -1, -1, 290, 27, 28, -1, 30, + 240, 241, -1, 34, 244, -1, 349, 350, 351, 188, + 189, 133, 43, 192, -1, 46, 242, -1, 318, 319, + -1, -1, 322, 318, 319, 368, 369, 133, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, -1, + 280, 242, -1, -1, 188, 189, -1, -1, 192, 349, + 350, 351, 83, 84, 349, 350, 351, 297, 298, 299, + 300, -1, -1, 242, -1, -1, 188, 189, 368, 369, + 192, -1, -1, 368, 369, -1, -1, -1, -1, -1, + 320, 321, 188, 189, -1, -1, 192, -1, 27, 28, + -1, 30, 318, 319, -1, 34, -1, -1, 242, -1, + -1, -1, -1, -1, 43, -1, -1, 46, 30, -1, + -1, -1, 352, 35, 36, 37, 38, 318, 319, -1, + 242, 43, -1, 349, 350, 351, -1, -1, 50, 51, + -1, -1, -1, -1, -1, -1, 242, -1, -1, 318, + 319, -1, 368, 369, 83, 84, 30, -1, 349, 350, + 351, 35, 36, 37, 38, -1, -1, 52, 53, 43, + -1, 83, 84, 58, 59, 60, 61, 368, 369, -1, + 349, 350, 351, -1, 318, 319, -1, 9, 10, -1, + 12, 13, -1, 78, 79, 80, 81, 82, -1, 368, + 369, -1, -1, -1, -1, 27, 318, 319, 30, 83, + 84, 27, 28, -1, 30, 349, 350, 351, 34, -1, + -1, 43, 318, 319, 46, -1, -1, 43, 50, 51, + 46, -1, -1, -1, 368, 369, -1, 349, 350, 351, + -1, -1, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 349, 350, 351, 368, 369, -1, -1, + -1, 83, 84, 3, 4, 5, -1, 83, 84, -1, + -1, 11, 368, 369, 14, 15, -1, 17, 18, 19, + -1, 21, 22, 23, 24, 25, 26, 27, -1, -1, + 30, -1, -1, -1, -1, 35, 36, 37, 38, -1, + -1, 41, 42, 43, -1, -1, -1, 3, 4, 5, + 50, 51, -1, -1, -1, 11, -1, -1, 14, 15, + -1, 17, 18, 19, -1, 21, 22, 23, 24, 25, + 26, 27, -1, -1, 30, -1, -1, -1, -1, 35, + 36, 37, 38, 83, 84, 41, 42, 43, -1, -1, + -1, 3, 4, 5, 50, 51, -1, -1, -1, 11, + -1, -1, 14, 15, -1, 17, 18, 19, -1, 21, + 22, 23, 24, 25, 26, 27, -1, -1, 30, -1, + -1, 8, -1, 35, 36, 37, 38, 83, 84, 41, + -1, 43, -1, -1, -1, -1, -1, -1, 50, 51, + 27, 28, 29, 30, 31, 32, 33, -1, 35, 36, + 37, 38, 39, -1, -1, -1, 43, 44, -1, -1, + 47, -1, -1, 27, 28, -1, 30, -1, -1, -1, + 34, 83, 84, -1, -1, 62, 63, -1, -1, 43, + -1, -1, 46, 8, -1, -1, -1, -1, -1, -1, + -1, -1, 79, -1, -1, 82, 83, 84, 85, 86, + 87, 88, 27, 28, 29, 30, 31, 32, 33, -1, + 35, 36, 37, 38, 39, -1, -1, -1, 43, 83, + 84, -1, 47, -1, 49, 27, 28, -1, 30, -1, + -1, -1, 34, 27, 28, -1, 30, 62, 63, -1, + 34, 43, -1, -1, 46, 8, -1, -1, -1, 43, + -1, -1, 46, -1, 79, -1, -1, 82, 83, 84, + 85, 86, 87, 88, 27, 28, 29, 30, 31, 32, + 33, -1, 35, 36, 37, 38, 39, -1, -1, -1, + 43, 83, 84, -1, 47, -1, -1, -1, -1, 83, + 84, -1, -1, -1, -1, -1, -1, -1, -1, 62, + 63, -1, -1, -1, -1, -1, -1, 8, -1, -1, + -1, -1, -1, -1, -1, -1, 79, -1, -1, 82, + 83, 84, 85, 86, 87, 88, 27, 28, 29, 30, + 31, 32, 33, -1, 35, 36, 37, 38, 39, -1, + -1, -1, 43, -1, -1, -1, 47, -1, -1, -1, + -1, -1, -1, -1, 30, -1, -1, -1, -1, -1, + -1, 62, 63, -1, -1, -1, -1, 43, -1, -1, + 46, -1, -1, -1, 50, 51, -1, -1, 79, -1, + -1, 82, 83, 84, 85, 86, 87, 88, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 40, + -1, -1, -1, -1, 45, -1, -1, 83, 84, -1, + -1, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 75, 76, 77, 78, 79, 80, + 81, 82, 40, -1, 52, 53, -1, 45, 56, 57, + 58, 59, 60, 61, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, -1, -1, -1, 75, 76, 77, + 78, 79, 80, 81, 82, -1, -1, 75, 76, 77, + 78, 79, 80, 81, 82, 40, -1, 52, 53, -1, + 45, 56, 57, 58, 59, 60, 61, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, + -1, 76, 77, 78, 79, 80, 81, 82, -1, -1, + 75, 76, 77, 78, 79, 80, 81, 82, 40, -1, + -1, -1, -1, 45, -1, -1, -1, -1, 40, -1, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + -1, -1, -1, 75, 76, 77, 78, 79, 80, 81, + 82, 40, -1, 75, 76, 77, 78, 79, 80, 81, + 82, 40, -1, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, -1, -1, -1, 75, 76, 77, 78, + 79, 80, 81, 82, 40, -1, 75, 76, 77, 78, + 79, 80, 81, 82, 40, -1, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, -1, -1, -1, 75, + 76, 77, 78, 79, 80, 81, 82, 40, -1, 75, + 76, 77, 78, 79, 80, 81, 82, 40, -1, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, + -1, -1, 75, 76, 77, 78, 79, 80, 81, 82, + -1, -1, 75, 76, 77, 78, 79, 80, 81, 82, + 44, -1, -1, -1, -1, -1, -1, -1, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 40, -1, -1, 43, -1, -1, -1, 47, 48, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, - 81, -1, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 37, -1, -1, -1, -1, 42, -1, - -1, 80, 81, -1, -1, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 72, 73, - 74, 75, 76, 77, 78, 79, 37, -1, 49, 50, - -1, 42, 53, 54, 55, 56, 57, 58, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, -1, -1, - -1, 72, 73, 74, 75, 76, 77, 78, 79, -1, - -1, 72, 73, 74, 75, 76, 77, 78, 79, 37, - -1, 49, 50, -1, 42, 53, 54, 55, 56, 57, - 58, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, -1, -1, -1, -1, 73, 74, 75, 76, 77, - 78, 79, -1, -1, 72, 73, 74, 75, 76, 77, - 78, 79, 37, -1, -1, -1, -1, 42, -1, -1, - -1, -1, 37, -1, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, -1, -1, -1, 72, 73, 74, - 75, 76, 77, 78, 79, 37, -1, 72, 73, 74, - 75, 76, 77, 78, 79, 37, -1, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, -1, -1, -1, - 72, 73, 74, 75, 76, 77, 78, 79, 37, -1, - 72, 73, 74, 75, 76, 77, 78, 79, 37, -1, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - -1, -1, -1, 72, 73, 74, 75, 76, 77, 78, - 79, 37, -1, 72, 73, 74, 75, 76, 77, 78, - 79, 37, -1, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, -1, -1, -1, 72, 73, 74, 75, - 76, 77, 78, 79, -1, -1, 72, 73, 74, 75, - 76, 77, 78, 79, 41, -1, -1, -1, -1, -1, - -1, -1, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 72, 73, 74, 75, 76, - 77, 78, 79, 41, -1, -1, -1, -1, -1, -1, - -1, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 72, 73, 74, 75, 76, 77, - 78, 79, 41, -1, -1, -1, -1, -1, -1, -1, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + -1, 75, 76, 77, 78, 79, 80, 81, 82, 44, + -1, -1, -1, -1, -1, -1, -1, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 72, 73, 74, 75, 76, 77, 78, - 79, 42, -1, -1, -1, -1, -1, -1, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 46, -1, - -1, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 72, 73, 74, 75, 76, 77, 78, 79, -1, - -1, -1, -1, -1, 72, 73, 74, 75, 76, 77, - 78, 79, 46, -1, -1, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 46, -1, -1, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 72, 73, - 74, 75, 76, 77, 78, 79, -1, -1, -1, -1, - -1, 72, 73, 74, 75, 76, 77, 78, 79, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 49, - 50, -1, 52, 53, 54, 55, 56, 57, 58, -1, - -1, -1, 72, 73, 74, 75, 76, 77, 78, 79, - -1, -1, 72, 73, 74, 75, 76, 77, 78, 79, - 49, 50, -1, -1, 53, 54, 55, 56, 57, 58, - 49, 50, -1, -1, 53, 54, 55, 56, 57, 58, - -1, -1, -1, -1, -1, 74, 75, 76, 77, 78, - 79, -1, -1, -1, -1, -1, 75, 76, 77, 78, - 79 + 75, 76, 77, 78, 79, 80, 81, 82, 44, -1, + -1, -1, -1, -1, -1, -1, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 75, + 76, 77, 78, 79, 80, 81, 82, 45, -1, -1, + -1, -1, -1, -1, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 49, -1, -1, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 75, 76, 77, + 78, 79, 80, 81, 82, -1, -1, -1, -1, -1, + 75, 76, 77, 78, 79, 80, 81, 82, 49, -1, + -1, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 49, -1, -1, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 75, 76, 77, 78, 79, 80, + 81, 82, -1, -1, -1, -1, -1, 75, 76, 77, + 78, 79, 80, 81, 82, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 52, 53, -1, 55, 56, + 57, 58, 59, 60, 61, -1, -1, -1, 75, 76, + 77, 78, 79, 80, 81, 82, -1, -1, 75, 76, + 77, 78, 79, 80, 81, 82, 52, 53, -1, -1, + 56, 57, 58, 59, 60, 61, 52, 53, -1, -1, + 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, + 76, -1, 78, 79, 80, 81, 82, -1, -1, -1, + -1, -1, 78, 79, 80, 81, 82 }; const unsigned char parser::yystos_[] = { - 0, 3, 4, 81, 95, 96, 97, 98, 99, 100, - 101, 155, 80, 156, 36, 0, 97, 98, 36, 61, - 46, 82, 158, 102, 155, 5, 24, 25, 26, 27, - 28, 29, 30, 32, 33, 34, 35, 36, 40, 44, - 59, 60, 76, 79, 83, 84, 85, 127, 129, 130, - 131, 132, 133, 134, 135, 136, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 37, 37, 42, 40, 135, 136, 155, 156, - 135, 136, 40, 127, 40, 41, 127, 138, 155, 127, - 127, 84, 85, 81, 46, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 72, 73, 74, 75, 76, - 77, 78, 79, 24, 25, 40, 43, 135, 136, 36, - 44, 46, 38, 104, 155, 40, 44, 40, 37, 42, - 127, 41, 42, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 135, 136, 135, 136, 127, 31, 155, 137, 138, - 139, 155, 8, 11, 12, 14, 15, 16, 18, 19, - 20, 21, 22, 23, 39, 47, 48, 103, 104, 105, + 0, 6, 7, 84, 98, 99, 100, 101, 102, 103, + 104, 161, 83, 162, 39, 0, 100, 101, 39, 64, + 49, 85, 164, 105, 161, 8, 27, 28, 29, 30, + 31, 32, 33, 35, 36, 37, 38, 39, 43, 47, + 62, 63, 79, 82, 86, 87, 88, 133, 135, 136, + 137, 138, 139, 140, 141, 142, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 40, 40, 45, 43, 141, 142, 161, 162, + 141, 142, 43, 133, 43, 44, 133, 144, 161, 133, + 133, 87, 88, 84, 49, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 75, 76, 77, 78, 79, + 80, 81, 82, 27, 28, 34, 43, 46, 141, 142, + 39, 47, 49, 41, 107, 161, 43, 47, 43, 40, + 45, 133, 44, 45, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 141, 142, 141, 142, 133, 161, 143, 144, + 145, 161, 3, 4, 5, 11, 14, 15, 17, 18, + 19, 21, 22, 23, 24, 25, 26, 42, 50, 51, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 128, - 132, 133, 142, 143, 145, 149, 150, 151, 152, 155, - 127, 155, 127, 127, 41, 127, 41, 37, 36, 127, - 46, 36, 36, 36, 36, 36, 76, 158, 161, 163, - 45, 46, 46, 46, 127, 132, 145, 145, 39, 103, - 46, 46, 46, 6, 7, 9, 10, 43, 47, 48, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 41, 42, 41, 137, 46, 127, 127, 125, 128, - 145, 155, 127, 45, 45, 45, 46, 36, 36, 36, - 36, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 41, 127, 36, 37, 37, 37, 46, 17, - 42, 37, 127, 127, 127, 127, 36, 37, 137, 103, - 103, 126, 127, 127, 155, 104, 37, 37, 42, 37, - 42, 37, 42, 137, 37, 13, 46, 37, 17, 46, - 46, 137, 46, 137, 46, 137, 37, 103, 125, 103, - 127, 37, 37, 37, 37, 37, 46, 46, 46, 103, - 103 + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 134, 138, 139, 148, 149, + 151, 155, 156, 157, 158, 161, 133, 161, 133, 133, + 44, 133, 44, 40, 39, 49, 39, 39, 133, 49, + 39, 39, 39, 39, 39, 79, 164, 167, 169, 48, + 49, 49, 49, 133, 138, 151, 151, 42, 106, 49, + 49, 49, 9, 10, 12, 13, 50, 51, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 44, + 45, 44, 143, 143, 143, 49, 133, 133, 131, 134, + 151, 161, 133, 48, 48, 48, 49, 39, 39, 39, + 39, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 44, 133, 39, 40, 40, 40, 40, 40, + 49, 20, 45, 40, 133, 133, 133, 133, 39, 40, + 143, 49, 49, 106, 106, 132, 133, 133, 161, 107, + 40, 40, 45, 40, 45, 40, 45, 143, 40, 16, + 49, 40, 20, 49, 49, 143, 49, 143, 49, 143, + 40, 106, 131, 106, 133, 40, 40, 40, 40, 40, + 49, 49, 49, 106, 106 }; const unsigned char parser::yyr1_[] = { - 0, 94, 95, 95, 96, 96, 96, 96, 97, 98, - 98, 98, 99, 100, 101, 102, 102, 102, 103, 103, - 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, - 103, 103, 103, 103, 103, 103, 103, 103, 104, 104, - 105, 105, 106, 106, 107, 108, 109, 109, 110, 111, - 111, 112, 112, 113, 114, 115, 116, 117, 118, 118, - 119, 120, 120, 120, 121, 122, 123, 124, 124, 125, - 125, 126, 126, 127, 127, 127, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 129, 129, 129, 129, 129, 129, 129, 129, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 131, - 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, - 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, - 131, 131, 131, 131, 131, 131, 131, 131, 131, 132, - 132, 132, 132, 133, 133, 133, 133, 134, 134, 134, - 134, 135, 135, 136, 136, 137, 137, 138, 138, 139, - 140, 140, 141, 142, 143, 144, 145, 145, 145, 145, - 145, 145, 145, 145, 146, 147, 148, 149, 150, 151, + 0, 97, 98, 98, 99, 99, 99, 99, 100, 101, + 101, 101, 102, 103, 104, 105, 105, 105, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 107, 107, 108, 108, 109, 109, 110, 111, 112, + 112, 113, 114, 114, 115, 115, 116, 117, 118, 119, + 120, 121, 121, 122, 123, 123, 123, 124, 125, 126, + 127, 127, 128, 129, 130, 131, 131, 132, 132, 133, + 133, 133, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 135, 135, 135, + 135, 135, 135, 135, 135, 136, 136, 136, 136, 136, + 136, 136, 136, 136, 136, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 138, 138, 138, 138, 139, + 139, 139, 139, 140, 140, 140, 140, 141, 141, 142, + 142, 143, 143, 144, 144, 145, 146, 146, 147, 148, + 149, 150, 151, 151, 151, 151, 151, 151, 151, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165 + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171 }; const signed char @@ -3869,23 +3961,23 @@ namespace xsk { namespace gsc { namespace iw5 { 0, 2, 1, 0, 2, 2, 1, 1, 3, 1, 1, 1, 5, 4, 5, 3, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, - 2, 1, 2, 2, 2, 6, 8, 6, 3, 8, - 6, 8, 6, 2, 5, 7, 5, 9, 7, 9, - 5, 3, 3, 3, 2, 2, 2, 3, 2, 1, - 0, 1, 0, 1, 1, 1, 2, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 3, 2, 2, 1, 2, 2, 2, 6, 8, + 6, 3, 8, 6, 8, 6, 2, 5, 7, 5, + 9, 7, 9, 5, 3, 3, 3, 2, 2, 2, + 3, 2, 2, 5, 5, 1, 0, 1, 0, 1, + 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 3, 3, 3, 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 3, 3, 2, 2, 3, - 3, 4, 6, 8, 9, 1, 1, 3, 1, 0, - 2, 3, 3, 4, 3, 3, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, - 1, 2, 1, 1, 1, 1, 1, 7, 2, 2, - 1, 1, 1, 1 + 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, + 2, 3, 3, 2, 2, 3, 3, 4, 6, 8, + 9, 1, 1, 3, 1, 0, 2, 3, 3, 4, + 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, + 1, 1, 1, 7, 2, 2, 1, 1, 1, 1 }; @@ -3895,26 +3987,26 @@ namespace xsk { namespace gsc { namespace iw5 { const short parser::yyrline_[] = { - 0, 231, 231, 232, 236, 238, 240, 242, 247, 252, - 253, 254, 258, 263, 268, 273, 275, 278, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 305, 306, - 310, 312, 317, 319, 324, 329, 334, 336, 341, 346, - 348, 353, 355, 360, 365, 370, 375, 380, 385, 387, - 392, 397, 399, 401, 406, 411, 416, 421, 423, 428, - 429, 433, 434, 438, 439, 440, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 462, 463, 464, 465, 466, 467, 468, 469, 473, - 474, 475, 476, 477, 478, 479, 480, 481, 482, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, - 507, 508, 509, 510, 511, 512, 513, 514, 515, 519, - 520, 521, 522, 526, 527, 528, 529, 533, 534, 535, - 536, 540, 542, 547, 549, 554, 555, 559, 561, 567, - 571, 573, 578, 583, 588, 593, 598, 599, 600, 601, - 602, 603, 604, 605, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, - 624, 625, 626, 627 + 0, 237, 237, 238, 242, 244, 246, 248, 253, 258, + 259, 260, 264, 269, 274, 279, 281, 284, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 314, 315, 319, 321, 326, 328, 333, 338, 343, + 345, 350, 355, 357, 362, 364, 369, 374, 379, 384, + 389, 394, 396, 401, 406, 408, 410, 415, 420, 425, + 430, 432, 437, 442, 447, 452, 453, 457, 458, 462, + 463, 464, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 478, 479, 480, 481, 482, 486, 487, 488, + 489, 490, 491, 492, 493, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 510, 511, 512, 513, 514, + 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, + 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, + 535, 536, 537, 538, 539, 543, 544, 545, 546, 550, + 551, 552, 553, 557, 558, 559, 560, 564, 566, 571, + 573, 578, 579, 583, 585, 591, 595, 597, 602, 607, + 612, 617, 622, 623, 624, 625, 626, 627, 628, 629, + 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, + 642, 643, 644, 645, 646, 647, 648, 649, 650, 651 }; void @@ -3947,9 +4039,9 @@ namespace xsk { namespace gsc { namespace iw5 { #line 13 "parser.ypp" } } } // xsk::gsc::iw5 -#line 3951 "parser.cpp" +#line 4043 "parser.cpp" -#line 629 "parser.ypp" +#line 653 "parser.ypp" void xsk::gsc::iw5::parser::error(const xsk::gsc::location& loc, const std::string& msg) diff --git a/src/iw5/xsk/parser.hpp b/src/iw5/xsk/parser.hpp index 9a339fb0..a9a30e00 100644 --- a/src/iw5/xsk/parser.hpp +++ b/src/iw5/xsk/parser.hpp @@ -510,85 +510,94 @@ namespace xsk { namespace gsc { namespace iw5 { // stmt_break char dummy27[sizeof (stmt_break_ptr)]; + // stmt_breakpoint + char dummy28[sizeof (stmt_breakpoint_ptr)]; + // stmt_call - char dummy28[sizeof (stmt_call_ptr)]; + char dummy29[sizeof (stmt_call_ptr)]; // stmt_case - char dummy29[sizeof (stmt_case_ptr)]; + char dummy30[sizeof (stmt_case_ptr)]; // stmt_continue - char dummy30[sizeof (stmt_continue_ptr)]; + char dummy31[sizeof (stmt_continue_ptr)]; // stmt_default - char dummy31[sizeof (stmt_default_ptr)]; + char dummy32[sizeof (stmt_default_ptr)]; // stmt_endon - char dummy32[sizeof (stmt_endon_ptr)]; + char dummy33[sizeof (stmt_endon_ptr)]; // stmt_for - char dummy33[sizeof (stmt_for_ptr)]; + char dummy34[sizeof (stmt_for_ptr)]; // stmt_foreach - char dummy34[sizeof (stmt_foreach_ptr)]; + char dummy35[sizeof (stmt_foreach_ptr)]; // stmt_if - char dummy35[sizeof (stmt_if_ptr)]; + char dummy36[sizeof (stmt_if_ptr)]; // stmt_ifelse - char dummy36[sizeof (stmt_ifelse_ptr)]; + char dummy37[sizeof (stmt_ifelse_ptr)]; // stmt_block // stmt_list - char dummy37[sizeof (stmt_list_ptr)]; + char dummy38[sizeof (stmt_list_ptr)]; // stmt_notify - char dummy38[sizeof (stmt_notify_ptr)]; + char dummy39[sizeof (stmt_notify_ptr)]; + + // stmt_prof_begin + char dummy40[sizeof (stmt_prof_begin_ptr)]; + + // stmt_prof_end + char dummy41[sizeof (stmt_prof_end_ptr)]; // stmt // for_stmt - char dummy39[sizeof (stmt_ptr)]; + char dummy42[sizeof (stmt_ptr)]; // stmt_return - char dummy40[sizeof (stmt_return_ptr)]; + char dummy43[sizeof (stmt_return_ptr)]; // stmt_switch - char dummy41[sizeof (stmt_switch_ptr)]; + char dummy44[sizeof (stmt_switch_ptr)]; // stmt_wait - char dummy42[sizeof (stmt_wait_ptr)]; + char dummy45[sizeof (stmt_wait_ptr)]; // stmt_waittill - char dummy43[sizeof (stmt_waittill_ptr)]; + char dummy46[sizeof (stmt_waittill_ptr)]; // stmt_waittillframeend - char dummy44[sizeof (stmt_waittillframeend_ptr)]; + char dummy47[sizeof (stmt_waittillframeend_ptr)]; // stmt_waittillmatch - char dummy45[sizeof (stmt_waittillmatch_ptr)]; + char dummy48[sizeof (stmt_waittillmatch_ptr)]; // stmt_while - char dummy46[sizeof (stmt_while_ptr)]; + char dummy49[sizeof (stmt_while_ptr)]; // string - char dummy47[sizeof (string_ptr)]; + char dummy50[sizeof (string_ptr)]; // thisthread - char dummy48[sizeof (thisthread_ptr)]; + char dummy51[sizeof (thisthread_ptr)]; // thread - char dummy49[sizeof (thread_ptr)]; + char dummy52[sizeof (thread_ptr)]; // true - char dummy50[sizeof (true_ptr)]; + char dummy53[sizeof (true_ptr)]; // undefined - char dummy51[sizeof (undefined_ptr)]; + char dummy54[sizeof (undefined_ptr)]; // usingtree - char dummy52[sizeof (usingtree_ptr)]; + char dummy55[sizeof (usingtree_ptr)]; // vector - char dummy53[sizeof (vector_ptr)]; + char dummy56[sizeof (vector_ptr)]; }; /// The size of the largest semantic type. @@ -640,97 +649,100 @@ namespace xsk { namespace gsc { namespace iw5 { IW5EOF = 0, // "end of file" IW5error = 1, // error IW5UNDEF = 2, // "invalid token" - INCLUDE = 3, // "#include" - USINGTREE = 4, // "#using_animtree" - ANIMTREE = 5, // "#animtree" - ENDON = 6, // "endon" - NOTIFY = 7, // "notify" - WAIT = 8, // "wait" - WAITTILL = 9, // "waittill" - WAITTILLMATCH = 10, // "waittillmatch" - WAITTILLFRAMEEND = 11, // "waittillframeend" - IF = 12, // "if" - ELSE = 13, // "else" - WHILE = 14, // "while" - FOR = 15, // "for" - FOREACH = 16, // "foreach" - IN = 17, // "in" - SWITCH = 18, // "switch" - CASE = 19, // "case" - DEFAULT = 20, // "default" - BREAK = 21, // "break" - CONTINUE = 22, // "continue" - RETURN = 23, // "return" - THREAD = 24, // "thread" - CHILDTHREAD = 25, // "childthread" - THISTHREAD = 26, // "thisthread" - CALL = 27, // "call" - TRUE = 28, // "true" - FALSE = 29, // "false" - UNDEFINED = 30, // "undefined" - SIZE = 31, // "size" - GAME = 32, // "game" - SELF = 33, // "self" - ANIM = 34, // "anim" - LEVEL = 35, // "level" - LPAREN = 36, // "(" - RPAREN = 37, // ")" - LBRACE = 38, // "{" - RBRACE = 39, // "}" - LBRACKET = 40, // "[" - RBRACKET = 41, // "]" - COMMA = 42, // "," - DOT = 43, // "." - DOUBLECOLON = 44, // "::" - COLON = 45, // ":" - SEMICOLON = 46, // ";" - INCREMENT = 47, // "++" - DECREMENT = 48, // "--" - LSHIFT = 49, // "<<" - RSHIFT = 50, // ">>" - OR = 51, // "||" - AND = 52, // "&&" - EQUALITY = 53, // "==" - INEQUALITY = 54, // "!=" - LESS_EQUAL = 55, // "<=" - GREATER_EQUAL = 56, // ">=" - LESS = 57, // "<" - GREATER = 58, // ">" - NOT = 59, // "!" - COMPLEMENT = 60, // "~" - ASSIGN = 61, // "=" - ASSIGN_ADD = 62, // "+=" - ASSIGN_SUB = 63, // "-=" - ASSIGN_MULT = 64, // "*=" - ASSIGN_DIV = 65, // "/=" - ASSIGN_MOD = 66, // "%=" - ASSIGN_BITWISE_OR = 67, // "|=" - ASSIGN_BITWISE_AND = 68, // "&=" - ASSIGN_BITWISE_EXOR = 69, // "^=" - ASSIGN_RSHIFT = 70, // ">>=" - ASSIGN_LSHIFT = 71, // "<<=" - BITWISE_OR = 72, // "|" - BITWISE_AND = 73, // "&" - BITWISE_EXOR = 74, // "^" - ADD = 75, // "+" - SUB = 76, // "-" - MULT = 77, // "*" - DIV = 78, // "/" - MOD = 79, // "%" - FILE = 80, // "file path" - NAME = 81, // "identifier" - STRING = 82, // "string literal" - ISTRING = 83, // "localized string" - FLOAT = 84, // "float" - INTEGER = 85, // "int" - ADD_ARRAY = 86, // ADD_ARRAY - THEN = 87, // THEN - NEG = 88, // NEG - ANIMREF = 89, // ANIMREF - PREINC = 90, // PREINC - PREDEC = 91, // PREDEC - POSTINC = 92, // POSTINC - POSTDEC = 93 // POSTDEC + BREAKPOINT = 3, // "breakpoint" + PROFBEGIN = 4, // "prof_begin" + PROFEND = 5, // "prof_end" + INCLUDE = 6, // "#include" + USINGTREE = 7, // "#using_animtree" + ANIMTREE = 8, // "#animtree" + ENDON = 9, // "endon" + NOTIFY = 10, // "notify" + WAIT = 11, // "wait" + WAITTILL = 12, // "waittill" + WAITTILLMATCH = 13, // "waittillmatch" + WAITTILLFRAMEEND = 14, // "waittillframeend" + IF = 15, // "if" + ELSE = 16, // "else" + WHILE = 17, // "while" + FOR = 18, // "for" + FOREACH = 19, // "foreach" + IN = 20, // "in" + SWITCH = 21, // "switch" + CASE = 22, // "case" + DEFAULT = 23, // "default" + BREAK = 24, // "break" + CONTINUE = 25, // "continue" + RETURN = 26, // "return" + THREAD = 27, // "thread" + CHILDTHREAD = 28, // "childthread" + THISTHREAD = 29, // "thisthread" + CALL = 30, // "call" + TRUE = 31, // "true" + FALSE = 32, // "false" + UNDEFINED = 33, // "undefined" + SIZE = 34, // ".size" + GAME = 35, // "game" + SELF = 36, // "self" + ANIM = 37, // "anim" + LEVEL = 38, // "level" + LPAREN = 39, // "(" + RPAREN = 40, // ")" + LBRACE = 41, // "{" + RBRACE = 42, // "}" + LBRACKET = 43, // "[" + RBRACKET = 44, // "]" + COMMA = 45, // "," + DOT = 46, // "." + DOUBLECOLON = 47, // "::" + COLON = 48, // ":" + SEMICOLON = 49, // ";" + INCREMENT = 50, // "++" + DECREMENT = 51, // "--" + LSHIFT = 52, // "<<" + RSHIFT = 53, // ">>" + OR = 54, // "||" + AND = 55, // "&&" + EQUALITY = 56, // "==" + INEQUALITY = 57, // "!=" + LESS_EQUAL = 58, // "<=" + GREATER_EQUAL = 59, // ">=" + LESS = 60, // "<" + GREATER = 61, // ">" + NOT = 62, // "!" + COMPLEMENT = 63, // "~" + ASSIGN = 64, // "=" + ASSIGN_ADD = 65, // "+=" + ASSIGN_SUB = 66, // "-=" + ASSIGN_MULT = 67, // "*=" + ASSIGN_DIV = 68, // "/=" + ASSIGN_MOD = 69, // "%=" + ASSIGN_BITWISE_OR = 70, // "|=" + ASSIGN_BITWISE_AND = 71, // "&=" + ASSIGN_BITWISE_EXOR = 72, // "^=" + ASSIGN_RSHIFT = 73, // ">>=" + ASSIGN_LSHIFT = 74, // "<<=" + BITWISE_OR = 75, // "|" + BITWISE_AND = 76, // "&" + BITWISE_EXOR = 77, // "^" + ADD = 78, // "+" + SUB = 79, // "-" + MULT = 80, // "*" + DIV = 81, // "/" + MOD = 82, // "%" + FILE = 83, // "file path" + NAME = 84, // "identifier" + STRING = 85, // "string literal" + ISTRING = 86, // "localized string" + FLOAT = 87, // "float" + INTEGER = 88, // "int" + ADD_ARRAY = 89, // ADD_ARRAY + THEN = 90, // THEN + NEG = 91, // NEG + ANIMREF = 92, // ANIMREF + PREINC = 93, // PREINC + PREDEC = 94, // PREDEC + POSTINC = 95, // POSTINC + POSTDEC = 96 // POSTDEC }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; @@ -747,174 +759,180 @@ namespace xsk { namespace gsc { namespace iw5 { { enum symbol_kind_type { - YYNTOKENS = 94, ///< Number of tokens. + YYNTOKENS = 97, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error S_YYUNDEF = 2, // "invalid token" - S_INCLUDE = 3, // "#include" - S_USINGTREE = 4, // "#using_animtree" - S_ANIMTREE = 5, // "#animtree" - S_ENDON = 6, // "endon" - S_NOTIFY = 7, // "notify" - S_WAIT = 8, // "wait" - S_WAITTILL = 9, // "waittill" - S_WAITTILLMATCH = 10, // "waittillmatch" - S_WAITTILLFRAMEEND = 11, // "waittillframeend" - S_IF = 12, // "if" - S_ELSE = 13, // "else" - S_WHILE = 14, // "while" - S_FOR = 15, // "for" - S_FOREACH = 16, // "foreach" - S_IN = 17, // "in" - S_SWITCH = 18, // "switch" - S_CASE = 19, // "case" - S_DEFAULT = 20, // "default" - S_BREAK = 21, // "break" - S_CONTINUE = 22, // "continue" - S_RETURN = 23, // "return" - S_THREAD = 24, // "thread" - S_CHILDTHREAD = 25, // "childthread" - S_THISTHREAD = 26, // "thisthread" - S_CALL = 27, // "call" - S_TRUE = 28, // "true" - S_FALSE = 29, // "false" - S_UNDEFINED = 30, // "undefined" - S_SIZE = 31, // "size" - S_GAME = 32, // "game" - S_SELF = 33, // "self" - S_ANIM = 34, // "anim" - S_LEVEL = 35, // "level" - S_LPAREN = 36, // "(" - S_RPAREN = 37, // ")" - S_LBRACE = 38, // "{" - S_RBRACE = 39, // "}" - S_LBRACKET = 40, // "[" - S_RBRACKET = 41, // "]" - S_COMMA = 42, // "," - S_DOT = 43, // "." - S_DOUBLECOLON = 44, // "::" - S_COLON = 45, // ":" - S_SEMICOLON = 46, // ";" - S_INCREMENT = 47, // "++" - S_DECREMENT = 48, // "--" - S_LSHIFT = 49, // "<<" - S_RSHIFT = 50, // ">>" - S_OR = 51, // "||" - S_AND = 52, // "&&" - S_EQUALITY = 53, // "==" - S_INEQUALITY = 54, // "!=" - S_LESS_EQUAL = 55, // "<=" - S_GREATER_EQUAL = 56, // ">=" - S_LESS = 57, // "<" - S_GREATER = 58, // ">" - S_NOT = 59, // "!" - S_COMPLEMENT = 60, // "~" - S_ASSIGN = 61, // "=" - S_ASSIGN_ADD = 62, // "+=" - S_ASSIGN_SUB = 63, // "-=" - S_ASSIGN_MULT = 64, // "*=" - S_ASSIGN_DIV = 65, // "/=" - S_ASSIGN_MOD = 66, // "%=" - S_ASSIGN_BITWISE_OR = 67, // "|=" - S_ASSIGN_BITWISE_AND = 68, // "&=" - S_ASSIGN_BITWISE_EXOR = 69, // "^=" - S_ASSIGN_RSHIFT = 70, // ">>=" - S_ASSIGN_LSHIFT = 71, // "<<=" - S_BITWISE_OR = 72, // "|" - S_BITWISE_AND = 73, // "&" - S_BITWISE_EXOR = 74, // "^" - S_ADD = 75, // "+" - S_SUB = 76, // "-" - S_MULT = 77, // "*" - S_DIV = 78, // "/" - S_MOD = 79, // "%" - S_FILE = 80, // "file path" - S_NAME = 81, // "identifier" - S_STRING = 82, // "string literal" - S_ISTRING = 83, // "localized string" - S_FLOAT = 84, // "float" - S_INTEGER = 85, // "int" - S_ADD_ARRAY = 86, // ADD_ARRAY - S_THEN = 87, // THEN - S_NEG = 88, // NEG - S_ANIMREF = 89, // ANIMREF - S_PREINC = 90, // PREINC - S_PREDEC = 91, // PREDEC - S_POSTINC = 92, // POSTINC - S_POSTDEC = 93, // POSTDEC - S_YYACCEPT = 94, // $accept - S_root = 95, // root - S_program = 96, // program - S_include = 97, // include - S_define = 98, // define - S_usingtree = 99, // usingtree - S_constant = 100, // constant - S_thread = 101, // thread - S_parameters = 102, // parameters - S_stmt = 103, // stmt - S_stmt_block = 104, // stmt_block - S_stmt_list = 105, // stmt_list - S_stmt_call = 106, // stmt_call - S_stmt_assign = 107, // stmt_assign - S_stmt_endon = 108, // stmt_endon - S_stmt_notify = 109, // stmt_notify - S_stmt_wait = 110, // stmt_wait - S_stmt_waittill = 111, // stmt_waittill - S_stmt_waittillmatch = 112, // stmt_waittillmatch - S_stmt_waittillframeend = 113, // stmt_waittillframeend - S_stmt_if = 114, // stmt_if - S_stmt_ifelse = 115, // stmt_ifelse - S_stmt_while = 116, // stmt_while - S_stmt_for = 117, // stmt_for - S_stmt_foreach = 118, // stmt_foreach - S_stmt_switch = 119, // stmt_switch - S_stmt_case = 120, // stmt_case - S_stmt_default = 121, // stmt_default - S_stmt_break = 122, // stmt_break - S_stmt_continue = 123, // stmt_continue - S_stmt_return = 124, // stmt_return - S_for_stmt = 125, // for_stmt - S_for_expr = 126, // for_expr - S_expr = 127, // expr - S_expr_assign = 128, // expr_assign - S_expr_compare = 129, // expr_compare - S_expr_binary = 130, // expr_binary - S_expr_primitive = 131, // expr_primitive - S_expr_call = 132, // expr_call - S_expr_call_thread = 133, // expr_call_thread - S_expr_call_childthread = 134, // expr_call_childthread - S_expr_call_function = 135, // expr_call_function - S_expr_call_pointer = 136, // expr_call_pointer - S_expr_arguments = 137, // expr_arguments - S_expr_arguments_filled = 138, // expr_arguments_filled - S_expr_arguments_empty = 139, // expr_arguments_empty - S_expr_function = 140, // expr_function - S_expr_add_array = 141, // expr_add_array - S_expr_array = 142, // expr_array - S_expr_field = 143, // expr_field - S_expr_size = 144, // expr_size - S_object = 145, // object - S_thisthread = 146, // thisthread - S_empty_array = 147, // empty_array - S_undefined = 148, // undefined - S_game = 149, // game - S_self = 150, // self - S_anim = 151, // anim - S_level = 152, // level - S_animation = 153, // animation - S_animtree = 154, // animtree - S_name = 155, // name - S_file = 156, // file - S_istring = 157, // istring - S_string = 158, // string - S_vector = 159, // vector - S_neg_float = 160, // neg_float - S_neg_integer = 161, // neg_integer - S_float = 162, // float - S_integer = 163, // integer - S_false = 164, // false - S_true = 165 // true + S_BREAKPOINT = 3, // "breakpoint" + S_PROFBEGIN = 4, // "prof_begin" + S_PROFEND = 5, // "prof_end" + S_INCLUDE = 6, // "#include" + S_USINGTREE = 7, // "#using_animtree" + S_ANIMTREE = 8, // "#animtree" + S_ENDON = 9, // "endon" + S_NOTIFY = 10, // "notify" + S_WAIT = 11, // "wait" + S_WAITTILL = 12, // "waittill" + S_WAITTILLMATCH = 13, // "waittillmatch" + S_WAITTILLFRAMEEND = 14, // "waittillframeend" + S_IF = 15, // "if" + S_ELSE = 16, // "else" + S_WHILE = 17, // "while" + S_FOR = 18, // "for" + S_FOREACH = 19, // "foreach" + S_IN = 20, // "in" + S_SWITCH = 21, // "switch" + S_CASE = 22, // "case" + S_DEFAULT = 23, // "default" + S_BREAK = 24, // "break" + S_CONTINUE = 25, // "continue" + S_RETURN = 26, // "return" + S_THREAD = 27, // "thread" + S_CHILDTHREAD = 28, // "childthread" + S_THISTHREAD = 29, // "thisthread" + S_CALL = 30, // "call" + S_TRUE = 31, // "true" + S_FALSE = 32, // "false" + S_UNDEFINED = 33, // "undefined" + S_SIZE = 34, // ".size" + S_GAME = 35, // "game" + S_SELF = 36, // "self" + S_ANIM = 37, // "anim" + S_LEVEL = 38, // "level" + S_LPAREN = 39, // "(" + S_RPAREN = 40, // ")" + S_LBRACE = 41, // "{" + S_RBRACE = 42, // "}" + S_LBRACKET = 43, // "[" + S_RBRACKET = 44, // "]" + S_COMMA = 45, // "," + S_DOT = 46, // "." + S_DOUBLECOLON = 47, // "::" + S_COLON = 48, // ":" + S_SEMICOLON = 49, // ";" + S_INCREMENT = 50, // "++" + S_DECREMENT = 51, // "--" + S_LSHIFT = 52, // "<<" + S_RSHIFT = 53, // ">>" + S_OR = 54, // "||" + S_AND = 55, // "&&" + S_EQUALITY = 56, // "==" + S_INEQUALITY = 57, // "!=" + S_LESS_EQUAL = 58, // "<=" + S_GREATER_EQUAL = 59, // ">=" + S_LESS = 60, // "<" + S_GREATER = 61, // ">" + S_NOT = 62, // "!" + S_COMPLEMENT = 63, // "~" + S_ASSIGN = 64, // "=" + S_ASSIGN_ADD = 65, // "+=" + S_ASSIGN_SUB = 66, // "-=" + S_ASSIGN_MULT = 67, // "*=" + S_ASSIGN_DIV = 68, // "/=" + S_ASSIGN_MOD = 69, // "%=" + S_ASSIGN_BITWISE_OR = 70, // "|=" + S_ASSIGN_BITWISE_AND = 71, // "&=" + S_ASSIGN_BITWISE_EXOR = 72, // "^=" + S_ASSIGN_RSHIFT = 73, // ">>=" + S_ASSIGN_LSHIFT = 74, // "<<=" + S_BITWISE_OR = 75, // "|" + S_BITWISE_AND = 76, // "&" + S_BITWISE_EXOR = 77, // "^" + S_ADD = 78, // "+" + S_SUB = 79, // "-" + S_MULT = 80, // "*" + S_DIV = 81, // "/" + S_MOD = 82, // "%" + S_FILE = 83, // "file path" + S_NAME = 84, // "identifier" + S_STRING = 85, // "string literal" + S_ISTRING = 86, // "localized string" + S_FLOAT = 87, // "float" + S_INTEGER = 88, // "int" + S_ADD_ARRAY = 89, // ADD_ARRAY + S_THEN = 90, // THEN + S_NEG = 91, // NEG + S_ANIMREF = 92, // ANIMREF + S_PREINC = 93, // PREINC + S_PREDEC = 94, // PREDEC + S_POSTINC = 95, // POSTINC + S_POSTDEC = 96, // POSTDEC + S_YYACCEPT = 97, // $accept + S_root = 98, // root + S_program = 99, // program + S_include = 100, // include + S_define = 101, // define + S_usingtree = 102, // usingtree + S_constant = 103, // constant + S_thread = 104, // thread + S_parameters = 105, // parameters + S_stmt = 106, // stmt + S_stmt_block = 107, // stmt_block + S_stmt_list = 108, // stmt_list + S_stmt_call = 109, // stmt_call + S_stmt_assign = 110, // stmt_assign + S_stmt_endon = 111, // stmt_endon + S_stmt_notify = 112, // stmt_notify + S_stmt_wait = 113, // stmt_wait + S_stmt_waittill = 114, // stmt_waittill + S_stmt_waittillmatch = 115, // stmt_waittillmatch + S_stmt_waittillframeend = 116, // stmt_waittillframeend + S_stmt_if = 117, // stmt_if + S_stmt_ifelse = 118, // stmt_ifelse + S_stmt_while = 119, // stmt_while + S_stmt_for = 120, // stmt_for + S_stmt_foreach = 121, // stmt_foreach + S_stmt_switch = 122, // stmt_switch + S_stmt_case = 123, // stmt_case + S_stmt_default = 124, // stmt_default + S_stmt_break = 125, // stmt_break + S_stmt_continue = 126, // stmt_continue + S_stmt_return = 127, // stmt_return + S_stmt_breakpoint = 128, // stmt_breakpoint + S_stmt_prof_begin = 129, // stmt_prof_begin + S_stmt_prof_end = 130, // stmt_prof_end + S_for_stmt = 131, // for_stmt + S_for_expr = 132, // for_expr + S_expr = 133, // expr + S_expr_assign = 134, // expr_assign + S_expr_compare = 135, // expr_compare + S_expr_binary = 136, // expr_binary + S_expr_primitive = 137, // expr_primitive + S_expr_call = 138, // expr_call + S_expr_call_thread = 139, // expr_call_thread + S_expr_call_childthread = 140, // expr_call_childthread + S_expr_call_function = 141, // expr_call_function + S_expr_call_pointer = 142, // expr_call_pointer + S_expr_arguments = 143, // expr_arguments + S_expr_arguments_filled = 144, // expr_arguments_filled + S_expr_arguments_empty = 145, // expr_arguments_empty + S_expr_function = 146, // expr_function + S_expr_add_array = 147, // expr_add_array + S_expr_array = 148, // expr_array + S_expr_field = 149, // expr_field + S_expr_size = 150, // expr_size + S_object = 151, // object + S_thisthread = 152, // thisthread + S_empty_array = 153, // empty_array + S_undefined = 154, // undefined + S_game = 155, // game + S_self = 156, // self + S_anim = 157, // anim + S_level = 158, // level + S_animation = 159, // animation + S_animtree = 160, // animtree + S_name = 161, // name + S_file = 162, // file + S_istring = 163, // istring + S_string = 164, // string + S_vector = 165, // vector + S_neg_float = 166, // neg_float + S_neg_integer = 167, // neg_integer + S_float = 168, // float + S_integer = 169, // integer + S_false = 170, // false + S_true = 171 // true }; }; @@ -1080,6 +1098,10 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< stmt_break_ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.move< stmt_breakpoint_ptr > (std::move (that.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.move< stmt_call_ptr > (std::move (that.value)); break; @@ -1125,6 +1147,14 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< stmt_notify_ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.move< stmt_prof_begin_ptr > (std::move (that.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.move< stmt_prof_end_ptr > (std::move (that.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.move< stmt_ptr > (std::move (that.value)); @@ -1587,6 +1617,20 @@ namespace xsk { namespace gsc { namespace iw5 { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, stmt_breakpoint_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_breakpoint_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_call_ptr&& v, location_type&& l) : Base (t) @@ -1741,6 +1785,34 @@ namespace xsk { namespace gsc { namespace iw5 { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, stmt_prof_begin_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_prof_begin_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_prof_end_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_prof_end_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_ptr&& v, location_type&& l) : Base (t) @@ -2102,6 +2174,10 @@ switch (yykind) value.template destroy< stmt_break_ptr > (); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.template destroy< stmt_breakpoint_ptr > (); + break; + case symbol_kind::S_stmt_call: // stmt_call value.template destroy< stmt_call_ptr > (); break; @@ -2147,6 +2223,14 @@ switch (yykind) value.template destroy< stmt_notify_ptr > (); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.template destroy< stmt_prof_begin_ptr > (); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.template destroy< stmt_prof_end_ptr > (); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.template destroy< stmt_ptr > (); @@ -2409,6 +2493,51 @@ switch (yykind) return symbol_type (token::IW5UNDEF, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_BREAKPOINT (location_type l) + { + return symbol_type (token::BREAKPOINT, std::move (l)); + } +#else + static + symbol_type + make_BREAKPOINT (const location_type& l) + { + return symbol_type (token::BREAKPOINT, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_PROFBEGIN (location_type l) + { + return symbol_type (token::PROFBEGIN, std::move (l)); + } +#else + static + symbol_type + make_PROFBEGIN (const location_type& l) + { + return symbol_type (token::PROFBEGIN, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_PROFEND (location_type l) + { + return symbol_type (token::PROFEND, std::move (l)); + } +#else + static + symbol_type + make_PROFEND (const location_type& l) + { + return symbol_type (token::PROFEND, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4118,8 +4247,8 @@ switch (yykind) /// Constants. enum { - yylast_ = 1590, ///< Last index in yytable_. - yynnts_ = 72, ///< Number of nonterminal symbols. + yylast_ = 1556, ///< Last index in yytable_. + yynnts_ = 75, ///< Number of nonterminal symbols. yyfinal_ = 15 ///< Termination state number. }; @@ -4276,6 +4405,10 @@ switch (yykind) value.copy< stmt_break_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.copy< stmt_breakpoint_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.copy< stmt_call_ptr > (YY_MOVE (that.value)); break; @@ -4321,6 +4454,14 @@ switch (yykind) value.copy< stmt_notify_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.copy< stmt_prof_begin_ptr > (YY_MOVE (that.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.copy< stmt_prof_end_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.copy< stmt_ptr > (YY_MOVE (that.value)); @@ -4540,6 +4681,10 @@ switch (yykind) value.move< stmt_break_ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.move< stmt_breakpoint_ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.move< stmt_call_ptr > (YY_MOVE (s.value)); break; @@ -4585,6 +4730,14 @@ switch (yykind) value.move< stmt_notify_ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.move< stmt_prof_begin_ptr > (YY_MOVE (s.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.move< stmt_prof_end_ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.move< stmt_ptr > (YY_MOVE (s.value)); @@ -4709,7 +4862,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::iw5 -#line 4713 "parser.hpp" +#line 4866 "parser.hpp" diff --git a/src/iw6/xsk/lexer.cpp b/src/iw6/xsk/lexer.cpp index 8f060935..55b59c71 100644 --- a/src/iw6/xsk/lexer.cpp +++ b/src/iw6/xsk/lexer.cpp @@ -553,8 +553,8 @@ static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 96 -#define YY_END_OF_BUFFER 97 +#define YY_NUM_RULES 99 +#define YY_END_OF_BUFFER 100 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -562,38 +562,41 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[281] = +static const flex_int16_t yy_accept[300] = { 0, - 0, 0, 0, 0, 0, 0, 97, 95, 1, 2, - 84, 95, 95, 83, 87, 95, 45, 46, 81, 79, - 51, 80, 52, 82, 94, 54, 55, 68, 78, 69, - 90, 49, 50, 88, 90, 90, 90, 90, 90, 90, - 90, 90, 90, 90, 90, 90, 90, 90, 90, 47, - 86, 48, 85, 5, 6, 5, 9, 10, 9, 65, - 0, 92, 0, 0, 0, 0, 74, 0, 63, 0, - 76, 0, 0, 72, 56, 70, 57, 71, 93, 8, - 4, 3, 73, 93, 94, 0, 0, 53, 60, 66, - 64, 67, 61, 90, 77, 90, 90, 90, 90, 90, + 0, 0, 0, 0, 0, 0, 100, 98, 1, 2, + 87, 98, 98, 86, 90, 98, 48, 49, 84, 82, + 54, 83, 55, 85, 97, 57, 58, 71, 81, 72, + 93, 52, 53, 91, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 50, 89, 51, 88, 5, 6, 5, 9, 10, 9, + 68, 0, 95, 0, 0, 0, 0, 77, 0, 66, + 0, 79, 0, 0, 75, 59, 73, 60, 74, 96, + 0, 8, 4, 3, 76, 96, 97, 0, 0, 56, + 63, 69, 67, 70, 64, 93, 80, 93, 93, 93, - 90, 90, 90, 90, 90, 90, 21, 26, 90, 90, - 90, 90, 90, 90, 90, 90, 90, 90, 90, 75, - 62, 7, 11, 0, 92, 0, 0, 0, 0, 0, - 91, 0, 0, 0, 0, 92, 0, 93, 3, 93, - 93, 89, 58, 59, 90, 90, 90, 90, 90, 90, - 90, 90, 90, 90, 24, 90, 90, 90, 90, 90, - 90, 90, 90, 90, 90, 90, 90, 90, 0, 0, - 0, 0, 91, 0, 0, 91, 0, 43, 90, 36, - 28, 90, 90, 90, 22, 90, 90, 90, 41, 90, - 90, 90, 42, 40, 90, 90, 90, 37, 90, 17, + 93, 93, 93, 93, 93, 93, 93, 93, 24, 29, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 78, 65, 7, 11, 0, 95, 0, 0, 0, + 0, 0, 94, 0, 0, 0, 0, 95, 0, 96, + 0, 3, 96, 96, 92, 61, 62, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 27, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 0, 0, 0, 0, 94, 0, 0, 94, 0, + 0, 46, 93, 39, 31, 93, 93, 93, 25, 93, + 93, 93, 44, 93, 93, 93, 93, 45, 93, 93, + + 93, 40, 93, 20, 93, 0, 0, 0, 43, 33, + 93, 93, 93, 18, 41, 93, 47, 93, 93, 93, + 93, 93, 93, 93, 93, 26, 0, 0, 0, 93, + 93, 93, 93, 93, 19, 93, 93, 35, 30, 93, + 36, 93, 93, 0, 0, 0, 93, 93, 93, 32, + 28, 93, 93, 93, 93, 93, 0, 15, 0, 93, + 93, 34, 93, 14, 93, 93, 21, 17, 0, 93, + 93, 93, 93, 42, 93, 93, 0, 12, 93, 13, + 38, 93, 93, 0, 37, 93, 93, 0, 93, 93, + 0, 93, 22, 0, 93, 16, 93, 23, 0 - 90, 0, 0, 0, 30, 90, 90, 90, 15, 38, - 90, 44, 90, 90, 90, 90, 90, 90, 90, 23, - 0, 0, 0, 90, 90, 90, 90, 16, 32, 27, - 90, 33, 90, 90, 0, 0, 0, 90, 90, 29, - 25, 90, 90, 90, 0, 12, 0, 90, 31, 90, - 90, 18, 14, 0, 90, 90, 39, 90, 90, 0, - 90, 35, 90, 90, 0, 34, 90, 90, 0, 90, - 90, 0, 90, 19, 0, 90, 13, 90, 20, 0 } ; static const YY_CHAR yy_ec[256] = @@ -610,8 +613,8 @@ static const YY_CHAR yy_ec[256] = 25, 26, 27, 28, 29, 1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 24, 39, 40, 41, 42, - 43, 24, 24, 44, 45, 46, 47, 48, 49, 24, - 50, 51, 52, 53, 54, 55, 1, 1, 1, 1, + 43, 44, 24, 45, 46, 47, 48, 49, 50, 24, + 51, 52, 53, 54, 55, 56, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -628,224 +631,238 @@ static const YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static const YY_CHAR yy_meta[56] = +static const YY_CHAR yy_meta[57] = { 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 4, 1, 1, 1, 1, 1, 4, 1, 5, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 1, 1, 1, 1 + 4, 4, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[295] = +static const flex_int16_t yy_base[314] = { 0, - 0, 0, 53, 54, 55, 56, 530, 531, 531, 531, - 507, 55, 33, 506, 64, 58, 531, 531, 505, 55, - 531, 60, 508, 73, 71, 506, 531, 70, 502, 71, - 497, 531, 531, 500, 57, 44, 70, 72, 75, 78, - 48, 76, 86, 79, 90, 93, 88, 84, 103, 531, - 81, 531, 531, 531, 531, 504, 531, 531, 503, 531, - 104, 531, 132, 477, 476, 472, 531, 118, 531, 119, - 531, 127, 138, 531, 531, 531, 531, 531, 120, 531, - 531, 0, 531, 121, 133, 134, 0, 531, 494, 531, - 531, 531, 493, 488, 531, 38, 120, 117, 135, 126, + 0, 0, 54, 55, 56, 57, 564, 565, 565, 565, + 541, 56, 35, 540, 63, 55, 565, 565, 539, 56, + 565, 55, 56, 74, 71, 541, 565, 54, 537, 70, + 532, 565, 565, 535, 53, 58, 64, 72, 73, 74, + 79, 84, 82, 85, 86, 88, 95, 97, 94, 107, + 565, 96, 565, 565, 565, 565, 539, 565, 565, 538, + 565, 120, 565, 127, 512, 511, 506, 565, 122, 565, + 115, 565, 126, 140, 565, 565, 565, 565, 565, 120, + 513, 565, 565, 0, 565, 121, 141, 135, 0, 565, + 528, 565, 565, 565, 527, 522, 565, 132, 128, 134, - 137, 122, 143, 139, 140, 144, 487, 486, 145, 148, - 149, 151, 152, 154, 160, 155, 156, 161, 162, 531, - 531, 531, 531, 185, 191, 202, 473, 478, 471, 192, - 531, 203, 200, 207, 204, 205, 212, 531, 0, 201, - 531, 482, 531, 531, 186, 194, 197, 206, 199, 196, - 215, 209, 208, 218, 220, 221, 222, 223, 224, 227, - 226, 231, 233, 232, 238, 239, 241, 242, 466, 466, - 463, 264, 265, 271, 266, 270, 277, 478, 255, 477, - 476, 262, 263, 257, 475, 258, 259, 272, 474, 273, - 279, 157, 473, 472, 280, 281, 285, 471, 282, 283, + 137, 139, 138, 142, 114, 143, 145, 146, 521, 520, + 150, 151, 152, 153, 156, 159, 163, 158, 160, 165, + 166, 565, 565, 565, 565, 189, 197, 202, 507, 512, + 505, 204, 565, 207, 205, 208, 209, 210, 213, 565, + 490, 0, 202, 565, 515, 565, 565, 199, 212, 187, + 195, 206, 198, 217, 215, 218, 222, 224, 225, 226, + 227, 228, 229, 231, 236, 230, 238, 241, 244, 243, + 245, 499, 499, 496, 268, 269, 276, 271, 273, 283, + 503, 510, 261, 509, 508, 258, 263, 262, 507, 270, + 272, 277, 506, 278, 279, 282, 287, 505, 289, 290, - 284, 450, 448, 458, 467, 290, 293, 294, 466, 465, - 296, 464, 295, 297, 300, 304, 298, 306, 312, 463, - 444, 454, 457, 314, 299, 307, 317, 459, 458, 457, - 316, 456, 321, 322, 447, 446, 449, 323, 330, 452, - 451, 331, 332, 329, 442, 531, 433, 342, 448, 344, - 326, 345, 531, 435, 347, 346, 446, 349, 352, 430, - 355, 444, 357, 358, 423, 429, 359, 363, 363, 364, - 365, 372, 371, 377, 365, 366, 531, 368, 370, 531, - 408, 413, 418, 423, 426, 428, 433, 438, 443, 448, - 453, 357, 458, 463 + 293, 504, 291, 294, 296, 482, 480, 491, 565, 298, + 299, 301, 305, 500, 499, 302, 498, 303, 313, 307, + 314, 322, 324, 326, 327, 497, 477, 488, 491, 312, + 330, 310, 334, 335, 493, 336, 337, 492, 491, 340, + 490, 342, 343, 481, 480, 483, 348, 345, 354, 486, + 485, 351, 349, 363, 365, 352, 476, 565, 467, 367, + 368, 482, 369, 481, 370, 372, 375, 565, 468, 377, + 378, 380, 385, 466, 386, 387, 403, 417, 388, 416, + 414, 389, 394, 389, 408, 397, 400, 331, 399, 402, + 339, 401, 309, 259, 403, 565, 404, 200, 565, 445, + 450, 455, 460, 463, 465, 470, 475, 480, 485, 490, + 84, 495, 500 } ; -static const flex_int16_t yy_def[295] = +static const flex_int16_t yy_def[314] = { 0, - 280, 1, 281, 281, 282, 282, 280, 280, 280, 280, - 280, 283, 280, 280, 280, 284, 280, 280, 280, 280, - 280, 280, 280, 280, 285, 280, 280, 280, 280, 280, - 286, 280, 280, 280, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, 286, 280, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 283, 280, 287, 280, 280, 280, 280, 288, 280, 289, - 280, 284, 290, 280, 280, 280, 280, 280, 280, 280, - 280, 291, 280, 280, 285, 285, 292, 280, 280, 280, - 280, 280, 280, 286, 280, 286, 286, 286, 286, 286, + 299, 1, 300, 300, 301, 301, 299, 299, 299, 299, + 299, 302, 299, 299, 299, 303, 299, 299, 299, 299, + 299, 299, 299, 299, 304, 299, 299, 299, 299, 299, + 305, 299, 299, 299, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 302, 299, 306, 299, 299, 299, 299, 307, 299, + 308, 299, 303, 309, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 310, 299, 299, 304, 304, 311, 299, + 299, 299, 299, 299, 299, 305, 299, 305, 305, 305, - 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, 286, 280, - 280, 280, 280, 283, 283, 287, 280, 280, 280, 288, - 280, 293, 289, 294, 284, 284, 290, 280, 291, 280, - 280, 292, 280, 280, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, 280, 280, - 280, 288, 288, 293, 289, 289, 294, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 299, 299, 299, 299, 302, 302, 306, 299, 299, + 299, 307, 299, 312, 308, 313, 303, 303, 309, 299, + 299, 310, 299, 299, 311, 299, 299, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 299, 299, 299, 307, 307, 312, 308, 308, 313, + 299, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 286, 280, 280, 280, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, - 280, 280, 280, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 280, 280, 280, 286, 286, 286, - 286, 286, 286, 286, 280, 280, 280, 286, 286, 286, - 286, 286, 280, 280, 286, 286, 286, 286, 286, 280, - 286, 286, 286, 286, 280, 286, 286, 286, 280, 286, - 286, 280, 286, 286, 280, 286, 280, 286, 286, 0, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280 + 305, 305, 305, 305, 305, 299, 299, 299, 299, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 299, 299, 299, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 299, 299, 299, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 299, 299, 299, 305, + 305, 305, 305, 305, 305, 305, 305, 299, 299, 305, + 305, 305, 305, 305, 305, 305, 299, 305, 305, 305, + 305, 305, 305, 299, 305, 305, 305, 299, 305, 305, + 299, 305, 305, 299, 305, 299, 305, 305, 0, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299 } ; -static const flex_int16_t yy_nxt[587] = +static const flex_int16_t yy_nxt[622] = { 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 8, 33, 34, 31, 35, 36, 37, 38, 39, 40, 41, 31, 42, 31, 43, - 31, 44, 31, 45, 46, 47, 48, 31, 49, 31, - 31, 50, 51, 52, 53, 55, 55, 58, 58, 62, - 59, 59, 64, 87, 56, 56, 62, 75, 68, 87, - 65, 69, 70, 87, 77, 145, 76, 106, 80, 66, - 63, 78, 87, 73, 81, 71, 84, 97, 85, 82, - 89, 90, 92, 93, 83, 87, 87, 87, 96, 98, + 31, 44, 31, 45, 46, 47, 48, 49, 31, 50, + 31, 31, 51, 52, 53, 54, 56, 56, 59, 59, + 63, 60, 60, 63, 65, 57, 57, 69, 76, 78, + 70, 71, 66, 80, 91, 92, 79, 77, 89, 82, + 74, 64, 67, 89, 72, 83, 86, 145, 87, 89, + 84, 94, 95, 100, 98, 85, 89, 89, 89, 89, - 87, 87, 120, 87, 87, 101, 99, 104, 62, 87, - 107, 87, 100, 87, 102, 87, 103, 108, 87, 109, - 105, 110, 131, 111, 115, 117, 112, 131, 87, 63, - 113, 116, 118, 121, 61, 62, 125, 79, 140, 119, - 72, 114, 87, 132, 134, 87, 136, 87, 84, 280, - 85, 87, 73, 146, 138, 141, 147, 126, 87, 87, - 87, 148, 87, 137, 87, 87, 152, 150, 87, 87, - 87, 151, 149, 87, 87, 153, 87, 87, 154, 87, - 87, 87, 87, 155, 156, 87, 87, 87, 166, 62, - 160, 162, 157, 158, 159, 62, 131, 163, 167, 168, + 101, 81, 99, 106, 89, 103, 102, 89, 108, 89, + 89, 89, 104, 89, 105, 111, 107, 122, 109, 89, + 89, 114, 89, 133, 63, 110, 133, 112, 115, 62, + 113, 127, 89, 117, 63, 119, 120, 80, 143, 89, + 136, 118, 73, 121, 116, 64, 156, 134, 138, 123, + 299, 74, 128, 89, 140, 144, 86, 89, 87, 89, + 89, 149, 89, 89, 89, 139, 89, 89, 89, 148, + 89, 89, 154, 150, 152, 89, 89, 89, 89, 151, + 153, 89, 157, 89, 89, 89, 159, 155, 89, 158, + 89, 89, 169, 63, 162, 164, 165, 161, 160, 163, - 214, 165, 161, 164, 61, 130, 125, 173, 131, 133, - 63, 87, 62, 62, 72, 176, 63, 132, 140, 87, - 136, 87, 87, 179, 87, 134, 178, 126, 174, 73, - 73, 87, 177, 87, 87, 141, 180, 137, 182, 181, - 87, 183, 185, 87, 184, 87, 87, 87, 87, 87, - 186, 87, 87, 188, 189, 190, 87, 87, 87, 194, - 191, 193, 187, 87, 87, 197, 87, 87, 131, 131, - 192, 198, 199, 130, 131, 173, 195, 196, 131, 133, - 87, 201, 87, 87, 87, 176, 200, 87, 87, 132, - 132, 134, 210, 205, 206, 134, 174, 87, 87, 209, + 166, 63, 170, 171, 62, 168, 127, 167, 133, 132, + 135, 176, 89, 133, 64, 73, 179, 63, 63, 143, + 89, 138, 64, 89, 89, 89, 184, 128, 185, 134, + 136, 89, 177, 180, 74, 74, 144, 89, 139, 182, + 89, 183, 89, 89, 187, 186, 188, 89, 189, 89, + 89, 89, 89, 89, 89, 89, 89, 192, 193, 194, + 190, 89, 196, 89, 195, 198, 89, 191, 89, 89, + 89, 201, 133, 133, 202, 200, 197, 203, 132, 133, + 176, 133, 199, 89, 205, 135, 89, 89, 89, 204, + 211, 179, 296, 134, 134, 89, 136, 89, 136, 210, - 207, 211, 177, 208, 87, 87, 87, 87, 87, 87, - 87, 215, 212, 213, 217, 87, 218, 220, 87, 87, - 87, 87, 87, 87, 87, 87, 216, 227, 219, 87, - 232, 87, 87, 226, 225, 224, 230, 87, 229, 87, - 231, 87, 87, 233, 228, 239, 87, 87, 87, 234, - 238, 87, 240, 241, 87, 87, 87, 87, 257, 242, - 142, 244, 243, 249, 250, 251, 248, 87, 252, 87, - 87, 87, 87, 256, 87, 255, 261, 87, 262, 258, - 87, 264, 87, 87, 87, 259, 267, 266, 87, 87, - 87, 87, 263, 87, 271, 87, 87, 273, 277, 270, + 212, 177, 89, 89, 89, 215, 216, 89, 180, 213, + 219, 214, 89, 218, 89, 89, 89, 217, 89, 89, + 221, 89, 223, 89, 89, 224, 89, 89, 89, 226, + 89, 220, 89, 234, 89, 89, 222, 89, 89, 89, + 225, 230, 232, 236, 233, 231, 237, 89, 238, 89, + 239, 89, 89, 235, 247, 89, 241, 249, 240, 89, + 89, 89, 89, 242, 243, 89, 248, 89, 89, 252, + 89, 251, 294, 89, 89, 291, 89, 89, 253, 89, + 250, 264, 256, 255, 254, 260, 263, 262, 89, 261, + 89, 267, 89, 89, 89, 89, 265, 89, 266, 273, - 279, 274, 87, 268, 276, 275, 272, 278, 54, 54, - 54, 54, 54, 57, 57, 57, 57, 57, 61, 61, - 61, 61, 61, 72, 72, 72, 72, 72, 86, 86, - 86, 94, 94, 124, 124, 124, 124, 124, 130, 130, - 130, 130, 130, 133, 133, 133, 133, 133, 135, 135, - 135, 135, 135, 139, 87, 139, 139, 139, 172, 172, - 172, 172, 172, 175, 175, 175, 175, 175, 269, 87, - 265, 87, 260, 87, 254, 253, 87, 87, 247, 246, - 245, 87, 87, 87, 87, 237, 236, 235, 87, 87, - 87, 87, 87, 223, 222, 221, 87, 87, 87, 87, + 89, 271, 89, 89, 274, 89, 272, 279, 270, 275, + 89, 89, 89, 89, 89, 276, 283, 281, 286, 89, + 285, 280, 89, 278, 89, 89, 89, 89, 89, 89, + 282, 290, 292, 89, 295, 288, 298, 289, 293, 89, + 287, 89, 89, 284, 297, 55, 55, 55, 55, 55, + 58, 58, 58, 58, 58, 62, 62, 62, 62, 62, + 73, 73, 73, 73, 73, 88, 88, 88, 96, 96, + 126, 126, 126, 126, 126, 132, 132, 132, 132, 132, + 135, 135, 135, 135, 135, 137, 137, 137, 137, 137, + 142, 89, 142, 142, 142, 175, 175, 175, 175, 175, - 87, 87, 87, 87, 204, 203, 202, 87, 171, 170, - 169, 87, 87, 87, 144, 143, 129, 128, 127, 123, - 122, 95, 87, 91, 88, 79, 74, 67, 60, 280, - 7, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280 + 178, 178, 178, 178, 178, 277, 89, 89, 269, 268, + 89, 89, 259, 258, 257, 89, 89, 89, 89, 246, + 245, 244, 89, 89, 89, 89, 229, 228, 227, 89, + 89, 89, 89, 89, 89, 89, 209, 208, 207, 206, + 89, 181, 174, 173, 172, 89, 89, 89, 147, 146, + 141, 131, 130, 129, 125, 124, 97, 89, 93, 90, + 75, 68, 61, 299, 7, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299 } ; -static const flex_int16_t yy_chk[587] = +static const flex_int16_t yy_chk[622] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 4, 5, 6, 12, - 5, 6, 13, 96, 3, 4, 16, 20, 15, 36, - 13, 15, 15, 41, 22, 96, 20, 41, 24, 13, - 12, 22, 35, 16, 24, 15, 25, 36, 25, 24, - 28, 28, 30, 30, 24, 37, 25, 38, 35, 37, + 1, 1, 1, 1, 1, 1, 3, 4, 5, 6, + 12, 5, 6, 16, 13, 3, 4, 15, 20, 22, + 15, 15, 13, 23, 28, 28, 22, 20, 35, 24, + 16, 12, 13, 36, 15, 24, 25, 311, 25, 37, + 24, 30, 30, 37, 35, 24, 25, 38, 39, 40, - 39, 42, 51, 40, 44, 38, 37, 40, 61, 48, - 42, 43, 37, 47, 39, 45, 39, 42, 46, 43, - 40, 44, 68, 45, 47, 48, 46, 70, 49, 61, - 46, 47, 49, 51, 63, 72, 63, 79, 84, 49, - 73, 46, 98, 68, 70, 97, 73, 102, 85, 86, - 85, 100, 72, 97, 79, 84, 98, 63, 85, 86, - 99, 98, 101, 73, 104, 105, 102, 100, 103, 106, - 109, 101, 99, 110, 111, 103, 112, 113, 104, 114, - 116, 117, 192, 105, 106, 115, 118, 119, 117, 124, - 112, 114, 109, 110, 111, 125, 130, 115, 118, 119, + 37, 23, 36, 40, 41, 38, 37, 43, 41, 42, + 44, 45, 39, 46, 39, 43, 40, 52, 42, 49, + 47, 46, 48, 71, 62, 42, 69, 44, 47, 64, + 45, 64, 50, 48, 73, 49, 50, 80, 86, 105, + 71, 48, 74, 50, 47, 62, 105, 69, 74, 52, + 88, 73, 64, 99, 80, 86, 87, 98, 87, 100, + 88, 99, 101, 103, 102, 74, 87, 104, 106, 98, + 107, 108, 103, 100, 101, 111, 112, 113, 114, 100, + 102, 115, 106, 118, 116, 119, 108, 104, 117, 107, + 120, 121, 119, 126, 113, 115, 116, 112, 111, 114, - 192, 116, 113, 115, 126, 132, 126, 132, 133, 134, - 124, 145, 135, 136, 137, 134, 125, 130, 140, 146, - 137, 150, 147, 146, 149, 133, 145, 126, 132, 135, - 136, 148, 134, 153, 152, 140, 147, 137, 149, 148, - 151, 150, 152, 154, 151, 155, 156, 157, 158, 159, - 153, 161, 160, 155, 156, 157, 162, 164, 163, 161, - 158, 160, 154, 165, 166, 164, 167, 168, 172, 173, - 159, 165, 166, 174, 175, 174, 162, 163, 176, 177, - 179, 168, 184, 186, 187, 177, 167, 182, 183, 172, - 173, 175, 187, 179, 182, 176, 174, 188, 190, 186, + 117, 127, 120, 121, 128, 118, 128, 117, 132, 134, + 136, 134, 150, 135, 126, 139, 136, 137, 138, 143, + 151, 139, 127, 153, 148, 298, 150, 128, 151, 132, + 135, 152, 134, 136, 137, 138, 143, 149, 139, 148, + 155, 149, 154, 156, 153, 152, 154, 157, 155, 158, + 159, 160, 161, 162, 163, 166, 164, 158, 159, 160, + 156, 165, 162, 167, 161, 164, 168, 157, 170, 169, + 171, 167, 175, 176, 168, 166, 163, 169, 177, 178, + 177, 179, 165, 186, 171, 180, 183, 188, 187, 170, + 186, 180, 294, 175, 176, 190, 178, 191, 179, 183, - 183, 188, 177, 184, 191, 195, 196, 199, 200, 201, - 197, 195, 190, 191, 197, 206, 199, 201, 207, 208, - 213, 211, 214, 217, 225, 215, 196, 211, 200, 216, - 217, 218, 226, 208, 207, 206, 215, 219, 214, 224, - 216, 231, 227, 218, 213, 225, 233, 234, 238, 219, - 224, 251, 226, 227, 244, 239, 242, 243, 251, 231, - 292, 234, 233, 239, 242, 243, 238, 248, 244, 250, - 252, 256, 255, 250, 258, 248, 255, 259, 256, 252, - 261, 259, 263, 264, 267, 252, 263, 261, 268, 270, - 271, 276, 258, 278, 268, 279, 273, 270, 275, 267, + 187, 177, 192, 194, 195, 191, 192, 196, 180, 188, + 196, 190, 197, 195, 199, 200, 203, 194, 201, 204, + 199, 205, 201, 210, 211, 203, 212, 216, 218, 205, + 213, 197, 220, 216, 293, 232, 200, 230, 219, 221, + 204, 210, 212, 219, 213, 211, 219, 222, 220, 223, + 221, 224, 225, 218, 230, 231, 223, 232, 222, 233, + 234, 236, 237, 224, 225, 240, 231, 242, 243, 236, + 248, 234, 291, 247, 253, 288, 252, 256, 237, 249, + 233, 253, 243, 242, 240, 247, 252, 249, 254, 248, + 255, 256, 260, 261, 263, 265, 254, 266, 255, 265, - 278, 271, 274, 264, 273, 272, 269, 276, 281, 281, - 281, 281, 281, 282, 282, 282, 282, 282, 283, 283, - 283, 283, 283, 284, 284, 284, 284, 284, 285, 285, - 285, 286, 286, 287, 287, 287, 287, 287, 288, 288, - 288, 288, 288, 289, 289, 289, 289, 289, 290, 290, - 290, 290, 290, 291, 266, 291, 291, 291, 293, 293, - 293, 293, 293, 294, 294, 294, 294, 294, 265, 262, - 260, 257, 254, 249, 247, 245, 241, 240, 237, 236, - 235, 232, 230, 229, 228, 223, 222, 221, 220, 212, - 210, 209, 205, 204, 203, 202, 198, 194, 193, 189, + 267, 261, 270, 271, 266, 272, 263, 271, 260, 267, + 273, 275, 276, 279, 282, 267, 276, 273, 282, 283, + 279, 272, 286, 270, 289, 287, 292, 290, 295, 297, + 275, 287, 289, 285, 292, 284, 297, 286, 290, 281, + 283, 280, 278, 277, 295, 300, 300, 300, 300, 300, + 301, 301, 301, 301, 301, 302, 302, 302, 302, 302, + 303, 303, 303, 303, 303, 304, 304, 304, 305, 305, + 306, 306, 306, 306, 306, 307, 307, 307, 307, 307, + 308, 308, 308, 308, 308, 309, 309, 309, 309, 309, + 310, 274, 310, 310, 310, 312, 312, 312, 312, 312, - 185, 181, 180, 178, 171, 170, 169, 142, 129, 128, - 127, 108, 107, 94, 93, 89, 66, 65, 64, 59, - 56, 34, 31, 29, 26, 23, 19, 14, 11, 7, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280 + 313, 313, 313, 313, 313, 269, 264, 262, 259, 257, + 251, 250, 246, 245, 244, 241, 239, 238, 235, 229, + 228, 227, 226, 217, 215, 214, 208, 207, 206, 202, + 198, 193, 189, 185, 184, 182, 181, 174, 173, 172, + 145, 141, 131, 130, 129, 110, 109, 96, 95, 91, + 81, 67, 66, 65, 60, 57, 34, 31, 29, 26, + 19, 14, 11, 7, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299 } ; /* The intent behind this definition is that it'll catch @@ -866,9 +883,9 @@ static const flex_int16_t yy_chk[587] = #line 23 "lexer.lpp" #define YY_USER_ACTION loc.columns(yyleng); -#line 869 "lexer.cpp" +#line 886 "lexer.cpp" -#line 871 "lexer.cpp" +#line 888 "lexer.cpp" #define INITIAL 0 #define COMMENT_BLOCK_STATE 1 @@ -1136,7 +1153,7 @@ YY_DECL loc.step(); -#line 1139 "lexer.cpp" +#line 1156 "lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1163,13 +1180,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 281 ) + if ( yy_current_state >= 300 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 280 ); + while ( yy_current_state != 299 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -1250,438 +1267,453 @@ YY_RULE_SETUP case 12: YY_RULE_SETUP #line 59 "lexer.lpp" -{ return iw6::parser::make_INCLUDE(loc); } +{ return iw6::parser::make_BREAKPOINT(loc); } YY_BREAK case 13: YY_RULE_SETUP #line 60 "lexer.lpp" -{ return iw6::parser::make_USINGTREE(loc); } +{ return iw6::parser::make_PROFBEGIN(loc); } YY_BREAK case 14: YY_RULE_SETUP #line 61 "lexer.lpp" -{ return iw6::parser::make_ANIMTREE(loc); } +{ return iw6::parser::make_PROFEND(loc); } YY_BREAK case 15: YY_RULE_SETUP #line 62 "lexer.lpp" -{ return iw6::parser::make_ENDON(loc); } +{ return iw6::parser::make_INCLUDE(loc); } YY_BREAK case 16: YY_RULE_SETUP #line 63 "lexer.lpp" -{ return iw6::parser::make_NOTIFY(loc); } +{ return iw6::parser::make_USINGTREE(loc); } YY_BREAK case 17: YY_RULE_SETUP #line 64 "lexer.lpp" -{ return iw6::parser::make_WAIT(loc); } +{ return iw6::parser::make_ANIMTREE(loc); } YY_BREAK case 18: YY_RULE_SETUP #line 65 "lexer.lpp" -{ return iw6::parser::make_WAITTILL(loc); } +{ return iw6::parser::make_ENDON(loc); } YY_BREAK case 19: YY_RULE_SETUP #line 66 "lexer.lpp" -{ return iw6::parser::make_WAITTILLMATCH(loc); } +{ return iw6::parser::make_NOTIFY(loc); } YY_BREAK case 20: YY_RULE_SETUP #line 67 "lexer.lpp" -{ return iw6::parser::make_WAITTILLFRAMEEND(loc); } +{ return iw6::parser::make_WAIT(loc); } YY_BREAK case 21: YY_RULE_SETUP #line 68 "lexer.lpp" -{ return iw6::parser::make_IF(loc); } +{ return iw6::parser::make_WAITTILL(loc); } YY_BREAK case 22: YY_RULE_SETUP #line 69 "lexer.lpp" -{ return iw6::parser::make_ELSE(loc); } +{ return iw6::parser::make_WAITTILLMATCH(loc); } YY_BREAK case 23: YY_RULE_SETUP #line 70 "lexer.lpp" -{ return iw6::parser::make_WHILE(loc); } +{ return iw6::parser::make_WAITTILLFRAMEEND(loc); } YY_BREAK case 24: YY_RULE_SETUP #line 71 "lexer.lpp" -{ return iw6::parser::make_FOR(loc); } +{ return iw6::parser::make_IF(loc); } YY_BREAK case 25: YY_RULE_SETUP #line 72 "lexer.lpp" -{ return iw6::parser::make_FOREACH(loc); } +{ return iw6::parser::make_ELSE(loc); } YY_BREAK case 26: YY_RULE_SETUP #line 73 "lexer.lpp" -{ return iw6::parser::make_IN(loc); } +{ return iw6::parser::make_WHILE(loc); } YY_BREAK case 27: YY_RULE_SETUP #line 74 "lexer.lpp" -{ return iw6::parser::make_SWITCH(loc); } +{ return iw6::parser::make_FOR(loc); } YY_BREAK case 28: YY_RULE_SETUP #line 75 "lexer.lpp" -{ return iw6::parser::make_CASE(loc); } +{ return iw6::parser::make_FOREACH(loc); } YY_BREAK case 29: YY_RULE_SETUP #line 76 "lexer.lpp" -{ return iw6::parser::make_DEFAULT(loc); } +{ return iw6::parser::make_IN(loc); } YY_BREAK case 30: YY_RULE_SETUP #line 77 "lexer.lpp" -{ return iw6::parser::make_BREAK(loc); } +{ return iw6::parser::make_SWITCH(loc); } YY_BREAK case 31: YY_RULE_SETUP #line 78 "lexer.lpp" -{ return iw6::parser::make_CONTINUE(loc); } +{ return iw6::parser::make_CASE(loc); } YY_BREAK case 32: YY_RULE_SETUP #line 79 "lexer.lpp" -{ return iw6::parser::make_RETURN(loc); } +{ return iw6::parser::make_DEFAULT(loc); } YY_BREAK case 33: YY_RULE_SETUP #line 80 "lexer.lpp" -{ return iw6::parser::make_THREAD(loc); } +{ return iw6::parser::make_BREAK(loc); } YY_BREAK case 34: YY_RULE_SETUP #line 81 "lexer.lpp" -{ return iw6::parser::make_CHILDTHREAD(loc); } +{ return iw6::parser::make_CONTINUE(loc); } YY_BREAK case 35: YY_RULE_SETUP #line 82 "lexer.lpp" -{ return iw6::parser::make_THISTHREAD(loc); } +{ return iw6::parser::make_RETURN(loc); } YY_BREAK case 36: YY_RULE_SETUP #line 83 "lexer.lpp" -{ return iw6::parser::make_CALL(loc); } +{ return iw6::parser::make_THREAD(loc); } YY_BREAK case 37: YY_RULE_SETUP #line 84 "lexer.lpp" -{ return iw6::parser::make_TRUE(loc); } +{ return iw6::parser::make_CHILDTHREAD(loc); } YY_BREAK case 38: YY_RULE_SETUP #line 85 "lexer.lpp" -{ return iw6::parser::make_FALSE(loc); } +{ return iw6::parser::make_THISTHREAD(loc); } YY_BREAK case 39: YY_RULE_SETUP #line 86 "lexer.lpp" -{ return iw6::parser::make_UNDEFINED(loc); } +{ return iw6::parser::make_CALL(loc); } YY_BREAK case 40: YY_RULE_SETUP #line 87 "lexer.lpp" -{ return iw6::parser::make_SIZE(loc); } +{ return iw6::parser::make_TRUE(loc); } YY_BREAK case 41: YY_RULE_SETUP #line 88 "lexer.lpp" -{ return iw6::parser::make_GAME(loc); } +{ return iw6::parser::make_FALSE(loc); } YY_BREAK case 42: YY_RULE_SETUP #line 89 "lexer.lpp" -{ return iw6::parser::make_SELF(loc); } +{ return iw6::parser::make_UNDEFINED(loc); } YY_BREAK case 43: YY_RULE_SETUP #line 90 "lexer.lpp" -{ return iw6::parser::make_ANIM(loc); } +{ return iw6::parser::make_SIZE(loc); } YY_BREAK case 44: YY_RULE_SETUP #line 91 "lexer.lpp" -{ return iw6::parser::make_LEVEL(loc); } +{ return iw6::parser::make_GAME(loc); } YY_BREAK case 45: YY_RULE_SETUP #line 92 "lexer.lpp" -{ return iw6::parser::make_LPAREN(loc); } +{ return iw6::parser::make_SELF(loc); } YY_BREAK case 46: YY_RULE_SETUP #line 93 "lexer.lpp" -{ return iw6::parser::make_RPAREN(loc); } +{ return iw6::parser::make_ANIM(loc); } YY_BREAK case 47: YY_RULE_SETUP #line 94 "lexer.lpp" -{ return iw6::parser::make_LBRACE(loc); } +{ return iw6::parser::make_LEVEL(loc); } YY_BREAK case 48: YY_RULE_SETUP #line 95 "lexer.lpp" -{ return iw6::parser::make_RBRACE(loc); } +{ return iw6::parser::make_LPAREN(loc); } YY_BREAK case 49: YY_RULE_SETUP #line 96 "lexer.lpp" -{ return iw6::parser::make_LBRACKET(loc); } +{ return iw6::parser::make_RPAREN(loc); } YY_BREAK case 50: YY_RULE_SETUP #line 97 "lexer.lpp" -{ return iw6::parser::make_RBRACKET(loc); } +{ return iw6::parser::make_LBRACE(loc); } YY_BREAK case 51: YY_RULE_SETUP #line 98 "lexer.lpp" -{ return iw6::parser::make_COMMA(loc); } +{ return iw6::parser::make_RBRACE(loc); } YY_BREAK case 52: YY_RULE_SETUP #line 99 "lexer.lpp" -{ return iw6::parser::make_DOT(loc); } +{ return iw6::parser::make_LBRACKET(loc); } YY_BREAK case 53: YY_RULE_SETUP #line 100 "lexer.lpp" -{ return iw6::parser::make_DOUBLECOLON(loc); } +{ return iw6::parser::make_RBRACKET(loc); } YY_BREAK case 54: YY_RULE_SETUP #line 101 "lexer.lpp" -{ return iw6::parser::make_COLON(loc); } +{ return iw6::parser::make_COMMA(loc); } YY_BREAK case 55: YY_RULE_SETUP #line 102 "lexer.lpp" -{ return iw6::parser::make_SEMICOLON(loc); } +{ return iw6::parser::make_DOT(loc); } YY_BREAK case 56: YY_RULE_SETUP #line 103 "lexer.lpp" -{ return iw6::parser::make_INCREMENT(loc); } +{ return iw6::parser::make_DOUBLECOLON(loc); } YY_BREAK case 57: YY_RULE_SETUP #line 104 "lexer.lpp" -{ return iw6::parser::make_DECREMENT(loc); } +{ return iw6::parser::make_COLON(loc); } YY_BREAK case 58: YY_RULE_SETUP #line 105 "lexer.lpp" -{ return iw6::parser::make_ASSIGN_LSHIFT(loc); } +{ return iw6::parser::make_SEMICOLON(loc); } YY_BREAK case 59: YY_RULE_SETUP #line 106 "lexer.lpp" -{ return iw6::parser::make_ASSIGN_RSHIFT(loc); } +{ return iw6::parser::make_INCREMENT(loc); } YY_BREAK case 60: YY_RULE_SETUP #line 107 "lexer.lpp" -{ return iw6::parser::make_LSHIFT(loc); } +{ return iw6::parser::make_DECREMENT(loc); } YY_BREAK case 61: YY_RULE_SETUP #line 108 "lexer.lpp" -{ return iw6::parser::make_RSHIFT(loc); } +{ return iw6::parser::make_ASSIGN_LSHIFT(loc); } YY_BREAK case 62: YY_RULE_SETUP #line 109 "lexer.lpp" -{ return iw6::parser::make_OR(loc); } +{ return iw6::parser::make_ASSIGN_RSHIFT(loc); } YY_BREAK case 63: YY_RULE_SETUP #line 110 "lexer.lpp" -{ return iw6::parser::make_AND(loc); } +{ return iw6::parser::make_LSHIFT(loc); } YY_BREAK case 64: YY_RULE_SETUP #line 111 "lexer.lpp" -{ return iw6::parser::make_EQUALITY(loc); } +{ return iw6::parser::make_RSHIFT(loc); } YY_BREAK case 65: YY_RULE_SETUP #line 112 "lexer.lpp" -{ return iw6::parser::make_INEQUALITY(loc); } +{ return iw6::parser::make_OR(loc); } YY_BREAK case 66: YY_RULE_SETUP #line 113 "lexer.lpp" -{ return iw6::parser::make_LESS_EQUAL(loc); } +{ return iw6::parser::make_AND(loc); } YY_BREAK case 67: YY_RULE_SETUP #line 114 "lexer.lpp" -{ return iw6::parser::make_GREATER_EQUAL(loc); } +{ return iw6::parser::make_EQUALITY(loc); } YY_BREAK case 68: YY_RULE_SETUP #line 115 "lexer.lpp" -{ return iw6::parser::make_LESS(loc); } +{ return iw6::parser::make_INEQUALITY(loc); } YY_BREAK case 69: YY_RULE_SETUP #line 116 "lexer.lpp" -{ return iw6::parser::make_GREATER(loc); } +{ return iw6::parser::make_LESS_EQUAL(loc); } YY_BREAK case 70: YY_RULE_SETUP #line 117 "lexer.lpp" -{ return iw6::parser::make_ASSIGN_ADD(loc); } +{ return iw6::parser::make_GREATER_EQUAL(loc); } YY_BREAK case 71: YY_RULE_SETUP #line 118 "lexer.lpp" -{ return iw6::parser::make_ASSIGN_SUB(loc); } +{ return iw6::parser::make_LESS(loc); } YY_BREAK case 72: YY_RULE_SETUP #line 119 "lexer.lpp" -{ return iw6::parser::make_ASSIGN_MULT(loc); } +{ return iw6::parser::make_GREATER(loc); } YY_BREAK case 73: YY_RULE_SETUP #line 120 "lexer.lpp" -{ return iw6::parser::make_ASSIGN_DIV(loc); } +{ return iw6::parser::make_ASSIGN_ADD(loc); } YY_BREAK case 74: YY_RULE_SETUP #line 121 "lexer.lpp" -{ return iw6::parser::make_ASSIGN_MOD(loc); } +{ return iw6::parser::make_ASSIGN_SUB(loc); } YY_BREAK case 75: YY_RULE_SETUP #line 122 "lexer.lpp" -{ return iw6::parser::make_ASSIGN_BITWISE_OR(loc); } +{ return iw6::parser::make_ASSIGN_MULT(loc); } YY_BREAK case 76: YY_RULE_SETUP #line 123 "lexer.lpp" -{ return iw6::parser::make_ASSIGN_BITWISE_AND(loc); } +{ return iw6::parser::make_ASSIGN_DIV(loc); } YY_BREAK case 77: YY_RULE_SETUP #line 124 "lexer.lpp" -{ return iw6::parser::make_ASSIGN_BITWISE_EXOR(loc); } +{ return iw6::parser::make_ASSIGN_MOD(loc); } YY_BREAK case 78: YY_RULE_SETUP #line 125 "lexer.lpp" -{ return iw6::parser::make_ASSIGN(loc); } +{ return iw6::parser::make_ASSIGN_BITWISE_OR(loc); } YY_BREAK case 79: YY_RULE_SETUP #line 126 "lexer.lpp" -{ return iw6::parser::make_ADD(loc); } +{ return iw6::parser::make_ASSIGN_BITWISE_AND(loc); } YY_BREAK case 80: YY_RULE_SETUP #line 127 "lexer.lpp" -{ return iw6::parser::make_SUB(loc); } +{ return iw6::parser::make_ASSIGN_BITWISE_EXOR(loc); } YY_BREAK case 81: YY_RULE_SETUP #line 128 "lexer.lpp" -{ return iw6::parser::make_MULT(loc); } +{ return iw6::parser::make_ASSIGN(loc); } YY_BREAK case 82: YY_RULE_SETUP #line 129 "lexer.lpp" -{ return iw6::parser::make_DIV(loc); } +{ return iw6::parser::make_ADD(loc); } YY_BREAK case 83: YY_RULE_SETUP #line 130 "lexer.lpp" -{ return iw6::parser::make_MOD(loc); } +{ return iw6::parser::make_SUB(loc); } YY_BREAK case 84: YY_RULE_SETUP #line 131 "lexer.lpp" -{ return iw6::parser::make_NOT(loc); } +{ return iw6::parser::make_MULT(loc); } YY_BREAK case 85: YY_RULE_SETUP #line 132 "lexer.lpp" -{ return iw6::parser::make_COMPLEMENT(loc); } +{ return iw6::parser::make_DIV(loc); } YY_BREAK case 86: YY_RULE_SETUP #line 133 "lexer.lpp" -{ return iw6::parser::make_BITWISE_OR(loc); } +{ return iw6::parser::make_MOD(loc); } YY_BREAK case 87: YY_RULE_SETUP #line 134 "lexer.lpp" -{ return iw6::parser::make_BITWISE_AND(loc); } +{ return iw6::parser::make_NOT(loc); } YY_BREAK case 88: YY_RULE_SETUP #line 135 "lexer.lpp" -{ return iw6::parser::make_BITWISE_EXOR(loc); } +{ return iw6::parser::make_COMPLEMENT(loc); } YY_BREAK case 89: YY_RULE_SETUP #line 136 "lexer.lpp" -{ return iw6::parser::make_FILE(utils::string::fordslash(yytext), loc); } +{ return iw6::parser::make_BITWISE_OR(loc); } YY_BREAK case 90: YY_RULE_SETUP #line 137 "lexer.lpp" -{ return iw6::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); } +{ return iw6::parser::make_BITWISE_AND(loc); } YY_BREAK case 91: -/* rule 91 can match eol */ YY_RULE_SETUP #line 138 "lexer.lpp" -{ return iw6::parser::make_ISTRING(std::string(yytext).substr(1), loc); } +{ return iw6::parser::make_BITWISE_EXOR(loc); } YY_BREAK case 92: -/* rule 92 can match eol */ YY_RULE_SETUP #line 139 "lexer.lpp" -{ return iw6::parser::make_STRING(std::string(yytext), loc); } +{ return iw6::parser::make_FILE(utils::string::fordslash(yytext), loc); } YY_BREAK case 93: YY_RULE_SETUP #line 140 "lexer.lpp" -{ return iw6::parser::make_FLOAT(std::string(yytext), loc); } +{ return iw6::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); } YY_BREAK case 94: +/* rule 94 can match eol */ YY_RULE_SETUP #line 141 "lexer.lpp" +{ return iw6::parser::make_ISTRING(std::string(yytext).substr(1), loc); } + YY_BREAK +case 95: +/* rule 95 can match eol */ +YY_RULE_SETUP +#line 142 "lexer.lpp" +{ return iw6::parser::make_STRING(std::string(yytext), loc); } + YY_BREAK +case 96: +YY_RULE_SETUP +#line 143 "lexer.lpp" +{ return iw6::parser::make_FLOAT(std::string(yytext), loc); } + YY_BREAK +case 97: +YY_RULE_SETUP +#line 144 "lexer.lpp" { return iw6::parser::make_INTEGER(std::string(yytext), loc); } YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT_BLOCK_STATE): case YY_STATE_EOF(DEVELOPER_BLOCK_STATE): -#line 142 "lexer.lpp" +#line 145 "lexer.lpp" { return iw6::parser::make_IW6EOF(loc); } YY_BREAK -case 95: -/* rule 95 can match eol */ +case 98: +/* rule 98 can match eol */ YY_RULE_SETUP -#line 143 "lexer.lpp" +#line 146 "lexer.lpp" { throw iw6::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); } YY_BREAK -case 96: +case 99: YY_RULE_SETUP -#line 145 "lexer.lpp" +#line 148 "lexer.lpp" ECHO; YY_BREAK -#line 1684 "lexer.cpp" +#line 1716 "lexer.cpp" case YY_END_OF_BUFFER: { @@ -1979,7 +2011,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 281 ) + if ( yy_current_state >= 300 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2008,11 +2040,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 281 ) + if ( yy_current_state >= 300 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 280); + yy_is_jam = (yy_current_state == 299); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -2811,6 +2843,6 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 145 "lexer.lpp" +#line 148 "lexer.lpp" diff --git a/src/iw6/xsk/lexer.hpp b/src/iw6/xsk/lexer.hpp index 4d1eb27a..e7a0b7fa 100644 --- a/src/iw6/xsk/lexer.hpp +++ b/src/iw6/xsk/lexer.hpp @@ -700,7 +700,7 @@ extern int yylex (yyscan_t yyscanner); #undef yyTABLES_NAME #endif -#line 145 "lexer.lpp" +#line 148 "lexer.lpp" #line 706 "lexer.hpp" diff --git a/src/iw6/xsk/parser.cpp b/src/iw6/xsk/parser.cpp index 5a3fb229..382e3527 100644 --- a/src/iw6/xsk/parser.cpp +++ b/src/iw6/xsk/parser.cpp @@ -345,6 +345,10 @@ namespace xsk { namespace gsc { namespace iw6 { value.YY_MOVE_OR_COPY< stmt_break_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.YY_MOVE_OR_COPY< stmt_breakpoint_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.YY_MOVE_OR_COPY< stmt_call_ptr > (YY_MOVE (that.value)); break; @@ -390,6 +394,14 @@ namespace xsk { namespace gsc { namespace iw6 { value.YY_MOVE_OR_COPY< stmt_notify_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.YY_MOVE_OR_COPY< stmt_prof_begin_ptr > (YY_MOVE (that.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.YY_MOVE_OR_COPY< stmt_prof_end_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.YY_MOVE_OR_COPY< stmt_ptr > (YY_MOVE (that.value)); @@ -595,6 +607,10 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< stmt_break_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.move< stmt_breakpoint_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.move< stmt_call_ptr > (YY_MOVE (that.value)); break; @@ -640,6 +656,14 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< stmt_notify_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.move< stmt_prof_begin_ptr > (YY_MOVE (that.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.move< stmt_prof_end_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.move< stmt_ptr > (YY_MOVE (that.value)); @@ -845,6 +869,10 @@ namespace xsk { namespace gsc { namespace iw6 { value.copy< stmt_break_ptr > (that.value); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.copy< stmt_breakpoint_ptr > (that.value); + break; + case symbol_kind::S_stmt_call: // stmt_call value.copy< stmt_call_ptr > (that.value); break; @@ -890,6 +918,14 @@ namespace xsk { namespace gsc { namespace iw6 { value.copy< stmt_notify_ptr > (that.value); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.copy< stmt_prof_begin_ptr > (that.value); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.copy< stmt_prof_end_ptr > (that.value); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.copy< stmt_ptr > (that.value); @@ -1094,6 +1130,10 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< stmt_break_ptr > (that.value); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.move< stmt_breakpoint_ptr > (that.value); + break; + case symbol_kind::S_stmt_call: // stmt_call value.move< stmt_call_ptr > (that.value); break; @@ -1139,6 +1179,14 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< stmt_notify_ptr > (that.value); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.move< stmt_prof_begin_ptr > (that.value); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.move< stmt_prof_end_ptr > (that.value); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.move< stmt_ptr > (that.value); @@ -1598,6 +1646,10 @@ namespace xsk { namespace gsc { namespace iw6 { yylhs.value.emplace< stmt_break_ptr > (); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + yylhs.value.emplace< stmt_breakpoint_ptr > (); + break; + case symbol_kind::S_stmt_call: // stmt_call yylhs.value.emplace< stmt_call_ptr > (); break; @@ -1643,6 +1695,14 @@ namespace xsk { namespace gsc { namespace iw6 { yylhs.value.emplace< stmt_notify_ptr > (); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + yylhs.value.emplace< stmt_prof_begin_ptr > (); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + yylhs.value.emplace< stmt_prof_end_ptr > (); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt yylhs.value.emplace< stmt_ptr > (); @@ -1725,1159 +1785,1195 @@ namespace xsk { namespace gsc { namespace iw6 { switch (yyn) { case 2: // root: program -#line 231 "parser.ypp" - { ast = std::move(yystack_[0].value.as < program_ptr > ()); } -#line 1731 "parser.cpp" - break; - - case 3: // root: %empty -#line 232 "parser.ypp" - { ast = std::make_unique(yylhs.location); } -#line 1737 "parser.cpp" - break; - - case 4: // program: program include #line 237 "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 1743 "parser.cpp" - break; - - case 5: // program: program define -#line 239 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } -#line 1749 "parser.cpp" - break; - - case 6: // program: include -#line 241 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } -#line 1755 "parser.cpp" - break; - - case 7: // program: define -#line 243 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } -#line 1761 "parser.cpp" - break; - - case 8: // include: "#include" file ";" -#line 248 "parser.ypp" - { yylhs.value.as < include_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < file_ptr > ())); } -#line 1767 "parser.cpp" - break; - - case 9: // define: usingtree -#line 252 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_usingtree = std::move(yystack_[0].value.as < usingtree_ptr > ()); } -#line 1773 "parser.cpp" - break; - - case 10: // define: constant -#line 253 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_constant = std::move(yystack_[0].value.as < constant_ptr > ()); } -#line 1779 "parser.cpp" - break; - - case 11: // define: thread -#line 254 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_thread = std::move(yystack_[0].value.as < thread_ptr > ()); } -#line 1785 "parser.cpp" - break; - - case 12: // usingtree: "#using_animtree" "(" string ")" ";" -#line 259 "parser.ypp" - { yylhs.value.as < usingtree_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < string_ptr > ())); } + { ast = std::move(yystack_[0].value.as < program_ptr > ()); } #line 1791 "parser.cpp" break; - case 13: // constant: name "=" expr ";" -#line 264 "parser.ypp" - { yylhs.value.as < constant_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 3: // root: %empty +#line 238 "parser.ypp" + { ast = std::make_unique(yylhs.location); } #line 1797 "parser.cpp" break; - case 14: // thread: name "(" parameters ")" stmt_block -#line 269 "parser.ypp" - { yylhs.value.as < thread_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < name_ptr > ()), std::move(yystack_[2].value.as < parameters_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } + case 4: // program: program include +#line 243 "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 1803 "parser.cpp" break; - case 15: // parameters: parameters "," name -#line 274 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::move(yystack_[2].value.as < parameters_ptr > ()); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } + case 5: // program: program define +#line 245 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1809 "parser.cpp" break; - case 16: // parameters: name -#line 276 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } + case 6: // program: include +#line 247 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } #line 1815 "parser.cpp" break; - case 17: // parameters: %empty -#line 278 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); } + case 7: // program: define +#line 249 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1821 "parser.cpp" break; - case 18: // stmt: stmt_block -#line 282 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_list = std::move(yystack_[0].value.as < stmt_list_ptr > ()); } + case 8: // include: "#include" file ";" +#line 254 "parser.ypp" + { yylhs.value.as < include_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < file_ptr > ())); } #line 1827 "parser.cpp" break; - case 19: // stmt: stmt_call -#line 283 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_call = std::move(yystack_[0].value.as < stmt_call_ptr > ()); } + case 9: // define: usingtree +#line 258 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_usingtree = std::move(yystack_[0].value.as < usingtree_ptr > ()); } #line 1833 "parser.cpp" break; - case 20: // stmt: stmt_assign -#line 284 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_assign = std::move(yystack_[0].value.as < stmt_assign_ptr > ()); } + case 10: // define: constant +#line 259 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_constant = std::move(yystack_[0].value.as < constant_ptr > ()); } #line 1839 "parser.cpp" break; - case 21: // stmt: stmt_endon -#line 285 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_endon = std::move(yystack_[0].value.as < stmt_endon_ptr > ()); } + case 11: // define: thread +#line 260 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_thread = std::move(yystack_[0].value.as < thread_ptr > ()); } #line 1845 "parser.cpp" break; - case 22: // stmt: stmt_notify -#line 286 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_notify = std::move(yystack_[0].value.as < stmt_notify_ptr > ()); } + case 12: // usingtree: "#using_animtree" "(" string ")" ";" +#line 265 "parser.ypp" + { yylhs.value.as < usingtree_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < string_ptr > ())); } #line 1851 "parser.cpp" break; - case 23: // stmt: stmt_wait -#line 287 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_wait = std::move(yystack_[0].value.as < stmt_wait_ptr > ()); } + case 13: // constant: name "=" expr ";" +#line 270 "parser.ypp" + { yylhs.value.as < constant_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } #line 1857 "parser.cpp" break; - case 24: // stmt: stmt_waittill -#line 288 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill_ptr > ()); } + case 14: // thread: name "(" parameters ")" stmt_block +#line 275 "parser.ypp" + { yylhs.value.as < thread_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < name_ptr > ()), std::move(yystack_[2].value.as < parameters_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } #line 1863 "parser.cpp" break; - case 25: // stmt: stmt_waittillmatch -#line 289 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch_ptr > ()); } + case 15: // parameters: parameters "," name +#line 280 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::move(yystack_[2].value.as < parameters_ptr > ()); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } #line 1869 "parser.cpp" break; - case 26: // stmt: stmt_waittillframeend -#line 290 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend_ptr > ()); } + case 16: // parameters: name +#line 282 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } #line 1875 "parser.cpp" break; - case 27: // stmt: stmt_if -#line 291 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_if = std::move(yystack_[0].value.as < stmt_if_ptr > ()); } + case 17: // parameters: %empty +#line 284 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); } #line 1881 "parser.cpp" break; - case 28: // stmt: stmt_ifelse -#line 292 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse_ptr > ()); } + case 18: // stmt: stmt_block +#line 288 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_list = std::move(yystack_[0].value.as < stmt_list_ptr > ()); } #line 1887 "parser.cpp" break; - case 29: // stmt: stmt_while -#line 293 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_while = std::move(yystack_[0].value.as < stmt_while_ptr > ()); } + case 19: // stmt: stmt_call +#line 289 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_call = std::move(yystack_[0].value.as < stmt_call_ptr > ()); } #line 1893 "parser.cpp" break; - case 30: // stmt: stmt_for -#line 294 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_for = std::move(yystack_[0].value.as < stmt_for_ptr > ()); } + case 20: // stmt: stmt_assign +#line 290 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_assign = std::move(yystack_[0].value.as < stmt_assign_ptr > ()); } #line 1899 "parser.cpp" break; - case 31: // stmt: stmt_foreach -#line 295 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach_ptr > ()); } + case 21: // stmt: stmt_endon +#line 291 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_endon = std::move(yystack_[0].value.as < stmt_endon_ptr > ()); } #line 1905 "parser.cpp" break; - case 32: // stmt: stmt_switch -#line 296 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_switch = std::move(yystack_[0].value.as < stmt_switch_ptr > ()); } + case 22: // stmt: stmt_notify +#line 292 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_notify = std::move(yystack_[0].value.as < stmt_notify_ptr > ()); } #line 1911 "parser.cpp" break; - case 33: // stmt: stmt_case -#line 297 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_case = std::move(yystack_[0].value.as < stmt_case_ptr > ()); } + case 23: // stmt: stmt_wait +#line 293 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_wait = std::move(yystack_[0].value.as < stmt_wait_ptr > ()); } #line 1917 "parser.cpp" break; - case 34: // stmt: stmt_default -#line 298 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_default = std::move(yystack_[0].value.as < stmt_default_ptr > ()); } + case 24: // stmt: stmt_waittill +#line 294 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill_ptr > ()); } #line 1923 "parser.cpp" break; - case 35: // stmt: stmt_break -#line 299 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_break = std::move(yystack_[0].value.as < stmt_break_ptr > ()); } + case 25: // stmt: stmt_waittillmatch +#line 295 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch_ptr > ()); } #line 1929 "parser.cpp" break; - case 36: // stmt: stmt_continue -#line 300 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_continue = std::move(yystack_[0].value.as < stmt_continue_ptr > ()); } + case 26: // stmt: stmt_waittillframeend +#line 296 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend_ptr > ()); } #line 1935 "parser.cpp" break; - case 37: // stmt: stmt_return -#line 301 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_return = std::move(yystack_[0].value.as < stmt_return_ptr > ()); } + case 27: // stmt: stmt_if +#line 297 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_if = std::move(yystack_[0].value.as < stmt_if_ptr > ()); } #line 1941 "parser.cpp" break; - case 38: // stmt_block: "{" stmt_list "}" -#line 305 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); } + case 28: // stmt: stmt_ifelse +#line 298 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse_ptr > ()); } #line 1947 "parser.cpp" break; - case 39: // stmt_block: "{" "}" -#line 306 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); } + case 29: // stmt: stmt_while +#line 299 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_while = std::move(yystack_[0].value.as < stmt_while_ptr > ()); } #line 1953 "parser.cpp" break; - case 40: // stmt_list: stmt_list stmt -#line 311 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 30: // stmt: stmt_for +#line 300 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_for = std::move(yystack_[0].value.as < stmt_for_ptr > ()); } #line 1959 "parser.cpp" break; - case 41: // stmt_list: stmt -#line 313 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 31: // stmt: stmt_foreach +#line 301 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach_ptr > ()); } #line 1965 "parser.cpp" break; - case 42: // stmt_call: expr_call ";" -#line 318 "parser.ypp" - { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } + case 32: // stmt: stmt_switch +#line 302 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_switch = std::move(yystack_[0].value.as < stmt_switch_ptr > ()); } #line 1971 "parser.cpp" break; - case 43: // stmt_call: expr_call_thread ";" -#line 320 "parser.ypp" - { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } + case 33: // stmt: stmt_case +#line 303 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_case = std::move(yystack_[0].value.as < stmt_case_ptr > ()); } #line 1977 "parser.cpp" break; - case 44: // stmt_assign: expr_assign ";" -#line 325 "parser.ypp" - { yylhs.value.as < stmt_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_assign_ptr > ())); } + case 34: // stmt: stmt_default +#line 304 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_default = std::move(yystack_[0].value.as < stmt_default_ptr > ()); } #line 1983 "parser.cpp" break; - case 45: // stmt_endon: object "endon" "(" expr ")" ";" -#line 330 "parser.ypp" - { yylhs.value.as < stmt_endon_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ())); } + case 35: // stmt: stmt_break +#line 305 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_break = std::move(yystack_[0].value.as < stmt_break_ptr > ()); } #line 1989 "parser.cpp" break; - case 46: // stmt_notify: object "notify" "(" expr "," expr_arguments ")" ";" -#line 335 "parser.ypp" - { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 36: // stmt: stmt_continue +#line 306 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_continue = std::move(yystack_[0].value.as < stmt_continue_ptr > ()); } #line 1995 "parser.cpp" break; - case 47: // stmt_notify: object "notify" "(" expr ")" ";" -#line 337 "parser.ypp" - { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 37: // stmt: stmt_return +#line 307 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_return = std::move(yystack_[0].value.as < stmt_return_ptr > ()); } #line 2001 "parser.cpp" break; - case 48: // stmt_wait: "wait" expr ";" -#line 342 "parser.ypp" - { yylhs.value.as < stmt_wait_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } + case 38: // stmt: stmt_breakpoint +#line 308 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_breakpoint = std::move(yystack_[0].value.as < stmt_breakpoint_ptr > ()); } #line 2007 "parser.cpp" break; - case 49: // stmt_waittill: object "waittill" "(" expr "," expr_arguments ")" ";" -#line 347 "parser.ypp" - { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 39: // stmt: stmt_prof_begin +#line 309 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_prof_begin = std::move(yystack_[0].value.as < stmt_prof_begin_ptr > ()); } #line 2013 "parser.cpp" break; - case 50: // stmt_waittill: object "waittill" "(" expr ")" ";" -#line 349 "parser.ypp" - { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 40: // stmt: stmt_prof_end +#line 310 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_prof_end = std::move(yystack_[0].value.as < stmt_prof_end_ptr > ()); } #line 2019 "parser.cpp" break; - case 51: // stmt_waittillmatch: object "waittillmatch" "(" expr "," expr_arguments ")" ";" -#line 354 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 41: // stmt_block: "{" stmt_list "}" +#line 314 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); } #line 2025 "parser.cpp" break; - case 52: // stmt_waittillmatch: object "waittillmatch" "(" expr ")" ";" -#line 356 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 42: // stmt_block: "{" "}" +#line 315 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); } #line 2031 "parser.cpp" break; - case 53: // stmt_waittillframeend: "waittillframeend" ";" -#line 361 "parser.ypp" - { yylhs.value.as < stmt_waittillframeend_ptr > () = std::make_unique(yylhs.location); } + case 43: // stmt_list: stmt_list stmt +#line 320 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2037 "parser.cpp" break; - case 54: // stmt_if: "if" "(" expr ")" stmt -#line 366 "parser.ypp" - { yylhs.value.as < stmt_if_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 44: // stmt_list: stmt +#line 322 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2043 "parser.cpp" break; - case 55: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 371 "parser.ypp" - { yylhs.value.as < stmt_ifelse_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 45: // stmt_call: expr_call ";" +#line 327 "parser.ypp" + { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } #line 2049 "parser.cpp" break; - case 56: // stmt_while: "while" "(" expr ")" stmt -#line 376 "parser.ypp" - { yylhs.value.as < stmt_while_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 46: // stmt_call: expr_call_thread ";" +#line 329 "parser.ypp" + { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } #line 2055 "parser.cpp" break; - case 57: // stmt_for: "for" "(" for_stmt ";" for_expr ";" for_stmt ")" stmt -#line 381 "parser.ypp" - { yylhs.value.as < stmt_for_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[6].value.as < stmt_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 47: // stmt_assign: expr_assign ";" +#line 334 "parser.ypp" + { yylhs.value.as < stmt_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_assign_ptr > ())); } #line 2061 "parser.cpp" break; - case 58: // stmt_foreach: "foreach" "(" name "in" expr ")" stmt -#line 386 "parser.ypp" - { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 48: // stmt_endon: object "endon" "(" expr ")" ";" +#line 339 "parser.ypp" + { yylhs.value.as < stmt_endon_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ())); } #line 2067 "parser.cpp" break; - case 59: // stmt_foreach: "foreach" "(" name "," name "in" expr ")" stmt -#line 388 "parser.ypp" - { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[6].value.as < name_ptr > ())), expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 49: // stmt_notify: object "notify" "(" expr "," expr_arguments ")" ";" +#line 344 "parser.ypp" + { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2073 "parser.cpp" break; - case 60: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 393 "parser.ypp" - { yylhs.value.as < stmt_switch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } + case 50: // stmt_notify: object "notify" "(" expr ")" ";" +#line 346 "parser.ypp" + { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2079 "parser.cpp" break; - case 61: // stmt_case: "case" integer ":" -#line 398 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } + case 51: // stmt_wait: "wait" expr ";" +#line 351 "parser.ypp" + { yylhs.value.as < stmt_wait_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2085 "parser.cpp" break; - case 62: // stmt_case: "case" neg_integer ":" -#line 400 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } + case 52: // stmt_waittill: object "waittill" "(" expr "," expr_arguments ")" ";" +#line 356 "parser.ypp" + { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2091 "parser.cpp" break; - case 63: // stmt_case: "case" string ":" -#line 402 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < string_ptr > ())), std::make_unique(yylhs.location)); } + case 53: // stmt_waittill: object "waittill" "(" expr ")" ";" +#line 358 "parser.ypp" + { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2097 "parser.cpp" break; - case 64: // stmt_default: "default" ":" -#line 407 "parser.ypp" - { yylhs.value.as < stmt_default_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } + case 54: // stmt_waittillmatch: object "waittillmatch" "(" expr "," expr_arguments ")" ";" +#line 363 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2103 "parser.cpp" break; - case 65: // stmt_break: "break" ";" -#line 412 "parser.ypp" - { yylhs.value.as < stmt_break_ptr > () = std::make_unique(yylhs.location); } + case 55: // stmt_waittillmatch: object "waittillmatch" "(" expr ")" ";" +#line 365 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2109 "parser.cpp" break; - case 66: // stmt_continue: "continue" ";" -#line 417 "parser.ypp" - { yylhs.value.as < stmt_continue_ptr > () = std::make_unique(yylhs.location); } + case 56: // stmt_waittillframeend: "waittillframeend" ";" +#line 370 "parser.ypp" + { yylhs.value.as < stmt_waittillframeend_ptr > () = std::make_unique(yylhs.location); } #line 2115 "parser.cpp" break; - case 67: // stmt_return: "return" expr ";" -#line 422 "parser.ypp" - { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } + case 57: // stmt_if: "if" "(" expr ")" stmt +#line 375 "parser.ypp" + { yylhs.value.as < stmt_if_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2121 "parser.cpp" break; - case 68: // stmt_return: "return" ";" -#line 424 "parser.ypp" - { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } + case 58: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 380 "parser.ypp" + { yylhs.value.as < stmt_ifelse_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2127 "parser.cpp" break; - case 69: // for_stmt: expr_assign -#line 428 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_list = std::make_unique(yylhs.location); yylhs.value.as < stmt_ptr > ().as_list->stmts.push_back(stmt_ptr(std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_assign_ptr > ())))); } + case 59: // stmt_while: "while" "(" expr ")" stmt +#line 385 "parser.ypp" + { yylhs.value.as < stmt_while_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2133 "parser.cpp" break; - case 70: // for_stmt: %empty -#line 429 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_node = std::make_unique(yylhs.location); } + case 60: // stmt_for: "for" "(" for_stmt ";" for_expr ";" for_stmt ")" stmt +#line 390 "parser.ypp" + { yylhs.value.as < stmt_for_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[6].value.as < stmt_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2139 "parser.cpp" break; - case 71: // for_expr: expr -#line 433 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 61: // stmt_foreach: "foreach" "(" name "in" expr ")" stmt +#line 395 "parser.ypp" + { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2145 "parser.cpp" break; - case 72: // for_expr: %empty -#line 434 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location); } + case 62: // stmt_foreach: "foreach" "(" name "," name "in" expr ")" stmt +#line 397 "parser.ypp" + { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[6].value.as < name_ptr > ())), expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2151 "parser.cpp" break; - case 73: // expr: expr_compare -#line 438 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 63: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 402 "parser.ypp" + { yylhs.value.as < stmt_switch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } #line 2157 "parser.cpp" break; - case 74: // expr: expr_binary -#line 439 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 64: // stmt_case: "case" integer ":" +#line 407 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } #line 2163 "parser.cpp" break; - case 75: // expr: expr_primitive -#line 440 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 65: // stmt_case: "case" neg_integer ":" +#line 409 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } #line 2169 "parser.cpp" break; - case 76: // expr_assign: "++" object -#line 444 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } + case 66: // stmt_case: "case" string ":" +#line 411 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < string_ptr > ())), std::make_unique(yylhs.location)); } #line 2175 "parser.cpp" break; - case 77: // expr_assign: "--" object -#line 445 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } + case 67: // stmt_default: "default" ":" +#line 416 "parser.ypp" + { yylhs.value.as < stmt_default_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2181 "parser.cpp" break; - case 78: // expr_assign: object "++" -#line 446 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 68: // stmt_break: "break" ";" +#line 421 "parser.ypp" + { yylhs.value.as < stmt_break_ptr > () = std::make_unique(yylhs.location); } #line 2187 "parser.cpp" break; - case 79: // expr_assign: object "--" -#line 447 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 69: // stmt_continue: "continue" ";" +#line 426 "parser.ypp" + { yylhs.value.as < stmt_continue_ptr > () = std::make_unique(yylhs.location); } #line 2193 "parser.cpp" break; - case 80: // expr_assign: object "=" expr -#line 448 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 70: // stmt_return: "return" expr ";" +#line 431 "parser.ypp" + { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2199 "parser.cpp" break; - case 81: // expr_assign: object "|=" expr -#line 449 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 71: // stmt_return: "return" ";" +#line 433 "parser.ypp" + { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2205 "parser.cpp" break; - case 82: // expr_assign: object "&=" expr -#line 450 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 72: // stmt_breakpoint: "breakpoint" ";" +#line 438 "parser.ypp" + { yylhs.value.as < stmt_breakpoint_ptr > () = std::make_unique(yylhs.location); } #line 2211 "parser.cpp" break; - case 83: // expr_assign: object "^=" expr -#line 451 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 73: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" +#line 443 "parser.ypp" + { yylhs.value.as < stmt_prof_begin_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2217 "parser.cpp" break; - case 84: // expr_assign: object "<<=" expr -#line 452 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()),std::move( yystack_[0].value.as < expr_ptr > ())); } + case 74: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" +#line 448 "parser.ypp" + { yylhs.value.as < stmt_prof_end_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2223 "parser.cpp" break; - case 85: // expr_assign: object ">>=" expr -#line 453 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 75: // for_stmt: expr_assign +#line 452 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_list = std::make_unique(yylhs.location); yylhs.value.as < stmt_ptr > ().as_list->stmts.push_back(stmt_ptr(std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_assign_ptr > ())))); } #line 2229 "parser.cpp" break; - case 86: // expr_assign: object "+=" expr -#line 454 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 76: // for_stmt: %empty +#line 453 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_node = std::make_unique(yylhs.location); } #line 2235 "parser.cpp" break; - case 87: // expr_assign: object "-=" expr -#line 455 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 77: // for_expr: expr +#line 457 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2241 "parser.cpp" break; - case 88: // expr_assign: object "*=" expr -#line 456 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 78: // for_expr: %empty +#line 458 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location); } #line 2247 "parser.cpp" break; - case 89: // expr_assign: object "/=" expr -#line 457 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 79: // expr: expr_compare +#line 462 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2253 "parser.cpp" break; - case 90: // expr_assign: object "%=" expr -#line 458 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 80: // expr: expr_binary +#line 463 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2259 "parser.cpp" break; - case 91: // expr_compare: expr "||" expr -#line 462 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 81: // expr: expr_primitive +#line 464 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2265 "parser.cpp" break; - case 92: // expr_compare: expr "&&" expr -#line 463 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 82: // expr_assign: "++" object +#line 468 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } #line 2271 "parser.cpp" break; - case 93: // expr_compare: expr "==" expr -#line 464 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 83: // expr_assign: "--" object +#line 469 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } #line 2277 "parser.cpp" break; - case 94: // expr_compare: expr "!=" expr -#line 465 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 84: // expr_assign: object "++" +#line 470 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2283 "parser.cpp" break; - case 95: // expr_compare: expr "<=" expr -#line 466 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 85: // expr_assign: object "--" +#line 471 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2289 "parser.cpp" break; - case 96: // expr_compare: expr ">=" expr -#line 467 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 86: // expr_assign: object "=" expr +#line 472 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2295 "parser.cpp" break; - case 97: // expr_compare: expr "<" expr -#line 468 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 87: // expr_assign: object "|=" expr +#line 473 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2301 "parser.cpp" break; - case 98: // expr_compare: expr ">" expr -#line 469 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 88: // expr_assign: object "&=" expr +#line 474 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2307 "parser.cpp" break; - case 99: // expr_binary: expr "|" expr -#line 473 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 89: // expr_assign: object "^=" expr +#line 475 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2313 "parser.cpp" break; - case 100: // expr_binary: expr "&" expr -#line 474 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 90: // expr_assign: object "<<=" expr +#line 476 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()),std::move( yystack_[0].value.as < expr_ptr > ())); } #line 2319 "parser.cpp" break; - case 101: // expr_binary: expr "^" expr -#line 475 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 91: // expr_assign: object ">>=" expr +#line 477 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2325 "parser.cpp" break; - case 102: // expr_binary: expr "<<" expr -#line 476 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 92: // expr_assign: object "+=" expr +#line 478 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2331 "parser.cpp" break; - case 103: // expr_binary: expr ">>" expr -#line 477 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 93: // expr_assign: object "-=" expr +#line 479 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2337 "parser.cpp" break; - case 104: // expr_binary: expr "+" expr -#line 478 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 94: // expr_assign: object "*=" expr +#line 480 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2343 "parser.cpp" break; - case 105: // expr_binary: expr "-" expr -#line 479 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 95: // expr_assign: object "/=" expr +#line 481 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2349 "parser.cpp" break; - case 106: // expr_binary: expr "*" expr -#line 480 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 96: // expr_assign: object "%=" expr +#line 482 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2355 "parser.cpp" break; - case 107: // expr_binary: expr "/" expr -#line 481 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 97: // expr_compare: expr "||" expr +#line 486 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2361 "parser.cpp" break; - case 108: // expr_binary: expr "%" expr -#line 482 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 98: // expr_compare: expr "&&" expr +#line 487 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2367 "parser.cpp" break; - case 109: // expr_primitive: "(" expr ")" -#line 486 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[1].value.as < expr_ptr > ()); } + case 99: // expr_compare: expr "==" expr +#line 488 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2373 "parser.cpp" break; - case 110: // expr_primitive: "~" expr -#line 487 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } + case 100: // expr_compare: expr "!=" expr +#line 489 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2379 "parser.cpp" break; - case 111: // expr_primitive: "!" expr -#line 488 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } + case 101: // expr_compare: expr "<=" expr +#line 490 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2385 "parser.cpp" break; - case 112: // expr_primitive: expr_call -#line 489 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 102: // expr_compare: expr ">=" expr +#line 491 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2391 "parser.cpp" break; - case 113: // expr_primitive: expr_call_thread -#line 490 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 103: // expr_compare: expr "<" expr +#line 492 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2397 "parser.cpp" break; - case 114: // expr_primitive: expr_call_childthread -#line 491 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 104: // expr_compare: expr ">" expr +#line 493 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2403 "parser.cpp" break; - case 115: // expr_primitive: expr_function -#line 492 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 105: // expr_binary: expr "|" expr +#line 497 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2409 "parser.cpp" break; - case 116: // expr_primitive: expr_add_array -#line 493 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 106: // expr_binary: expr "&" expr +#line 498 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2415 "parser.cpp" break; - case 117: // expr_primitive: expr_array -#line 494 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 107: // expr_binary: expr "^" expr +#line 499 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2421 "parser.cpp" break; - case 118: // expr_primitive: expr_field -#line 495 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 108: // expr_binary: expr "<<" expr +#line 500 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2427 "parser.cpp" break; - case 119: // expr_primitive: expr_size -#line 496 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 109: // expr_binary: expr ">>" expr +#line 501 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2433 "parser.cpp" break; - case 120: // expr_primitive: thisthread -#line 497 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < thisthread_ptr > ()); } + case 110: // expr_binary: expr "+" expr +#line 502 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2439 "parser.cpp" break; - case 121: // expr_primitive: empty_array -#line 498 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < empty_array_ptr > ()); } + case 111: // expr_binary: expr "-" expr +#line 503 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2445 "parser.cpp" break; - case 122: // expr_primitive: undefined -#line 499 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < undefined_ptr > ()); } + case 112: // expr_binary: expr "*" expr +#line 504 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2451 "parser.cpp" break; - case 123: // expr_primitive: game -#line 500 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < game_ptr > ()); } + case 113: // expr_binary: expr "/" expr +#line 505 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2457 "parser.cpp" break; - case 124: // expr_primitive: self -#line 501 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < self_ptr > ()); } + case 114: // expr_binary: expr "%" expr +#line 506 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2463 "parser.cpp" break; - case 125: // expr_primitive: anim -#line 502 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < anim_ptr > ()); } + case 115: // expr_primitive: "(" expr ")" +#line 510 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[1].value.as < expr_ptr > ()); } #line 2469 "parser.cpp" break; - case 126: // expr_primitive: level -#line 503 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < level_ptr > ()); } + case 116: // expr_primitive: "~" expr +#line 511 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2475 "parser.cpp" break; - case 127: // expr_primitive: animation -#line 504 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animation_ptr > ()); } + case 117: // expr_primitive: "!" expr +#line 512 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2481 "parser.cpp" break; - case 128: // expr_primitive: animtree -#line 505 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animtree_ptr > ()); } + case 118: // expr_primitive: expr_call +#line 513 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2487 "parser.cpp" break; - case 129: // expr_primitive: name -#line 506 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < name_ptr > ()); } + case 119: // expr_primitive: expr_call_thread +#line 514 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2493 "parser.cpp" break; - case 130: // expr_primitive: istring -#line 507 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < istring_ptr > ()); } + case 120: // expr_primitive: expr_call_childthread +#line 515 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2499 "parser.cpp" break; - case 131: // expr_primitive: string -#line 508 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < string_ptr > ()); } + case 121: // expr_primitive: expr_function +#line 516 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2505 "parser.cpp" break; - case 132: // expr_primitive: vector -#line 509 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < vector_ptr > ()); } + case 122: // expr_primitive: expr_add_array +#line 517 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2511 "parser.cpp" break; - case 133: // expr_primitive: neg_float -#line 510 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } + case 123: // expr_primitive: expr_array +#line 518 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2517 "parser.cpp" break; - case 134: // expr_primitive: neg_integer -#line 511 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } + case 124: // expr_primitive: expr_field +#line 519 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2523 "parser.cpp" break; - case 135: // expr_primitive: float -#line 512 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } + case 125: // expr_primitive: expr_size +#line 520 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2529 "parser.cpp" break; - case 136: // expr_primitive: integer -#line 513 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } + case 126: // expr_primitive: thisthread +#line 521 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < thisthread_ptr > ()); } #line 2535 "parser.cpp" break; - case 137: // expr_primitive: false -#line 514 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < false_ptr > ()); } + case 127: // expr_primitive: empty_array +#line 522 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < empty_array_ptr > ()); } #line 2541 "parser.cpp" break; - case 138: // expr_primitive: true -#line 515 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < true_ptr > ()); } + case 128: // expr_primitive: undefined +#line 523 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < undefined_ptr > ()); } #line 2547 "parser.cpp" break; - case 139: // expr_call: expr_call_function -#line 519 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 129: // expr_primitive: game +#line 524 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < game_ptr > ()); } #line 2553 "parser.cpp" break; - case 140: // expr_call: expr_call_pointer -#line 520 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 130: // expr_primitive: self +#line 525 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < self_ptr > ()); } #line 2559 "parser.cpp" break; - case 141: // expr_call: object expr_call_function -#line 521 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 131: // expr_primitive: anim +#line 526 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < anim_ptr > ()); } #line 2565 "parser.cpp" break; - case 142: // expr_call: object expr_call_pointer -#line 522 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 132: // expr_primitive: level +#line 527 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < level_ptr > ()); } #line 2571 "parser.cpp" break; - case 143: // expr_call_thread: "thread" expr_call_function -#line 526 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 133: // expr_primitive: animation +#line 528 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animation_ptr > ()); } #line 2577 "parser.cpp" break; - case 144: // expr_call_thread: "thread" expr_call_pointer -#line 527 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 134: // expr_primitive: animtree +#line 529 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animtree_ptr > ()); } #line 2583 "parser.cpp" break; - case 145: // expr_call_thread: object "thread" expr_call_function -#line 528 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 135: // expr_primitive: name +#line 530 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < name_ptr > ()); } #line 2589 "parser.cpp" break; - case 146: // expr_call_thread: object "thread" expr_call_pointer -#line 529 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 136: // expr_primitive: istring +#line 531 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < istring_ptr > ()); } #line 2595 "parser.cpp" break; - case 147: // expr_call_childthread: "childthread" expr_call_function -#line 533 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 137: // expr_primitive: string +#line 532 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < string_ptr > ()); } #line 2601 "parser.cpp" break; - case 148: // expr_call_childthread: "childthread" expr_call_pointer -#line 534 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 138: // expr_primitive: vector +#line 533 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < vector_ptr > ()); } #line 2607 "parser.cpp" break; - case 149: // expr_call_childthread: object "childthread" expr_call_function -#line 535 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 139: // expr_primitive: neg_float +#line 534 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } #line 2613 "parser.cpp" break; - case 150: // expr_call_childthread: object "childthread" expr_call_pointer -#line 536 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 140: // expr_primitive: neg_integer +#line 535 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } #line 2619 "parser.cpp" break; - case 151: // expr_call_function: name "(" expr_arguments ")" -#line 541 "parser.ypp" - {yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::make_unique(), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 141: // expr_primitive: float +#line 536 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } #line 2625 "parser.cpp" break; - case 152: // expr_call_function: file "::" name "(" expr_arguments ")" -#line 543 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < file_ptr > ()), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 142: // expr_primitive: integer +#line 537 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } #line 2631 "parser.cpp" break; - case 153: // expr_call_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 548 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, false, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 143: // expr_primitive: false +#line 538 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < false_ptr > ()); } #line 2637 "parser.cpp" break; - case 154: // expr_call_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 550 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, true, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 144: // expr_primitive: true +#line 539 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < true_ptr > ()); } #line 2643 "parser.cpp" break; - case 155: // expr_arguments: expr_arguments_filled -#line 554 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } + case 145: // expr_call: expr_call_function +#line 543 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2649 "parser.cpp" break; - case 156: // expr_arguments: expr_arguments_empty -#line 555 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } + case 146: // expr_call: expr_call_pointer +#line 544 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2655 "parser.cpp" break; - case 157: // expr_arguments_filled: expr_arguments "," expr -#line 560 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[2].value.as < expr_arguments_ptr > ()); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } + case 147: // expr_call: object expr_call_function +#line 545 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2661 "parser.cpp" break; - case 158: // expr_arguments_filled: expr -#line 562 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } + case 148: // expr_call: object expr_call_pointer +#line 546 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2667 "parser.cpp" break; - case 159: // expr_arguments_empty: %empty -#line 567 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); } + case 149: // expr_call_thread: "thread" expr_call_function +#line 550 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2673 "parser.cpp" break; - case 160: // expr_function: "::" name -#line 572 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < name_ptr > ())); } + case 150: // expr_call_thread: "thread" expr_call_pointer +#line 551 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2679 "parser.cpp" break; - case 161: // expr_function: file "::" name -#line 574 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < file_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } + case 151: // expr_call_thread: object "thread" expr_call_function +#line 552 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2685 "parser.cpp" break; - case 162: // expr_add_array: "[" expr_arguments_filled "]" -#line 579 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 152: // expr_call_thread: object "thread" expr_call_pointer +#line 553 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2691 "parser.cpp" break; - case 163: // expr_array: object "[" expr "]" -#line 584 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < node_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 153: // expr_call_childthread: "childthread" expr_call_function +#line 557 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2697 "parser.cpp" break; - case 164: // expr_field: object "." name -#line 589 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } + case 154: // expr_call_childthread: "childthread" expr_call_pointer +#line 558 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2703 "parser.cpp" break; - case 165: // expr_size: object "." "size" -#line 594 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ())); } + case 155: // expr_call_childthread: object "childthread" expr_call_function +#line 559 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2709 "parser.cpp" break; - case 166: // object: expr_call -#line 598 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 156: // expr_call_childthread: object "childthread" expr_call_pointer +#line 560 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2715 "parser.cpp" break; - case 167: // object: expr_array -#line 599 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } + case 157: // expr_call_function: name "(" expr_arguments ")" +#line 565 "parser.ypp" + {yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::make_unique(), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2721 "parser.cpp" break; - case 168: // object: expr_field -#line 600 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } + case 158: // expr_call_function: file "::" name "(" expr_arguments ")" +#line 567 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < file_ptr > ()), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2727 "parser.cpp" break; - case 169: // object: game -#line 601 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < game_ptr > ()); } + case 159: // expr_call_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 572 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, false, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2733 "parser.cpp" break; - case 170: // object: self -#line 602 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < self_ptr > ()); } + case 160: // expr_call_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 574 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, true, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2739 "parser.cpp" break; - case 171: // object: anim -#line 603 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < anim_ptr > ()); } + case 161: // expr_arguments: expr_arguments_filled +#line 578 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } #line 2745 "parser.cpp" break; - case 172: // object: level -#line 604 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < level_ptr > ()); } + case 162: // expr_arguments: expr_arguments_empty +#line 579 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } #line 2751 "parser.cpp" break; - case 173: // object: name -#line 605 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < name_ptr > ()); } + case 163: // expr_arguments_filled: expr_arguments "," expr +#line 584 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[2].value.as < expr_arguments_ptr > ()); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2757 "parser.cpp" break; - case 174: // thisthread: "thisthread" -#line 608 "parser.ypp" - { yylhs.value.as < thisthread_ptr > () = std::make_unique(yylhs.location); } + case 164: // expr_arguments_filled: expr +#line 586 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2763 "parser.cpp" break; - case 175: // empty_array: "[" "]" -#line 609 "parser.ypp" - { yylhs.value.as < empty_array_ptr > () = std::make_unique(yylhs.location); } + case 165: // expr_arguments_empty: %empty +#line 591 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); } #line 2769 "parser.cpp" break; - case 176: // undefined: "undefined" -#line 610 "parser.ypp" - { yylhs.value.as < undefined_ptr > () = std::make_unique(yylhs.location); } + case 166: // expr_function: "::" name +#line 596 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2775 "parser.cpp" break; - case 177: // game: "game" -#line 611 "parser.ypp" - { yylhs.value.as < game_ptr > () = std::make_unique(yylhs.location); } + case 167: // expr_function: file "::" name +#line 598 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < file_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2781 "parser.cpp" break; - case 178: // self: "self" -#line 612 "parser.ypp" - { yylhs.value.as < self_ptr > () = std::make_unique(yylhs.location); } + case 168: // expr_add_array: "[" expr_arguments_filled "]" +#line 603 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2787 "parser.cpp" break; - case 179: // anim: "anim" -#line 613 "parser.ypp" - { yylhs.value.as < anim_ptr > () = std::make_unique(yylhs.location); } + case 169: // expr_array: object "[" expr "]" +#line 608 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < node_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2793 "parser.cpp" break; - case 180: // level: "level" -#line 614 "parser.ypp" - { yylhs.value.as < level_ptr > () = std::make_unique(yylhs.location); } + case 170: // expr_field: object "." name +#line 613 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2799 "parser.cpp" break; - case 181: // animation: "%" "identifier" -#line 615 "parser.ypp" - { yylhs.value.as < animation_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 171: // expr_size: object ".size" +#line 618 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2805 "parser.cpp" break; - case 182: // animtree: "#animtree" -#line 616 "parser.ypp" - { yylhs.value.as < animtree_ptr > () = std::make_unique(yylhs.location); } + case 172: // object: expr_call +#line 622 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2811 "parser.cpp" break; - case 183: // name: "identifier" -#line 617 "parser.ypp" - { yylhs.value.as < name_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 173: // object: expr_array +#line 623 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2817 "parser.cpp" break; - case 184: // file: "file path" -#line 618 "parser.ypp" - { yylhs.value.as < file_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 174: // object: expr_field +#line 624 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2823 "parser.cpp" break; - case 185: // istring: "localized string" -#line 619 "parser.ypp" - { yylhs.value.as < istring_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 175: // object: game +#line 625 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < game_ptr > ()); } #line 2829 "parser.cpp" break; - case 186: // string: "string literal" -#line 620 "parser.ypp" - { yylhs.value.as < string_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 176: // object: self +#line 626 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < self_ptr > ()); } #line 2835 "parser.cpp" break; - case 187: // vector: "(" expr "," expr "," expr ")" -#line 621 "parser.ypp" - { yylhs.value.as < vector_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[3].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 177: // object: anim +#line 627 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < anim_ptr > ()); } #line 2841 "parser.cpp" break; - case 188: // neg_float: "-" "float" -#line 622 "parser.ypp" - { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 178: // object: level +#line 628 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < level_ptr > ()); } #line 2847 "parser.cpp" break; - case 189: // neg_integer: "-" "int" -#line 623 "parser.ypp" - { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 179: // object: name +#line 629 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < name_ptr > ()); } #line 2853 "parser.cpp" break; - case 190: // float: "float" -#line 624 "parser.ypp" - { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 180: // thisthread: "thisthread" +#line 632 "parser.ypp" + { yylhs.value.as < thisthread_ptr > () = std::make_unique(yylhs.location); } #line 2859 "parser.cpp" break; - case 191: // integer: "int" -#line 625 "parser.ypp" - { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 181: // empty_array: "[" "]" +#line 633 "parser.ypp" + { yylhs.value.as < empty_array_ptr > () = std::make_unique(yylhs.location); } #line 2865 "parser.cpp" break; - case 192: // false: "false" -#line 626 "parser.ypp" - { yylhs.value.as < false_ptr > () = std::make_unique(yylhs.location); } + case 182: // undefined: "undefined" +#line 634 "parser.ypp" + { yylhs.value.as < undefined_ptr > () = std::make_unique(yylhs.location); } #line 2871 "parser.cpp" break; - case 193: // true: "true" -#line 627 "parser.ypp" - { yylhs.value.as < true_ptr > () = std::make_unique(yylhs.location); } + case 183: // game: "game" +#line 635 "parser.ypp" + { yylhs.value.as < game_ptr > () = std::make_unique(yylhs.location); } #line 2877 "parser.cpp" break; + case 184: // self: "self" +#line 636 "parser.ypp" + { yylhs.value.as < self_ptr > () = std::make_unique(yylhs.location); } +#line 2883 "parser.cpp" + break; -#line 2881 "parser.cpp" + case 185: // anim: "anim" +#line 637 "parser.ypp" + { yylhs.value.as < anim_ptr > () = std::make_unique(yylhs.location); } +#line 2889 "parser.cpp" + break; + + case 186: // level: "level" +#line 638 "parser.ypp" + { yylhs.value.as < level_ptr > () = std::make_unique(yylhs.location); } +#line 2895 "parser.cpp" + break; + + case 187: // animation: "%" "identifier" +#line 639 "parser.ypp" + { yylhs.value.as < animation_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2901 "parser.cpp" + break; + + case 188: // animtree: "#animtree" +#line 640 "parser.ypp" + { yylhs.value.as < animtree_ptr > () = std::make_unique(yylhs.location); } +#line 2907 "parser.cpp" + break; + + case 189: // name: "identifier" +#line 641 "parser.ypp" + { yylhs.value.as < name_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2913 "parser.cpp" + break; + + case 190: // file: "file path" +#line 642 "parser.ypp" + { yylhs.value.as < file_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2919 "parser.cpp" + break; + + case 191: // istring: "localized string" +#line 643 "parser.ypp" + { yylhs.value.as < istring_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2925 "parser.cpp" + break; + + case 192: // string: "string literal" +#line 644 "parser.ypp" + { yylhs.value.as < string_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2931 "parser.cpp" + break; + + case 193: // vector: "(" expr "," expr "," expr ")" +#line 645 "parser.ypp" + { yylhs.value.as < vector_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[3].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } +#line 2937 "parser.cpp" + break; + + case 194: // neg_float: "-" "float" +#line 646 "parser.ypp" + { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 2943 "parser.cpp" + break; + + case 195: // neg_integer: "-" "int" +#line 647 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 2949 "parser.cpp" + break; + + case 196: // float: "float" +#line 648 "parser.ypp" + { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2955 "parser.cpp" + break; + + case 197: // integer: "int" +#line 649 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2961 "parser.cpp" + break; + + case 198: // false: "false" +#line 650 "parser.ypp" + { yylhs.value.as < false_ptr > () = std::make_unique(yylhs.location); } +#line 2967 "parser.cpp" + break; + + case 199: // true: "true" +#line 651 "parser.ypp" + { yylhs.value.as < true_ptr > () = std::make_unique(yylhs.location); } +#line 2973 "parser.cpp" + break; + + +#line 2977 "parser.cpp" default: break; @@ -3061,33 +3157,34 @@ namespace xsk { namespace gsc { namespace iw6 { { static const char *const yy_sname[] = { - "end of file", "error", "invalid token", "#include", "#using_animtree", - "#animtree", "endon", "notify", "wait", "waittill", "waittillmatch", - "waittillframeend", "if", "else", "while", "for", "foreach", "in", - "switch", "case", "default", "break", "continue", "return", "thread", - "childthread", "thisthread", "call", "true", "false", "undefined", - "size", "game", "self", "anim", "level", "(", ")", "{", "}", "[", "]", - ",", ".", "::", ":", ";", "++", "--", "<<", ">>", "||", "&&", "==", "!=", - "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", "|=", - "&=", "^=", ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", "%", - "file path", "identifier", "string literal", "localized string", "float", - "int", "ADD_ARRAY", "THEN", "NEG", "ANIMREF", "PREINC", "PREDEC", - "POSTINC", "POSTDEC", "$accept", "root", "program", "include", "define", - "usingtree", "constant", "thread", "parameters", "stmt", "stmt_block", - "stmt_list", "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", - "stmt_wait", "stmt_waittill", "stmt_waittillmatch", - "stmt_waittillframeend", "stmt_if", "stmt_ifelse", "stmt_while", - "stmt_for", "stmt_foreach", "stmt_switch", "stmt_case", "stmt_default", - "stmt_break", "stmt_continue", "stmt_return", "for_stmt", "for_expr", - "expr", "expr_assign", "expr_compare", "expr_binary", "expr_primitive", - "expr_call", "expr_call_thread", "expr_call_childthread", - "expr_call_function", "expr_call_pointer", "expr_arguments", - "expr_arguments_filled", "expr_arguments_empty", "expr_function", - "expr_add_array", "expr_array", "expr_field", "expr_size", "object", - "thisthread", "empty_array", "undefined", "game", "self", "anim", - "level", "animation", "animtree", "name", "file", "istring", "string", - "vector", "neg_float", "neg_integer", "float", "integer", "false", - "true", YY_NULLPTR + "end of file", "error", "invalid token", "breakpoint", "prof_begin", + "prof_end", "#include", "#using_animtree", "#animtree", "endon", + "notify", "wait", "waittill", "waittillmatch", "waittillframeend", "if", + "else", "while", "for", "foreach", "in", "switch", "case", "default", + "break", "continue", "return", "thread", "childthread", "thisthread", + "call", "true", "false", "undefined", ".size", "game", "self", "anim", + "level", "(", ")", "{", "}", "[", "]", ",", ".", "::", ":", ";", "++", + "--", "<<", ">>", "||", "&&", "==", "!=", "<=", ">=", "<", ">", "!", "~", + "=", "+=", "-=", "*=", "/=", "%=", "|=", "&=", "^=", ">>=", "<<=", "|", + "&", "^", "+", "-", "*", "/", "%", "file path", "identifier", + "string literal", "localized string", "float", "int", "ADD_ARRAY", + "THEN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", + "$accept", "root", "program", "include", "define", "usingtree", + "constant", "thread", "parameters", "stmt", "stmt_block", "stmt_list", + "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", "stmt_wait", + "stmt_waittill", "stmt_waittillmatch", "stmt_waittillframeend", + "stmt_if", "stmt_ifelse", "stmt_while", "stmt_for", "stmt_foreach", + "stmt_switch", "stmt_case", "stmt_default", "stmt_break", + "stmt_continue", "stmt_return", "stmt_breakpoint", "stmt_prof_begin", + "stmt_prof_end", "for_stmt", "for_expr", "expr", "expr_assign", + "expr_compare", "expr_binary", "expr_primitive", "expr_call", + "expr_call_thread", "expr_call_childthread", "expr_call_function", + "expr_call_pointer", "expr_arguments", "expr_arguments_filled", + "expr_arguments_empty", "expr_function", "expr_add_array", "expr_array", + "expr_field", "expr_size", "object", "thisthread", "empty_array", + "undefined", "game", "self", "anim", "level", "animation", "animtree", + "name", "file", "istring", "string", "vector", "neg_float", + "neg_integer", "float", "integer", "false", "true", YY_NULLPTR }; return yy_sname[yysymbol]; } @@ -3352,513 +3449,518 @@ namespace xsk { namespace gsc { namespace iw6 { } - const short parser::yypact_ninf_ = -232; + const short parser::yypact_ninf_ = -240; - const short parser::yytable_ninf_ = -174; + const short parser::yytable_ninf_ = -180; const short parser::yypact_[] = { - -2, -68, -15, -232, 42, -2, -232, -232, -232, -232, - -232, -23, -232, 7, -35, -232, -232, -232, -24, 663, - -232, -232, 23, -12, -232, -232, -3, -3, -232, 28, - -232, -232, -232, -232, -232, -232, -232, 663, 539, -24, - 663, 663, -76, -8, -232, -232, -232, 1372, -232, -232, - -232, 40, -232, -232, -232, -232, -232, -232, 251, 387, - -232, 407, -232, -232, -232, 416, 449, 474, 562, -232, - -232, 19, 25, -232, -232, -232, -232, -232, -232, -232, - -232, -232, 55, 78, -24, 63, -232, -232, 59, 75, - -232, -232, 83, 975, 539, -232, 1450, 87, 92, -232, - -232, -232, -232, -232, -232, -232, -232, 663, 663, 663, - 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, - 663, 663, 663, 663, 663, -3, -3, 725, -9, -232, - -232, 663, -24, -232, 842, -232, -232, 663, -24, 663, - -232, 663, 659, 663, -232, 66, 66, 1460, 1008, 535, - 535, 322, 322, 322, 322, 1051, 1491, 1501, 10, 10, - -232, -232, -232, -232, -232, -232, -232, 1282, -232, -232, - 14, -232, 88, 663, 89, 100, 101, 110, 111, 114, - -62, 112, 113, 116, 601, -232, 121, 121, -232, -232, - 880, -232, -232, -232, -232, -232, -232, -232, -232, -232, - -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, - 117, 136, 139, -232, -232, 771, -232, -232, -232, -232, - 59, 659, 88, 1321, 1359, 119, 1450, -232, -232, 663, - 1406, -232, 663, 663, 1, -24, 663, 73, 143, 144, - 152, -232, -232, -232, -232, 1419, -232, 31, 31, -232, - -232, -232, -232, -232, 170, 171, 173, 174, -24, -232, - -232, 663, 663, 663, 663, 663, 663, 663, 663, 663, - 663, 663, 167, 663, 175, 33, -232, 1114, 1147, 166, - -232, 940, 12, 1157, -232, -232, -232, -232, 663, 663, - 663, 663, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, - 1450, 1450, 1450, 182, 1190, 663, -232, 918, 918, 663, - 663, -24, 78, 1200, 1018, 1061, 1104, 663, -232, 48, - 209, -232, 177, 1450, 1233, 207, -232, 181, 192, 663, - 194, 663, 199, 663, 49, -232, 918, 1, 918, 663, - -232, -232, 65, -232, 76, -232, 85, -232, -232, 191, - -232, 1243, 200, 204, 211, 918, 918, -232, -232, -232, - -232, -232 + 3, -71, -17, -240, 28, 3, -240, -240, -240, -240, + -240, -20, -240, -6, -38, -240, -240, -240, -21, 774, + -240, -240, 25, -16, -240, -240, 32, 32, -240, 29, + -240, -240, -240, -240, -240, -240, -240, 774, 650, -21, + 774, 774, -73, -13, -240, -240, -240, 1380, -240, -240, + -240, 30, -240, -240, -240, -240, -240, -240, 40, 65, + -240, 673, -240, -240, -240, 735, 743, 804, 930, -240, + -240, 6, 33, -240, -240, -240, -240, -240, -240, -240, + -240, -240, 36, 47, -21, 34, -240, -240, 42, 44, + -240, -240, 51, 944, 650, -240, 1458, 52, 54, -240, + -240, -240, -240, -240, -240, -240, -240, 774, 774, 774, + 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, + 774, 774, 774, 774, 774, 32, 32, -240, 836, -21, + -240, -240, 774, -21, -240, 485, -240, -240, 774, -21, + 774, -240, 774, 1251, 774, -240, 130, 130, 1468, 977, + 84, 84, 206, 206, 206, 206, 1020, 1509, 1499, 171, + 171, -240, -240, -240, -240, -240, -240, -240, 1290, -240, + -10, -240, 66, 60, 78, 79, 774, 61, 81, 89, + 95, 99, 114, -68, 108, 109, 118, 712, -240, 187, + 187, -240, -240, 581, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, 119, 120, 139, -240, + -240, 882, -240, -240, -240, -240, 42, 1251, 66, 1329, + 1367, 152, 1458, -240, -240, 774, -240, 774, 774, 1414, + -240, 774, 774, 932, -21, 774, 112, 111, 166, 170, + -240, -240, -240, -240, 1427, -240, -5, -5, -240, -240, + -240, -240, -240, 189, 195, 197, 201, -240, -240, 774, + 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, + 202, 774, 208, 8, 10, 11, -240, 1083, 1116, 192, + -240, 488, 1, 1126, -240, -240, -240, -240, 774, 774, + 774, 774, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, + 1458, 1458, 1458, 210, 1159, 774, -240, 205, 214, 625, + 625, 774, 774, -21, 47, 1169, 987, 1030, 1073, 774, + -240, 14, -240, -240, 239, -240, 216, 1458, 1202, 246, + -240, 219, 227, 774, 228, 774, 230, 774, 87, -240, + 625, 932, 625, 774, -240, -240, 101, -240, 107, -240, + 115, -240, -240, 233, -240, 1212, 234, 243, 245, 625, + 625, -240, -240, -240, -240, -240 }; const unsigned char parser::yydefact_[] = { - 3, 0, 0, 183, 0, 2, 6, 7, 9, 10, - 11, 0, 184, 0, 0, 1, 4, 5, 17, 0, - 8, 186, 0, 0, 16, 182, 0, 0, 174, 0, - 193, 192, 176, 177, 178, 179, 180, 0, 159, 0, - 0, 0, 0, 0, 185, 190, 191, 0, 73, 74, - 75, 112, 113, 114, 139, 140, 115, 116, 117, 118, - 119, 0, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 0, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 0, 0, 0, 0, 143, 144, 0, 0, - 147, 148, 0, 0, 159, 175, 158, 0, 155, 156, - 160, 111, 110, 188, 189, 181, 13, 0, 0, 0, + 3, 0, 0, 189, 0, 2, 6, 7, 9, 10, + 11, 0, 190, 0, 0, 1, 4, 5, 17, 0, + 8, 192, 0, 0, 16, 188, 0, 0, 180, 0, + 199, 198, 182, 183, 184, 185, 186, 0, 165, 0, + 0, 0, 0, 0, 191, 196, 197, 0, 79, 80, + 81, 118, 119, 120, 145, 146, 121, 122, 123, 124, + 125, 0, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 0, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 0, 0, 0, 0, 149, 150, 0, 0, + 153, 154, 0, 0, 165, 181, 164, 0, 161, 162, + 166, 117, 116, 194, 195, 187, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, - 142, 159, 0, 12, 0, 14, 15, 0, 0, 0, - 109, 0, 158, 0, 162, 102, 103, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 104, 105, - 106, 107, 108, 145, 146, 149, 150, 0, 165, 164, - 0, 155, 161, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 39, 0, 0, 41, 18, - 0, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 0, 166, 0, 167, 168, 0, 169, 170, 171, 172, - 173, 0, 0, 0, 0, 0, 157, 163, 151, 159, - 0, 53, 0, 0, 70, 0, 0, 0, 0, 0, - 0, 64, 65, 66, 68, 0, 166, 76, 77, 38, - 40, 44, 42, 43, 0, 0, 0, 0, 0, 78, - 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, - 69, 0, 0, 0, 63, 62, 61, 67, 0, 0, - 0, 0, 80, 86, 87, 88, 89, 90, 81, 82, - 83, 85, 84, 0, 0, 159, 152, 0, 0, 72, - 0, 0, 0, 0, 0, 0, 0, 159, 187, 0, - 54, 56, 0, 71, 0, 0, 60, 0, 0, 159, - 0, 159, 0, 159, 0, 153, 0, 70, 0, 0, - 45, 47, 0, 50, 0, 52, 0, 154, 55, 0, - 58, 0, 0, 0, 0, 0, 0, 46, 49, 51, - 57, 59 + 0, 0, 0, 0, 0, 0, 0, 171, 0, 0, + 147, 148, 165, 0, 12, 0, 14, 15, 0, 0, + 0, 115, 0, 164, 0, 168, 108, 109, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 110, + 111, 112, 113, 114, 151, 152, 155, 156, 0, 170, + 0, 161, 167, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, + 0, 44, 18, 0, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 0, 172, 0, 173, + 174, 0, 175, 176, 177, 178, 179, 0, 0, 0, + 0, 0, 163, 169, 157, 165, 72, 165, 165, 0, + 56, 0, 0, 76, 0, 0, 0, 0, 0, 0, + 67, 68, 69, 71, 0, 172, 82, 83, 41, 43, + 47, 45, 46, 0, 0, 0, 0, 84, 85, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, + 75, 0, 0, 0, 66, 65, 64, 70, 0, 0, + 0, 0, 86, 92, 93, 94, 95, 96, 87, 88, + 89, 91, 90, 0, 0, 165, 158, 0, 0, 0, + 0, 78, 0, 0, 0, 0, 0, 0, 0, 165, + 193, 0, 73, 74, 57, 59, 0, 77, 0, 0, + 63, 0, 0, 165, 0, 165, 0, 165, 0, 159, + 0, 76, 0, 0, 48, 50, 0, 53, 0, 55, + 0, 160, 58, 0, 61, 0, 0, 0, 0, 0, + 0, 49, 52, 54, 60, 62 }; const short parser::yypgoto_[] = { - -232, -232, -232, 224, 246, -232, -232, -232, -232, -41, - -79, -232, -232, -232, -232, -232, -232, -232, -232, -232, - -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, - -232, -77, -232, 57, -231, -232, -232, -232, -94, 69, - -232, -16, -11, -112, -31, -232, -232, -232, -82, 82, - -232, 115, -232, -232, -232, 172, 183, 195, 205, -232, - -232, 0, 5, -232, 3, -232, -232, 84, -232, 91, - -232, -232 + -240, -240, -240, 277, 290, -240, -240, -240, -240, 113, + -82, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -54, -240, 63, -239, -240, -240, + -240, -39, 71, -240, -24, -19, -116, -25, -240, -240, + -240, 26, 85, -240, 100, -240, -240, -240, 110, 125, + 213, 224, -240, -240, 0, 5, -240, 9, -240, -240, + 124, -240, 126, -240, -240 }; const short parser::yydefgoto_[] = { - 0, 4, 5, 6, 7, 8, 9, 10, 23, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 279, 322, 96, 210, 48, 49, 50, 51, 52, - 53, 54, 55, 97, 171, 99, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81 + 0, 4, 5, 6, 7, 8, 9, 10, 23, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 289, 336, 96, 216, 48, 49, + 50, 51, 52, 53, 54, 55, 97, 171, 99, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81 }; const short parser::yytable_[] = { - 11, 1, 2, 280, 135, 11, 13, 98, 103, 104, - 86, 90, 12, 18, 237, 87, 91, 22, 24, 170, - 21, 14, 168, 46, 29, 83, 88, 88, 29, 310, - 84, 89, 89, 33, 34, 35, 36, 85, 19, 100, - 211, 85, 15, -173, -173, 129, -173, 21, 186, 187, - 130, 228, 213, 20, 311, 131, 143, 3, 29, -173, - 82, 88, -173, 98, -166, -166, 89, -166, 92, 132, - 306, 127, 3, 105, 258, 143, 47, 12, 3, 3, - -166, 12, 3, -166, 136, 335, 347, 122, 123, 124, - 143, 143, 246, 246, 93, 131, 211, 101, 102, -173, - -173, 133, 352, 137, 213, 213, 280, 143, 213, 163, - 165, 12, 3, 353, 164, 166, 134, 275, 143, 138, - -166, -166, 354, 139, 229, 88, 88, 143, 169, 143, - 89, 89, 172, 144, 220, 231, 232, 233, 222, 89, - 246, 120, 121, 122, 123, 124, 234, 235, 29, 250, - 236, 142, 213, 33, 34, 35, 36, 241, 104, 242, - 274, 85, 243, 251, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 252, 238, 167, 253, 220, 220, 284, 285, - 220, 89, 89, 319, 221, 89, 223, 286, 224, 129, - 226, 12, 3, 212, 130, 334, 288, 289, 303, 290, - 291, 305, 309, 211, 211, 88, 214, 342, 317, 344, - 89, 346, 336, 337, 339, 213, 213, 340, 355, 16, - 230, 129, 129, 326, 220, 282, 130, 130, 341, 89, - 343, 245, 211, 246, 211, 345, 357, 88, 88, 215, - 358, 17, 89, 89, 213, 213, 213, 359, 169, 212, - 349, 211, 211, 0, 239, 129, 320, 321, 214, 214, - 130, 240, 214, 213, 213, -167, -167, 0, -167, 0, - 0, 88, 0, 0, 0, 0, 89, 0, 0, 277, - 278, -167, 0, 283, -167, 348, 0, 350, 0, 0, - 0, 247, 248, 0, 0, 215, 216, 220, 220, 0, - 0, 325, 89, 89, 360, 361, 214, 217, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 218, - 304, -167, -167, 0, 0, 0, 220, 220, 220, 219, - 0, 89, 89, 89, 0, 313, 314, 315, 316, 281, - 0, 0, 0, 0, 0, 220, 220, 0, 216, 216, - 89, 89, 216, 0, 0, 0, 323, 324, 0, 217, - 217, 107, 108, 217, 0, 0, 212, 212, 0, 0, - 0, 218, 218, 0, 0, 218, 0, 0, 0, 214, - 214, 219, 219, 0, 0, 219, 351, 120, 121, 122, - 123, 124, 0, 0, 0, 212, 216, 212, 0, 0, - 0, -168, -168, 0, -168, 0, 0, 217, 214, 214, - 214, 0, 215, 215, 212, 212, 0, -168, 0, 218, - -168, 125, 126, 0, 29, 0, 0, 214, 214, 219, - -169, -169, 0, -169, 0, 0, 0, 127, 0, 0, - 128, 215, 281, 215, 0, 0, -169, 0, 0, -169, - 0, 0, 0, 0, 0, 0, 0, -168, -168, 0, - 215, 215, 0, -170, -170, 0, -170, 0, 0, 216, - 216, 0, 0, 0, 0, 0, 0, 12, 3, -170, - 217, 217, -170, 0, 0, 0, -169, -169, -171, -171, - 0, -171, 218, 218, 0, 0, 0, 0, 216, 216, - 216, 0, 219, 219, -171, 0, 0, -171, 0, 217, - 217, 217, 0, 0, 0, 0, 0, 216, 216, -170, - -170, 218, 218, 218, 0, 0, 0, 0, 217, 217, - 0, 219, 219, 219, 25, 0, 0, 0, 0, 0, - 218, 218, 0, 0, -171, -171, 0, 0, 0, 0, - 219, 219, 0, 26, 27, 28, 29, 30, 31, 32, - 0, 33, 34, 35, 36, 37, 0, 0, 0, 94, - 95, 0, 0, 39, 107, 108, -172, -172, 0, -172, - 113, 114, 115, 116, 0, 0, 0, 0, 40, 41, - 0, 0, -172, 0, 0, -172, 25, 0, 0, 0, - 120, 121, 122, 123, 124, 42, 0, 0, 43, 12, - 3, 21, 44, 45, 46, 26, 27, 28, 29, 30, - 31, 32, 0, 33, 34, 35, 36, 37, 0, 0, - 0, 38, -172, -172, 0, 39, 0, 244, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 40, 41, 0, 0, 0, 0, 0, 0, 25, 0, - 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, - 43, 12, 3, 21, 44, 45, 46, 26, 27, 28, + 11, 136, 86, 90, 290, 11, 13, 87, 91, 1, + 2, 246, 12, 98, 103, 104, 170, 21, 24, 18, + 46, 322, 14, 22, 83, 29, 88, 88, 15, 84, + 234, 89, 89, -179, -179, 144, -179, 130, 128, 100, + -179, 129, 131, 20, 19, 132, 323, 21, 316, -179, + 317, 318, -179, 144, 349, 144, 144, -172, -172, 144, + -172, 88, 29, 3, -172, 82, 89, -173, -173, 98, + -173, 105, 92, -172, -173, 85, -172, 138, 12, 3, + 133, 132, 47, -173, 137, 134, -173, 3, 135, -179, + -179, 139, -174, -174, 140, -174, 217, 144, 145, -174, + 93, 164, 166, 101, 102, 235, 165, 167, -174, 236, + 240, -174, 290, -172, -172, 12, 3, 237, 238, 283, + 241, 284, 285, -173, -173, 88, 88, 361, 242, 169, + 89, 89, 144, 172, 243, 226, 107, 108, 244, 228, + 89, 366, 113, 114, 115, 116, 144, 367, -174, -174, + 255, 255, 144, 245, 217, 368, 250, 143, 251, 294, + 144, 219, 120, 121, 122, 123, 124, 252, 260, 261, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 262, 226, + 226, 168, 247, 226, 89, 89, 282, 130, 89, 331, + 104, 227, 131, 229, 255, 230, 218, 232, 120, 121, + 122, 123, 124, 348, 295, 219, 219, 29, 296, 219, + 220, 88, 33, 34, 35, 36, 89, 356, 298, 358, + 85, 360, 130, 130, 299, 221, 300, 131, 131, 239, + 301, 321, 340, 226, 292, 222, 313, 315, 89, 329, + 254, 122, 123, 124, 332, 350, 88, 88, 107, 108, + 223, 89, 89, 333, 218, 351, 353, 130, 354, 219, + 12, 3, 131, 369, 220, 220, 355, 357, 220, 359, + 217, 217, 16, 371, 120, 121, 122, 123, 124, 256, + 257, 88, 372, 221, 373, 17, 89, 363, 0, 222, + 222, 0, 0, 222, 287, 288, 259, 248, 293, 249, + 0, 217, 255, 217, 223, 223, 0, 0, 223, 226, + 226, 0, 0, 339, 89, 89, 0, 0, 220, 0, + 217, 217, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 291, 314, 219, 219, 0, 224, 0, + 226, 226, 226, 222, 0, 89, 89, 89, 0, 225, + 0, 325, 326, 327, 328, 0, 0, 0, 223, 226, + 226, 0, 0, 0, 89, 89, 219, 219, 219, 0, + 0, 0, 0, 0, 337, 338, 0, 0, 0, 0, + 218, 218, 0, 0, 0, 219, 219, 0, 0, 0, + 0, 0, 224, 224, 220, 220, 224, 0, 0, 0, + 0, 0, 0, 225, 225, 0, 365, 225, 0, 221, + 221, 218, 0, 218, 0, 0, 0, 0, 0, 222, + 222, 0, 334, 335, 0, 220, 220, 220, 0, 0, + 218, 218, 0, 0, 223, 223, 0, 0, 0, 0, + 221, 291, 221, 0, 220, 220, 224, 0, 0, 0, + 222, 222, 222, 362, 0, 364, 0, 225, 0, 221, + 221, 0, 0, 0, 0, 223, 223, 223, 0, 222, + 222, 0, 374, 375, 0, 0, 0, 0, 173, 174, + 175, 0, 0, 0, 223, 223, 176, 0, 0, 177, + 178, 0, 179, 180, 181, 0, 182, 183, 184, 185, + 186, 187, 26, 0, 0, 29, 0, 0, 29, 0, + 33, 34, 35, 36, 0, 0, 135, 188, 85, 0, + 0, 128, 224, 224, 129, 189, 190, 0, 267, 268, + 0, 0, 0, 225, 225, 0, 0, 0, 0, 0, + 0, 0, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 224, 224, 224, 0, 0, 12, 3, + 0, 12, 3, 0, 225, 225, 225, 0, 0, 0, + 0, 0, 224, 224, 173, 174, 175, 0, 0, 0, + 0, 0, 176, 225, 225, 177, 178, 0, 179, 180, + 181, 0, 182, 183, 184, 185, 186, 187, 26, 0, + 0, 29, 0, 0, 0, 0, 33, 34, 35, 36, + 0, 0, 135, 258, 85, 0, 0, 0, 173, 174, + 175, 189, 190, 0, 0, 0, 176, 0, 0, 177, + 178, 0, 179, 180, 181, 0, 182, 183, 184, 185, + 186, 187, 26, 0, 0, 29, 0, 0, 25, 0, + 33, 34, 35, 36, 12, 3, 135, 0, 85, 0, + 0, 0, 0, 0, 0, 189, 190, 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, 35, 36, 37, - 225, 0, 0, 38, 0, 0, 0, 39, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, - 0, 0, 40, 41, 0, 0, 0, 0, 0, 0, - 25, 117, 118, 119, 120, 121, 122, 123, 124, 42, + 0, 0, 0, 94, 95, 0, 0, 39, 0, 0, + 125, 126, 0, 29, 0, 0, 0, 127, 12, 3, + 0, 0, 40, 41, 0, 0, 128, 0, 0, 129, + 25, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 43, 12, 3, 21, 44, 45, 46, 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, 35, - 36, 37, 0, 0, 0, 94, 0, 0, 0, 39, - 0, 0, 0, 0, 0, 0, 0, 254, 255, 0, - 256, 257, 0, 0, 40, 41, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 125, 0, 0, 29, 0, + 36, 37, 0, 0, 0, 38, 12, 3, 0, 39, + 0, 253, -175, -175, 0, -175, 0, 0, 0, -175, + -176, -176, 0, -176, 40, 41, 0, -176, -175, 0, + 0, -175, 25, 0, 0, 0, -176, 0, 0, -176, 0, 42, 0, 0, 43, 12, 3, 21, 44, 45, - 46, 127, 0, 0, 258, 0, 0, 0, 259, 260, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 0, 0, 0, 0, 0, 0, 0, - 173, 12, 3, 174, 175, 0, 176, 177, 178, 0, - 179, 180, 181, 182, 183, 184, 26, 0, 0, 29, - 0, 0, 0, 0, 33, 34, 35, 36, 0, 0, - 134, 185, 85, 0, 0, 0, 0, 0, 173, 186, - 187, 174, 175, 0, 176, 177, 178, 0, 179, 180, - 181, 182, 183, 184, 26, 0, 0, 29, 0, 0, - 0, 0, 33, 34, 35, 36, 0, 0, 134, 249, - 85, 0, 12, 3, 0, 0, 173, 186, 187, 174, - 175, 0, 176, 177, 178, 0, 179, 180, 181, 182, - 183, 184, 26, 0, 0, 29, 0, 0, 0, 0, - 33, 34, 35, 36, 0, 0, 134, 0, 85, 0, - 12, 3, 0, 0, 0, 186, 187, 29, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 127, 0, 0, 258, 0, 0, 0, 259, 260, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, - 0, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 140, 0, 0, 0, 0, 141, 0, 0, - 12, 3, 0, 0, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, - 120, 121, 122, 123, 124, 328, 0, 107, 108, 0, - 329, 111, 112, 113, 114, 115, 116, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, - 117, 118, 119, 120, 121, 122, 123, 124, 0, 0, - 117, 118, 119, 120, 121, 122, 123, 124, 330, 0, - 107, 108, 0, 331, 111, 112, 113, 114, 115, 116, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 0, 0, 0, 0, 118, 119, 120, 121, 122, 123, - 124, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 332, 0, 0, 0, 0, 333, 0, 0, 0, - 0, 307, 0, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 0, 0, 0, 117, 118, 119, 120, - 121, 122, 123, 124, 308, 0, 117, 118, 119, 120, - 121, 122, 123, 124, 312, 0, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 0, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 318, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 327, 0, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 107, + 46, 26, 27, 28, 29, 30, 31, 32, 0, 33, + 34, 35, 36, 37, 0, 0, 0, 38, -175, -175, + 0, 39, 0, 0, 0, 0, -176, -176, 0, 0, + 0, -177, -177, 0, -177, 0, 40, 41, -177, 0, + 0, 0, 0, 0, 25, 0, 0, -177, 0, 0, + -177, 0, 0, 42, 0, 0, 43, 12, 3, 21, + 44, 45, 46, 26, 27, 28, 29, 30, 31, 32, + 0, 33, 34, 35, 36, 37, 0, 0, 0, 94, + 0, 0, 0, 39, 0, 0, 0, -177, -177, 0, + 0, 263, 264, 0, 265, 266, 0, 0, 40, 41, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, + 0, 0, 29, 0, 0, 42, 0, 0, 43, 12, + 3, 21, 44, 45, 46, 128, 0, 0, 129, 0, + 0, 0, 267, 268, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, -178, -178, 0, + -178, 0, 29, 0, -178, 12, 3, 33, 34, 35, + 36, 0, 0, -178, 0, 85, -178, 0, 0, 0, + 0, 0, 189, 190, 141, 0, 0, 0, 0, 142, + 0, 0, 0, 0, 0, 0, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 0, 0, 0, 0, + 0, 0, 0, -178, -178, 12, 3, 0, 0, 117, + 118, 119, 120, 121, 122, 123, 124, 342, 0, 107, + 108, 0, 343, 111, 112, 113, 114, 115, 116, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, 124, - 338, 0, 117, 118, 119, 120, 121, 122, 123, 124, - 356, 0, 107, 108, 109, 110, 111, 112, 113, 114, + 0, 0, 117, 118, 119, 120, 121, 122, 123, 124, + 344, 0, 107, 108, 0, 345, 111, 112, 113, 114, 115, 116, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 0, 0, 0, 117, 118, 119, 120, 121, + 115, 116, 0, 0, 0, 0, 118, 119, 120, 121, 122, 123, 124, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 227, 0, 0, 0, 0, 0, 0, + 122, 123, 124, 346, 0, 0, 0, 0, 347, 0, + 0, 0, 0, 319, 0, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 0, 0, 0, 117, 118, + 119, 120, 121, 122, 123, 124, 320, 0, 117, 118, + 119, 120, 121, 122, 123, 124, 324, 0, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, + 0, 117, 118, 119, 120, 121, 122, 123, 124, 330, + 0, 117, 118, 119, 120, 121, 122, 123, 124, 341, + 0, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 0, 0, 0, 117, 118, 119, 120, 121, 122, + 123, 124, 352, 0, 117, 118, 119, 120, 121, 122, + 123, 124, 370, 0, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 0, 0, 0, 117, 118, 119, + 120, 121, 122, 123, 124, 0, 0, 117, 118, 119, + 120, 121, 122, 123, 124, 231, 0, 0, 0, 0, + 0, 0, 0, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 117, 118, 119, 120, + 121, 122, 123, 124, 233, 0, 0, 0, 0, 0, + 0, 0, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 117, 118, 119, 120, 121, + 122, 123, 124, 280, 0, 0, 0, 0, 0, 0, 0, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, 120, 121, 122, - 123, 124, 272, 0, 0, 0, 0, 0, 0, 0, + 123, 124, 281, 0, 0, 0, 0, 0, 0, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 106, + 0, 0, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 0, 0, 0, 0, 0, 117, 118, 119, 120, 121, + 122, 123, 124, 286, 0, 0, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 297, 0, 0, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 0, 0, 0, + 0, 0, 117, 118, 119, 120, 121, 122, 123, 124, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 107, 108, 0, 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 273, 0, 0, 0, 0, 0, 0, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 106, 0, - 0, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 0, - 0, 0, 0, 0, 117, 118, 119, 120, 121, 122, - 123, 124, 276, 0, 0, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 287, 0, 0, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 0, 0, 0, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 107, - 108, 0, 110, 111, 112, 113, 114, 115, 116, 0, - 0, 0, 117, 118, 119, 120, 121, 122, 123, 124, - 0, 0, 117, 118, 119, 120, 121, 122, 123, 124, - 107, 108, 0, 0, 111, 112, 113, 114, 115, 116, - 107, 108, 0, 0, 111, 112, 113, 114, 115, 116, - 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, - 124, 0, 0, 0, 0, 0, 120, 121, 122, 123, - 124 + 124, 0, 0, 117, 118, 119, 120, 121, 122, 123, + 124, 107, 108, 0, 0, 111, 112, 113, 114, 115, + 116, 107, 108, 0, 0, 111, 112, 113, 114, 115, + 116, 0, 0, 0, 0, 118, 0, 120, 121, 122, + 123, 124, 0, 0, 0, 0, 0, 120, 121, 122, + 123, 124 }; const short parser::yycheck_[] = { - 0, 3, 4, 234, 83, 5, 1, 38, 84, 85, - 26, 27, 80, 36, 76, 26, 27, 14, 18, 131, - 82, 36, 31, 85, 27, 37, 26, 27, 27, 17, - 42, 26, 27, 32, 33, 34, 35, 40, 61, 39, - 134, 40, 0, 24, 25, 61, 27, 82, 47, 48, - 61, 37, 134, 46, 42, 36, 42, 81, 27, 40, - 37, 61, 43, 94, 24, 25, 61, 27, 40, 44, - 37, 40, 81, 81, 43, 42, 19, 80, 81, 81, - 40, 80, 81, 43, 84, 37, 37, 77, 78, 79, - 42, 42, 186, 187, 37, 36, 190, 40, 41, 80, - 81, 46, 37, 40, 186, 187, 337, 42, 190, 125, - 126, 80, 81, 37, 125, 126, 38, 229, 42, 44, - 80, 81, 37, 40, 36, 125, 126, 42, 128, 42, - 125, 126, 132, 41, 134, 46, 36, 36, 138, 134, - 234, 75, 76, 77, 78, 79, 36, 36, 27, 190, - 36, 94, 234, 32, 33, 34, 35, 45, 85, 46, - 41, 40, 46, 46, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 46, 180, 127, 46, 186, 187, 45, 45, - 190, 186, 187, 305, 137, 190, 139, 45, 141, 215, - 143, 80, 81, 134, 215, 317, 36, 36, 41, 36, - 36, 36, 46, 307, 308, 215, 134, 329, 36, 331, - 215, 333, 13, 46, 17, 307, 308, 46, 37, 5, - 173, 247, 248, 312, 234, 235, 247, 248, 46, 234, - 46, 184, 336, 337, 338, 46, 46, 247, 248, 134, - 46, 5, 247, 248, 336, 337, 338, 46, 258, 190, - 337, 355, 356, -1, 180, 281, 307, 308, 186, 187, - 281, 180, 190, 355, 356, 24, 25, -1, 27, -1, - -1, 281, -1, -1, -1, -1, 281, -1, -1, 232, - 233, 40, -1, 236, 43, 336, -1, 338, -1, -1, - -1, 186, 187, -1, -1, 190, 134, 307, 308, -1, - -1, 311, 307, 308, 355, 356, 234, 134, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 134, - 273, 80, 81, -1, -1, -1, 336, 337, 338, 134, - -1, 336, 337, 338, -1, 288, 289, 290, 291, 234, - -1, -1, -1, -1, -1, 355, 356, -1, 186, 187, - 355, 356, 190, -1, -1, -1, 309, 310, -1, 186, - 187, 49, 50, 190, -1, -1, 307, 308, -1, -1, - -1, 186, 187, -1, -1, 190, -1, -1, -1, 307, - 308, 186, 187, -1, -1, 190, 339, 75, 76, 77, - 78, 79, -1, -1, -1, 336, 234, 338, -1, -1, - -1, 24, 25, -1, 27, -1, -1, 234, 336, 337, - 338, -1, 307, 308, 355, 356, -1, 40, -1, 234, - 43, 24, 25, -1, 27, -1, -1, 355, 356, 234, - 24, 25, -1, 27, -1, -1, -1, 40, -1, -1, - 43, 336, 337, 338, -1, -1, 40, -1, -1, 43, - -1, -1, -1, -1, -1, -1, -1, 80, 81, -1, - 355, 356, -1, 24, 25, -1, 27, -1, -1, 307, - 308, -1, -1, -1, -1, -1, -1, 80, 81, 40, - 307, 308, 43, -1, -1, -1, 80, 81, 24, 25, - -1, 27, 307, 308, -1, -1, -1, -1, 336, 337, - 338, -1, 307, 308, 40, -1, -1, 43, -1, 336, - 337, 338, -1, -1, -1, -1, -1, 355, 356, 80, - 81, 336, 337, 338, -1, -1, -1, -1, 355, 356, - -1, 336, 337, 338, 5, -1, -1, -1, -1, -1, - 355, 356, -1, -1, 80, 81, -1, -1, -1, -1, - 355, 356, -1, 24, 25, 26, 27, 28, 29, 30, - -1, 32, 33, 34, 35, 36, -1, -1, -1, 40, - 41, -1, -1, 44, 49, 50, 24, 25, -1, 27, - 55, 56, 57, 58, -1, -1, -1, -1, 59, 60, - -1, -1, 40, -1, -1, 43, 5, -1, -1, -1, - 75, 76, 77, 78, 79, 76, -1, -1, 79, 80, - 81, 82, 83, 84, 85, 24, 25, 26, 27, 28, - 29, 30, -1, 32, 33, 34, 35, 36, -1, -1, - -1, 40, 80, 81, -1, 44, -1, 46, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 59, 60, -1, -1, -1, -1, -1, -1, 5, -1, - -1, -1, -1, -1, -1, -1, -1, 76, -1, -1, - 79, 80, 81, 82, 83, 84, 85, 24, 25, 26, - 27, 28, 29, 30, -1, 32, 33, 34, 35, 36, - 41, -1, -1, 40, -1, -1, -1, 44, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, -1, -1, - -1, -1, 59, 60, -1, -1, -1, -1, -1, -1, - 5, 72, 73, 74, 75, 76, 77, 78, 79, 76, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 24, - 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, - 35, 36, -1, -1, -1, 40, -1, -1, -1, 44, - -1, -1, -1, -1, -1, -1, -1, 6, 7, -1, - 9, 10, -1, -1, 59, 60, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 24, -1, -1, 27, -1, - -1, 76, -1, -1, 79, 80, 81, 82, 83, 84, - 85, 40, -1, -1, 43, -1, -1, -1, 47, 48, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, - 8, 80, 81, 11, 12, -1, 14, 15, 16, -1, - 18, 19, 20, 21, 22, 23, 24, -1, -1, 27, - -1, -1, -1, -1, 32, 33, 34, 35, -1, -1, - 38, 39, 40, -1, -1, -1, -1, -1, 8, 47, - 48, 11, 12, -1, 14, 15, 16, -1, 18, 19, - 20, 21, 22, 23, 24, -1, -1, 27, -1, -1, - -1, -1, 32, 33, 34, 35, -1, -1, 38, 39, - 40, -1, 80, 81, -1, -1, 8, 47, 48, 11, - 12, -1, 14, 15, 16, -1, 18, 19, 20, 21, - 22, 23, 24, -1, -1, 27, -1, -1, -1, -1, - 32, 33, 34, 35, -1, -1, 38, -1, 40, -1, - 80, 81, -1, -1, -1, 47, 48, 27, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 40, -1, -1, 43, -1, -1, -1, 47, 48, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 80, 81, - -1, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 37, -1, -1, -1, -1, 42, -1, -1, - 80, 81, -1, -1, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 72, 73, 74, - 75, 76, 77, 78, 79, 37, -1, 49, 50, -1, - 42, 53, 54, 55, 56, 57, 58, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, -1, -1, -1, - 72, 73, 74, 75, 76, 77, 78, 79, -1, -1, - 72, 73, 74, 75, 76, 77, 78, 79, 37, -1, - 49, 50, -1, 42, 53, 54, 55, 56, 57, 58, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - -1, -1, -1, -1, 73, 74, 75, 76, 77, 78, - 79, -1, -1, 72, 73, 74, 75, 76, 77, 78, - 79, 37, -1, -1, -1, -1, 42, -1, -1, -1, - -1, 37, -1, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, -1, -1, -1, 72, 73, 74, 75, - 76, 77, 78, 79, 37, -1, 72, 73, 74, 75, - 76, 77, 78, 79, 37, -1, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, -1, -1, -1, 72, - 73, 74, 75, 76, 77, 78, 79, 37, -1, 72, - 73, 74, 75, 76, 77, 78, 79, 37, -1, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, - -1, -1, 72, 73, 74, 75, 76, 77, 78, 79, - 37, -1, 72, 73, 74, 75, 76, 77, 78, 79, - 37, -1, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, -1, -1, -1, 72, 73, 74, 75, 76, - 77, 78, 79, -1, -1, 72, 73, 74, 75, 76, - 77, 78, 79, 41, -1, -1, -1, -1, -1, -1, - -1, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 72, 73, 74, 75, 76, 77, - 78, 79, 41, -1, -1, -1, -1, -1, -1, -1, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 72, 73, 74, 75, 76, 77, 78, - 79, 42, -1, -1, -1, -1, -1, -1, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 46, -1, - -1, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 72, 73, 74, 75, 76, 77, 78, 79, -1, - -1, -1, -1, -1, 72, 73, 74, 75, 76, 77, - 78, 79, 46, -1, -1, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 46, -1, -1, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 72, 73, - 74, 75, 76, 77, 78, 79, -1, -1, -1, -1, - -1, 72, 73, 74, 75, 76, 77, 78, 79, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 49, - 50, -1, 52, 53, 54, 55, 56, 57, 58, -1, - -1, -1, 72, 73, 74, 75, 76, 77, 78, 79, - -1, -1, 72, 73, 74, 75, 76, 77, 78, 79, - 49, 50, -1, -1, 53, 54, 55, 56, 57, 58, - 49, 50, -1, -1, 53, 54, 55, 56, 57, 58, - -1, -1, -1, -1, -1, 74, 75, 76, 77, 78, - 79, -1, -1, -1, -1, -1, 75, 76, 77, 78, - 79 + 0, 83, 26, 27, 243, 5, 1, 26, 27, 6, + 7, 79, 83, 38, 87, 88, 132, 85, 18, 39, + 88, 20, 39, 14, 40, 30, 26, 27, 0, 45, + 40, 26, 27, 27, 28, 45, 30, 61, 43, 39, + 34, 46, 61, 49, 64, 39, 45, 85, 40, 43, + 40, 40, 46, 45, 40, 45, 45, 27, 28, 45, + 30, 61, 30, 84, 34, 40, 61, 27, 28, 94, + 30, 84, 43, 43, 34, 43, 46, 43, 83, 84, + 47, 39, 19, 43, 84, 49, 46, 84, 41, 83, + 84, 47, 27, 28, 43, 30, 135, 45, 44, 34, + 37, 125, 126, 40, 41, 39, 125, 126, 43, 49, + 49, 46, 351, 83, 84, 83, 84, 39, 39, 235, + 39, 237, 238, 83, 84, 125, 126, 40, 39, 129, + 125, 126, 45, 133, 39, 135, 52, 53, 39, 139, + 135, 40, 58, 59, 60, 61, 45, 40, 83, 84, + 189, 190, 45, 39, 193, 40, 48, 94, 49, 48, + 45, 135, 78, 79, 80, 81, 82, 49, 49, 49, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 49, 189, + 190, 128, 183, 193, 189, 190, 44, 221, 193, 315, + 88, 138, 221, 140, 243, 142, 135, 144, 78, 79, + 80, 81, 82, 329, 48, 189, 190, 30, 48, 193, + 135, 221, 35, 36, 37, 38, 221, 343, 39, 345, + 43, 347, 256, 257, 39, 135, 39, 256, 257, 176, + 39, 49, 324, 243, 244, 135, 44, 39, 243, 39, + 187, 80, 81, 82, 49, 16, 256, 257, 52, 53, + 135, 256, 257, 49, 193, 49, 20, 291, 49, 243, + 83, 84, 291, 40, 189, 190, 49, 49, 193, 49, + 319, 320, 5, 49, 78, 79, 80, 81, 82, 189, + 190, 291, 49, 193, 49, 5, 291, 351, -1, 189, + 190, -1, -1, 193, 241, 242, 193, 183, 245, 183, + -1, 350, 351, 352, 189, 190, -1, -1, 193, 319, + 320, -1, -1, 323, 319, 320, -1, -1, 243, -1, + 369, 370, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 243, 281, 319, 320, -1, 135, -1, + 350, 351, 352, 243, -1, 350, 351, 352, -1, 135, + -1, 298, 299, 300, 301, -1, -1, -1, 243, 369, + 370, -1, -1, -1, 369, 370, 350, 351, 352, -1, + -1, -1, -1, -1, 321, 322, -1, -1, -1, -1, + 319, 320, -1, -1, -1, 369, 370, -1, -1, -1, + -1, -1, 189, 190, 319, 320, 193, -1, -1, -1, + -1, -1, -1, 189, 190, -1, 353, 193, -1, 319, + 320, 350, -1, 352, -1, -1, -1, -1, -1, 319, + 320, -1, 319, 320, -1, 350, 351, 352, -1, -1, + 369, 370, -1, -1, 319, 320, -1, -1, -1, -1, + 350, 351, 352, -1, 369, 370, 243, -1, -1, -1, + 350, 351, 352, 350, -1, 352, -1, 243, -1, 369, + 370, -1, -1, -1, -1, 350, 351, 352, -1, 369, + 370, -1, 369, 370, -1, -1, -1, -1, 3, 4, + 5, -1, -1, -1, 369, 370, 11, -1, -1, 14, + 15, -1, 17, 18, 19, -1, 21, 22, 23, 24, + 25, 26, 27, -1, -1, 30, -1, -1, 30, -1, + 35, 36, 37, 38, -1, -1, 41, 42, 43, -1, + -1, 43, 319, 320, 46, 50, 51, -1, 50, 51, + -1, -1, -1, 319, 320, -1, -1, -1, -1, -1, + -1, -1, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 350, 351, 352, -1, -1, 83, 84, + -1, 83, 84, -1, 350, 351, 352, -1, -1, -1, + -1, -1, 369, 370, 3, 4, 5, -1, -1, -1, + -1, -1, 11, 369, 370, 14, 15, -1, 17, 18, + 19, -1, 21, 22, 23, 24, 25, 26, 27, -1, + -1, 30, -1, -1, -1, -1, 35, 36, 37, 38, + -1, -1, 41, 42, 43, -1, -1, -1, 3, 4, + 5, 50, 51, -1, -1, -1, 11, -1, -1, 14, + 15, -1, 17, 18, 19, -1, 21, 22, 23, 24, + 25, 26, 27, -1, -1, 30, -1, -1, 8, -1, + 35, 36, 37, 38, 83, 84, 41, -1, 43, -1, + -1, -1, -1, -1, -1, 50, 51, 27, 28, 29, + 30, 31, 32, 33, -1, 35, 36, 37, 38, 39, + -1, -1, -1, 43, 44, -1, -1, 47, -1, -1, + 27, 28, -1, 30, -1, -1, -1, 34, 83, 84, + -1, -1, 62, 63, -1, -1, 43, -1, -1, 46, + 8, -1, -1, -1, -1, -1, -1, -1, -1, 79, + -1, -1, 82, 83, 84, 85, 86, 87, 88, 27, + 28, 29, 30, 31, 32, 33, -1, 35, 36, 37, + 38, 39, -1, -1, -1, 43, 83, 84, -1, 47, + -1, 49, 27, 28, -1, 30, -1, -1, -1, 34, + 27, 28, -1, 30, 62, 63, -1, 34, 43, -1, + -1, 46, 8, -1, -1, -1, 43, -1, -1, 46, + -1, 79, -1, -1, 82, 83, 84, 85, 86, 87, + 88, 27, 28, 29, 30, 31, 32, 33, -1, 35, + 36, 37, 38, 39, -1, -1, -1, 43, 83, 84, + -1, 47, -1, -1, -1, -1, 83, 84, -1, -1, + -1, 27, 28, -1, 30, -1, 62, 63, 34, -1, + -1, -1, -1, -1, 8, -1, -1, 43, -1, -1, + 46, -1, -1, 79, -1, -1, 82, 83, 84, 85, + 86, 87, 88, 27, 28, 29, 30, 31, 32, 33, + -1, 35, 36, 37, 38, 39, -1, -1, -1, 43, + -1, -1, -1, 47, -1, -1, -1, 83, 84, -1, + -1, 9, 10, -1, 12, 13, -1, -1, 62, 63, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 27, + -1, -1, 30, -1, -1, 79, -1, -1, 82, 83, + 84, 85, 86, 87, 88, 43, -1, -1, 46, -1, + -1, -1, 50, 51, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 27, 28, -1, + 30, -1, 30, -1, 34, 83, 84, 35, 36, 37, + 38, -1, -1, 43, -1, 43, 46, -1, -1, -1, + -1, -1, 50, 51, 40, -1, -1, -1, -1, 45, + -1, -1, -1, -1, -1, -1, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, + -1, -1, -1, 83, 84, 83, 84, -1, -1, 75, + 76, 77, 78, 79, 80, 81, 82, 40, -1, 52, + 53, -1, 45, 56, 57, 58, 59, 60, 61, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, + -1, -1, 75, 76, 77, 78, 79, 80, 81, 82, + -1, -1, 75, 76, 77, 78, 79, 80, 81, 82, + 40, -1, 52, 53, -1, 45, 56, 57, 58, 59, + 60, 61, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, -1, -1, -1, -1, 76, 77, 78, 79, + 80, 81, 82, -1, -1, 75, 76, 77, 78, 79, + 80, 81, 82, 40, -1, -1, -1, -1, 45, -1, + -1, -1, -1, 40, -1, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, -1, -1, -1, 75, 76, + 77, 78, 79, 80, 81, 82, 40, -1, 75, 76, + 77, 78, 79, 80, 81, 82, 40, -1, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, + -1, 75, 76, 77, 78, 79, 80, 81, 82, 40, + -1, 75, 76, 77, 78, 79, 80, 81, 82, 40, + -1, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, -1, -1, -1, 75, 76, 77, 78, 79, 80, + 81, 82, 40, -1, 75, 76, 77, 78, 79, 80, + 81, 82, 40, -1, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, -1, -1, -1, 75, 76, 77, + 78, 79, 80, 81, 82, -1, -1, 75, 76, 77, + 78, 79, 80, 81, 82, 44, -1, -1, -1, -1, + -1, -1, -1, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 75, 76, 77, 78, + 79, 80, 81, 82, 44, -1, -1, -1, -1, -1, + -1, -1, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 75, 76, 77, 78, 79, + 80, 81, 82, 44, -1, -1, -1, -1, -1, -1, + -1, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 75, 76, 77, 78, 79, 80, + 81, 82, 45, -1, -1, -1, -1, -1, -1, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 49, + -1, -1, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 75, 76, 77, 78, 79, 80, 81, 82, + -1, -1, -1, -1, -1, 75, 76, 77, 78, 79, + 80, 81, 82, 49, -1, -1, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 49, -1, -1, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 75, + 76, 77, 78, 79, 80, 81, 82, -1, -1, -1, + -1, -1, 75, 76, 77, 78, 79, 80, 81, 82, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 52, 53, -1, 55, 56, 57, 58, 59, 60, 61, + -1, -1, -1, 75, 76, 77, 78, 79, 80, 81, + 82, -1, -1, 75, 76, 77, 78, 79, 80, 81, + 82, 52, 53, -1, -1, 56, 57, 58, 59, 60, + 61, 52, 53, -1, -1, 56, 57, 58, 59, 60, + 61, -1, -1, -1, -1, 76, -1, 78, 79, 80, + 81, 82, -1, -1, -1, -1, -1, 78, 79, 80, + 81, 82 }; const unsigned char parser::yystos_[] = { - 0, 3, 4, 81, 95, 96, 97, 98, 99, 100, - 101, 155, 80, 156, 36, 0, 97, 98, 36, 61, - 46, 82, 158, 102, 155, 5, 24, 25, 26, 27, - 28, 29, 30, 32, 33, 34, 35, 36, 40, 44, - 59, 60, 76, 79, 83, 84, 85, 127, 129, 130, - 131, 132, 133, 134, 135, 136, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 37, 37, 42, 40, 135, 136, 155, 156, - 135, 136, 40, 127, 40, 41, 127, 137, 138, 139, - 155, 127, 127, 84, 85, 81, 46, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 72, 73, 74, - 75, 76, 77, 78, 79, 24, 25, 40, 43, 135, - 136, 36, 44, 46, 38, 104, 155, 40, 44, 40, - 37, 42, 127, 42, 41, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 135, 136, 135, 136, 127, 31, 155, - 137, 138, 155, 8, 11, 12, 14, 15, 16, 18, - 19, 20, 21, 22, 23, 39, 47, 48, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 0, 6, 7, 84, 98, 99, 100, 101, 102, 103, + 104, 161, 83, 162, 39, 0, 100, 101, 39, 64, + 49, 85, 164, 105, 161, 8, 27, 28, 29, 30, + 31, 32, 33, 35, 36, 37, 38, 39, 43, 47, + 62, 63, 79, 82, 86, 87, 88, 133, 135, 136, + 137, 138, 139, 140, 141, 142, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 40, 40, 45, 43, 141, 142, 161, 162, + 141, 142, 43, 133, 43, 44, 133, 143, 144, 145, + 161, 133, 133, 87, 88, 84, 49, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 75, 76, 77, + 78, 79, 80, 81, 82, 27, 28, 34, 43, 46, + 141, 142, 39, 47, 49, 41, 107, 161, 43, 47, + 43, 40, 45, 133, 45, 44, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 141, 142, 141, 142, 133, 161, + 143, 144, 161, 3, 4, 5, 11, 14, 15, 17, + 18, 19, 21, 22, 23, 24, 25, 26, 42, 50, + 51, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 128, 132, 133, 142, 143, 145, 149, 150, 151, 152, - 155, 127, 155, 127, 127, 41, 127, 41, 37, 36, - 127, 46, 36, 36, 36, 36, 36, 76, 158, 161, - 163, 45, 46, 46, 46, 127, 132, 145, 145, 39, - 103, 46, 46, 46, 6, 7, 9, 10, 43, 47, - 48, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 41, 42, 41, 137, 46, 127, 127, 125, - 128, 145, 155, 127, 45, 45, 45, 46, 36, 36, - 36, 36, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 41, 127, 36, 37, 37, 37, 46, - 17, 42, 37, 127, 127, 127, 127, 36, 37, 137, - 103, 103, 126, 127, 127, 155, 104, 37, 37, 42, - 37, 42, 37, 42, 137, 37, 13, 46, 37, 17, - 46, 46, 137, 46, 137, 46, 137, 37, 103, 125, - 103, 127, 37, 37, 37, 37, 37, 46, 46, 46, - 103, 103 + 125, 126, 127, 128, 129, 130, 134, 138, 139, 148, + 149, 151, 155, 156, 157, 158, 161, 133, 161, 133, + 133, 44, 133, 44, 40, 39, 49, 39, 39, 133, + 49, 39, 39, 39, 39, 39, 79, 164, 167, 169, + 48, 49, 49, 49, 133, 138, 151, 151, 42, 106, + 49, 49, 49, 9, 10, 12, 13, 50, 51, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 44, 45, 44, 143, 143, 143, 49, 133, 133, 131, + 134, 151, 161, 133, 48, 48, 48, 49, 39, 39, + 39, 39, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 44, 133, 39, 40, 40, 40, 40, + 40, 49, 20, 45, 40, 133, 133, 133, 133, 39, + 40, 143, 49, 49, 106, 106, 132, 133, 133, 161, + 107, 40, 40, 45, 40, 45, 40, 45, 143, 40, + 16, 49, 40, 20, 49, 49, 143, 49, 143, 49, + 143, 40, 106, 131, 106, 133, 40, 40, 40, 40, + 40, 49, 49, 49, 106, 106 }; const unsigned char parser::yyr1_[] = { - 0, 94, 95, 95, 96, 96, 96, 96, 97, 98, - 98, 98, 99, 100, 101, 102, 102, 102, 103, 103, - 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, - 103, 103, 103, 103, 103, 103, 103, 103, 104, 104, - 105, 105, 106, 106, 107, 108, 109, 109, 110, 111, - 111, 112, 112, 113, 114, 115, 116, 117, 118, 118, - 119, 120, 120, 120, 121, 122, 123, 124, 124, 125, - 125, 126, 126, 127, 127, 127, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 129, 129, 129, 129, 129, 129, 129, 129, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 131, - 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, - 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, - 131, 131, 131, 131, 131, 131, 131, 131, 131, 132, - 132, 132, 132, 133, 133, 133, 133, 134, 134, 134, - 134, 135, 135, 136, 136, 137, 137, 138, 138, 139, - 140, 140, 141, 142, 143, 144, 145, 145, 145, 145, - 145, 145, 145, 145, 146, 147, 148, 149, 150, 151, + 0, 97, 98, 98, 99, 99, 99, 99, 100, 101, + 101, 101, 102, 103, 104, 105, 105, 105, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 107, 107, 108, 108, 109, 109, 110, 111, 112, + 112, 113, 114, 114, 115, 115, 116, 117, 118, 119, + 120, 121, 121, 122, 123, 123, 123, 124, 125, 126, + 127, 127, 128, 129, 130, 131, 131, 132, 132, 133, + 133, 133, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 135, 135, 135, + 135, 135, 135, 135, 135, 136, 136, 136, 136, 136, + 136, 136, 136, 136, 136, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 138, 138, 138, 138, 139, + 139, 139, 139, 140, 140, 140, 140, 141, 141, 142, + 142, 143, 143, 144, 144, 145, 146, 146, 147, 148, + 149, 150, 151, 151, 151, 151, 151, 151, 151, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165 + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171 }; const signed char @@ -3867,23 +3969,23 @@ namespace xsk { namespace gsc { namespace iw6 { 0, 2, 1, 0, 2, 2, 1, 1, 3, 1, 1, 1, 5, 4, 5, 3, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, - 2, 1, 2, 2, 2, 6, 8, 6, 3, 8, - 6, 8, 6, 2, 5, 7, 5, 9, 7, 9, - 5, 3, 3, 3, 2, 2, 2, 3, 2, 1, - 0, 1, 0, 1, 1, 1, 2, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 3, 2, 2, 1, 2, 2, 2, 6, 8, + 6, 3, 8, 6, 8, 6, 2, 5, 7, 5, + 9, 7, 9, 5, 3, 3, 3, 2, 2, 2, + 3, 2, 2, 5, 5, 1, 0, 1, 0, 1, + 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 3, 3, 3, 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 3, 3, 2, 2, 3, - 3, 4, 6, 8, 9, 1, 1, 3, 1, 0, - 2, 3, 3, 4, 3, 3, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, - 1, 2, 1, 1, 1, 1, 1, 7, 2, 2, - 1, 1, 1, 1 + 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, + 2, 3, 3, 2, 2, 3, 3, 4, 6, 8, + 9, 1, 1, 3, 1, 0, 2, 3, 3, 4, + 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, + 1, 1, 1, 7, 2, 2, 1, 1, 1, 1 }; @@ -3893,26 +3995,26 @@ namespace xsk { namespace gsc { namespace iw6 { const short parser::yyrline_[] = { - 0, 231, 231, 232, 236, 238, 240, 242, 247, 252, - 253, 254, 258, 263, 268, 273, 275, 278, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 305, 306, - 310, 312, 317, 319, 324, 329, 334, 336, 341, 346, - 348, 353, 355, 360, 365, 370, 375, 380, 385, 387, - 392, 397, 399, 401, 406, 411, 416, 421, 423, 428, - 429, 433, 434, 438, 439, 440, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 462, 463, 464, 465, 466, 467, 468, 469, 473, - 474, 475, 476, 477, 478, 479, 480, 481, 482, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, - 507, 508, 509, 510, 511, 512, 513, 514, 515, 519, - 520, 521, 522, 526, 527, 528, 529, 533, 534, 535, - 536, 540, 542, 547, 549, 554, 555, 559, 561, 567, - 571, 573, 578, 583, 588, 593, 598, 599, 600, 601, - 602, 603, 604, 605, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, - 624, 625, 626, 627 + 0, 237, 237, 238, 242, 244, 246, 248, 253, 258, + 259, 260, 264, 269, 274, 279, 281, 284, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 314, 315, 319, 321, 326, 328, 333, 338, 343, + 345, 350, 355, 357, 362, 364, 369, 374, 379, 384, + 389, 394, 396, 401, 406, 408, 410, 415, 420, 425, + 430, 432, 437, 442, 447, 452, 453, 457, 458, 462, + 463, 464, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 478, 479, 480, 481, 482, 486, 487, 488, + 489, 490, 491, 492, 493, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 510, 511, 512, 513, 514, + 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, + 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, + 535, 536, 537, 538, 539, 543, 544, 545, 546, 550, + 551, 552, 553, 557, 558, 559, 560, 564, 566, 571, + 573, 578, 579, 583, 585, 591, 595, 597, 602, 607, + 612, 617, 622, 623, 624, 625, 626, 627, 628, 629, + 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, + 642, 643, 644, 645, 646, 647, 648, 649, 650, 651 }; void @@ -3945,9 +4047,9 @@ namespace xsk { namespace gsc { namespace iw6 { #line 13 "parser.ypp" } } } // xsk::gsc::iw6 -#line 3949 "parser.cpp" +#line 4051 "parser.cpp" -#line 629 "parser.ypp" +#line 653 "parser.ypp" void xsk::gsc::iw6::parser::error(const xsk::gsc::location& loc, const std::string& msg) diff --git a/src/iw6/xsk/parser.hpp b/src/iw6/xsk/parser.hpp index 06dcf875..ab3a77fd 100644 --- a/src/iw6/xsk/parser.hpp +++ b/src/iw6/xsk/parser.hpp @@ -510,85 +510,94 @@ namespace xsk { namespace gsc { namespace iw6 { // stmt_break char dummy27[sizeof (stmt_break_ptr)]; + // stmt_breakpoint + char dummy28[sizeof (stmt_breakpoint_ptr)]; + // stmt_call - char dummy28[sizeof (stmt_call_ptr)]; + char dummy29[sizeof (stmt_call_ptr)]; // stmt_case - char dummy29[sizeof (stmt_case_ptr)]; + char dummy30[sizeof (stmt_case_ptr)]; // stmt_continue - char dummy30[sizeof (stmt_continue_ptr)]; + char dummy31[sizeof (stmt_continue_ptr)]; // stmt_default - char dummy31[sizeof (stmt_default_ptr)]; + char dummy32[sizeof (stmt_default_ptr)]; // stmt_endon - char dummy32[sizeof (stmt_endon_ptr)]; + char dummy33[sizeof (stmt_endon_ptr)]; // stmt_for - char dummy33[sizeof (stmt_for_ptr)]; + char dummy34[sizeof (stmt_for_ptr)]; // stmt_foreach - char dummy34[sizeof (stmt_foreach_ptr)]; + char dummy35[sizeof (stmt_foreach_ptr)]; // stmt_if - char dummy35[sizeof (stmt_if_ptr)]; + char dummy36[sizeof (stmt_if_ptr)]; // stmt_ifelse - char dummy36[sizeof (stmt_ifelse_ptr)]; + char dummy37[sizeof (stmt_ifelse_ptr)]; // stmt_block // stmt_list - char dummy37[sizeof (stmt_list_ptr)]; + char dummy38[sizeof (stmt_list_ptr)]; // stmt_notify - char dummy38[sizeof (stmt_notify_ptr)]; + char dummy39[sizeof (stmt_notify_ptr)]; + + // stmt_prof_begin + char dummy40[sizeof (stmt_prof_begin_ptr)]; + + // stmt_prof_end + char dummy41[sizeof (stmt_prof_end_ptr)]; // stmt // for_stmt - char dummy39[sizeof (stmt_ptr)]; + char dummy42[sizeof (stmt_ptr)]; // stmt_return - char dummy40[sizeof (stmt_return_ptr)]; + char dummy43[sizeof (stmt_return_ptr)]; // stmt_switch - char dummy41[sizeof (stmt_switch_ptr)]; + char dummy44[sizeof (stmt_switch_ptr)]; // stmt_wait - char dummy42[sizeof (stmt_wait_ptr)]; + char dummy45[sizeof (stmt_wait_ptr)]; // stmt_waittill - char dummy43[sizeof (stmt_waittill_ptr)]; + char dummy46[sizeof (stmt_waittill_ptr)]; // stmt_waittillframeend - char dummy44[sizeof (stmt_waittillframeend_ptr)]; + char dummy47[sizeof (stmt_waittillframeend_ptr)]; // stmt_waittillmatch - char dummy45[sizeof (stmt_waittillmatch_ptr)]; + char dummy48[sizeof (stmt_waittillmatch_ptr)]; // stmt_while - char dummy46[sizeof (stmt_while_ptr)]; + char dummy49[sizeof (stmt_while_ptr)]; // string - char dummy47[sizeof (string_ptr)]; + char dummy50[sizeof (string_ptr)]; // thisthread - char dummy48[sizeof (thisthread_ptr)]; + char dummy51[sizeof (thisthread_ptr)]; // thread - char dummy49[sizeof (thread_ptr)]; + char dummy52[sizeof (thread_ptr)]; // true - char dummy50[sizeof (true_ptr)]; + char dummy53[sizeof (true_ptr)]; // undefined - char dummy51[sizeof (undefined_ptr)]; + char dummy54[sizeof (undefined_ptr)]; // usingtree - char dummy52[sizeof (usingtree_ptr)]; + char dummy55[sizeof (usingtree_ptr)]; // vector - char dummy53[sizeof (vector_ptr)]; + char dummy56[sizeof (vector_ptr)]; }; /// The size of the largest semantic type. @@ -640,97 +649,100 @@ namespace xsk { namespace gsc { namespace iw6 { IW6EOF = 0, // "end of file" IW6error = 1, // error IW6UNDEF = 2, // "invalid token" - INCLUDE = 3, // "#include" - USINGTREE = 4, // "#using_animtree" - ANIMTREE = 5, // "#animtree" - ENDON = 6, // "endon" - NOTIFY = 7, // "notify" - WAIT = 8, // "wait" - WAITTILL = 9, // "waittill" - WAITTILLMATCH = 10, // "waittillmatch" - WAITTILLFRAMEEND = 11, // "waittillframeend" - IF = 12, // "if" - ELSE = 13, // "else" - WHILE = 14, // "while" - FOR = 15, // "for" - FOREACH = 16, // "foreach" - IN = 17, // "in" - SWITCH = 18, // "switch" - CASE = 19, // "case" - DEFAULT = 20, // "default" - BREAK = 21, // "break" - CONTINUE = 22, // "continue" - RETURN = 23, // "return" - THREAD = 24, // "thread" - CHILDTHREAD = 25, // "childthread" - THISTHREAD = 26, // "thisthread" - CALL = 27, // "call" - TRUE = 28, // "true" - FALSE = 29, // "false" - UNDEFINED = 30, // "undefined" - SIZE = 31, // "size" - GAME = 32, // "game" - SELF = 33, // "self" - ANIM = 34, // "anim" - LEVEL = 35, // "level" - LPAREN = 36, // "(" - RPAREN = 37, // ")" - LBRACE = 38, // "{" - RBRACE = 39, // "}" - LBRACKET = 40, // "[" - RBRACKET = 41, // "]" - COMMA = 42, // "," - DOT = 43, // "." - DOUBLECOLON = 44, // "::" - COLON = 45, // ":" - SEMICOLON = 46, // ";" - INCREMENT = 47, // "++" - DECREMENT = 48, // "--" - LSHIFT = 49, // "<<" - RSHIFT = 50, // ">>" - OR = 51, // "||" - AND = 52, // "&&" - EQUALITY = 53, // "==" - INEQUALITY = 54, // "!=" - LESS_EQUAL = 55, // "<=" - GREATER_EQUAL = 56, // ">=" - LESS = 57, // "<" - GREATER = 58, // ">" - NOT = 59, // "!" - COMPLEMENT = 60, // "~" - ASSIGN = 61, // "=" - ASSIGN_ADD = 62, // "+=" - ASSIGN_SUB = 63, // "-=" - ASSIGN_MULT = 64, // "*=" - ASSIGN_DIV = 65, // "/=" - ASSIGN_MOD = 66, // "%=" - ASSIGN_BITWISE_OR = 67, // "|=" - ASSIGN_BITWISE_AND = 68, // "&=" - ASSIGN_BITWISE_EXOR = 69, // "^=" - ASSIGN_RSHIFT = 70, // ">>=" - ASSIGN_LSHIFT = 71, // "<<=" - BITWISE_OR = 72, // "|" - BITWISE_AND = 73, // "&" - BITWISE_EXOR = 74, // "^" - ADD = 75, // "+" - SUB = 76, // "-" - MULT = 77, // "*" - DIV = 78, // "/" - MOD = 79, // "%" - FILE = 80, // "file path" - NAME = 81, // "identifier" - STRING = 82, // "string literal" - ISTRING = 83, // "localized string" - FLOAT = 84, // "float" - INTEGER = 85, // "int" - ADD_ARRAY = 86, // ADD_ARRAY - THEN = 87, // THEN - NEG = 88, // NEG - ANIMREF = 89, // ANIMREF - PREINC = 90, // PREINC - PREDEC = 91, // PREDEC - POSTINC = 92, // POSTINC - POSTDEC = 93 // POSTDEC + BREAKPOINT = 3, // "breakpoint" + PROFBEGIN = 4, // "prof_begin" + PROFEND = 5, // "prof_end" + INCLUDE = 6, // "#include" + USINGTREE = 7, // "#using_animtree" + ANIMTREE = 8, // "#animtree" + ENDON = 9, // "endon" + NOTIFY = 10, // "notify" + WAIT = 11, // "wait" + WAITTILL = 12, // "waittill" + WAITTILLMATCH = 13, // "waittillmatch" + WAITTILLFRAMEEND = 14, // "waittillframeend" + IF = 15, // "if" + ELSE = 16, // "else" + WHILE = 17, // "while" + FOR = 18, // "for" + FOREACH = 19, // "foreach" + IN = 20, // "in" + SWITCH = 21, // "switch" + CASE = 22, // "case" + DEFAULT = 23, // "default" + BREAK = 24, // "break" + CONTINUE = 25, // "continue" + RETURN = 26, // "return" + THREAD = 27, // "thread" + CHILDTHREAD = 28, // "childthread" + THISTHREAD = 29, // "thisthread" + CALL = 30, // "call" + TRUE = 31, // "true" + FALSE = 32, // "false" + UNDEFINED = 33, // "undefined" + SIZE = 34, // ".size" + GAME = 35, // "game" + SELF = 36, // "self" + ANIM = 37, // "anim" + LEVEL = 38, // "level" + LPAREN = 39, // "(" + RPAREN = 40, // ")" + LBRACE = 41, // "{" + RBRACE = 42, // "}" + LBRACKET = 43, // "[" + RBRACKET = 44, // "]" + COMMA = 45, // "," + DOT = 46, // "." + DOUBLECOLON = 47, // "::" + COLON = 48, // ":" + SEMICOLON = 49, // ";" + INCREMENT = 50, // "++" + DECREMENT = 51, // "--" + LSHIFT = 52, // "<<" + RSHIFT = 53, // ">>" + OR = 54, // "||" + AND = 55, // "&&" + EQUALITY = 56, // "==" + INEQUALITY = 57, // "!=" + LESS_EQUAL = 58, // "<=" + GREATER_EQUAL = 59, // ">=" + LESS = 60, // "<" + GREATER = 61, // ">" + NOT = 62, // "!" + COMPLEMENT = 63, // "~" + ASSIGN = 64, // "=" + ASSIGN_ADD = 65, // "+=" + ASSIGN_SUB = 66, // "-=" + ASSIGN_MULT = 67, // "*=" + ASSIGN_DIV = 68, // "/=" + ASSIGN_MOD = 69, // "%=" + ASSIGN_BITWISE_OR = 70, // "|=" + ASSIGN_BITWISE_AND = 71, // "&=" + ASSIGN_BITWISE_EXOR = 72, // "^=" + ASSIGN_RSHIFT = 73, // ">>=" + ASSIGN_LSHIFT = 74, // "<<=" + BITWISE_OR = 75, // "|" + BITWISE_AND = 76, // "&" + BITWISE_EXOR = 77, // "^" + ADD = 78, // "+" + SUB = 79, // "-" + MULT = 80, // "*" + DIV = 81, // "/" + MOD = 82, // "%" + FILE = 83, // "file path" + NAME = 84, // "identifier" + STRING = 85, // "string literal" + ISTRING = 86, // "localized string" + FLOAT = 87, // "float" + INTEGER = 88, // "int" + ADD_ARRAY = 89, // ADD_ARRAY + THEN = 90, // THEN + NEG = 91, // NEG + ANIMREF = 92, // ANIMREF + PREINC = 93, // PREINC + PREDEC = 94, // PREDEC + POSTINC = 95, // POSTINC + POSTDEC = 96 // POSTDEC }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; @@ -747,174 +759,180 @@ namespace xsk { namespace gsc { namespace iw6 { { enum symbol_kind_type { - YYNTOKENS = 94, ///< Number of tokens. + YYNTOKENS = 97, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error S_YYUNDEF = 2, // "invalid token" - S_INCLUDE = 3, // "#include" - S_USINGTREE = 4, // "#using_animtree" - S_ANIMTREE = 5, // "#animtree" - S_ENDON = 6, // "endon" - S_NOTIFY = 7, // "notify" - S_WAIT = 8, // "wait" - S_WAITTILL = 9, // "waittill" - S_WAITTILLMATCH = 10, // "waittillmatch" - S_WAITTILLFRAMEEND = 11, // "waittillframeend" - S_IF = 12, // "if" - S_ELSE = 13, // "else" - S_WHILE = 14, // "while" - S_FOR = 15, // "for" - S_FOREACH = 16, // "foreach" - S_IN = 17, // "in" - S_SWITCH = 18, // "switch" - S_CASE = 19, // "case" - S_DEFAULT = 20, // "default" - S_BREAK = 21, // "break" - S_CONTINUE = 22, // "continue" - S_RETURN = 23, // "return" - S_THREAD = 24, // "thread" - S_CHILDTHREAD = 25, // "childthread" - S_THISTHREAD = 26, // "thisthread" - S_CALL = 27, // "call" - S_TRUE = 28, // "true" - S_FALSE = 29, // "false" - S_UNDEFINED = 30, // "undefined" - S_SIZE = 31, // "size" - S_GAME = 32, // "game" - S_SELF = 33, // "self" - S_ANIM = 34, // "anim" - S_LEVEL = 35, // "level" - S_LPAREN = 36, // "(" - S_RPAREN = 37, // ")" - S_LBRACE = 38, // "{" - S_RBRACE = 39, // "}" - S_LBRACKET = 40, // "[" - S_RBRACKET = 41, // "]" - S_COMMA = 42, // "," - S_DOT = 43, // "." - S_DOUBLECOLON = 44, // "::" - S_COLON = 45, // ":" - S_SEMICOLON = 46, // ";" - S_INCREMENT = 47, // "++" - S_DECREMENT = 48, // "--" - S_LSHIFT = 49, // "<<" - S_RSHIFT = 50, // ">>" - S_OR = 51, // "||" - S_AND = 52, // "&&" - S_EQUALITY = 53, // "==" - S_INEQUALITY = 54, // "!=" - S_LESS_EQUAL = 55, // "<=" - S_GREATER_EQUAL = 56, // ">=" - S_LESS = 57, // "<" - S_GREATER = 58, // ">" - S_NOT = 59, // "!" - S_COMPLEMENT = 60, // "~" - S_ASSIGN = 61, // "=" - S_ASSIGN_ADD = 62, // "+=" - S_ASSIGN_SUB = 63, // "-=" - S_ASSIGN_MULT = 64, // "*=" - S_ASSIGN_DIV = 65, // "/=" - S_ASSIGN_MOD = 66, // "%=" - S_ASSIGN_BITWISE_OR = 67, // "|=" - S_ASSIGN_BITWISE_AND = 68, // "&=" - S_ASSIGN_BITWISE_EXOR = 69, // "^=" - S_ASSIGN_RSHIFT = 70, // ">>=" - S_ASSIGN_LSHIFT = 71, // "<<=" - S_BITWISE_OR = 72, // "|" - S_BITWISE_AND = 73, // "&" - S_BITWISE_EXOR = 74, // "^" - S_ADD = 75, // "+" - S_SUB = 76, // "-" - S_MULT = 77, // "*" - S_DIV = 78, // "/" - S_MOD = 79, // "%" - S_FILE = 80, // "file path" - S_NAME = 81, // "identifier" - S_STRING = 82, // "string literal" - S_ISTRING = 83, // "localized string" - S_FLOAT = 84, // "float" - S_INTEGER = 85, // "int" - S_ADD_ARRAY = 86, // ADD_ARRAY - S_THEN = 87, // THEN - S_NEG = 88, // NEG - S_ANIMREF = 89, // ANIMREF - S_PREINC = 90, // PREINC - S_PREDEC = 91, // PREDEC - S_POSTINC = 92, // POSTINC - S_POSTDEC = 93, // POSTDEC - S_YYACCEPT = 94, // $accept - S_root = 95, // root - S_program = 96, // program - S_include = 97, // include - S_define = 98, // define - S_usingtree = 99, // usingtree - S_constant = 100, // constant - S_thread = 101, // thread - S_parameters = 102, // parameters - S_stmt = 103, // stmt - S_stmt_block = 104, // stmt_block - S_stmt_list = 105, // stmt_list - S_stmt_call = 106, // stmt_call - S_stmt_assign = 107, // stmt_assign - S_stmt_endon = 108, // stmt_endon - S_stmt_notify = 109, // stmt_notify - S_stmt_wait = 110, // stmt_wait - S_stmt_waittill = 111, // stmt_waittill - S_stmt_waittillmatch = 112, // stmt_waittillmatch - S_stmt_waittillframeend = 113, // stmt_waittillframeend - S_stmt_if = 114, // stmt_if - S_stmt_ifelse = 115, // stmt_ifelse - S_stmt_while = 116, // stmt_while - S_stmt_for = 117, // stmt_for - S_stmt_foreach = 118, // stmt_foreach - S_stmt_switch = 119, // stmt_switch - S_stmt_case = 120, // stmt_case - S_stmt_default = 121, // stmt_default - S_stmt_break = 122, // stmt_break - S_stmt_continue = 123, // stmt_continue - S_stmt_return = 124, // stmt_return - S_for_stmt = 125, // for_stmt - S_for_expr = 126, // for_expr - S_expr = 127, // expr - S_expr_assign = 128, // expr_assign - S_expr_compare = 129, // expr_compare - S_expr_binary = 130, // expr_binary - S_expr_primitive = 131, // expr_primitive - S_expr_call = 132, // expr_call - S_expr_call_thread = 133, // expr_call_thread - S_expr_call_childthread = 134, // expr_call_childthread - S_expr_call_function = 135, // expr_call_function - S_expr_call_pointer = 136, // expr_call_pointer - S_expr_arguments = 137, // expr_arguments - S_expr_arguments_filled = 138, // expr_arguments_filled - S_expr_arguments_empty = 139, // expr_arguments_empty - S_expr_function = 140, // expr_function - S_expr_add_array = 141, // expr_add_array - S_expr_array = 142, // expr_array - S_expr_field = 143, // expr_field - S_expr_size = 144, // expr_size - S_object = 145, // object - S_thisthread = 146, // thisthread - S_empty_array = 147, // empty_array - S_undefined = 148, // undefined - S_game = 149, // game - S_self = 150, // self - S_anim = 151, // anim - S_level = 152, // level - S_animation = 153, // animation - S_animtree = 154, // animtree - S_name = 155, // name - S_file = 156, // file - S_istring = 157, // istring - S_string = 158, // string - S_vector = 159, // vector - S_neg_float = 160, // neg_float - S_neg_integer = 161, // neg_integer - S_float = 162, // float - S_integer = 163, // integer - S_false = 164, // false - S_true = 165 // true + S_BREAKPOINT = 3, // "breakpoint" + S_PROFBEGIN = 4, // "prof_begin" + S_PROFEND = 5, // "prof_end" + S_INCLUDE = 6, // "#include" + S_USINGTREE = 7, // "#using_animtree" + S_ANIMTREE = 8, // "#animtree" + S_ENDON = 9, // "endon" + S_NOTIFY = 10, // "notify" + S_WAIT = 11, // "wait" + S_WAITTILL = 12, // "waittill" + S_WAITTILLMATCH = 13, // "waittillmatch" + S_WAITTILLFRAMEEND = 14, // "waittillframeend" + S_IF = 15, // "if" + S_ELSE = 16, // "else" + S_WHILE = 17, // "while" + S_FOR = 18, // "for" + S_FOREACH = 19, // "foreach" + S_IN = 20, // "in" + S_SWITCH = 21, // "switch" + S_CASE = 22, // "case" + S_DEFAULT = 23, // "default" + S_BREAK = 24, // "break" + S_CONTINUE = 25, // "continue" + S_RETURN = 26, // "return" + S_THREAD = 27, // "thread" + S_CHILDTHREAD = 28, // "childthread" + S_THISTHREAD = 29, // "thisthread" + S_CALL = 30, // "call" + S_TRUE = 31, // "true" + S_FALSE = 32, // "false" + S_UNDEFINED = 33, // "undefined" + S_SIZE = 34, // ".size" + S_GAME = 35, // "game" + S_SELF = 36, // "self" + S_ANIM = 37, // "anim" + S_LEVEL = 38, // "level" + S_LPAREN = 39, // "(" + S_RPAREN = 40, // ")" + S_LBRACE = 41, // "{" + S_RBRACE = 42, // "}" + S_LBRACKET = 43, // "[" + S_RBRACKET = 44, // "]" + S_COMMA = 45, // "," + S_DOT = 46, // "." + S_DOUBLECOLON = 47, // "::" + S_COLON = 48, // ":" + S_SEMICOLON = 49, // ";" + S_INCREMENT = 50, // "++" + S_DECREMENT = 51, // "--" + S_LSHIFT = 52, // "<<" + S_RSHIFT = 53, // ">>" + S_OR = 54, // "||" + S_AND = 55, // "&&" + S_EQUALITY = 56, // "==" + S_INEQUALITY = 57, // "!=" + S_LESS_EQUAL = 58, // "<=" + S_GREATER_EQUAL = 59, // ">=" + S_LESS = 60, // "<" + S_GREATER = 61, // ">" + S_NOT = 62, // "!" + S_COMPLEMENT = 63, // "~" + S_ASSIGN = 64, // "=" + S_ASSIGN_ADD = 65, // "+=" + S_ASSIGN_SUB = 66, // "-=" + S_ASSIGN_MULT = 67, // "*=" + S_ASSIGN_DIV = 68, // "/=" + S_ASSIGN_MOD = 69, // "%=" + S_ASSIGN_BITWISE_OR = 70, // "|=" + S_ASSIGN_BITWISE_AND = 71, // "&=" + S_ASSIGN_BITWISE_EXOR = 72, // "^=" + S_ASSIGN_RSHIFT = 73, // ">>=" + S_ASSIGN_LSHIFT = 74, // "<<=" + S_BITWISE_OR = 75, // "|" + S_BITWISE_AND = 76, // "&" + S_BITWISE_EXOR = 77, // "^" + S_ADD = 78, // "+" + S_SUB = 79, // "-" + S_MULT = 80, // "*" + S_DIV = 81, // "/" + S_MOD = 82, // "%" + S_FILE = 83, // "file path" + S_NAME = 84, // "identifier" + S_STRING = 85, // "string literal" + S_ISTRING = 86, // "localized string" + S_FLOAT = 87, // "float" + S_INTEGER = 88, // "int" + S_ADD_ARRAY = 89, // ADD_ARRAY + S_THEN = 90, // THEN + S_NEG = 91, // NEG + S_ANIMREF = 92, // ANIMREF + S_PREINC = 93, // PREINC + S_PREDEC = 94, // PREDEC + S_POSTINC = 95, // POSTINC + S_POSTDEC = 96, // POSTDEC + S_YYACCEPT = 97, // $accept + S_root = 98, // root + S_program = 99, // program + S_include = 100, // include + S_define = 101, // define + S_usingtree = 102, // usingtree + S_constant = 103, // constant + S_thread = 104, // thread + S_parameters = 105, // parameters + S_stmt = 106, // stmt + S_stmt_block = 107, // stmt_block + S_stmt_list = 108, // stmt_list + S_stmt_call = 109, // stmt_call + S_stmt_assign = 110, // stmt_assign + S_stmt_endon = 111, // stmt_endon + S_stmt_notify = 112, // stmt_notify + S_stmt_wait = 113, // stmt_wait + S_stmt_waittill = 114, // stmt_waittill + S_stmt_waittillmatch = 115, // stmt_waittillmatch + S_stmt_waittillframeend = 116, // stmt_waittillframeend + S_stmt_if = 117, // stmt_if + S_stmt_ifelse = 118, // stmt_ifelse + S_stmt_while = 119, // stmt_while + S_stmt_for = 120, // stmt_for + S_stmt_foreach = 121, // stmt_foreach + S_stmt_switch = 122, // stmt_switch + S_stmt_case = 123, // stmt_case + S_stmt_default = 124, // stmt_default + S_stmt_break = 125, // stmt_break + S_stmt_continue = 126, // stmt_continue + S_stmt_return = 127, // stmt_return + S_stmt_breakpoint = 128, // stmt_breakpoint + S_stmt_prof_begin = 129, // stmt_prof_begin + S_stmt_prof_end = 130, // stmt_prof_end + S_for_stmt = 131, // for_stmt + S_for_expr = 132, // for_expr + S_expr = 133, // expr + S_expr_assign = 134, // expr_assign + S_expr_compare = 135, // expr_compare + S_expr_binary = 136, // expr_binary + S_expr_primitive = 137, // expr_primitive + S_expr_call = 138, // expr_call + S_expr_call_thread = 139, // expr_call_thread + S_expr_call_childthread = 140, // expr_call_childthread + S_expr_call_function = 141, // expr_call_function + S_expr_call_pointer = 142, // expr_call_pointer + S_expr_arguments = 143, // expr_arguments + S_expr_arguments_filled = 144, // expr_arguments_filled + S_expr_arguments_empty = 145, // expr_arguments_empty + S_expr_function = 146, // expr_function + S_expr_add_array = 147, // expr_add_array + S_expr_array = 148, // expr_array + S_expr_field = 149, // expr_field + S_expr_size = 150, // expr_size + S_object = 151, // object + S_thisthread = 152, // thisthread + S_empty_array = 153, // empty_array + S_undefined = 154, // undefined + S_game = 155, // game + S_self = 156, // self + S_anim = 157, // anim + S_level = 158, // level + S_animation = 159, // animation + S_animtree = 160, // animtree + S_name = 161, // name + S_file = 162, // file + S_istring = 163, // istring + S_string = 164, // string + S_vector = 165, // vector + S_neg_float = 166, // neg_float + S_neg_integer = 167, // neg_integer + S_float = 168, // float + S_integer = 169, // integer + S_false = 170, // false + S_true = 171 // true }; }; @@ -1080,6 +1098,10 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< stmt_break_ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.move< stmt_breakpoint_ptr > (std::move (that.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.move< stmt_call_ptr > (std::move (that.value)); break; @@ -1125,6 +1147,14 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< stmt_notify_ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.move< stmt_prof_begin_ptr > (std::move (that.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.move< stmt_prof_end_ptr > (std::move (that.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.move< stmt_ptr > (std::move (that.value)); @@ -1587,6 +1617,20 @@ namespace xsk { namespace gsc { namespace iw6 { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, stmt_breakpoint_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_breakpoint_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_call_ptr&& v, location_type&& l) : Base (t) @@ -1741,6 +1785,34 @@ namespace xsk { namespace gsc { namespace iw6 { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, stmt_prof_begin_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_prof_begin_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_prof_end_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_prof_end_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_ptr&& v, location_type&& l) : Base (t) @@ -2102,6 +2174,10 @@ switch (yykind) value.template destroy< stmt_break_ptr > (); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.template destroy< stmt_breakpoint_ptr > (); + break; + case symbol_kind::S_stmt_call: // stmt_call value.template destroy< stmt_call_ptr > (); break; @@ -2147,6 +2223,14 @@ switch (yykind) value.template destroy< stmt_notify_ptr > (); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.template destroy< stmt_prof_begin_ptr > (); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.template destroy< stmt_prof_end_ptr > (); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.template destroy< stmt_ptr > (); @@ -2409,6 +2493,51 @@ switch (yykind) return symbol_type (token::IW6UNDEF, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_BREAKPOINT (location_type l) + { + return symbol_type (token::BREAKPOINT, std::move (l)); + } +#else + static + symbol_type + make_BREAKPOINT (const location_type& l) + { + return symbol_type (token::BREAKPOINT, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_PROFBEGIN (location_type l) + { + return symbol_type (token::PROFBEGIN, std::move (l)); + } +#else + static + symbol_type + make_PROFBEGIN (const location_type& l) + { + return symbol_type (token::PROFBEGIN, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_PROFEND (location_type l) + { + return symbol_type (token::PROFEND, std::move (l)); + } +#else + static + symbol_type + make_PROFEND (const location_type& l) + { + return symbol_type (token::PROFEND, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4118,8 +4247,8 @@ switch (yykind) /// Constants. enum { - yylast_ = 1580, ///< Last index in yytable_. - yynnts_ = 72, ///< Number of nonterminal symbols. + yylast_ = 1591, ///< Last index in yytable_. + yynnts_ = 75, ///< Number of nonterminal symbols. yyfinal_ = 15 ///< Termination state number. }; @@ -4276,6 +4405,10 @@ switch (yykind) value.copy< stmt_break_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.copy< stmt_breakpoint_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.copy< stmt_call_ptr > (YY_MOVE (that.value)); break; @@ -4321,6 +4454,14 @@ switch (yykind) value.copy< stmt_notify_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.copy< stmt_prof_begin_ptr > (YY_MOVE (that.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.copy< stmt_prof_end_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.copy< stmt_ptr > (YY_MOVE (that.value)); @@ -4540,6 +4681,10 @@ switch (yykind) value.move< stmt_break_ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.move< stmt_breakpoint_ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.move< stmt_call_ptr > (YY_MOVE (s.value)); break; @@ -4585,6 +4730,14 @@ switch (yykind) value.move< stmt_notify_ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.move< stmt_prof_begin_ptr > (YY_MOVE (s.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.move< stmt_prof_end_ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.move< stmt_ptr > (YY_MOVE (s.value)); @@ -4709,7 +4862,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::iw6 -#line 4713 "parser.hpp" +#line 4866 "parser.hpp" diff --git a/src/iw7/xsk/lexer.cpp b/src/iw7/xsk/lexer.cpp index 3464f409..2fb9e7cb 100644 --- a/src/iw7/xsk/lexer.cpp +++ b/src/iw7/xsk/lexer.cpp @@ -553,8 +553,8 @@ static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 96 -#define YY_END_OF_BUFFER 97 +#define YY_NUM_RULES 99 +#define YY_END_OF_BUFFER 100 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -562,38 +562,41 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[281] = +static const flex_int16_t yy_accept[300] = { 0, - 0, 0, 0, 0, 0, 0, 97, 95, 1, 2, - 84, 95, 95, 83, 87, 95, 45, 46, 81, 79, - 51, 80, 52, 82, 94, 54, 55, 68, 78, 69, - 90, 49, 50, 88, 90, 90, 90, 90, 90, 90, - 90, 90, 90, 90, 90, 90, 90, 90, 90, 47, - 86, 48, 85, 5, 6, 5, 9, 10, 9, 65, - 0, 92, 0, 0, 0, 0, 74, 0, 63, 0, - 76, 0, 0, 72, 56, 70, 57, 71, 93, 8, - 4, 3, 73, 93, 94, 0, 0, 53, 60, 66, - 64, 67, 61, 90, 77, 90, 90, 90, 90, 90, + 0, 0, 0, 0, 0, 0, 100, 98, 1, 2, + 87, 98, 98, 86, 90, 98, 48, 49, 84, 82, + 54, 83, 55, 85, 97, 57, 58, 71, 81, 72, + 93, 52, 53, 91, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 50, 89, 51, 88, 5, 6, 5, 9, 10, 9, + 68, 0, 95, 0, 0, 0, 0, 77, 0, 66, + 0, 79, 0, 0, 75, 59, 73, 60, 74, 96, + 0, 8, 4, 3, 76, 96, 97, 0, 0, 56, + 63, 69, 67, 70, 64, 93, 80, 93, 93, 93, - 90, 90, 90, 90, 90, 90, 21, 26, 90, 90, - 90, 90, 90, 90, 90, 90, 90, 90, 90, 75, - 62, 7, 11, 0, 92, 0, 0, 0, 0, 0, - 91, 0, 0, 0, 0, 92, 0, 93, 3, 93, - 93, 89, 58, 59, 90, 90, 90, 90, 90, 90, - 90, 90, 90, 90, 24, 90, 90, 90, 90, 90, - 90, 90, 90, 90, 90, 90, 90, 90, 0, 0, - 0, 0, 91, 0, 0, 91, 0, 43, 90, 36, - 28, 90, 90, 90, 22, 90, 90, 90, 41, 90, - 90, 90, 42, 40, 90, 90, 90, 37, 90, 17, + 93, 93, 93, 93, 93, 93, 93, 93, 24, 29, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 78, 65, 7, 11, 0, 95, 0, 0, 0, + 0, 0, 94, 0, 0, 0, 0, 95, 0, 96, + 0, 3, 96, 96, 92, 61, 62, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 27, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 0, 0, 0, 0, 94, 0, 0, 94, 0, + 0, 46, 93, 39, 31, 93, 93, 93, 25, 93, + 93, 93, 44, 93, 93, 93, 93, 45, 93, 93, + + 93, 40, 93, 20, 93, 0, 0, 0, 43, 33, + 93, 93, 93, 18, 41, 93, 47, 93, 93, 93, + 93, 93, 93, 93, 93, 26, 0, 0, 0, 93, + 93, 93, 93, 93, 19, 93, 93, 35, 30, 93, + 36, 93, 93, 0, 0, 0, 93, 93, 93, 32, + 28, 93, 93, 93, 93, 93, 0, 15, 0, 93, + 93, 34, 93, 14, 93, 93, 21, 17, 0, 93, + 93, 93, 93, 42, 93, 93, 0, 12, 93, 13, + 38, 93, 93, 0, 37, 93, 93, 0, 93, 93, + 0, 93, 22, 0, 93, 16, 93, 23, 0 - 90, 0, 0, 0, 30, 90, 90, 90, 15, 38, - 90, 44, 90, 90, 90, 90, 90, 90, 90, 23, - 0, 0, 0, 90, 90, 90, 90, 16, 32, 27, - 90, 33, 90, 90, 0, 0, 0, 90, 90, 29, - 25, 90, 90, 90, 0, 12, 0, 90, 31, 90, - 90, 18, 14, 0, 90, 90, 39, 90, 90, 0, - 90, 35, 90, 90, 0, 34, 90, 90, 0, 90, - 90, 0, 90, 19, 0, 90, 13, 90, 20, 0 } ; static const YY_CHAR yy_ec[256] = @@ -610,8 +613,8 @@ static const YY_CHAR yy_ec[256] = 25, 26, 27, 28, 29, 1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 24, 39, 40, 41, 42, - 43, 24, 24, 44, 45, 46, 47, 48, 49, 24, - 50, 51, 52, 53, 54, 55, 1, 1, 1, 1, + 43, 44, 24, 45, 46, 47, 48, 49, 50, 24, + 51, 52, 53, 54, 55, 56, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -628,224 +631,238 @@ static const YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static const YY_CHAR yy_meta[56] = +static const YY_CHAR yy_meta[57] = { 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 4, 1, 1, 1, 1, 1, 4, 1, 5, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 1, 1, 1, 1 + 4, 4, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[295] = +static const flex_int16_t yy_base[314] = { 0, - 0, 0, 53, 54, 55, 56, 530, 531, 531, 531, - 507, 55, 33, 506, 64, 58, 531, 531, 505, 55, - 531, 60, 508, 73, 71, 506, 531, 70, 502, 71, - 497, 531, 531, 500, 57, 44, 70, 72, 75, 78, - 48, 76, 86, 79, 90, 93, 88, 84, 103, 531, - 81, 531, 531, 531, 531, 504, 531, 531, 503, 531, - 104, 531, 132, 477, 476, 472, 531, 118, 531, 119, - 531, 127, 138, 531, 531, 531, 531, 531, 120, 531, - 531, 0, 531, 121, 133, 134, 0, 531, 494, 531, - 531, 531, 493, 488, 531, 38, 120, 117, 135, 126, + 0, 0, 54, 55, 56, 57, 564, 565, 565, 565, + 541, 56, 35, 540, 63, 55, 565, 565, 539, 56, + 565, 55, 56, 74, 71, 541, 565, 54, 537, 70, + 532, 565, 565, 535, 53, 58, 64, 72, 73, 74, + 79, 84, 82, 85, 86, 88, 95, 97, 94, 107, + 565, 96, 565, 565, 565, 565, 539, 565, 565, 538, + 565, 120, 565, 127, 512, 511, 506, 565, 122, 565, + 115, 565, 126, 140, 565, 565, 565, 565, 565, 120, + 513, 565, 565, 0, 565, 121, 141, 135, 0, 565, + 528, 565, 565, 565, 527, 522, 565, 132, 128, 134, - 137, 122, 143, 139, 140, 144, 487, 486, 145, 148, - 149, 151, 152, 154, 160, 155, 156, 161, 162, 531, - 531, 531, 531, 185, 191, 202, 473, 478, 471, 192, - 531, 203, 200, 207, 204, 205, 212, 531, 0, 201, - 531, 482, 531, 531, 186, 194, 197, 206, 199, 196, - 215, 209, 208, 218, 220, 221, 222, 223, 224, 227, - 226, 231, 233, 232, 238, 239, 241, 242, 466, 466, - 463, 264, 265, 271, 266, 270, 277, 478, 255, 477, - 476, 262, 263, 257, 475, 258, 259, 272, 474, 273, - 279, 157, 473, 472, 280, 281, 285, 471, 282, 283, + 137, 139, 138, 142, 114, 143, 145, 146, 521, 520, + 150, 151, 152, 153, 156, 159, 163, 158, 160, 165, + 166, 565, 565, 565, 565, 189, 197, 202, 507, 512, + 505, 204, 565, 207, 205, 208, 209, 210, 213, 565, + 490, 0, 202, 565, 515, 565, 565, 199, 212, 187, + 195, 206, 198, 217, 215, 218, 222, 224, 225, 226, + 227, 228, 229, 231, 236, 230, 238, 241, 244, 243, + 245, 499, 499, 496, 268, 269, 276, 271, 273, 283, + 503, 510, 261, 509, 508, 258, 263, 262, 507, 270, + 272, 277, 506, 278, 279, 282, 287, 505, 289, 290, - 284, 450, 448, 458, 467, 290, 293, 294, 466, 465, - 296, 464, 295, 297, 300, 304, 298, 306, 312, 463, - 444, 454, 457, 314, 299, 307, 317, 459, 458, 457, - 316, 456, 321, 322, 447, 446, 449, 323, 330, 452, - 451, 331, 332, 329, 442, 531, 433, 342, 448, 344, - 326, 345, 531, 435, 347, 346, 446, 349, 352, 430, - 355, 444, 357, 358, 423, 429, 359, 363, 363, 364, - 365, 372, 371, 377, 365, 366, 531, 368, 370, 531, - 408, 413, 418, 423, 426, 428, 433, 438, 443, 448, - 453, 357, 458, 463 + 293, 504, 291, 294, 296, 482, 480, 491, 565, 298, + 299, 301, 305, 500, 499, 302, 498, 303, 313, 307, + 314, 322, 324, 326, 327, 497, 477, 488, 491, 312, + 330, 310, 334, 335, 493, 336, 337, 492, 491, 340, + 490, 342, 343, 481, 480, 483, 348, 345, 354, 486, + 485, 351, 349, 363, 365, 352, 476, 565, 467, 367, + 368, 482, 369, 481, 370, 372, 375, 565, 468, 377, + 378, 380, 385, 466, 386, 387, 403, 417, 388, 416, + 414, 389, 394, 389, 408, 397, 400, 331, 399, 402, + 339, 401, 309, 259, 403, 565, 404, 200, 565, 445, + 450, 455, 460, 463, 465, 470, 475, 480, 485, 490, + 84, 495, 500 } ; -static const flex_int16_t yy_def[295] = +static const flex_int16_t yy_def[314] = { 0, - 280, 1, 281, 281, 282, 282, 280, 280, 280, 280, - 280, 283, 280, 280, 280, 284, 280, 280, 280, 280, - 280, 280, 280, 280, 285, 280, 280, 280, 280, 280, - 286, 280, 280, 280, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, 286, 280, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 283, 280, 287, 280, 280, 280, 280, 288, 280, 289, - 280, 284, 290, 280, 280, 280, 280, 280, 280, 280, - 280, 291, 280, 280, 285, 285, 292, 280, 280, 280, - 280, 280, 280, 286, 280, 286, 286, 286, 286, 286, + 299, 1, 300, 300, 301, 301, 299, 299, 299, 299, + 299, 302, 299, 299, 299, 303, 299, 299, 299, 299, + 299, 299, 299, 299, 304, 299, 299, 299, 299, 299, + 305, 299, 299, 299, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 302, 299, 306, 299, 299, 299, 299, 307, 299, + 308, 299, 303, 309, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 310, 299, 299, 304, 304, 311, 299, + 299, 299, 299, 299, 299, 305, 299, 305, 305, 305, - 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, 286, 280, - 280, 280, 280, 283, 283, 287, 280, 280, 280, 288, - 280, 293, 289, 294, 284, 284, 290, 280, 291, 280, - 280, 292, 280, 280, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, 280, 280, - 280, 288, 288, 293, 289, 289, 294, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 299, 299, 299, 299, 302, 302, 306, 299, 299, + 299, 307, 299, 312, 308, 313, 303, 303, 309, 299, + 299, 310, 299, 299, 311, 299, 299, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 299, 299, 299, 307, 307, 312, 308, 308, 313, + 299, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 286, 280, 280, 280, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, - 280, 280, 280, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 280, 280, 280, 286, 286, 286, - 286, 286, 286, 286, 280, 280, 280, 286, 286, 286, - 286, 286, 280, 280, 286, 286, 286, 286, 286, 280, - 286, 286, 286, 286, 280, 286, 286, 286, 280, 286, - 286, 280, 286, 286, 280, 286, 280, 286, 286, 0, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280 + 305, 305, 305, 305, 305, 299, 299, 299, 299, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 299, 299, 299, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 299, 299, 299, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 299, 299, 299, 305, + 305, 305, 305, 305, 305, 305, 305, 299, 299, 305, + 305, 305, 305, 305, 305, 305, 299, 305, 305, 305, + 305, 305, 305, 299, 305, 305, 305, 299, 305, 305, + 299, 305, 305, 299, 305, 299, 305, 305, 0, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299 } ; -static const flex_int16_t yy_nxt[587] = +static const flex_int16_t yy_nxt[622] = { 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 8, 33, 34, 31, 35, 36, 37, 38, 39, 40, 41, 31, 42, 31, 43, - 31, 44, 31, 45, 46, 47, 48, 31, 49, 31, - 31, 50, 51, 52, 53, 55, 55, 58, 58, 62, - 59, 59, 64, 87, 56, 56, 62, 75, 68, 87, - 65, 69, 70, 87, 77, 145, 76, 106, 80, 66, - 63, 78, 87, 73, 81, 71, 84, 97, 85, 82, - 89, 90, 92, 93, 83, 87, 87, 87, 96, 98, + 31, 44, 31, 45, 46, 47, 48, 49, 31, 50, + 31, 31, 51, 52, 53, 54, 56, 56, 59, 59, + 63, 60, 60, 63, 65, 57, 57, 69, 76, 78, + 70, 71, 66, 80, 91, 92, 79, 77, 89, 82, + 74, 64, 67, 89, 72, 83, 86, 145, 87, 89, + 84, 94, 95, 100, 98, 85, 89, 89, 89, 89, - 87, 87, 120, 87, 87, 101, 99, 104, 62, 87, - 107, 87, 100, 87, 102, 87, 103, 108, 87, 109, - 105, 110, 131, 111, 115, 117, 112, 131, 87, 63, - 113, 116, 118, 121, 61, 62, 125, 79, 140, 119, - 72, 114, 87, 132, 134, 87, 136, 87, 84, 280, - 85, 87, 73, 146, 138, 141, 147, 126, 87, 87, - 87, 148, 87, 137, 87, 87, 152, 150, 87, 87, - 87, 151, 149, 87, 87, 153, 87, 87, 154, 87, - 87, 87, 87, 155, 156, 87, 87, 87, 166, 62, - 160, 162, 157, 158, 159, 62, 131, 163, 167, 168, + 101, 81, 99, 106, 89, 103, 102, 89, 108, 89, + 89, 89, 104, 89, 105, 111, 107, 122, 109, 89, + 89, 114, 89, 133, 63, 110, 133, 112, 115, 62, + 113, 127, 89, 117, 63, 119, 120, 80, 143, 89, + 136, 118, 73, 121, 116, 64, 156, 134, 138, 123, + 299, 74, 128, 89, 140, 144, 86, 89, 87, 89, + 89, 149, 89, 89, 89, 139, 89, 89, 89, 148, + 89, 89, 154, 150, 152, 89, 89, 89, 89, 151, + 153, 89, 157, 89, 89, 89, 159, 155, 89, 158, + 89, 89, 169, 63, 162, 164, 165, 161, 160, 163, - 214, 165, 161, 164, 61, 130, 125, 173, 131, 133, - 63, 87, 62, 62, 72, 176, 63, 132, 140, 87, - 136, 87, 87, 179, 87, 134, 178, 126, 174, 73, - 73, 87, 177, 87, 87, 141, 180, 137, 182, 181, - 87, 183, 185, 87, 184, 87, 87, 87, 87, 87, - 186, 87, 87, 188, 189, 190, 87, 87, 87, 194, - 191, 193, 187, 87, 87, 197, 87, 87, 131, 131, - 192, 198, 199, 130, 131, 173, 195, 196, 131, 133, - 87, 201, 87, 87, 87, 176, 200, 87, 87, 132, - 132, 134, 210, 205, 206, 134, 174, 87, 87, 209, + 166, 63, 170, 171, 62, 168, 127, 167, 133, 132, + 135, 176, 89, 133, 64, 73, 179, 63, 63, 143, + 89, 138, 64, 89, 89, 89, 184, 128, 185, 134, + 136, 89, 177, 180, 74, 74, 144, 89, 139, 182, + 89, 183, 89, 89, 187, 186, 188, 89, 189, 89, + 89, 89, 89, 89, 89, 89, 89, 192, 193, 194, + 190, 89, 196, 89, 195, 198, 89, 191, 89, 89, + 89, 201, 133, 133, 202, 200, 197, 203, 132, 133, + 176, 133, 199, 89, 205, 135, 89, 89, 89, 204, + 211, 179, 296, 134, 134, 89, 136, 89, 136, 210, - 207, 211, 177, 208, 87, 87, 87, 87, 87, 87, - 87, 215, 212, 213, 217, 87, 218, 220, 87, 87, - 87, 87, 87, 87, 87, 87, 216, 227, 219, 87, - 232, 87, 87, 226, 225, 224, 230, 87, 229, 87, - 231, 87, 87, 233, 228, 239, 87, 87, 87, 234, - 238, 87, 240, 241, 87, 87, 87, 87, 257, 242, - 142, 244, 243, 249, 250, 251, 248, 87, 252, 87, - 87, 87, 87, 256, 87, 255, 261, 87, 262, 258, - 87, 264, 87, 87, 87, 259, 267, 266, 87, 87, - 87, 87, 263, 87, 271, 87, 87, 273, 277, 270, + 212, 177, 89, 89, 89, 215, 216, 89, 180, 213, + 219, 214, 89, 218, 89, 89, 89, 217, 89, 89, + 221, 89, 223, 89, 89, 224, 89, 89, 89, 226, + 89, 220, 89, 234, 89, 89, 222, 89, 89, 89, + 225, 230, 232, 236, 233, 231, 237, 89, 238, 89, + 239, 89, 89, 235, 247, 89, 241, 249, 240, 89, + 89, 89, 89, 242, 243, 89, 248, 89, 89, 252, + 89, 251, 294, 89, 89, 291, 89, 89, 253, 89, + 250, 264, 256, 255, 254, 260, 263, 262, 89, 261, + 89, 267, 89, 89, 89, 89, 265, 89, 266, 273, - 279, 274, 87, 268, 276, 275, 272, 278, 54, 54, - 54, 54, 54, 57, 57, 57, 57, 57, 61, 61, - 61, 61, 61, 72, 72, 72, 72, 72, 86, 86, - 86, 94, 94, 124, 124, 124, 124, 124, 130, 130, - 130, 130, 130, 133, 133, 133, 133, 133, 135, 135, - 135, 135, 135, 139, 87, 139, 139, 139, 172, 172, - 172, 172, 172, 175, 175, 175, 175, 175, 269, 87, - 265, 87, 260, 87, 254, 253, 87, 87, 247, 246, - 245, 87, 87, 87, 87, 237, 236, 235, 87, 87, - 87, 87, 87, 223, 222, 221, 87, 87, 87, 87, + 89, 271, 89, 89, 274, 89, 272, 279, 270, 275, + 89, 89, 89, 89, 89, 276, 283, 281, 286, 89, + 285, 280, 89, 278, 89, 89, 89, 89, 89, 89, + 282, 290, 292, 89, 295, 288, 298, 289, 293, 89, + 287, 89, 89, 284, 297, 55, 55, 55, 55, 55, + 58, 58, 58, 58, 58, 62, 62, 62, 62, 62, + 73, 73, 73, 73, 73, 88, 88, 88, 96, 96, + 126, 126, 126, 126, 126, 132, 132, 132, 132, 132, + 135, 135, 135, 135, 135, 137, 137, 137, 137, 137, + 142, 89, 142, 142, 142, 175, 175, 175, 175, 175, - 87, 87, 87, 87, 204, 203, 202, 87, 171, 170, - 169, 87, 87, 87, 144, 143, 129, 128, 127, 123, - 122, 95, 87, 91, 88, 79, 74, 67, 60, 280, - 7, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280 + 178, 178, 178, 178, 178, 277, 89, 89, 269, 268, + 89, 89, 259, 258, 257, 89, 89, 89, 89, 246, + 245, 244, 89, 89, 89, 89, 229, 228, 227, 89, + 89, 89, 89, 89, 89, 89, 209, 208, 207, 206, + 89, 181, 174, 173, 172, 89, 89, 89, 147, 146, + 141, 131, 130, 129, 125, 124, 97, 89, 93, 90, + 75, 68, 61, 299, 7, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299 } ; -static const flex_int16_t yy_chk[587] = +static const flex_int16_t yy_chk[622] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 4, 5, 6, 12, - 5, 6, 13, 96, 3, 4, 16, 20, 15, 36, - 13, 15, 15, 41, 22, 96, 20, 41, 24, 13, - 12, 22, 35, 16, 24, 15, 25, 36, 25, 24, - 28, 28, 30, 30, 24, 37, 25, 38, 35, 37, + 1, 1, 1, 1, 1, 1, 3, 4, 5, 6, + 12, 5, 6, 16, 13, 3, 4, 15, 20, 22, + 15, 15, 13, 23, 28, 28, 22, 20, 35, 24, + 16, 12, 13, 36, 15, 24, 25, 311, 25, 37, + 24, 30, 30, 37, 35, 24, 25, 38, 39, 40, - 39, 42, 51, 40, 44, 38, 37, 40, 61, 48, - 42, 43, 37, 47, 39, 45, 39, 42, 46, 43, - 40, 44, 68, 45, 47, 48, 46, 70, 49, 61, - 46, 47, 49, 51, 63, 72, 63, 79, 84, 49, - 73, 46, 98, 68, 70, 97, 73, 102, 85, 86, - 85, 100, 72, 97, 79, 84, 98, 63, 85, 86, - 99, 98, 101, 73, 104, 105, 102, 100, 103, 106, - 109, 101, 99, 110, 111, 103, 112, 113, 104, 114, - 116, 117, 192, 105, 106, 115, 118, 119, 117, 124, - 112, 114, 109, 110, 111, 125, 130, 115, 118, 119, + 37, 23, 36, 40, 41, 38, 37, 43, 41, 42, + 44, 45, 39, 46, 39, 43, 40, 52, 42, 49, + 47, 46, 48, 71, 62, 42, 69, 44, 47, 64, + 45, 64, 50, 48, 73, 49, 50, 80, 86, 105, + 71, 48, 74, 50, 47, 62, 105, 69, 74, 52, + 88, 73, 64, 99, 80, 86, 87, 98, 87, 100, + 88, 99, 101, 103, 102, 74, 87, 104, 106, 98, + 107, 108, 103, 100, 101, 111, 112, 113, 114, 100, + 102, 115, 106, 118, 116, 119, 108, 104, 117, 107, + 120, 121, 119, 126, 113, 115, 116, 112, 111, 114, - 192, 116, 113, 115, 126, 132, 126, 132, 133, 134, - 124, 145, 135, 136, 137, 134, 125, 130, 140, 146, - 137, 150, 147, 146, 149, 133, 145, 126, 132, 135, - 136, 148, 134, 153, 152, 140, 147, 137, 149, 148, - 151, 150, 152, 154, 151, 155, 156, 157, 158, 159, - 153, 161, 160, 155, 156, 157, 162, 164, 163, 161, - 158, 160, 154, 165, 166, 164, 167, 168, 172, 173, - 159, 165, 166, 174, 175, 174, 162, 163, 176, 177, - 179, 168, 184, 186, 187, 177, 167, 182, 183, 172, - 173, 175, 187, 179, 182, 176, 174, 188, 190, 186, + 117, 127, 120, 121, 128, 118, 128, 117, 132, 134, + 136, 134, 150, 135, 126, 139, 136, 137, 138, 143, + 151, 139, 127, 153, 148, 298, 150, 128, 151, 132, + 135, 152, 134, 136, 137, 138, 143, 149, 139, 148, + 155, 149, 154, 156, 153, 152, 154, 157, 155, 158, + 159, 160, 161, 162, 163, 166, 164, 158, 159, 160, + 156, 165, 162, 167, 161, 164, 168, 157, 170, 169, + 171, 167, 175, 176, 168, 166, 163, 169, 177, 178, + 177, 179, 165, 186, 171, 180, 183, 188, 187, 170, + 186, 180, 294, 175, 176, 190, 178, 191, 179, 183, - 183, 188, 177, 184, 191, 195, 196, 199, 200, 201, - 197, 195, 190, 191, 197, 206, 199, 201, 207, 208, - 213, 211, 214, 217, 225, 215, 196, 211, 200, 216, - 217, 218, 226, 208, 207, 206, 215, 219, 214, 224, - 216, 231, 227, 218, 213, 225, 233, 234, 238, 219, - 224, 251, 226, 227, 244, 239, 242, 243, 251, 231, - 292, 234, 233, 239, 242, 243, 238, 248, 244, 250, - 252, 256, 255, 250, 258, 248, 255, 259, 256, 252, - 261, 259, 263, 264, 267, 252, 263, 261, 268, 270, - 271, 276, 258, 278, 268, 279, 273, 270, 275, 267, + 187, 177, 192, 194, 195, 191, 192, 196, 180, 188, + 196, 190, 197, 195, 199, 200, 203, 194, 201, 204, + 199, 205, 201, 210, 211, 203, 212, 216, 218, 205, + 213, 197, 220, 216, 293, 232, 200, 230, 219, 221, + 204, 210, 212, 219, 213, 211, 219, 222, 220, 223, + 221, 224, 225, 218, 230, 231, 223, 232, 222, 233, + 234, 236, 237, 224, 225, 240, 231, 242, 243, 236, + 248, 234, 291, 247, 253, 288, 252, 256, 237, 249, + 233, 253, 243, 242, 240, 247, 252, 249, 254, 248, + 255, 256, 260, 261, 263, 265, 254, 266, 255, 265, - 278, 271, 274, 264, 273, 272, 269, 276, 281, 281, - 281, 281, 281, 282, 282, 282, 282, 282, 283, 283, - 283, 283, 283, 284, 284, 284, 284, 284, 285, 285, - 285, 286, 286, 287, 287, 287, 287, 287, 288, 288, - 288, 288, 288, 289, 289, 289, 289, 289, 290, 290, - 290, 290, 290, 291, 266, 291, 291, 291, 293, 293, - 293, 293, 293, 294, 294, 294, 294, 294, 265, 262, - 260, 257, 254, 249, 247, 245, 241, 240, 237, 236, - 235, 232, 230, 229, 228, 223, 222, 221, 220, 212, - 210, 209, 205, 204, 203, 202, 198, 194, 193, 189, + 267, 261, 270, 271, 266, 272, 263, 271, 260, 267, + 273, 275, 276, 279, 282, 267, 276, 273, 282, 283, + 279, 272, 286, 270, 289, 287, 292, 290, 295, 297, + 275, 287, 289, 285, 292, 284, 297, 286, 290, 281, + 283, 280, 278, 277, 295, 300, 300, 300, 300, 300, + 301, 301, 301, 301, 301, 302, 302, 302, 302, 302, + 303, 303, 303, 303, 303, 304, 304, 304, 305, 305, + 306, 306, 306, 306, 306, 307, 307, 307, 307, 307, + 308, 308, 308, 308, 308, 309, 309, 309, 309, 309, + 310, 274, 310, 310, 310, 312, 312, 312, 312, 312, - 185, 181, 180, 178, 171, 170, 169, 142, 129, 128, - 127, 108, 107, 94, 93, 89, 66, 65, 64, 59, - 56, 34, 31, 29, 26, 23, 19, 14, 11, 7, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280 + 313, 313, 313, 313, 313, 269, 264, 262, 259, 257, + 251, 250, 246, 245, 244, 241, 239, 238, 235, 229, + 228, 227, 226, 217, 215, 214, 208, 207, 206, 202, + 198, 193, 189, 185, 184, 182, 181, 174, 173, 172, + 145, 141, 131, 130, 129, 110, 109, 96, 95, 91, + 81, 67, 66, 65, 60, 57, 34, 31, 29, 26, + 19, 14, 11, 7, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299 } ; /* The intent behind this definition is that it'll catch @@ -866,9 +883,9 @@ static const flex_int16_t yy_chk[587] = #line 23 "lexer.lpp" #define YY_USER_ACTION loc.columns(yyleng); -#line 869 "lexer.cpp" +#line 886 "lexer.cpp" -#line 871 "lexer.cpp" +#line 888 "lexer.cpp" #define INITIAL 0 #define COMMENT_BLOCK_STATE 1 @@ -1136,7 +1153,7 @@ YY_DECL loc.step(); -#line 1139 "lexer.cpp" +#line 1156 "lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1163,13 +1180,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 281 ) + if ( yy_current_state >= 300 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 280 ); + while ( yy_current_state != 299 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -1250,438 +1267,453 @@ YY_RULE_SETUP case 12: YY_RULE_SETUP #line 59 "lexer.lpp" -{ return iw7::parser::make_INCLUDE(loc); } +{ return iw7::parser::make_BREAKPOINT(loc); } YY_BREAK case 13: YY_RULE_SETUP #line 60 "lexer.lpp" -{ return iw7::parser::make_USINGTREE(loc); } +{ return iw7::parser::make_PROFBEGIN(loc); } YY_BREAK case 14: YY_RULE_SETUP #line 61 "lexer.lpp" -{ return iw7::parser::make_ANIMTREE(loc); } +{ return iw7::parser::make_PROFEND(loc); } YY_BREAK case 15: YY_RULE_SETUP #line 62 "lexer.lpp" -{ return iw7::parser::make_ENDON(loc); } +{ return iw7::parser::make_INCLUDE(loc); } YY_BREAK case 16: YY_RULE_SETUP #line 63 "lexer.lpp" -{ return iw7::parser::make_NOTIFY(loc); } +{ return iw7::parser::make_USINGTREE(loc); } YY_BREAK case 17: YY_RULE_SETUP #line 64 "lexer.lpp" -{ return iw7::parser::make_WAIT(loc); } +{ return iw7::parser::make_ANIMTREE(loc); } YY_BREAK case 18: YY_RULE_SETUP #line 65 "lexer.lpp" -{ return iw7::parser::make_WAITTILL(loc); } +{ return iw7::parser::make_ENDON(loc); } YY_BREAK case 19: YY_RULE_SETUP #line 66 "lexer.lpp" -{ return iw7::parser::make_WAITTILLMATCH(loc); } +{ return iw7::parser::make_NOTIFY(loc); } YY_BREAK case 20: YY_RULE_SETUP #line 67 "lexer.lpp" -{ return iw7::parser::make_WAITTILLFRAMEEND(loc); } +{ return iw7::parser::make_WAIT(loc); } YY_BREAK case 21: YY_RULE_SETUP #line 68 "lexer.lpp" -{ return iw7::parser::make_IF(loc); } +{ return iw7::parser::make_WAITTILL(loc); } YY_BREAK case 22: YY_RULE_SETUP #line 69 "lexer.lpp" -{ return iw7::parser::make_ELSE(loc); } +{ return iw7::parser::make_WAITTILLMATCH(loc); } YY_BREAK case 23: YY_RULE_SETUP #line 70 "lexer.lpp" -{ return iw7::parser::make_WHILE(loc); } +{ return iw7::parser::make_WAITTILLFRAMEEND(loc); } YY_BREAK case 24: YY_RULE_SETUP #line 71 "lexer.lpp" -{ return iw7::parser::make_FOR(loc); } +{ return iw7::parser::make_IF(loc); } YY_BREAK case 25: YY_RULE_SETUP #line 72 "lexer.lpp" -{ return iw7::parser::make_FOREACH(loc); } +{ return iw7::parser::make_ELSE(loc); } YY_BREAK case 26: YY_RULE_SETUP #line 73 "lexer.lpp" -{ return iw7::parser::make_IN(loc); } +{ return iw7::parser::make_WHILE(loc); } YY_BREAK case 27: YY_RULE_SETUP #line 74 "lexer.lpp" -{ return iw7::parser::make_SWITCH(loc); } +{ return iw7::parser::make_FOR(loc); } YY_BREAK case 28: YY_RULE_SETUP #line 75 "lexer.lpp" -{ return iw7::parser::make_CASE(loc); } +{ return iw7::parser::make_FOREACH(loc); } YY_BREAK case 29: YY_RULE_SETUP #line 76 "lexer.lpp" -{ return iw7::parser::make_DEFAULT(loc); } +{ return iw7::parser::make_IN(loc); } YY_BREAK case 30: YY_RULE_SETUP #line 77 "lexer.lpp" -{ return iw7::parser::make_BREAK(loc); } +{ return iw7::parser::make_SWITCH(loc); } YY_BREAK case 31: YY_RULE_SETUP #line 78 "lexer.lpp" -{ return iw7::parser::make_CONTINUE(loc); } +{ return iw7::parser::make_CASE(loc); } YY_BREAK case 32: YY_RULE_SETUP #line 79 "lexer.lpp" -{ return iw7::parser::make_RETURN(loc); } +{ return iw7::parser::make_DEFAULT(loc); } YY_BREAK case 33: YY_RULE_SETUP #line 80 "lexer.lpp" -{ return iw7::parser::make_THREAD(loc); } +{ return iw7::parser::make_BREAK(loc); } YY_BREAK case 34: YY_RULE_SETUP #line 81 "lexer.lpp" -{ return iw7::parser::make_CHILDTHREAD(loc); } +{ return iw7::parser::make_CONTINUE(loc); } YY_BREAK case 35: YY_RULE_SETUP #line 82 "lexer.lpp" -{ return iw7::parser::make_THISTHREAD(loc); } +{ return iw7::parser::make_RETURN(loc); } YY_BREAK case 36: YY_RULE_SETUP #line 83 "lexer.lpp" -{ return iw7::parser::make_CALL(loc); } +{ return iw7::parser::make_THREAD(loc); } YY_BREAK case 37: YY_RULE_SETUP #line 84 "lexer.lpp" -{ return iw7::parser::make_TRUE(loc); } +{ return iw7::parser::make_CHILDTHREAD(loc); } YY_BREAK case 38: YY_RULE_SETUP #line 85 "lexer.lpp" -{ return iw7::parser::make_FALSE(loc); } +{ return iw7::parser::make_THISTHREAD(loc); } YY_BREAK case 39: YY_RULE_SETUP #line 86 "lexer.lpp" -{ return iw7::parser::make_UNDEFINED(loc); } +{ return iw7::parser::make_CALL(loc); } YY_BREAK case 40: YY_RULE_SETUP #line 87 "lexer.lpp" -{ return iw7::parser::make_SIZE(loc); } +{ return iw7::parser::make_TRUE(loc); } YY_BREAK case 41: YY_RULE_SETUP #line 88 "lexer.lpp" -{ return iw7::parser::make_GAME(loc); } +{ return iw7::parser::make_FALSE(loc); } YY_BREAK case 42: YY_RULE_SETUP #line 89 "lexer.lpp" -{ return iw7::parser::make_SELF(loc); } +{ return iw7::parser::make_UNDEFINED(loc); } YY_BREAK case 43: YY_RULE_SETUP #line 90 "lexer.lpp" -{ return iw7::parser::make_ANIM(loc); } +{ return iw7::parser::make_SIZE(loc); } YY_BREAK case 44: YY_RULE_SETUP #line 91 "lexer.lpp" -{ return iw7::parser::make_LEVEL(loc); } +{ return iw7::parser::make_GAME(loc); } YY_BREAK case 45: YY_RULE_SETUP #line 92 "lexer.lpp" -{ return iw7::parser::make_LPAREN(loc); } +{ return iw7::parser::make_SELF(loc); } YY_BREAK case 46: YY_RULE_SETUP #line 93 "lexer.lpp" -{ return iw7::parser::make_RPAREN(loc); } +{ return iw7::parser::make_ANIM(loc); } YY_BREAK case 47: YY_RULE_SETUP #line 94 "lexer.lpp" -{ return iw7::parser::make_LBRACE(loc); } +{ return iw7::parser::make_LEVEL(loc); } YY_BREAK case 48: YY_RULE_SETUP #line 95 "lexer.lpp" -{ return iw7::parser::make_RBRACE(loc); } +{ return iw7::parser::make_LPAREN(loc); } YY_BREAK case 49: YY_RULE_SETUP #line 96 "lexer.lpp" -{ return iw7::parser::make_LBRACKET(loc); } +{ return iw7::parser::make_RPAREN(loc); } YY_BREAK case 50: YY_RULE_SETUP #line 97 "lexer.lpp" -{ return iw7::parser::make_RBRACKET(loc); } +{ return iw7::parser::make_LBRACE(loc); } YY_BREAK case 51: YY_RULE_SETUP #line 98 "lexer.lpp" -{ return iw7::parser::make_COMMA(loc); } +{ return iw7::parser::make_RBRACE(loc); } YY_BREAK case 52: YY_RULE_SETUP #line 99 "lexer.lpp" -{ return iw7::parser::make_DOT(loc); } +{ return iw7::parser::make_LBRACKET(loc); } YY_BREAK case 53: YY_RULE_SETUP #line 100 "lexer.lpp" -{ return iw7::parser::make_DOUBLECOLON(loc); } +{ return iw7::parser::make_RBRACKET(loc); } YY_BREAK case 54: YY_RULE_SETUP #line 101 "lexer.lpp" -{ return iw7::parser::make_COLON(loc); } +{ return iw7::parser::make_COMMA(loc); } YY_BREAK case 55: YY_RULE_SETUP #line 102 "lexer.lpp" -{ return iw7::parser::make_SEMICOLON(loc); } +{ return iw7::parser::make_DOT(loc); } YY_BREAK case 56: YY_RULE_SETUP #line 103 "lexer.lpp" -{ return iw7::parser::make_INCREMENT(loc); } +{ return iw7::parser::make_DOUBLECOLON(loc); } YY_BREAK case 57: YY_RULE_SETUP #line 104 "lexer.lpp" -{ return iw7::parser::make_DECREMENT(loc); } +{ return iw7::parser::make_COLON(loc); } YY_BREAK case 58: YY_RULE_SETUP #line 105 "lexer.lpp" -{ return iw7::parser::make_ASSIGN_LSHIFT(loc); } +{ return iw7::parser::make_SEMICOLON(loc); } YY_BREAK case 59: YY_RULE_SETUP #line 106 "lexer.lpp" -{ return iw7::parser::make_ASSIGN_RSHIFT(loc); } +{ return iw7::parser::make_INCREMENT(loc); } YY_BREAK case 60: YY_RULE_SETUP #line 107 "lexer.lpp" -{ return iw7::parser::make_LSHIFT(loc); } +{ return iw7::parser::make_DECREMENT(loc); } YY_BREAK case 61: YY_RULE_SETUP #line 108 "lexer.lpp" -{ return iw7::parser::make_RSHIFT(loc); } +{ return iw7::parser::make_ASSIGN_LSHIFT(loc); } YY_BREAK case 62: YY_RULE_SETUP #line 109 "lexer.lpp" -{ return iw7::parser::make_OR(loc); } +{ return iw7::parser::make_ASSIGN_RSHIFT(loc); } YY_BREAK case 63: YY_RULE_SETUP #line 110 "lexer.lpp" -{ return iw7::parser::make_AND(loc); } +{ return iw7::parser::make_LSHIFT(loc); } YY_BREAK case 64: YY_RULE_SETUP #line 111 "lexer.lpp" -{ return iw7::parser::make_EQUALITY(loc); } +{ return iw7::parser::make_RSHIFT(loc); } YY_BREAK case 65: YY_RULE_SETUP #line 112 "lexer.lpp" -{ return iw7::parser::make_INEQUALITY(loc); } +{ return iw7::parser::make_OR(loc); } YY_BREAK case 66: YY_RULE_SETUP #line 113 "lexer.lpp" -{ return iw7::parser::make_LESS_EQUAL(loc); } +{ return iw7::parser::make_AND(loc); } YY_BREAK case 67: YY_RULE_SETUP #line 114 "lexer.lpp" -{ return iw7::parser::make_GREATER_EQUAL(loc); } +{ return iw7::parser::make_EQUALITY(loc); } YY_BREAK case 68: YY_RULE_SETUP #line 115 "lexer.lpp" -{ return iw7::parser::make_LESS(loc); } +{ return iw7::parser::make_INEQUALITY(loc); } YY_BREAK case 69: YY_RULE_SETUP #line 116 "lexer.lpp" -{ return iw7::parser::make_GREATER(loc); } +{ return iw7::parser::make_LESS_EQUAL(loc); } YY_BREAK case 70: YY_RULE_SETUP #line 117 "lexer.lpp" -{ return iw7::parser::make_ASSIGN_ADD(loc); } +{ return iw7::parser::make_GREATER_EQUAL(loc); } YY_BREAK case 71: YY_RULE_SETUP #line 118 "lexer.lpp" -{ return iw7::parser::make_ASSIGN_SUB(loc); } +{ return iw7::parser::make_LESS(loc); } YY_BREAK case 72: YY_RULE_SETUP #line 119 "lexer.lpp" -{ return iw7::parser::make_ASSIGN_MULT(loc); } +{ return iw7::parser::make_GREATER(loc); } YY_BREAK case 73: YY_RULE_SETUP #line 120 "lexer.lpp" -{ return iw7::parser::make_ASSIGN_DIV(loc); } +{ return iw7::parser::make_ASSIGN_ADD(loc); } YY_BREAK case 74: YY_RULE_SETUP #line 121 "lexer.lpp" -{ return iw7::parser::make_ASSIGN_MOD(loc); } +{ return iw7::parser::make_ASSIGN_SUB(loc); } YY_BREAK case 75: YY_RULE_SETUP #line 122 "lexer.lpp" -{ return iw7::parser::make_ASSIGN_BITWISE_OR(loc); } +{ return iw7::parser::make_ASSIGN_MULT(loc); } YY_BREAK case 76: YY_RULE_SETUP #line 123 "lexer.lpp" -{ return iw7::parser::make_ASSIGN_BITWISE_AND(loc); } +{ return iw7::parser::make_ASSIGN_DIV(loc); } YY_BREAK case 77: YY_RULE_SETUP #line 124 "lexer.lpp" -{ return iw7::parser::make_ASSIGN_BITWISE_EXOR(loc); } +{ return iw7::parser::make_ASSIGN_MOD(loc); } YY_BREAK case 78: YY_RULE_SETUP #line 125 "lexer.lpp" -{ return iw7::parser::make_ASSIGN(loc); } +{ return iw7::parser::make_ASSIGN_BITWISE_OR(loc); } YY_BREAK case 79: YY_RULE_SETUP #line 126 "lexer.lpp" -{ return iw7::parser::make_ADD(loc); } +{ return iw7::parser::make_ASSIGN_BITWISE_AND(loc); } YY_BREAK case 80: YY_RULE_SETUP #line 127 "lexer.lpp" -{ return iw7::parser::make_SUB(loc); } +{ return iw7::parser::make_ASSIGN_BITWISE_EXOR(loc); } YY_BREAK case 81: YY_RULE_SETUP #line 128 "lexer.lpp" -{ return iw7::parser::make_MULT(loc); } +{ return iw7::parser::make_ASSIGN(loc); } YY_BREAK case 82: YY_RULE_SETUP #line 129 "lexer.lpp" -{ return iw7::parser::make_DIV(loc); } +{ return iw7::parser::make_ADD(loc); } YY_BREAK case 83: YY_RULE_SETUP #line 130 "lexer.lpp" -{ return iw7::parser::make_MOD(loc); } +{ return iw7::parser::make_SUB(loc); } YY_BREAK case 84: YY_RULE_SETUP #line 131 "lexer.lpp" -{ return iw7::parser::make_NOT(loc); } +{ return iw7::parser::make_MULT(loc); } YY_BREAK case 85: YY_RULE_SETUP #line 132 "lexer.lpp" -{ return iw7::parser::make_COMPLEMENT(loc); } +{ return iw7::parser::make_DIV(loc); } YY_BREAK case 86: YY_RULE_SETUP #line 133 "lexer.lpp" -{ return iw7::parser::make_BITWISE_OR(loc); } +{ return iw7::parser::make_MOD(loc); } YY_BREAK case 87: YY_RULE_SETUP #line 134 "lexer.lpp" -{ return iw7::parser::make_BITWISE_AND(loc); } +{ return iw7::parser::make_NOT(loc); } YY_BREAK case 88: YY_RULE_SETUP #line 135 "lexer.lpp" -{ return iw7::parser::make_BITWISE_EXOR(loc); } +{ return iw7::parser::make_COMPLEMENT(loc); } YY_BREAK case 89: YY_RULE_SETUP #line 136 "lexer.lpp" -{ return iw7::parser::make_FILE(utils::string::fordslash(yytext), loc); } +{ return iw7::parser::make_BITWISE_OR(loc); } YY_BREAK case 90: YY_RULE_SETUP #line 137 "lexer.lpp" -{ return iw7::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); } +{ return iw7::parser::make_BITWISE_AND(loc); } YY_BREAK case 91: -/* rule 91 can match eol */ YY_RULE_SETUP #line 138 "lexer.lpp" -{ return iw7::parser::make_ISTRING(std::string(yytext).substr(1), loc); } +{ return iw7::parser::make_BITWISE_EXOR(loc); } YY_BREAK case 92: -/* rule 92 can match eol */ YY_RULE_SETUP #line 139 "lexer.lpp" -{ return iw7::parser::make_STRING(std::string(yytext), loc); } +{ return iw7::parser::make_FILE(utils::string::fordslash(yytext), loc); } YY_BREAK case 93: YY_RULE_SETUP #line 140 "lexer.lpp" -{ return iw7::parser::make_FLOAT(std::string(yytext), loc); } +{ return iw7::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); } YY_BREAK case 94: +/* rule 94 can match eol */ YY_RULE_SETUP #line 141 "lexer.lpp" +{ return iw7::parser::make_ISTRING(std::string(yytext).substr(1), loc); } + YY_BREAK +case 95: +/* rule 95 can match eol */ +YY_RULE_SETUP +#line 142 "lexer.lpp" +{ return iw7::parser::make_STRING(std::string(yytext), loc); } + YY_BREAK +case 96: +YY_RULE_SETUP +#line 143 "lexer.lpp" +{ return iw7::parser::make_FLOAT(std::string(yytext), loc); } + YY_BREAK +case 97: +YY_RULE_SETUP +#line 144 "lexer.lpp" { return iw7::parser::make_INTEGER(std::string(yytext), loc); } YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT_BLOCK_STATE): case YY_STATE_EOF(DEVELOPER_BLOCK_STATE): -#line 142 "lexer.lpp" +#line 145 "lexer.lpp" { return iw7::parser::make_IW7EOF(loc); } YY_BREAK -case 95: -/* rule 95 can match eol */ +case 98: +/* rule 98 can match eol */ YY_RULE_SETUP -#line 143 "lexer.lpp" +#line 146 "lexer.lpp" { throw iw7::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); } YY_BREAK -case 96: +case 99: YY_RULE_SETUP -#line 145 "lexer.lpp" +#line 148 "lexer.lpp" ECHO; YY_BREAK -#line 1684 "lexer.cpp" +#line 1716 "lexer.cpp" case YY_END_OF_BUFFER: { @@ -1979,7 +2011,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 281 ) + if ( yy_current_state >= 300 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2008,11 +2040,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 281 ) + if ( yy_current_state >= 300 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 280); + yy_is_jam = (yy_current_state == 299); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -2811,6 +2843,6 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 145 "lexer.lpp" +#line 148 "lexer.lpp" diff --git a/src/iw7/xsk/lexer.hpp b/src/iw7/xsk/lexer.hpp index 005bcf8a..93c7a1e6 100644 --- a/src/iw7/xsk/lexer.hpp +++ b/src/iw7/xsk/lexer.hpp @@ -700,7 +700,7 @@ extern int yylex (yyscan_t yyscanner); #undef yyTABLES_NAME #endif -#line 145 "lexer.lpp" +#line 148 "lexer.lpp" #line 706 "lexer.hpp" diff --git a/src/iw7/xsk/parser.cpp b/src/iw7/xsk/parser.cpp index e4e93a3f..b6e76c7b 100644 --- a/src/iw7/xsk/parser.cpp +++ b/src/iw7/xsk/parser.cpp @@ -345,6 +345,10 @@ namespace xsk { namespace gsc { namespace iw7 { value.YY_MOVE_OR_COPY< stmt_break_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.YY_MOVE_OR_COPY< stmt_breakpoint_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.YY_MOVE_OR_COPY< stmt_call_ptr > (YY_MOVE (that.value)); break; @@ -390,6 +394,14 @@ namespace xsk { namespace gsc { namespace iw7 { value.YY_MOVE_OR_COPY< stmt_notify_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.YY_MOVE_OR_COPY< stmt_prof_begin_ptr > (YY_MOVE (that.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.YY_MOVE_OR_COPY< stmt_prof_end_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.YY_MOVE_OR_COPY< stmt_ptr > (YY_MOVE (that.value)); @@ -595,6 +607,10 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< stmt_break_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.move< stmt_breakpoint_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.move< stmt_call_ptr > (YY_MOVE (that.value)); break; @@ -640,6 +656,14 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< stmt_notify_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.move< stmt_prof_begin_ptr > (YY_MOVE (that.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.move< stmt_prof_end_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.move< stmt_ptr > (YY_MOVE (that.value)); @@ -845,6 +869,10 @@ namespace xsk { namespace gsc { namespace iw7 { value.copy< stmt_break_ptr > (that.value); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.copy< stmt_breakpoint_ptr > (that.value); + break; + case symbol_kind::S_stmt_call: // stmt_call value.copy< stmt_call_ptr > (that.value); break; @@ -890,6 +918,14 @@ namespace xsk { namespace gsc { namespace iw7 { value.copy< stmt_notify_ptr > (that.value); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.copy< stmt_prof_begin_ptr > (that.value); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.copy< stmt_prof_end_ptr > (that.value); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.copy< stmt_ptr > (that.value); @@ -1094,6 +1130,10 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< stmt_break_ptr > (that.value); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.move< stmt_breakpoint_ptr > (that.value); + break; + case symbol_kind::S_stmt_call: // stmt_call value.move< stmt_call_ptr > (that.value); break; @@ -1139,6 +1179,14 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< stmt_notify_ptr > (that.value); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.move< stmt_prof_begin_ptr > (that.value); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.move< stmt_prof_end_ptr > (that.value); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.move< stmt_ptr > (that.value); @@ -1598,6 +1646,10 @@ namespace xsk { namespace gsc { namespace iw7 { yylhs.value.emplace< stmt_break_ptr > (); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + yylhs.value.emplace< stmt_breakpoint_ptr > (); + break; + case symbol_kind::S_stmt_call: // stmt_call yylhs.value.emplace< stmt_call_ptr > (); break; @@ -1643,6 +1695,14 @@ namespace xsk { namespace gsc { namespace iw7 { yylhs.value.emplace< stmt_notify_ptr > (); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + yylhs.value.emplace< stmt_prof_begin_ptr > (); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + yylhs.value.emplace< stmt_prof_end_ptr > (); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt yylhs.value.emplace< stmt_ptr > (); @@ -1725,1159 +1785,1195 @@ namespace xsk { namespace gsc { namespace iw7 { switch (yyn) { case 2: // root: program -#line 231 "parser.ypp" - { ast = std::move(yystack_[0].value.as < program_ptr > ()); } -#line 1731 "parser.cpp" - break; - - case 3: // root: %empty -#line 232 "parser.ypp" - { ast = std::make_unique(yylhs.location); } -#line 1737 "parser.cpp" - break; - - case 4: // program: program include #line 237 "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 1743 "parser.cpp" - break; - - case 5: // program: program define -#line 239 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } -#line 1749 "parser.cpp" - break; - - case 6: // program: include -#line 241 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } -#line 1755 "parser.cpp" - break; - - case 7: // program: define -#line 243 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } -#line 1761 "parser.cpp" - break; - - case 8: // include: "#include" file ";" -#line 248 "parser.ypp" - { yylhs.value.as < include_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < file_ptr > ())); } -#line 1767 "parser.cpp" - break; - - case 9: // define: usingtree -#line 252 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_usingtree = std::move(yystack_[0].value.as < usingtree_ptr > ()); } -#line 1773 "parser.cpp" - break; - - case 10: // define: constant -#line 253 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_constant = std::move(yystack_[0].value.as < constant_ptr > ()); } -#line 1779 "parser.cpp" - break; - - case 11: // define: thread -#line 254 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_thread = std::move(yystack_[0].value.as < thread_ptr > ()); } -#line 1785 "parser.cpp" - break; - - case 12: // usingtree: "#using_animtree" "(" string ")" ";" -#line 259 "parser.ypp" - { yylhs.value.as < usingtree_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < string_ptr > ())); } + { ast = std::move(yystack_[0].value.as < program_ptr > ()); } #line 1791 "parser.cpp" break; - case 13: // constant: name "=" expr ";" -#line 264 "parser.ypp" - { yylhs.value.as < constant_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 3: // root: %empty +#line 238 "parser.ypp" + { ast = std::make_unique(yylhs.location); } #line 1797 "parser.cpp" break; - case 14: // thread: name "(" parameters ")" stmt_block -#line 269 "parser.ypp" - { yylhs.value.as < thread_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < name_ptr > ()), std::move(yystack_[2].value.as < parameters_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } + case 4: // program: program include +#line 243 "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 1803 "parser.cpp" break; - case 15: // parameters: parameters "," name -#line 274 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::move(yystack_[2].value.as < parameters_ptr > ()); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } + case 5: // program: program define +#line 245 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1809 "parser.cpp" break; - case 16: // parameters: name -#line 276 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } + case 6: // program: include +#line 247 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } #line 1815 "parser.cpp" break; - case 17: // parameters: %empty -#line 278 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); } + case 7: // program: define +#line 249 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1821 "parser.cpp" break; - case 18: // stmt: stmt_block -#line 282 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_list = std::move(yystack_[0].value.as < stmt_list_ptr > ()); } + case 8: // include: "#include" file ";" +#line 254 "parser.ypp" + { yylhs.value.as < include_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < file_ptr > ())); } #line 1827 "parser.cpp" break; - case 19: // stmt: stmt_call -#line 283 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_call = std::move(yystack_[0].value.as < stmt_call_ptr > ()); } + case 9: // define: usingtree +#line 258 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_usingtree = std::move(yystack_[0].value.as < usingtree_ptr > ()); } #line 1833 "parser.cpp" break; - case 20: // stmt: stmt_assign -#line 284 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_assign = std::move(yystack_[0].value.as < stmt_assign_ptr > ()); } + case 10: // define: constant +#line 259 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_constant = std::move(yystack_[0].value.as < constant_ptr > ()); } #line 1839 "parser.cpp" break; - case 21: // stmt: stmt_endon -#line 285 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_endon = std::move(yystack_[0].value.as < stmt_endon_ptr > ()); } + case 11: // define: thread +#line 260 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_thread = std::move(yystack_[0].value.as < thread_ptr > ()); } #line 1845 "parser.cpp" break; - case 22: // stmt: stmt_notify -#line 286 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_notify = std::move(yystack_[0].value.as < stmt_notify_ptr > ()); } + case 12: // usingtree: "#using_animtree" "(" string ")" ";" +#line 265 "parser.ypp" + { yylhs.value.as < usingtree_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < string_ptr > ())); } #line 1851 "parser.cpp" break; - case 23: // stmt: stmt_wait -#line 287 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_wait = std::move(yystack_[0].value.as < stmt_wait_ptr > ()); } + case 13: // constant: name "=" expr ";" +#line 270 "parser.ypp" + { yylhs.value.as < constant_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } #line 1857 "parser.cpp" break; - case 24: // stmt: stmt_waittill -#line 288 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill_ptr > ()); } + case 14: // thread: name "(" parameters ")" stmt_block +#line 275 "parser.ypp" + { yylhs.value.as < thread_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < name_ptr > ()), std::move(yystack_[2].value.as < parameters_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } #line 1863 "parser.cpp" break; - case 25: // stmt: stmt_waittillmatch -#line 289 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch_ptr > ()); } + case 15: // parameters: parameters "," name +#line 280 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::move(yystack_[2].value.as < parameters_ptr > ()); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } #line 1869 "parser.cpp" break; - case 26: // stmt: stmt_waittillframeend -#line 290 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend_ptr > ()); } + case 16: // parameters: name +#line 282 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } #line 1875 "parser.cpp" break; - case 27: // stmt: stmt_if -#line 291 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_if = std::move(yystack_[0].value.as < stmt_if_ptr > ()); } + case 17: // parameters: %empty +#line 284 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); } #line 1881 "parser.cpp" break; - case 28: // stmt: stmt_ifelse -#line 292 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse_ptr > ()); } + case 18: // stmt: stmt_block +#line 288 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_list = std::move(yystack_[0].value.as < stmt_list_ptr > ()); } #line 1887 "parser.cpp" break; - case 29: // stmt: stmt_while -#line 293 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_while = std::move(yystack_[0].value.as < stmt_while_ptr > ()); } + case 19: // stmt: stmt_call +#line 289 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_call = std::move(yystack_[0].value.as < stmt_call_ptr > ()); } #line 1893 "parser.cpp" break; - case 30: // stmt: stmt_for -#line 294 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_for = std::move(yystack_[0].value.as < stmt_for_ptr > ()); } + case 20: // stmt: stmt_assign +#line 290 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_assign = std::move(yystack_[0].value.as < stmt_assign_ptr > ()); } #line 1899 "parser.cpp" break; - case 31: // stmt: stmt_foreach -#line 295 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach_ptr > ()); } + case 21: // stmt: stmt_endon +#line 291 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_endon = std::move(yystack_[0].value.as < stmt_endon_ptr > ()); } #line 1905 "parser.cpp" break; - case 32: // stmt: stmt_switch -#line 296 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_switch = std::move(yystack_[0].value.as < stmt_switch_ptr > ()); } + case 22: // stmt: stmt_notify +#line 292 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_notify = std::move(yystack_[0].value.as < stmt_notify_ptr > ()); } #line 1911 "parser.cpp" break; - case 33: // stmt: stmt_case -#line 297 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_case = std::move(yystack_[0].value.as < stmt_case_ptr > ()); } + case 23: // stmt: stmt_wait +#line 293 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_wait = std::move(yystack_[0].value.as < stmt_wait_ptr > ()); } #line 1917 "parser.cpp" break; - case 34: // stmt: stmt_default -#line 298 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_default = std::move(yystack_[0].value.as < stmt_default_ptr > ()); } + case 24: // stmt: stmt_waittill +#line 294 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill_ptr > ()); } #line 1923 "parser.cpp" break; - case 35: // stmt: stmt_break -#line 299 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_break = std::move(yystack_[0].value.as < stmt_break_ptr > ()); } + case 25: // stmt: stmt_waittillmatch +#line 295 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch_ptr > ()); } #line 1929 "parser.cpp" break; - case 36: // stmt: stmt_continue -#line 300 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_continue = std::move(yystack_[0].value.as < stmt_continue_ptr > ()); } + case 26: // stmt: stmt_waittillframeend +#line 296 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend_ptr > ()); } #line 1935 "parser.cpp" break; - case 37: // stmt: stmt_return -#line 301 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_return = std::move(yystack_[0].value.as < stmt_return_ptr > ()); } + case 27: // stmt: stmt_if +#line 297 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_if = std::move(yystack_[0].value.as < stmt_if_ptr > ()); } #line 1941 "parser.cpp" break; - case 38: // stmt_block: "{" stmt_list "}" -#line 305 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); } + case 28: // stmt: stmt_ifelse +#line 298 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse_ptr > ()); } #line 1947 "parser.cpp" break; - case 39: // stmt_block: "{" "}" -#line 306 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); } + case 29: // stmt: stmt_while +#line 299 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_while = std::move(yystack_[0].value.as < stmt_while_ptr > ()); } #line 1953 "parser.cpp" break; - case 40: // stmt_list: stmt_list stmt -#line 311 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 30: // stmt: stmt_for +#line 300 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_for = std::move(yystack_[0].value.as < stmt_for_ptr > ()); } #line 1959 "parser.cpp" break; - case 41: // stmt_list: stmt -#line 313 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 31: // stmt: stmt_foreach +#line 301 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach_ptr > ()); } #line 1965 "parser.cpp" break; - case 42: // stmt_call: expr_call ";" -#line 318 "parser.ypp" - { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } + case 32: // stmt: stmt_switch +#line 302 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_switch = std::move(yystack_[0].value.as < stmt_switch_ptr > ()); } #line 1971 "parser.cpp" break; - case 43: // stmt_call: expr_call_thread ";" -#line 320 "parser.ypp" - { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } + case 33: // stmt: stmt_case +#line 303 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_case = std::move(yystack_[0].value.as < stmt_case_ptr > ()); } #line 1977 "parser.cpp" break; - case 44: // stmt_assign: expr_assign ";" -#line 325 "parser.ypp" - { yylhs.value.as < stmt_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_assign_ptr > ())); } + case 34: // stmt: stmt_default +#line 304 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_default = std::move(yystack_[0].value.as < stmt_default_ptr > ()); } #line 1983 "parser.cpp" break; - case 45: // stmt_endon: object "endon" "(" expr ")" ";" -#line 330 "parser.ypp" - { yylhs.value.as < stmt_endon_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ())); } + case 35: // stmt: stmt_break +#line 305 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_break = std::move(yystack_[0].value.as < stmt_break_ptr > ()); } #line 1989 "parser.cpp" break; - case 46: // stmt_notify: object "notify" "(" expr "," expr_arguments ")" ";" -#line 335 "parser.ypp" - { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 36: // stmt: stmt_continue +#line 306 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_continue = std::move(yystack_[0].value.as < stmt_continue_ptr > ()); } #line 1995 "parser.cpp" break; - case 47: // stmt_notify: object "notify" "(" expr ")" ";" -#line 337 "parser.ypp" - { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 37: // stmt: stmt_return +#line 307 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_return = std::move(yystack_[0].value.as < stmt_return_ptr > ()); } #line 2001 "parser.cpp" break; - case 48: // stmt_wait: "wait" expr ";" -#line 342 "parser.ypp" - { yylhs.value.as < stmt_wait_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } + case 38: // stmt: stmt_breakpoint +#line 308 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_breakpoint = std::move(yystack_[0].value.as < stmt_breakpoint_ptr > ()); } #line 2007 "parser.cpp" break; - case 49: // stmt_waittill: object "waittill" "(" expr "," expr_arguments ")" ";" -#line 347 "parser.ypp" - { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 39: // stmt: stmt_prof_begin +#line 309 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_prof_begin = std::move(yystack_[0].value.as < stmt_prof_begin_ptr > ()); } #line 2013 "parser.cpp" break; - case 50: // stmt_waittill: object "waittill" "(" expr ")" ";" -#line 349 "parser.ypp" - { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 40: // stmt: stmt_prof_end +#line 310 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_prof_end = std::move(yystack_[0].value.as < stmt_prof_end_ptr > ()); } #line 2019 "parser.cpp" break; - case 51: // stmt_waittillmatch: object "waittillmatch" "(" expr "," expr_arguments ")" ";" -#line 354 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 41: // stmt_block: "{" stmt_list "}" +#line 314 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); } #line 2025 "parser.cpp" break; - case 52: // stmt_waittillmatch: object "waittillmatch" "(" expr ")" ";" -#line 356 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 42: // stmt_block: "{" "}" +#line 315 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); } #line 2031 "parser.cpp" break; - case 53: // stmt_waittillframeend: "waittillframeend" ";" -#line 361 "parser.ypp" - { yylhs.value.as < stmt_waittillframeend_ptr > () = std::make_unique(yylhs.location); } + case 43: // stmt_list: stmt_list stmt +#line 320 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2037 "parser.cpp" break; - case 54: // stmt_if: "if" "(" expr ")" stmt -#line 366 "parser.ypp" - { yylhs.value.as < stmt_if_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 44: // stmt_list: stmt +#line 322 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2043 "parser.cpp" break; - case 55: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 371 "parser.ypp" - { yylhs.value.as < stmt_ifelse_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 45: // stmt_call: expr_call ";" +#line 327 "parser.ypp" + { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } #line 2049 "parser.cpp" break; - case 56: // stmt_while: "while" "(" expr ")" stmt -#line 376 "parser.ypp" - { yylhs.value.as < stmt_while_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 46: // stmt_call: expr_call_thread ";" +#line 329 "parser.ypp" + { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } #line 2055 "parser.cpp" break; - case 57: // stmt_for: "for" "(" for_stmt ";" for_expr ";" for_stmt ")" stmt -#line 381 "parser.ypp" - { yylhs.value.as < stmt_for_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[6].value.as < stmt_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 47: // stmt_assign: expr_assign ";" +#line 334 "parser.ypp" + { yylhs.value.as < stmt_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_assign_ptr > ())); } #line 2061 "parser.cpp" break; - case 58: // stmt_foreach: "foreach" "(" name "in" expr ")" stmt -#line 386 "parser.ypp" - { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 48: // stmt_endon: object "endon" "(" expr ")" ";" +#line 339 "parser.ypp" + { yylhs.value.as < stmt_endon_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ())); } #line 2067 "parser.cpp" break; - case 59: // stmt_foreach: "foreach" "(" name "," name "in" expr ")" stmt -#line 388 "parser.ypp" - { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[6].value.as < name_ptr > ())), expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 49: // stmt_notify: object "notify" "(" expr "," expr_arguments ")" ";" +#line 344 "parser.ypp" + { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2073 "parser.cpp" break; - case 60: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 393 "parser.ypp" - { yylhs.value.as < stmt_switch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } + case 50: // stmt_notify: object "notify" "(" expr ")" ";" +#line 346 "parser.ypp" + { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2079 "parser.cpp" break; - case 61: // stmt_case: "case" integer ":" -#line 398 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } + case 51: // stmt_wait: "wait" expr ";" +#line 351 "parser.ypp" + { yylhs.value.as < stmt_wait_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2085 "parser.cpp" break; - case 62: // stmt_case: "case" neg_integer ":" -#line 400 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } + case 52: // stmt_waittill: object "waittill" "(" expr "," expr_arguments ")" ";" +#line 356 "parser.ypp" + { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2091 "parser.cpp" break; - case 63: // stmt_case: "case" string ":" -#line 402 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < string_ptr > ())), std::make_unique(yylhs.location)); } + case 53: // stmt_waittill: object "waittill" "(" expr ")" ";" +#line 358 "parser.ypp" + { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2097 "parser.cpp" break; - case 64: // stmt_default: "default" ":" -#line 407 "parser.ypp" - { yylhs.value.as < stmt_default_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } + case 54: // stmt_waittillmatch: object "waittillmatch" "(" expr "," expr_arguments ")" ";" +#line 363 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2103 "parser.cpp" break; - case 65: // stmt_break: "break" ";" -#line 412 "parser.ypp" - { yylhs.value.as < stmt_break_ptr > () = std::make_unique(yylhs.location); } + case 55: // stmt_waittillmatch: object "waittillmatch" "(" expr ")" ";" +#line 365 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2109 "parser.cpp" break; - case 66: // stmt_continue: "continue" ";" -#line 417 "parser.ypp" - { yylhs.value.as < stmt_continue_ptr > () = std::make_unique(yylhs.location); } + case 56: // stmt_waittillframeend: "waittillframeend" ";" +#line 370 "parser.ypp" + { yylhs.value.as < stmt_waittillframeend_ptr > () = std::make_unique(yylhs.location); } #line 2115 "parser.cpp" break; - case 67: // stmt_return: "return" expr ";" -#line 422 "parser.ypp" - { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } + case 57: // stmt_if: "if" "(" expr ")" stmt +#line 375 "parser.ypp" + { yylhs.value.as < stmt_if_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2121 "parser.cpp" break; - case 68: // stmt_return: "return" ";" -#line 424 "parser.ypp" - { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } + case 58: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 380 "parser.ypp" + { yylhs.value.as < stmt_ifelse_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2127 "parser.cpp" break; - case 69: // for_stmt: expr_assign -#line 428 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_list = std::make_unique(yylhs.location); yylhs.value.as < stmt_ptr > ().as_list->stmts.push_back(stmt_ptr(std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_assign_ptr > ())))); } + case 59: // stmt_while: "while" "(" expr ")" stmt +#line 385 "parser.ypp" + { yylhs.value.as < stmt_while_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2133 "parser.cpp" break; - case 70: // for_stmt: %empty -#line 429 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_node = std::make_unique(yylhs.location); } + case 60: // stmt_for: "for" "(" for_stmt ";" for_expr ";" for_stmt ")" stmt +#line 390 "parser.ypp" + { yylhs.value.as < stmt_for_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[6].value.as < stmt_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2139 "parser.cpp" break; - case 71: // for_expr: expr -#line 433 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 61: // stmt_foreach: "foreach" "(" name "in" expr ")" stmt +#line 395 "parser.ypp" + { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2145 "parser.cpp" break; - case 72: // for_expr: %empty -#line 434 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location); } + case 62: // stmt_foreach: "foreach" "(" name "," name "in" expr ")" stmt +#line 397 "parser.ypp" + { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[6].value.as < name_ptr > ())), expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2151 "parser.cpp" break; - case 73: // expr: expr_compare -#line 438 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 63: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 402 "parser.ypp" + { yylhs.value.as < stmt_switch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } #line 2157 "parser.cpp" break; - case 74: // expr: expr_binary -#line 439 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 64: // stmt_case: "case" integer ":" +#line 407 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } #line 2163 "parser.cpp" break; - case 75: // expr: expr_primitive -#line 440 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 65: // stmt_case: "case" neg_integer ":" +#line 409 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } #line 2169 "parser.cpp" break; - case 76: // expr_assign: "++" object -#line 444 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } + case 66: // stmt_case: "case" string ":" +#line 411 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < string_ptr > ())), std::make_unique(yylhs.location)); } #line 2175 "parser.cpp" break; - case 77: // expr_assign: "--" object -#line 445 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } + case 67: // stmt_default: "default" ":" +#line 416 "parser.ypp" + { yylhs.value.as < stmt_default_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2181 "parser.cpp" break; - case 78: // expr_assign: object "++" -#line 446 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 68: // stmt_break: "break" ";" +#line 421 "parser.ypp" + { yylhs.value.as < stmt_break_ptr > () = std::make_unique(yylhs.location); } #line 2187 "parser.cpp" break; - case 79: // expr_assign: object "--" -#line 447 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 69: // stmt_continue: "continue" ";" +#line 426 "parser.ypp" + { yylhs.value.as < stmt_continue_ptr > () = std::make_unique(yylhs.location); } #line 2193 "parser.cpp" break; - case 80: // expr_assign: object "=" expr -#line 448 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 70: // stmt_return: "return" expr ";" +#line 431 "parser.ypp" + { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2199 "parser.cpp" break; - case 81: // expr_assign: object "|=" expr -#line 449 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 71: // stmt_return: "return" ";" +#line 433 "parser.ypp" + { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2205 "parser.cpp" break; - case 82: // expr_assign: object "&=" expr -#line 450 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 72: // stmt_breakpoint: "breakpoint" ";" +#line 438 "parser.ypp" + { yylhs.value.as < stmt_breakpoint_ptr > () = std::make_unique(yylhs.location); } #line 2211 "parser.cpp" break; - case 83: // expr_assign: object "^=" expr -#line 451 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 73: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" +#line 443 "parser.ypp" + { yylhs.value.as < stmt_prof_begin_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2217 "parser.cpp" break; - case 84: // expr_assign: object "<<=" expr -#line 452 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()),std::move( yystack_[0].value.as < expr_ptr > ())); } + case 74: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" +#line 448 "parser.ypp" + { yylhs.value.as < stmt_prof_end_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2223 "parser.cpp" break; - case 85: // expr_assign: object ">>=" expr -#line 453 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 75: // for_stmt: expr_assign +#line 452 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_list = std::make_unique(yylhs.location); yylhs.value.as < stmt_ptr > ().as_list->stmts.push_back(stmt_ptr(std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_assign_ptr > ())))); } #line 2229 "parser.cpp" break; - case 86: // expr_assign: object "+=" expr -#line 454 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 76: // for_stmt: %empty +#line 453 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_node = std::make_unique(yylhs.location); } #line 2235 "parser.cpp" break; - case 87: // expr_assign: object "-=" expr -#line 455 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 77: // for_expr: expr +#line 457 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2241 "parser.cpp" break; - case 88: // expr_assign: object "*=" expr -#line 456 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 78: // for_expr: %empty +#line 458 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location); } #line 2247 "parser.cpp" break; - case 89: // expr_assign: object "/=" expr -#line 457 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 79: // expr: expr_compare +#line 462 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2253 "parser.cpp" break; - case 90: // expr_assign: object "%=" expr -#line 458 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 80: // expr: expr_binary +#line 463 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2259 "parser.cpp" break; - case 91: // expr_compare: expr "||" expr -#line 462 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 81: // expr: expr_primitive +#line 464 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2265 "parser.cpp" break; - case 92: // expr_compare: expr "&&" expr -#line 463 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 82: // expr_assign: "++" object +#line 468 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } #line 2271 "parser.cpp" break; - case 93: // expr_compare: expr "==" expr -#line 464 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 83: // expr_assign: "--" object +#line 469 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } #line 2277 "parser.cpp" break; - case 94: // expr_compare: expr "!=" expr -#line 465 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 84: // expr_assign: object "++" +#line 470 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2283 "parser.cpp" break; - case 95: // expr_compare: expr "<=" expr -#line 466 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 85: // expr_assign: object "--" +#line 471 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2289 "parser.cpp" break; - case 96: // expr_compare: expr ">=" expr -#line 467 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 86: // expr_assign: object "=" expr +#line 472 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2295 "parser.cpp" break; - case 97: // expr_compare: expr "<" expr -#line 468 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 87: // expr_assign: object "|=" expr +#line 473 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2301 "parser.cpp" break; - case 98: // expr_compare: expr ">" expr -#line 469 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 88: // expr_assign: object "&=" expr +#line 474 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2307 "parser.cpp" break; - case 99: // expr_binary: expr "|" expr -#line 473 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 89: // expr_assign: object "^=" expr +#line 475 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2313 "parser.cpp" break; - case 100: // expr_binary: expr "&" expr -#line 474 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 90: // expr_assign: object "<<=" expr +#line 476 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()),std::move( yystack_[0].value.as < expr_ptr > ())); } #line 2319 "parser.cpp" break; - case 101: // expr_binary: expr "^" expr -#line 475 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 91: // expr_assign: object ">>=" expr +#line 477 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2325 "parser.cpp" break; - case 102: // expr_binary: expr "<<" expr -#line 476 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 92: // expr_assign: object "+=" expr +#line 478 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2331 "parser.cpp" break; - case 103: // expr_binary: expr ">>" expr -#line 477 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 93: // expr_assign: object "-=" expr +#line 479 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2337 "parser.cpp" break; - case 104: // expr_binary: expr "+" expr -#line 478 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 94: // expr_assign: object "*=" expr +#line 480 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2343 "parser.cpp" break; - case 105: // expr_binary: expr "-" expr -#line 479 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 95: // expr_assign: object "/=" expr +#line 481 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2349 "parser.cpp" break; - case 106: // expr_binary: expr "*" expr -#line 480 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 96: // expr_assign: object "%=" expr +#line 482 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2355 "parser.cpp" break; - case 107: // expr_binary: expr "/" expr -#line 481 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 97: // expr_compare: expr "||" expr +#line 486 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2361 "parser.cpp" break; - case 108: // expr_binary: expr "%" expr -#line 482 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 98: // expr_compare: expr "&&" expr +#line 487 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2367 "parser.cpp" break; - case 109: // expr_primitive: "(" expr ")" -#line 486 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[1].value.as < expr_ptr > ()); } + case 99: // expr_compare: expr "==" expr +#line 488 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2373 "parser.cpp" break; - case 110: // expr_primitive: "~" expr -#line 487 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } + case 100: // expr_compare: expr "!=" expr +#line 489 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2379 "parser.cpp" break; - case 111: // expr_primitive: "!" expr -#line 488 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } + case 101: // expr_compare: expr "<=" expr +#line 490 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2385 "parser.cpp" break; - case 112: // expr_primitive: expr_call -#line 489 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 102: // expr_compare: expr ">=" expr +#line 491 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2391 "parser.cpp" break; - case 113: // expr_primitive: expr_call_thread -#line 490 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 103: // expr_compare: expr "<" expr +#line 492 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2397 "parser.cpp" break; - case 114: // expr_primitive: expr_call_childthread -#line 491 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 104: // expr_compare: expr ">" expr +#line 493 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2403 "parser.cpp" break; - case 115: // expr_primitive: expr_function -#line 492 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 105: // expr_binary: expr "|" expr +#line 497 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2409 "parser.cpp" break; - case 116: // expr_primitive: expr_add_array -#line 493 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 106: // expr_binary: expr "&" expr +#line 498 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2415 "parser.cpp" break; - case 117: // expr_primitive: expr_array -#line 494 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 107: // expr_binary: expr "^" expr +#line 499 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2421 "parser.cpp" break; - case 118: // expr_primitive: expr_field -#line 495 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 108: // expr_binary: expr "<<" expr +#line 500 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2427 "parser.cpp" break; - case 119: // expr_primitive: expr_size -#line 496 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 109: // expr_binary: expr ">>" expr +#line 501 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2433 "parser.cpp" break; - case 120: // expr_primitive: thisthread -#line 497 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < thisthread_ptr > ()); } + case 110: // expr_binary: expr "+" expr +#line 502 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2439 "parser.cpp" break; - case 121: // expr_primitive: empty_array -#line 498 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < empty_array_ptr > ()); } + case 111: // expr_binary: expr "-" expr +#line 503 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2445 "parser.cpp" break; - case 122: // expr_primitive: undefined -#line 499 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < undefined_ptr > ()); } + case 112: // expr_binary: expr "*" expr +#line 504 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2451 "parser.cpp" break; - case 123: // expr_primitive: game -#line 500 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < game_ptr > ()); } + case 113: // expr_binary: expr "/" expr +#line 505 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2457 "parser.cpp" break; - case 124: // expr_primitive: self -#line 501 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < self_ptr > ()); } + case 114: // expr_binary: expr "%" expr +#line 506 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2463 "parser.cpp" break; - case 125: // expr_primitive: anim -#line 502 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < anim_ptr > ()); } + case 115: // expr_primitive: "(" expr ")" +#line 510 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[1].value.as < expr_ptr > ()); } #line 2469 "parser.cpp" break; - case 126: // expr_primitive: level -#line 503 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < level_ptr > ()); } + case 116: // expr_primitive: "~" expr +#line 511 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2475 "parser.cpp" break; - case 127: // expr_primitive: animation -#line 504 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animation_ptr > ()); } + case 117: // expr_primitive: "!" expr +#line 512 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2481 "parser.cpp" break; - case 128: // expr_primitive: animtree -#line 505 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animtree_ptr > ()); } + case 118: // expr_primitive: expr_call +#line 513 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2487 "parser.cpp" break; - case 129: // expr_primitive: name -#line 506 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < name_ptr > ()); } + case 119: // expr_primitive: expr_call_thread +#line 514 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2493 "parser.cpp" break; - case 130: // expr_primitive: istring -#line 507 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < istring_ptr > ()); } + case 120: // expr_primitive: expr_call_childthread +#line 515 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2499 "parser.cpp" break; - case 131: // expr_primitive: string -#line 508 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < string_ptr > ()); } + case 121: // expr_primitive: expr_function +#line 516 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2505 "parser.cpp" break; - case 132: // expr_primitive: vector -#line 509 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < vector_ptr > ()); } + case 122: // expr_primitive: expr_add_array +#line 517 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2511 "parser.cpp" break; - case 133: // expr_primitive: neg_float -#line 510 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } + case 123: // expr_primitive: expr_array +#line 518 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2517 "parser.cpp" break; - case 134: // expr_primitive: neg_integer -#line 511 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } + case 124: // expr_primitive: expr_field +#line 519 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2523 "parser.cpp" break; - case 135: // expr_primitive: float -#line 512 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } + case 125: // expr_primitive: expr_size +#line 520 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2529 "parser.cpp" break; - case 136: // expr_primitive: integer -#line 513 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } + case 126: // expr_primitive: thisthread +#line 521 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < thisthread_ptr > ()); } #line 2535 "parser.cpp" break; - case 137: // expr_primitive: false -#line 514 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < false_ptr > ()); } + case 127: // expr_primitive: empty_array +#line 522 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < empty_array_ptr > ()); } #line 2541 "parser.cpp" break; - case 138: // expr_primitive: true -#line 515 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < true_ptr > ()); } + case 128: // expr_primitive: undefined +#line 523 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < undefined_ptr > ()); } #line 2547 "parser.cpp" break; - case 139: // expr_call: expr_call_function -#line 519 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 129: // expr_primitive: game +#line 524 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < game_ptr > ()); } #line 2553 "parser.cpp" break; - case 140: // expr_call: expr_call_pointer -#line 520 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 130: // expr_primitive: self +#line 525 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < self_ptr > ()); } #line 2559 "parser.cpp" break; - case 141: // expr_call: object expr_call_function -#line 521 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 131: // expr_primitive: anim +#line 526 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < anim_ptr > ()); } #line 2565 "parser.cpp" break; - case 142: // expr_call: object expr_call_pointer -#line 522 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 132: // expr_primitive: level +#line 527 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < level_ptr > ()); } #line 2571 "parser.cpp" break; - case 143: // expr_call_thread: "thread" expr_call_function -#line 526 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 133: // expr_primitive: animation +#line 528 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animation_ptr > ()); } #line 2577 "parser.cpp" break; - case 144: // expr_call_thread: "thread" expr_call_pointer -#line 527 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 134: // expr_primitive: animtree +#line 529 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animtree_ptr > ()); } #line 2583 "parser.cpp" break; - case 145: // expr_call_thread: object "thread" expr_call_function -#line 528 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 135: // expr_primitive: name +#line 530 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < name_ptr > ()); } #line 2589 "parser.cpp" break; - case 146: // expr_call_thread: object "thread" expr_call_pointer -#line 529 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 136: // expr_primitive: istring +#line 531 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < istring_ptr > ()); } #line 2595 "parser.cpp" break; - case 147: // expr_call_childthread: "childthread" expr_call_function -#line 533 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 137: // expr_primitive: string +#line 532 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < string_ptr > ()); } #line 2601 "parser.cpp" break; - case 148: // expr_call_childthread: "childthread" expr_call_pointer -#line 534 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 138: // expr_primitive: vector +#line 533 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < vector_ptr > ()); } #line 2607 "parser.cpp" break; - case 149: // expr_call_childthread: object "childthread" expr_call_function -#line 535 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 139: // expr_primitive: neg_float +#line 534 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } #line 2613 "parser.cpp" break; - case 150: // expr_call_childthread: object "childthread" expr_call_pointer -#line 536 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 140: // expr_primitive: neg_integer +#line 535 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } #line 2619 "parser.cpp" break; - case 151: // expr_call_function: name "(" expr_arguments ")" -#line 541 "parser.ypp" - {yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::make_unique(), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 141: // expr_primitive: float +#line 536 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } #line 2625 "parser.cpp" break; - case 152: // expr_call_function: file "::" name "(" expr_arguments ")" -#line 543 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < file_ptr > ()), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 142: // expr_primitive: integer +#line 537 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } #line 2631 "parser.cpp" break; - case 153: // expr_call_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 548 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, false, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 143: // expr_primitive: false +#line 538 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < false_ptr > ()); } #line 2637 "parser.cpp" break; - case 154: // expr_call_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 550 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, true, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 144: // expr_primitive: true +#line 539 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < true_ptr > ()); } #line 2643 "parser.cpp" break; - case 155: // expr_arguments: expr_arguments_filled -#line 554 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } + case 145: // expr_call: expr_call_function +#line 543 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2649 "parser.cpp" break; - case 156: // expr_arguments: expr_arguments_empty -#line 555 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } + case 146: // expr_call: expr_call_pointer +#line 544 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2655 "parser.cpp" break; - case 157: // expr_arguments_filled: expr_arguments "," expr -#line 560 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[2].value.as < expr_arguments_ptr > ()); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } + case 147: // expr_call: object expr_call_function +#line 545 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2661 "parser.cpp" break; - case 158: // expr_arguments_filled: expr -#line 562 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } + case 148: // expr_call: object expr_call_pointer +#line 546 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2667 "parser.cpp" break; - case 159: // expr_arguments_empty: %empty -#line 567 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); } + case 149: // expr_call_thread: "thread" expr_call_function +#line 550 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2673 "parser.cpp" break; - case 160: // expr_function: "::" name -#line 572 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < name_ptr > ())); } + case 150: // expr_call_thread: "thread" expr_call_pointer +#line 551 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2679 "parser.cpp" break; - case 161: // expr_function: file "::" name -#line 574 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < file_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } + case 151: // expr_call_thread: object "thread" expr_call_function +#line 552 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2685 "parser.cpp" break; - case 162: // expr_add_array: "[" expr_arguments_filled "]" -#line 579 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 152: // expr_call_thread: object "thread" expr_call_pointer +#line 553 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2691 "parser.cpp" break; - case 163: // expr_array: object "[" expr "]" -#line 584 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < node_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 153: // expr_call_childthread: "childthread" expr_call_function +#line 557 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2697 "parser.cpp" break; - case 164: // expr_field: object "." name -#line 589 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } + case 154: // expr_call_childthread: "childthread" expr_call_pointer +#line 558 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2703 "parser.cpp" break; - case 165: // expr_size: object "." "size" -#line 594 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ())); } + case 155: // expr_call_childthread: object "childthread" expr_call_function +#line 559 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2709 "parser.cpp" break; - case 166: // object: expr_call -#line 598 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 156: // expr_call_childthread: object "childthread" expr_call_pointer +#line 560 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2715 "parser.cpp" break; - case 167: // object: expr_array -#line 599 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } + case 157: // expr_call_function: name "(" expr_arguments ")" +#line 565 "parser.ypp" + {yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::make_unique(), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2721 "parser.cpp" break; - case 168: // object: expr_field -#line 600 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } + case 158: // expr_call_function: file "::" name "(" expr_arguments ")" +#line 567 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < file_ptr > ()), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2727 "parser.cpp" break; - case 169: // object: game -#line 601 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < game_ptr > ()); } + case 159: // expr_call_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 572 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, false, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2733 "parser.cpp" break; - case 170: // object: self -#line 602 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < self_ptr > ()); } + case 160: // expr_call_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 574 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, true, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2739 "parser.cpp" break; - case 171: // object: anim -#line 603 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < anim_ptr > ()); } + case 161: // expr_arguments: expr_arguments_filled +#line 578 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } #line 2745 "parser.cpp" break; - case 172: // object: level -#line 604 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < level_ptr > ()); } + case 162: // expr_arguments: expr_arguments_empty +#line 579 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } #line 2751 "parser.cpp" break; - case 173: // object: name -#line 605 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < name_ptr > ()); } + case 163: // expr_arguments_filled: expr_arguments "," expr +#line 584 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[2].value.as < expr_arguments_ptr > ()); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2757 "parser.cpp" break; - case 174: // thisthread: "thisthread" -#line 608 "parser.ypp" - { yylhs.value.as < thisthread_ptr > () = std::make_unique(yylhs.location); } + case 164: // expr_arguments_filled: expr +#line 586 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2763 "parser.cpp" break; - case 175: // empty_array: "[" "]" -#line 609 "parser.ypp" - { yylhs.value.as < empty_array_ptr > () = std::make_unique(yylhs.location); } + case 165: // expr_arguments_empty: %empty +#line 591 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); } #line 2769 "parser.cpp" break; - case 176: // undefined: "undefined" -#line 610 "parser.ypp" - { yylhs.value.as < undefined_ptr > () = std::make_unique(yylhs.location); } + case 166: // expr_function: "::" name +#line 596 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2775 "parser.cpp" break; - case 177: // game: "game" -#line 611 "parser.ypp" - { yylhs.value.as < game_ptr > () = std::make_unique(yylhs.location); } + case 167: // expr_function: file "::" name +#line 598 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < file_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2781 "parser.cpp" break; - case 178: // self: "self" -#line 612 "parser.ypp" - { yylhs.value.as < self_ptr > () = std::make_unique(yylhs.location); } + case 168: // expr_add_array: "[" expr_arguments_filled "]" +#line 603 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2787 "parser.cpp" break; - case 179: // anim: "anim" -#line 613 "parser.ypp" - { yylhs.value.as < anim_ptr > () = std::make_unique(yylhs.location); } + case 169: // expr_array: object "[" expr "]" +#line 608 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < node_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2793 "parser.cpp" break; - case 180: // level: "level" -#line 614 "parser.ypp" - { yylhs.value.as < level_ptr > () = std::make_unique(yylhs.location); } + case 170: // expr_field: object "." name +#line 613 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2799 "parser.cpp" break; - case 181: // animation: "%" "identifier" -#line 615 "parser.ypp" - { yylhs.value.as < animation_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 171: // expr_size: object ".size" +#line 618 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2805 "parser.cpp" break; - case 182: // animtree: "#animtree" -#line 616 "parser.ypp" - { yylhs.value.as < animtree_ptr > () = std::make_unique(yylhs.location); } + case 172: // object: expr_call +#line 622 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2811 "parser.cpp" break; - case 183: // name: "identifier" -#line 617 "parser.ypp" - { yylhs.value.as < name_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 173: // object: expr_array +#line 623 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2817 "parser.cpp" break; - case 184: // file: "file path" -#line 618 "parser.ypp" - { yylhs.value.as < file_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 174: // object: expr_field +#line 624 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2823 "parser.cpp" break; - case 185: // istring: "localized string" -#line 619 "parser.ypp" - { yylhs.value.as < istring_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 175: // object: game +#line 625 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < game_ptr > ()); } #line 2829 "parser.cpp" break; - case 186: // string: "string literal" -#line 620 "parser.ypp" - { yylhs.value.as < string_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 176: // object: self +#line 626 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < self_ptr > ()); } #line 2835 "parser.cpp" break; - case 187: // vector: "(" expr "," expr "," expr ")" -#line 621 "parser.ypp" - { yylhs.value.as < vector_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[3].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 177: // object: anim +#line 627 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < anim_ptr > ()); } #line 2841 "parser.cpp" break; - case 188: // neg_float: "-" "float" -#line 622 "parser.ypp" - { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 178: // object: level +#line 628 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < level_ptr > ()); } #line 2847 "parser.cpp" break; - case 189: // neg_integer: "-" "int" -#line 623 "parser.ypp" - { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 179: // object: name +#line 629 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < name_ptr > ()); } #line 2853 "parser.cpp" break; - case 190: // float: "float" -#line 624 "parser.ypp" - { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 180: // thisthread: "thisthread" +#line 632 "parser.ypp" + { yylhs.value.as < thisthread_ptr > () = std::make_unique(yylhs.location); } #line 2859 "parser.cpp" break; - case 191: // integer: "int" -#line 625 "parser.ypp" - { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 181: // empty_array: "[" "]" +#line 633 "parser.ypp" + { yylhs.value.as < empty_array_ptr > () = std::make_unique(yylhs.location); } #line 2865 "parser.cpp" break; - case 192: // false: "false" -#line 626 "parser.ypp" - { yylhs.value.as < false_ptr > () = std::make_unique(yylhs.location); } + case 182: // undefined: "undefined" +#line 634 "parser.ypp" + { yylhs.value.as < undefined_ptr > () = std::make_unique(yylhs.location); } #line 2871 "parser.cpp" break; - case 193: // true: "true" -#line 627 "parser.ypp" - { yylhs.value.as < true_ptr > () = std::make_unique(yylhs.location); } + case 183: // game: "game" +#line 635 "parser.ypp" + { yylhs.value.as < game_ptr > () = std::make_unique(yylhs.location); } #line 2877 "parser.cpp" break; + case 184: // self: "self" +#line 636 "parser.ypp" + { yylhs.value.as < self_ptr > () = std::make_unique(yylhs.location); } +#line 2883 "parser.cpp" + break; -#line 2881 "parser.cpp" + case 185: // anim: "anim" +#line 637 "parser.ypp" + { yylhs.value.as < anim_ptr > () = std::make_unique(yylhs.location); } +#line 2889 "parser.cpp" + break; + + case 186: // level: "level" +#line 638 "parser.ypp" + { yylhs.value.as < level_ptr > () = std::make_unique(yylhs.location); } +#line 2895 "parser.cpp" + break; + + case 187: // animation: "%" "identifier" +#line 639 "parser.ypp" + { yylhs.value.as < animation_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2901 "parser.cpp" + break; + + case 188: // animtree: "#animtree" +#line 640 "parser.ypp" + { yylhs.value.as < animtree_ptr > () = std::make_unique(yylhs.location); } +#line 2907 "parser.cpp" + break; + + case 189: // name: "identifier" +#line 641 "parser.ypp" + { yylhs.value.as < name_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2913 "parser.cpp" + break; + + case 190: // file: "file path" +#line 642 "parser.ypp" + { yylhs.value.as < file_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2919 "parser.cpp" + break; + + case 191: // istring: "localized string" +#line 643 "parser.ypp" + { yylhs.value.as < istring_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2925 "parser.cpp" + break; + + case 192: // string: "string literal" +#line 644 "parser.ypp" + { yylhs.value.as < string_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2931 "parser.cpp" + break; + + case 193: // vector: "(" expr "," expr "," expr ")" +#line 645 "parser.ypp" + { yylhs.value.as < vector_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[3].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } +#line 2937 "parser.cpp" + break; + + case 194: // neg_float: "-" "float" +#line 646 "parser.ypp" + { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 2943 "parser.cpp" + break; + + case 195: // neg_integer: "-" "int" +#line 647 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 2949 "parser.cpp" + break; + + case 196: // float: "float" +#line 648 "parser.ypp" + { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2955 "parser.cpp" + break; + + case 197: // integer: "int" +#line 649 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2961 "parser.cpp" + break; + + case 198: // false: "false" +#line 650 "parser.ypp" + { yylhs.value.as < false_ptr > () = std::make_unique(yylhs.location); } +#line 2967 "parser.cpp" + break; + + case 199: // true: "true" +#line 651 "parser.ypp" + { yylhs.value.as < true_ptr > () = std::make_unique(yylhs.location); } +#line 2973 "parser.cpp" + break; + + +#line 2977 "parser.cpp" default: break; @@ -3061,33 +3157,34 @@ namespace xsk { namespace gsc { namespace iw7 { { static const char *const yy_sname[] = { - "end of file", "error", "invalid token", "#include", "#using_animtree", - "#animtree", "endon", "notify", "wait", "waittill", "waittillmatch", - "waittillframeend", "if", "else", "while", "for", "foreach", "in", - "switch", "case", "default", "break", "continue", "return", "thread", - "childthread", "thisthread", "call", "true", "false", "undefined", - "size", "game", "self", "anim", "level", "(", ")", "{", "}", "[", "]", - ",", ".", "::", ":", ";", "++", "--", "<<", ">>", "||", "&&", "==", "!=", - "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", "|=", - "&=", "^=", ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", "%", - "file path", "identifier", "string literal", "localized string", "float", - "int", "ADD_ARRAY", "THEN", "NEG", "ANIMREF", "PREINC", "PREDEC", - "POSTINC", "POSTDEC", "$accept", "root", "program", "include", "define", - "usingtree", "constant", "thread", "parameters", "stmt", "stmt_block", - "stmt_list", "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", - "stmt_wait", "stmt_waittill", "stmt_waittillmatch", - "stmt_waittillframeend", "stmt_if", "stmt_ifelse", "stmt_while", - "stmt_for", "stmt_foreach", "stmt_switch", "stmt_case", "stmt_default", - "stmt_break", "stmt_continue", "stmt_return", "for_stmt", "for_expr", - "expr", "expr_assign", "expr_compare", "expr_binary", "expr_primitive", - "expr_call", "expr_call_thread", "expr_call_childthread", - "expr_call_function", "expr_call_pointer", "expr_arguments", - "expr_arguments_filled", "expr_arguments_empty", "expr_function", - "expr_add_array", "expr_array", "expr_field", "expr_size", "object", - "thisthread", "empty_array", "undefined", "game", "self", "anim", - "level", "animation", "animtree", "name", "file", "istring", "string", - "vector", "neg_float", "neg_integer", "float", "integer", "false", - "true", YY_NULLPTR + "end of file", "error", "invalid token", "breakpoint", "prof_begin", + "prof_end", "#include", "#using_animtree", "#animtree", "endon", + "notify", "wait", "waittill", "waittillmatch", "waittillframeend", "if", + "else", "while", "for", "foreach", "in", "switch", "case", "default", + "break", "continue", "return", "thread", "childthread", "thisthread", + "call", "true", "false", "undefined", ".size", "game", "self", "anim", + "level", "(", ")", "{", "}", "[", "]", ",", ".", "::", ":", ";", "++", + "--", "<<", ">>", "||", "&&", "==", "!=", "<=", ">=", "<", ">", "!", "~", + "=", "+=", "-=", "*=", "/=", "%=", "|=", "&=", "^=", ">>=", "<<=", "|", + "&", "^", "+", "-", "*", "/", "%", "file path", "identifier", + "string literal", "localized string", "float", "int", "ADD_ARRAY", + "THEN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", + "$accept", "root", "program", "include", "define", "usingtree", + "constant", "thread", "parameters", "stmt", "stmt_block", "stmt_list", + "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", "stmt_wait", + "stmt_waittill", "stmt_waittillmatch", "stmt_waittillframeend", + "stmt_if", "stmt_ifelse", "stmt_while", "stmt_for", "stmt_foreach", + "stmt_switch", "stmt_case", "stmt_default", "stmt_break", + "stmt_continue", "stmt_return", "stmt_breakpoint", "stmt_prof_begin", + "stmt_prof_end", "for_stmt", "for_expr", "expr", "expr_assign", + "expr_compare", "expr_binary", "expr_primitive", "expr_call", + "expr_call_thread", "expr_call_childthread", "expr_call_function", + "expr_call_pointer", "expr_arguments", "expr_arguments_filled", + "expr_arguments_empty", "expr_function", "expr_add_array", "expr_array", + "expr_field", "expr_size", "object", "thisthread", "empty_array", + "undefined", "game", "self", "anim", "level", "animation", "animtree", + "name", "file", "istring", "string", "vector", "neg_float", + "neg_integer", "float", "integer", "false", "true", YY_NULLPTR }; return yy_sname[yysymbol]; } @@ -3352,513 +3449,518 @@ namespace xsk { namespace gsc { namespace iw7 { } - const short parser::yypact_ninf_ = -232; + const short parser::yypact_ninf_ = -240; - const short parser::yytable_ninf_ = -174; + const short parser::yytable_ninf_ = -180; const short parser::yypact_[] = { - -2, -68, -15, -232, 42, -2, -232, -232, -232, -232, - -232, -23, -232, 7, -35, -232, -232, -232, -24, 663, - -232, -232, 23, -12, -232, -232, -3, -3, -232, 28, - -232, -232, -232, -232, -232, -232, -232, 663, 539, -24, - 663, 663, -76, -8, -232, -232, -232, 1372, -232, -232, - -232, 40, -232, -232, -232, -232, -232, -232, 251, 387, - -232, 407, -232, -232, -232, 416, 449, 474, 562, -232, - -232, 19, 25, -232, -232, -232, -232, -232, -232, -232, - -232, -232, 55, 78, -24, 63, -232, -232, 59, 75, - -232, -232, 83, 975, 539, -232, 1450, 87, 92, -232, - -232, -232, -232, -232, -232, -232, -232, 663, 663, 663, - 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, - 663, 663, 663, 663, 663, -3, -3, 725, -9, -232, - -232, 663, -24, -232, 842, -232, -232, 663, -24, 663, - -232, 663, 659, 663, -232, 66, 66, 1460, 1008, 535, - 535, 322, 322, 322, 322, 1051, 1491, 1501, 10, 10, - -232, -232, -232, -232, -232, -232, -232, 1282, -232, -232, - 14, -232, 88, 663, 89, 100, 101, 110, 111, 114, - -62, 112, 113, 116, 601, -232, 121, 121, -232, -232, - 880, -232, -232, -232, -232, -232, -232, -232, -232, -232, - -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, - 117, 136, 139, -232, -232, 771, -232, -232, -232, -232, - 59, 659, 88, 1321, 1359, 119, 1450, -232, -232, 663, - 1406, -232, 663, 663, 1, -24, 663, 73, 143, 144, - 152, -232, -232, -232, -232, 1419, -232, 31, 31, -232, - -232, -232, -232, -232, 170, 171, 173, 174, -24, -232, - -232, 663, 663, 663, 663, 663, 663, 663, 663, 663, - 663, 663, 167, 663, 175, 33, -232, 1114, 1147, 166, - -232, 940, 12, 1157, -232, -232, -232, -232, 663, 663, - 663, 663, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, - 1450, 1450, 1450, 182, 1190, 663, -232, 918, 918, 663, - 663, -24, 78, 1200, 1018, 1061, 1104, 663, -232, 48, - 209, -232, 177, 1450, 1233, 207, -232, 181, 192, 663, - 194, 663, 199, 663, 49, -232, 918, 1, 918, 663, - -232, -232, 65, -232, 76, -232, 85, -232, -232, 191, - -232, 1243, 200, 204, 211, 918, 918, -232, -232, -232, - -232, -232 + 3, -71, -17, -240, 28, 3, -240, -240, -240, -240, + -240, -20, -240, -6, -38, -240, -240, -240, -21, 774, + -240, -240, 25, -16, -240, -240, 32, 32, -240, 29, + -240, -240, -240, -240, -240, -240, -240, 774, 650, -21, + 774, 774, -73, -13, -240, -240, -240, 1380, -240, -240, + -240, 30, -240, -240, -240, -240, -240, -240, 40, 65, + -240, 673, -240, -240, -240, 735, 743, 804, 930, -240, + -240, 6, 33, -240, -240, -240, -240, -240, -240, -240, + -240, -240, 36, 47, -21, 34, -240, -240, 42, 44, + -240, -240, 51, 944, 650, -240, 1458, 52, 54, -240, + -240, -240, -240, -240, -240, -240, -240, 774, 774, 774, + 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, + 774, 774, 774, 774, 774, 32, 32, -240, 836, -21, + -240, -240, 774, -21, -240, 485, -240, -240, 774, -21, + 774, -240, 774, 1251, 774, -240, 130, 130, 1468, 977, + 84, 84, 206, 206, 206, 206, 1020, 1509, 1499, 171, + 171, -240, -240, -240, -240, -240, -240, -240, 1290, -240, + -10, -240, 66, 60, 78, 79, 774, 61, 81, 89, + 95, 99, 114, -68, 108, 109, 118, 712, -240, 187, + 187, -240, -240, 581, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, 119, 120, 139, -240, + -240, 882, -240, -240, -240, -240, 42, 1251, 66, 1329, + 1367, 152, 1458, -240, -240, 774, -240, 774, 774, 1414, + -240, 774, 774, 932, -21, 774, 112, 111, 166, 170, + -240, -240, -240, -240, 1427, -240, -5, -5, -240, -240, + -240, -240, -240, 189, 195, 197, 201, -240, -240, 774, + 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, + 202, 774, 208, 8, 10, 11, -240, 1083, 1116, 192, + -240, 488, 1, 1126, -240, -240, -240, -240, 774, 774, + 774, 774, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, + 1458, 1458, 1458, 210, 1159, 774, -240, 205, 214, 625, + 625, 774, 774, -21, 47, 1169, 987, 1030, 1073, 774, + -240, 14, -240, -240, 239, -240, 216, 1458, 1202, 246, + -240, 219, 227, 774, 228, 774, 230, 774, 87, -240, + 625, 932, 625, 774, -240, -240, 101, -240, 107, -240, + 115, -240, -240, 233, -240, 1212, 234, 243, 245, 625, + 625, -240, -240, -240, -240, -240 }; const unsigned char parser::yydefact_[] = { - 3, 0, 0, 183, 0, 2, 6, 7, 9, 10, - 11, 0, 184, 0, 0, 1, 4, 5, 17, 0, - 8, 186, 0, 0, 16, 182, 0, 0, 174, 0, - 193, 192, 176, 177, 178, 179, 180, 0, 159, 0, - 0, 0, 0, 0, 185, 190, 191, 0, 73, 74, - 75, 112, 113, 114, 139, 140, 115, 116, 117, 118, - 119, 0, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 0, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 0, 0, 0, 0, 143, 144, 0, 0, - 147, 148, 0, 0, 159, 175, 158, 0, 155, 156, - 160, 111, 110, 188, 189, 181, 13, 0, 0, 0, + 3, 0, 0, 189, 0, 2, 6, 7, 9, 10, + 11, 0, 190, 0, 0, 1, 4, 5, 17, 0, + 8, 192, 0, 0, 16, 188, 0, 0, 180, 0, + 199, 198, 182, 183, 184, 185, 186, 0, 165, 0, + 0, 0, 0, 0, 191, 196, 197, 0, 79, 80, + 81, 118, 119, 120, 145, 146, 121, 122, 123, 124, + 125, 0, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 0, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 0, 0, 0, 0, 149, 150, 0, 0, + 153, 154, 0, 0, 165, 181, 164, 0, 161, 162, + 166, 117, 116, 194, 195, 187, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, - 142, 159, 0, 12, 0, 14, 15, 0, 0, 0, - 109, 0, 158, 0, 162, 102, 103, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 104, 105, - 106, 107, 108, 145, 146, 149, 150, 0, 165, 164, - 0, 155, 161, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 39, 0, 0, 41, 18, - 0, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 0, 166, 0, 167, 168, 0, 169, 170, 171, 172, - 173, 0, 0, 0, 0, 0, 157, 163, 151, 159, - 0, 53, 0, 0, 70, 0, 0, 0, 0, 0, - 0, 64, 65, 66, 68, 0, 166, 76, 77, 38, - 40, 44, 42, 43, 0, 0, 0, 0, 0, 78, - 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, - 69, 0, 0, 0, 63, 62, 61, 67, 0, 0, - 0, 0, 80, 86, 87, 88, 89, 90, 81, 82, - 83, 85, 84, 0, 0, 159, 152, 0, 0, 72, - 0, 0, 0, 0, 0, 0, 0, 159, 187, 0, - 54, 56, 0, 71, 0, 0, 60, 0, 0, 159, - 0, 159, 0, 159, 0, 153, 0, 70, 0, 0, - 45, 47, 0, 50, 0, 52, 0, 154, 55, 0, - 58, 0, 0, 0, 0, 0, 0, 46, 49, 51, - 57, 59 + 0, 0, 0, 0, 0, 0, 0, 171, 0, 0, + 147, 148, 165, 0, 12, 0, 14, 15, 0, 0, + 0, 115, 0, 164, 0, 168, 108, 109, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 110, + 111, 112, 113, 114, 151, 152, 155, 156, 0, 170, + 0, 161, 167, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, + 0, 44, 18, 0, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 0, 172, 0, 173, + 174, 0, 175, 176, 177, 178, 179, 0, 0, 0, + 0, 0, 163, 169, 157, 165, 72, 165, 165, 0, + 56, 0, 0, 76, 0, 0, 0, 0, 0, 0, + 67, 68, 69, 71, 0, 172, 82, 83, 41, 43, + 47, 45, 46, 0, 0, 0, 0, 84, 85, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, + 75, 0, 0, 0, 66, 65, 64, 70, 0, 0, + 0, 0, 86, 92, 93, 94, 95, 96, 87, 88, + 89, 91, 90, 0, 0, 165, 158, 0, 0, 0, + 0, 78, 0, 0, 0, 0, 0, 0, 0, 165, + 193, 0, 73, 74, 57, 59, 0, 77, 0, 0, + 63, 0, 0, 165, 0, 165, 0, 165, 0, 159, + 0, 76, 0, 0, 48, 50, 0, 53, 0, 55, + 0, 160, 58, 0, 61, 0, 0, 0, 0, 0, + 0, 49, 52, 54, 60, 62 }; const short parser::yypgoto_[] = { - -232, -232, -232, 224, 246, -232, -232, -232, -232, -41, - -79, -232, -232, -232, -232, -232, -232, -232, -232, -232, - -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, - -232, -77, -232, 57, -231, -232, -232, -232, -94, 69, - -232, -16, -11, -112, -31, -232, -232, -232, -82, 82, - -232, 115, -232, -232, -232, 172, 183, 195, 205, -232, - -232, 0, 5, -232, 3, -232, -232, 84, -232, 91, - -232, -232 + -240, -240, -240, 277, 290, -240, -240, -240, -240, 113, + -82, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -54, -240, 63, -239, -240, -240, + -240, -39, 71, -240, -24, -19, -116, -25, -240, -240, + -240, 26, 85, -240, 100, -240, -240, -240, 110, 125, + 213, 224, -240, -240, 0, 5, -240, 9, -240, -240, + 124, -240, 126, -240, -240 }; const short parser::yydefgoto_[] = { - 0, 4, 5, 6, 7, 8, 9, 10, 23, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 279, 322, 96, 210, 48, 49, 50, 51, 52, - 53, 54, 55, 97, 171, 99, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81 + 0, 4, 5, 6, 7, 8, 9, 10, 23, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 289, 336, 96, 216, 48, 49, + 50, 51, 52, 53, 54, 55, 97, 171, 99, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81 }; const short parser::yytable_[] = { - 11, 1, 2, 280, 135, 11, 13, 98, 103, 104, - 86, 90, 12, 18, 237, 87, 91, 22, 24, 170, - 21, 14, 168, 46, 29, 83, 88, 88, 29, 310, - 84, 89, 89, 33, 34, 35, 36, 85, 19, 100, - 211, 85, 15, -173, -173, 129, -173, 21, 186, 187, - 130, 228, 213, 20, 311, 131, 143, 3, 29, -173, - 82, 88, -173, 98, -166, -166, 89, -166, 92, 132, - 306, 127, 3, 105, 258, 143, 47, 12, 3, 3, - -166, 12, 3, -166, 136, 335, 347, 122, 123, 124, - 143, 143, 246, 246, 93, 131, 211, 101, 102, -173, - -173, 133, 352, 137, 213, 213, 280, 143, 213, 163, - 165, 12, 3, 353, 164, 166, 134, 275, 143, 138, - -166, -166, 354, 139, 229, 88, 88, 143, 169, 143, - 89, 89, 172, 144, 220, 231, 232, 233, 222, 89, - 246, 120, 121, 122, 123, 124, 234, 235, 29, 250, - 236, 142, 213, 33, 34, 35, 36, 241, 104, 242, - 274, 85, 243, 251, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 252, 238, 167, 253, 220, 220, 284, 285, - 220, 89, 89, 319, 221, 89, 223, 286, 224, 129, - 226, 12, 3, 212, 130, 334, 288, 289, 303, 290, - 291, 305, 309, 211, 211, 88, 214, 342, 317, 344, - 89, 346, 336, 337, 339, 213, 213, 340, 355, 16, - 230, 129, 129, 326, 220, 282, 130, 130, 341, 89, - 343, 245, 211, 246, 211, 345, 357, 88, 88, 215, - 358, 17, 89, 89, 213, 213, 213, 359, 169, 212, - 349, 211, 211, 0, 239, 129, 320, 321, 214, 214, - 130, 240, 214, 213, 213, -167, -167, 0, -167, 0, - 0, 88, 0, 0, 0, 0, 89, 0, 0, 277, - 278, -167, 0, 283, -167, 348, 0, 350, 0, 0, - 0, 247, 248, 0, 0, 215, 216, 220, 220, 0, - 0, 325, 89, 89, 360, 361, 214, 217, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 218, - 304, -167, -167, 0, 0, 0, 220, 220, 220, 219, - 0, 89, 89, 89, 0, 313, 314, 315, 316, 281, - 0, 0, 0, 0, 0, 220, 220, 0, 216, 216, - 89, 89, 216, 0, 0, 0, 323, 324, 0, 217, - 217, 107, 108, 217, 0, 0, 212, 212, 0, 0, - 0, 218, 218, 0, 0, 218, 0, 0, 0, 214, - 214, 219, 219, 0, 0, 219, 351, 120, 121, 122, - 123, 124, 0, 0, 0, 212, 216, 212, 0, 0, - 0, -168, -168, 0, -168, 0, 0, 217, 214, 214, - 214, 0, 215, 215, 212, 212, 0, -168, 0, 218, - -168, 125, 126, 0, 29, 0, 0, 214, 214, 219, - -169, -169, 0, -169, 0, 0, 0, 127, 0, 0, - 128, 215, 281, 215, 0, 0, -169, 0, 0, -169, - 0, 0, 0, 0, 0, 0, 0, -168, -168, 0, - 215, 215, 0, -170, -170, 0, -170, 0, 0, 216, - 216, 0, 0, 0, 0, 0, 0, 12, 3, -170, - 217, 217, -170, 0, 0, 0, -169, -169, -171, -171, - 0, -171, 218, 218, 0, 0, 0, 0, 216, 216, - 216, 0, 219, 219, -171, 0, 0, -171, 0, 217, - 217, 217, 0, 0, 0, 0, 0, 216, 216, -170, - -170, 218, 218, 218, 0, 0, 0, 0, 217, 217, - 0, 219, 219, 219, 25, 0, 0, 0, 0, 0, - 218, 218, 0, 0, -171, -171, 0, 0, 0, 0, - 219, 219, 0, 26, 27, 28, 29, 30, 31, 32, - 0, 33, 34, 35, 36, 37, 0, 0, 0, 94, - 95, 0, 0, 39, 107, 108, -172, -172, 0, -172, - 113, 114, 115, 116, 0, 0, 0, 0, 40, 41, - 0, 0, -172, 0, 0, -172, 25, 0, 0, 0, - 120, 121, 122, 123, 124, 42, 0, 0, 43, 12, - 3, 21, 44, 45, 46, 26, 27, 28, 29, 30, - 31, 32, 0, 33, 34, 35, 36, 37, 0, 0, - 0, 38, -172, -172, 0, 39, 0, 244, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 40, 41, 0, 0, 0, 0, 0, 0, 25, 0, - 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, - 43, 12, 3, 21, 44, 45, 46, 26, 27, 28, + 11, 136, 86, 90, 290, 11, 13, 87, 91, 1, + 2, 246, 12, 98, 103, 104, 170, 21, 24, 18, + 46, 322, 14, 22, 83, 29, 88, 88, 15, 84, + 234, 89, 89, -179, -179, 144, -179, 130, 128, 100, + -179, 129, 131, 20, 19, 132, 323, 21, 316, -179, + 317, 318, -179, 144, 349, 144, 144, -172, -172, 144, + -172, 88, 29, 3, -172, 82, 89, -173, -173, 98, + -173, 105, 92, -172, -173, 85, -172, 138, 12, 3, + 133, 132, 47, -173, 137, 134, -173, 3, 135, -179, + -179, 139, -174, -174, 140, -174, 217, 144, 145, -174, + 93, 164, 166, 101, 102, 235, 165, 167, -174, 236, + 240, -174, 290, -172, -172, 12, 3, 237, 238, 283, + 241, 284, 285, -173, -173, 88, 88, 361, 242, 169, + 89, 89, 144, 172, 243, 226, 107, 108, 244, 228, + 89, 366, 113, 114, 115, 116, 144, 367, -174, -174, + 255, 255, 144, 245, 217, 368, 250, 143, 251, 294, + 144, 219, 120, 121, 122, 123, 124, 252, 260, 261, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 262, 226, + 226, 168, 247, 226, 89, 89, 282, 130, 89, 331, + 104, 227, 131, 229, 255, 230, 218, 232, 120, 121, + 122, 123, 124, 348, 295, 219, 219, 29, 296, 219, + 220, 88, 33, 34, 35, 36, 89, 356, 298, 358, + 85, 360, 130, 130, 299, 221, 300, 131, 131, 239, + 301, 321, 340, 226, 292, 222, 313, 315, 89, 329, + 254, 122, 123, 124, 332, 350, 88, 88, 107, 108, + 223, 89, 89, 333, 218, 351, 353, 130, 354, 219, + 12, 3, 131, 369, 220, 220, 355, 357, 220, 359, + 217, 217, 16, 371, 120, 121, 122, 123, 124, 256, + 257, 88, 372, 221, 373, 17, 89, 363, 0, 222, + 222, 0, 0, 222, 287, 288, 259, 248, 293, 249, + 0, 217, 255, 217, 223, 223, 0, 0, 223, 226, + 226, 0, 0, 339, 89, 89, 0, 0, 220, 0, + 217, 217, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 291, 314, 219, 219, 0, 224, 0, + 226, 226, 226, 222, 0, 89, 89, 89, 0, 225, + 0, 325, 326, 327, 328, 0, 0, 0, 223, 226, + 226, 0, 0, 0, 89, 89, 219, 219, 219, 0, + 0, 0, 0, 0, 337, 338, 0, 0, 0, 0, + 218, 218, 0, 0, 0, 219, 219, 0, 0, 0, + 0, 0, 224, 224, 220, 220, 224, 0, 0, 0, + 0, 0, 0, 225, 225, 0, 365, 225, 0, 221, + 221, 218, 0, 218, 0, 0, 0, 0, 0, 222, + 222, 0, 334, 335, 0, 220, 220, 220, 0, 0, + 218, 218, 0, 0, 223, 223, 0, 0, 0, 0, + 221, 291, 221, 0, 220, 220, 224, 0, 0, 0, + 222, 222, 222, 362, 0, 364, 0, 225, 0, 221, + 221, 0, 0, 0, 0, 223, 223, 223, 0, 222, + 222, 0, 374, 375, 0, 0, 0, 0, 173, 174, + 175, 0, 0, 0, 223, 223, 176, 0, 0, 177, + 178, 0, 179, 180, 181, 0, 182, 183, 184, 185, + 186, 187, 26, 0, 0, 29, 0, 0, 29, 0, + 33, 34, 35, 36, 0, 0, 135, 188, 85, 0, + 0, 128, 224, 224, 129, 189, 190, 0, 267, 268, + 0, 0, 0, 225, 225, 0, 0, 0, 0, 0, + 0, 0, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 224, 224, 224, 0, 0, 12, 3, + 0, 12, 3, 0, 225, 225, 225, 0, 0, 0, + 0, 0, 224, 224, 173, 174, 175, 0, 0, 0, + 0, 0, 176, 225, 225, 177, 178, 0, 179, 180, + 181, 0, 182, 183, 184, 185, 186, 187, 26, 0, + 0, 29, 0, 0, 0, 0, 33, 34, 35, 36, + 0, 0, 135, 258, 85, 0, 0, 0, 173, 174, + 175, 189, 190, 0, 0, 0, 176, 0, 0, 177, + 178, 0, 179, 180, 181, 0, 182, 183, 184, 185, + 186, 187, 26, 0, 0, 29, 0, 0, 25, 0, + 33, 34, 35, 36, 12, 3, 135, 0, 85, 0, + 0, 0, 0, 0, 0, 189, 190, 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, 35, 36, 37, - 225, 0, 0, 38, 0, 0, 0, 39, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, - 0, 0, 40, 41, 0, 0, 0, 0, 0, 0, - 25, 117, 118, 119, 120, 121, 122, 123, 124, 42, + 0, 0, 0, 94, 95, 0, 0, 39, 0, 0, + 125, 126, 0, 29, 0, 0, 0, 127, 12, 3, + 0, 0, 40, 41, 0, 0, 128, 0, 0, 129, + 25, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 43, 12, 3, 21, 44, 45, 46, 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, 35, - 36, 37, 0, 0, 0, 94, 0, 0, 0, 39, - 0, 0, 0, 0, 0, 0, 0, 254, 255, 0, - 256, 257, 0, 0, 40, 41, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 125, 0, 0, 29, 0, + 36, 37, 0, 0, 0, 38, 12, 3, 0, 39, + 0, 253, -175, -175, 0, -175, 0, 0, 0, -175, + -176, -176, 0, -176, 40, 41, 0, -176, -175, 0, + 0, -175, 25, 0, 0, 0, -176, 0, 0, -176, 0, 42, 0, 0, 43, 12, 3, 21, 44, 45, - 46, 127, 0, 0, 258, 0, 0, 0, 259, 260, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 0, 0, 0, 0, 0, 0, 0, - 173, 12, 3, 174, 175, 0, 176, 177, 178, 0, - 179, 180, 181, 182, 183, 184, 26, 0, 0, 29, - 0, 0, 0, 0, 33, 34, 35, 36, 0, 0, - 134, 185, 85, 0, 0, 0, 0, 0, 173, 186, - 187, 174, 175, 0, 176, 177, 178, 0, 179, 180, - 181, 182, 183, 184, 26, 0, 0, 29, 0, 0, - 0, 0, 33, 34, 35, 36, 0, 0, 134, 249, - 85, 0, 12, 3, 0, 0, 173, 186, 187, 174, - 175, 0, 176, 177, 178, 0, 179, 180, 181, 182, - 183, 184, 26, 0, 0, 29, 0, 0, 0, 0, - 33, 34, 35, 36, 0, 0, 134, 0, 85, 0, - 12, 3, 0, 0, 0, 186, 187, 29, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 127, 0, 0, 258, 0, 0, 0, 259, 260, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, - 0, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 140, 0, 0, 0, 0, 141, 0, 0, - 12, 3, 0, 0, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, - 120, 121, 122, 123, 124, 328, 0, 107, 108, 0, - 329, 111, 112, 113, 114, 115, 116, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, - 117, 118, 119, 120, 121, 122, 123, 124, 0, 0, - 117, 118, 119, 120, 121, 122, 123, 124, 330, 0, - 107, 108, 0, 331, 111, 112, 113, 114, 115, 116, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 0, 0, 0, 0, 118, 119, 120, 121, 122, 123, - 124, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 332, 0, 0, 0, 0, 333, 0, 0, 0, - 0, 307, 0, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 0, 0, 0, 117, 118, 119, 120, - 121, 122, 123, 124, 308, 0, 117, 118, 119, 120, - 121, 122, 123, 124, 312, 0, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 0, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 318, 0, 117, - 118, 119, 120, 121, 122, 123, 124, 327, 0, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 107, + 46, 26, 27, 28, 29, 30, 31, 32, 0, 33, + 34, 35, 36, 37, 0, 0, 0, 38, -175, -175, + 0, 39, 0, 0, 0, 0, -176, -176, 0, 0, + 0, -177, -177, 0, -177, 0, 40, 41, -177, 0, + 0, 0, 0, 0, 25, 0, 0, -177, 0, 0, + -177, 0, 0, 42, 0, 0, 43, 12, 3, 21, + 44, 45, 46, 26, 27, 28, 29, 30, 31, 32, + 0, 33, 34, 35, 36, 37, 0, 0, 0, 94, + 0, 0, 0, 39, 0, 0, 0, -177, -177, 0, + 0, 263, 264, 0, 265, 266, 0, 0, 40, 41, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, + 0, 0, 29, 0, 0, 42, 0, 0, 43, 12, + 3, 21, 44, 45, 46, 128, 0, 0, 129, 0, + 0, 0, 267, 268, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, -178, -178, 0, + -178, 0, 29, 0, -178, 12, 3, 33, 34, 35, + 36, 0, 0, -178, 0, 85, -178, 0, 0, 0, + 0, 0, 189, 190, 141, 0, 0, 0, 0, 142, + 0, 0, 0, 0, 0, 0, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 0, 0, 0, 0, + 0, 0, 0, -178, -178, 12, 3, 0, 0, 117, + 118, 119, 120, 121, 122, 123, 124, 342, 0, 107, + 108, 0, 343, 111, 112, 113, 114, 115, 116, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, 124, - 338, 0, 117, 118, 119, 120, 121, 122, 123, 124, - 356, 0, 107, 108, 109, 110, 111, 112, 113, 114, + 0, 0, 117, 118, 119, 120, 121, 122, 123, 124, + 344, 0, 107, 108, 0, 345, 111, 112, 113, 114, 115, 116, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 0, 0, 0, 117, 118, 119, 120, 121, + 115, 116, 0, 0, 0, 0, 118, 119, 120, 121, 122, 123, 124, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 227, 0, 0, 0, 0, 0, 0, + 122, 123, 124, 346, 0, 0, 0, 0, 347, 0, + 0, 0, 0, 319, 0, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 0, 0, 0, 117, 118, + 119, 120, 121, 122, 123, 124, 320, 0, 117, 118, + 119, 120, 121, 122, 123, 124, 324, 0, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, + 0, 117, 118, 119, 120, 121, 122, 123, 124, 330, + 0, 117, 118, 119, 120, 121, 122, 123, 124, 341, + 0, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 0, 0, 0, 117, 118, 119, 120, 121, 122, + 123, 124, 352, 0, 117, 118, 119, 120, 121, 122, + 123, 124, 370, 0, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 0, 0, 0, 117, 118, 119, + 120, 121, 122, 123, 124, 0, 0, 117, 118, 119, + 120, 121, 122, 123, 124, 231, 0, 0, 0, 0, + 0, 0, 0, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 117, 118, 119, 120, + 121, 122, 123, 124, 233, 0, 0, 0, 0, 0, + 0, 0, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 117, 118, 119, 120, 121, + 122, 123, 124, 280, 0, 0, 0, 0, 0, 0, 0, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, 120, 121, 122, - 123, 124, 272, 0, 0, 0, 0, 0, 0, 0, + 123, 124, 281, 0, 0, 0, 0, 0, 0, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 106, + 0, 0, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 0, 0, 0, 0, 0, 117, 118, 119, 120, 121, + 122, 123, 124, 286, 0, 0, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 297, 0, 0, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 0, 0, 0, + 0, 0, 117, 118, 119, 120, 121, 122, 123, 124, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 107, 108, 0, 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 273, 0, 0, 0, 0, 0, 0, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 106, 0, - 0, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 0, - 0, 0, 0, 0, 117, 118, 119, 120, 121, 122, - 123, 124, 276, 0, 0, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 287, 0, 0, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 0, 0, 0, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 107, - 108, 0, 110, 111, 112, 113, 114, 115, 116, 0, - 0, 0, 117, 118, 119, 120, 121, 122, 123, 124, - 0, 0, 117, 118, 119, 120, 121, 122, 123, 124, - 107, 108, 0, 0, 111, 112, 113, 114, 115, 116, - 107, 108, 0, 0, 111, 112, 113, 114, 115, 116, - 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, - 124, 0, 0, 0, 0, 0, 120, 121, 122, 123, - 124 + 124, 0, 0, 117, 118, 119, 120, 121, 122, 123, + 124, 107, 108, 0, 0, 111, 112, 113, 114, 115, + 116, 107, 108, 0, 0, 111, 112, 113, 114, 115, + 116, 0, 0, 0, 0, 118, 0, 120, 121, 122, + 123, 124, 0, 0, 0, 0, 0, 120, 121, 122, + 123, 124 }; const short parser::yycheck_[] = { - 0, 3, 4, 234, 83, 5, 1, 38, 84, 85, - 26, 27, 80, 36, 76, 26, 27, 14, 18, 131, - 82, 36, 31, 85, 27, 37, 26, 27, 27, 17, - 42, 26, 27, 32, 33, 34, 35, 40, 61, 39, - 134, 40, 0, 24, 25, 61, 27, 82, 47, 48, - 61, 37, 134, 46, 42, 36, 42, 81, 27, 40, - 37, 61, 43, 94, 24, 25, 61, 27, 40, 44, - 37, 40, 81, 81, 43, 42, 19, 80, 81, 81, - 40, 80, 81, 43, 84, 37, 37, 77, 78, 79, - 42, 42, 186, 187, 37, 36, 190, 40, 41, 80, - 81, 46, 37, 40, 186, 187, 337, 42, 190, 125, - 126, 80, 81, 37, 125, 126, 38, 229, 42, 44, - 80, 81, 37, 40, 36, 125, 126, 42, 128, 42, - 125, 126, 132, 41, 134, 46, 36, 36, 138, 134, - 234, 75, 76, 77, 78, 79, 36, 36, 27, 190, - 36, 94, 234, 32, 33, 34, 35, 45, 85, 46, - 41, 40, 46, 46, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 46, 180, 127, 46, 186, 187, 45, 45, - 190, 186, 187, 305, 137, 190, 139, 45, 141, 215, - 143, 80, 81, 134, 215, 317, 36, 36, 41, 36, - 36, 36, 46, 307, 308, 215, 134, 329, 36, 331, - 215, 333, 13, 46, 17, 307, 308, 46, 37, 5, - 173, 247, 248, 312, 234, 235, 247, 248, 46, 234, - 46, 184, 336, 337, 338, 46, 46, 247, 248, 134, - 46, 5, 247, 248, 336, 337, 338, 46, 258, 190, - 337, 355, 356, -1, 180, 281, 307, 308, 186, 187, - 281, 180, 190, 355, 356, 24, 25, -1, 27, -1, - -1, 281, -1, -1, -1, -1, 281, -1, -1, 232, - 233, 40, -1, 236, 43, 336, -1, 338, -1, -1, - -1, 186, 187, -1, -1, 190, 134, 307, 308, -1, - -1, 311, 307, 308, 355, 356, 234, 134, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 134, - 273, 80, 81, -1, -1, -1, 336, 337, 338, 134, - -1, 336, 337, 338, -1, 288, 289, 290, 291, 234, - -1, -1, -1, -1, -1, 355, 356, -1, 186, 187, - 355, 356, 190, -1, -1, -1, 309, 310, -1, 186, - 187, 49, 50, 190, -1, -1, 307, 308, -1, -1, - -1, 186, 187, -1, -1, 190, -1, -1, -1, 307, - 308, 186, 187, -1, -1, 190, 339, 75, 76, 77, - 78, 79, -1, -1, -1, 336, 234, 338, -1, -1, - -1, 24, 25, -1, 27, -1, -1, 234, 336, 337, - 338, -1, 307, 308, 355, 356, -1, 40, -1, 234, - 43, 24, 25, -1, 27, -1, -1, 355, 356, 234, - 24, 25, -1, 27, -1, -1, -1, 40, -1, -1, - 43, 336, 337, 338, -1, -1, 40, -1, -1, 43, - -1, -1, -1, -1, -1, -1, -1, 80, 81, -1, - 355, 356, -1, 24, 25, -1, 27, -1, -1, 307, - 308, -1, -1, -1, -1, -1, -1, 80, 81, 40, - 307, 308, 43, -1, -1, -1, 80, 81, 24, 25, - -1, 27, 307, 308, -1, -1, -1, -1, 336, 337, - 338, -1, 307, 308, 40, -1, -1, 43, -1, 336, - 337, 338, -1, -1, -1, -1, -1, 355, 356, 80, - 81, 336, 337, 338, -1, -1, -1, -1, 355, 356, - -1, 336, 337, 338, 5, -1, -1, -1, -1, -1, - 355, 356, -1, -1, 80, 81, -1, -1, -1, -1, - 355, 356, -1, 24, 25, 26, 27, 28, 29, 30, - -1, 32, 33, 34, 35, 36, -1, -1, -1, 40, - 41, -1, -1, 44, 49, 50, 24, 25, -1, 27, - 55, 56, 57, 58, -1, -1, -1, -1, 59, 60, - -1, -1, 40, -1, -1, 43, 5, -1, -1, -1, - 75, 76, 77, 78, 79, 76, -1, -1, 79, 80, - 81, 82, 83, 84, 85, 24, 25, 26, 27, 28, - 29, 30, -1, 32, 33, 34, 35, 36, -1, -1, - -1, 40, 80, 81, -1, 44, -1, 46, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 59, 60, -1, -1, -1, -1, -1, -1, 5, -1, - -1, -1, -1, -1, -1, -1, -1, 76, -1, -1, - 79, 80, 81, 82, 83, 84, 85, 24, 25, 26, - 27, 28, 29, 30, -1, 32, 33, 34, 35, 36, - 41, -1, -1, 40, -1, -1, -1, 44, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, -1, -1, - -1, -1, 59, 60, -1, -1, -1, -1, -1, -1, - 5, 72, 73, 74, 75, 76, 77, 78, 79, 76, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 24, - 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, - 35, 36, -1, -1, -1, 40, -1, -1, -1, 44, - -1, -1, -1, -1, -1, -1, -1, 6, 7, -1, - 9, 10, -1, -1, 59, 60, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 24, -1, -1, 27, -1, - -1, 76, -1, -1, 79, 80, 81, 82, 83, 84, - 85, 40, -1, -1, 43, -1, -1, -1, 47, 48, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, - 8, 80, 81, 11, 12, -1, 14, 15, 16, -1, - 18, 19, 20, 21, 22, 23, 24, -1, -1, 27, - -1, -1, -1, -1, 32, 33, 34, 35, -1, -1, - 38, 39, 40, -1, -1, -1, -1, -1, 8, 47, - 48, 11, 12, -1, 14, 15, 16, -1, 18, 19, - 20, 21, 22, 23, 24, -1, -1, 27, -1, -1, - -1, -1, 32, 33, 34, 35, -1, -1, 38, 39, - 40, -1, 80, 81, -1, -1, 8, 47, 48, 11, - 12, -1, 14, 15, 16, -1, 18, 19, 20, 21, - 22, 23, 24, -1, -1, 27, -1, -1, -1, -1, - 32, 33, 34, 35, -1, -1, 38, -1, 40, -1, - 80, 81, -1, -1, -1, 47, 48, 27, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 40, -1, -1, 43, -1, -1, -1, 47, 48, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 80, 81, - -1, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 37, -1, -1, -1, -1, 42, -1, -1, - 80, 81, -1, -1, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 72, 73, 74, - 75, 76, 77, 78, 79, 37, -1, 49, 50, -1, - 42, 53, 54, 55, 56, 57, 58, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, -1, -1, -1, - 72, 73, 74, 75, 76, 77, 78, 79, -1, -1, - 72, 73, 74, 75, 76, 77, 78, 79, 37, -1, - 49, 50, -1, 42, 53, 54, 55, 56, 57, 58, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - -1, -1, -1, -1, 73, 74, 75, 76, 77, 78, - 79, -1, -1, 72, 73, 74, 75, 76, 77, 78, - 79, 37, -1, -1, -1, -1, 42, -1, -1, -1, - -1, 37, -1, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, -1, -1, -1, 72, 73, 74, 75, - 76, 77, 78, 79, 37, -1, 72, 73, 74, 75, - 76, 77, 78, 79, 37, -1, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, -1, -1, -1, 72, - 73, 74, 75, 76, 77, 78, 79, 37, -1, 72, - 73, 74, 75, 76, 77, 78, 79, 37, -1, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, - -1, -1, 72, 73, 74, 75, 76, 77, 78, 79, - 37, -1, 72, 73, 74, 75, 76, 77, 78, 79, - 37, -1, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, -1, -1, -1, 72, 73, 74, 75, 76, - 77, 78, 79, -1, -1, 72, 73, 74, 75, 76, - 77, 78, 79, 41, -1, -1, -1, -1, -1, -1, - -1, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 72, 73, 74, 75, 76, 77, - 78, 79, 41, -1, -1, -1, -1, -1, -1, -1, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 72, 73, 74, 75, 76, 77, 78, - 79, 42, -1, -1, -1, -1, -1, -1, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 46, -1, - -1, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 72, 73, 74, 75, 76, 77, 78, 79, -1, - -1, -1, -1, -1, 72, 73, 74, 75, 76, 77, - 78, 79, 46, -1, -1, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 46, -1, -1, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 72, 73, - 74, 75, 76, 77, 78, 79, -1, -1, -1, -1, - -1, 72, 73, 74, 75, 76, 77, 78, 79, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 49, - 50, -1, 52, 53, 54, 55, 56, 57, 58, -1, - -1, -1, 72, 73, 74, 75, 76, 77, 78, 79, - -1, -1, 72, 73, 74, 75, 76, 77, 78, 79, - 49, 50, -1, -1, 53, 54, 55, 56, 57, 58, - 49, 50, -1, -1, 53, 54, 55, 56, 57, 58, - -1, -1, -1, -1, -1, 74, 75, 76, 77, 78, - 79, -1, -1, -1, -1, -1, 75, 76, 77, 78, - 79 + 0, 83, 26, 27, 243, 5, 1, 26, 27, 6, + 7, 79, 83, 38, 87, 88, 132, 85, 18, 39, + 88, 20, 39, 14, 40, 30, 26, 27, 0, 45, + 40, 26, 27, 27, 28, 45, 30, 61, 43, 39, + 34, 46, 61, 49, 64, 39, 45, 85, 40, 43, + 40, 40, 46, 45, 40, 45, 45, 27, 28, 45, + 30, 61, 30, 84, 34, 40, 61, 27, 28, 94, + 30, 84, 43, 43, 34, 43, 46, 43, 83, 84, + 47, 39, 19, 43, 84, 49, 46, 84, 41, 83, + 84, 47, 27, 28, 43, 30, 135, 45, 44, 34, + 37, 125, 126, 40, 41, 39, 125, 126, 43, 49, + 49, 46, 351, 83, 84, 83, 84, 39, 39, 235, + 39, 237, 238, 83, 84, 125, 126, 40, 39, 129, + 125, 126, 45, 133, 39, 135, 52, 53, 39, 139, + 135, 40, 58, 59, 60, 61, 45, 40, 83, 84, + 189, 190, 45, 39, 193, 40, 48, 94, 49, 48, + 45, 135, 78, 79, 80, 81, 82, 49, 49, 49, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 49, 189, + 190, 128, 183, 193, 189, 190, 44, 221, 193, 315, + 88, 138, 221, 140, 243, 142, 135, 144, 78, 79, + 80, 81, 82, 329, 48, 189, 190, 30, 48, 193, + 135, 221, 35, 36, 37, 38, 221, 343, 39, 345, + 43, 347, 256, 257, 39, 135, 39, 256, 257, 176, + 39, 49, 324, 243, 244, 135, 44, 39, 243, 39, + 187, 80, 81, 82, 49, 16, 256, 257, 52, 53, + 135, 256, 257, 49, 193, 49, 20, 291, 49, 243, + 83, 84, 291, 40, 189, 190, 49, 49, 193, 49, + 319, 320, 5, 49, 78, 79, 80, 81, 82, 189, + 190, 291, 49, 193, 49, 5, 291, 351, -1, 189, + 190, -1, -1, 193, 241, 242, 193, 183, 245, 183, + -1, 350, 351, 352, 189, 190, -1, -1, 193, 319, + 320, -1, -1, 323, 319, 320, -1, -1, 243, -1, + 369, 370, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 243, 281, 319, 320, -1, 135, -1, + 350, 351, 352, 243, -1, 350, 351, 352, -1, 135, + -1, 298, 299, 300, 301, -1, -1, -1, 243, 369, + 370, -1, -1, -1, 369, 370, 350, 351, 352, -1, + -1, -1, -1, -1, 321, 322, -1, -1, -1, -1, + 319, 320, -1, -1, -1, 369, 370, -1, -1, -1, + -1, -1, 189, 190, 319, 320, 193, -1, -1, -1, + -1, -1, -1, 189, 190, -1, 353, 193, -1, 319, + 320, 350, -1, 352, -1, -1, -1, -1, -1, 319, + 320, -1, 319, 320, -1, 350, 351, 352, -1, -1, + 369, 370, -1, -1, 319, 320, -1, -1, -1, -1, + 350, 351, 352, -1, 369, 370, 243, -1, -1, -1, + 350, 351, 352, 350, -1, 352, -1, 243, -1, 369, + 370, -1, -1, -1, -1, 350, 351, 352, -1, 369, + 370, -1, 369, 370, -1, -1, -1, -1, 3, 4, + 5, -1, -1, -1, 369, 370, 11, -1, -1, 14, + 15, -1, 17, 18, 19, -1, 21, 22, 23, 24, + 25, 26, 27, -1, -1, 30, -1, -1, 30, -1, + 35, 36, 37, 38, -1, -1, 41, 42, 43, -1, + -1, 43, 319, 320, 46, 50, 51, -1, 50, 51, + -1, -1, -1, 319, 320, -1, -1, -1, -1, -1, + -1, -1, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 350, 351, 352, -1, -1, 83, 84, + -1, 83, 84, -1, 350, 351, 352, -1, -1, -1, + -1, -1, 369, 370, 3, 4, 5, -1, -1, -1, + -1, -1, 11, 369, 370, 14, 15, -1, 17, 18, + 19, -1, 21, 22, 23, 24, 25, 26, 27, -1, + -1, 30, -1, -1, -1, -1, 35, 36, 37, 38, + -1, -1, 41, 42, 43, -1, -1, -1, 3, 4, + 5, 50, 51, -1, -1, -1, 11, -1, -1, 14, + 15, -1, 17, 18, 19, -1, 21, 22, 23, 24, + 25, 26, 27, -1, -1, 30, -1, -1, 8, -1, + 35, 36, 37, 38, 83, 84, 41, -1, 43, -1, + -1, -1, -1, -1, -1, 50, 51, 27, 28, 29, + 30, 31, 32, 33, -1, 35, 36, 37, 38, 39, + -1, -1, -1, 43, 44, -1, -1, 47, -1, -1, + 27, 28, -1, 30, -1, -1, -1, 34, 83, 84, + -1, -1, 62, 63, -1, -1, 43, -1, -1, 46, + 8, -1, -1, -1, -1, -1, -1, -1, -1, 79, + -1, -1, 82, 83, 84, 85, 86, 87, 88, 27, + 28, 29, 30, 31, 32, 33, -1, 35, 36, 37, + 38, 39, -1, -1, -1, 43, 83, 84, -1, 47, + -1, 49, 27, 28, -1, 30, -1, -1, -1, 34, + 27, 28, -1, 30, 62, 63, -1, 34, 43, -1, + -1, 46, 8, -1, -1, -1, 43, -1, -1, 46, + -1, 79, -1, -1, 82, 83, 84, 85, 86, 87, + 88, 27, 28, 29, 30, 31, 32, 33, -1, 35, + 36, 37, 38, 39, -1, -1, -1, 43, 83, 84, + -1, 47, -1, -1, -1, -1, 83, 84, -1, -1, + -1, 27, 28, -1, 30, -1, 62, 63, 34, -1, + -1, -1, -1, -1, 8, -1, -1, 43, -1, -1, + 46, -1, -1, 79, -1, -1, 82, 83, 84, 85, + 86, 87, 88, 27, 28, 29, 30, 31, 32, 33, + -1, 35, 36, 37, 38, 39, -1, -1, -1, 43, + -1, -1, -1, 47, -1, -1, -1, 83, 84, -1, + -1, 9, 10, -1, 12, 13, -1, -1, 62, 63, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 27, + -1, -1, 30, -1, -1, 79, -1, -1, 82, 83, + 84, 85, 86, 87, 88, 43, -1, -1, 46, -1, + -1, -1, 50, 51, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 27, 28, -1, + 30, -1, 30, -1, 34, 83, 84, 35, 36, 37, + 38, -1, -1, 43, -1, 43, 46, -1, -1, -1, + -1, -1, 50, 51, 40, -1, -1, -1, -1, 45, + -1, -1, -1, -1, -1, -1, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, + -1, -1, -1, 83, 84, 83, 84, -1, -1, 75, + 76, 77, 78, 79, 80, 81, 82, 40, -1, 52, + 53, -1, 45, 56, 57, 58, 59, 60, 61, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, + -1, -1, 75, 76, 77, 78, 79, 80, 81, 82, + -1, -1, 75, 76, 77, 78, 79, 80, 81, 82, + 40, -1, 52, 53, -1, 45, 56, 57, 58, 59, + 60, 61, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, -1, -1, -1, -1, 76, 77, 78, 79, + 80, 81, 82, -1, -1, 75, 76, 77, 78, 79, + 80, 81, 82, 40, -1, -1, -1, -1, 45, -1, + -1, -1, -1, 40, -1, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, -1, -1, -1, 75, 76, + 77, 78, 79, 80, 81, 82, 40, -1, 75, 76, + 77, 78, 79, 80, 81, 82, 40, -1, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, + -1, 75, 76, 77, 78, 79, 80, 81, 82, 40, + -1, 75, 76, 77, 78, 79, 80, 81, 82, 40, + -1, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, -1, -1, -1, 75, 76, 77, 78, 79, 80, + 81, 82, 40, -1, 75, 76, 77, 78, 79, 80, + 81, 82, 40, -1, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, -1, -1, -1, 75, 76, 77, + 78, 79, 80, 81, 82, -1, -1, 75, 76, 77, + 78, 79, 80, 81, 82, 44, -1, -1, -1, -1, + -1, -1, -1, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 75, 76, 77, 78, + 79, 80, 81, 82, 44, -1, -1, -1, -1, -1, + -1, -1, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 75, 76, 77, 78, 79, + 80, 81, 82, 44, -1, -1, -1, -1, -1, -1, + -1, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 75, 76, 77, 78, 79, 80, + 81, 82, 45, -1, -1, -1, -1, -1, -1, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 49, + -1, -1, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 75, 76, 77, 78, 79, 80, 81, 82, + -1, -1, -1, -1, -1, 75, 76, 77, 78, 79, + 80, 81, 82, 49, -1, -1, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 49, -1, -1, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 75, + 76, 77, 78, 79, 80, 81, 82, -1, -1, -1, + -1, -1, 75, 76, 77, 78, 79, 80, 81, 82, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 52, 53, -1, 55, 56, 57, 58, 59, 60, 61, + -1, -1, -1, 75, 76, 77, 78, 79, 80, 81, + 82, -1, -1, 75, 76, 77, 78, 79, 80, 81, + 82, 52, 53, -1, -1, 56, 57, 58, 59, 60, + 61, 52, 53, -1, -1, 56, 57, 58, 59, 60, + 61, -1, -1, -1, -1, 76, -1, 78, 79, 80, + 81, 82, -1, -1, -1, -1, -1, 78, 79, 80, + 81, 82 }; const unsigned char parser::yystos_[] = { - 0, 3, 4, 81, 95, 96, 97, 98, 99, 100, - 101, 155, 80, 156, 36, 0, 97, 98, 36, 61, - 46, 82, 158, 102, 155, 5, 24, 25, 26, 27, - 28, 29, 30, 32, 33, 34, 35, 36, 40, 44, - 59, 60, 76, 79, 83, 84, 85, 127, 129, 130, - 131, 132, 133, 134, 135, 136, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 37, 37, 42, 40, 135, 136, 155, 156, - 135, 136, 40, 127, 40, 41, 127, 137, 138, 139, - 155, 127, 127, 84, 85, 81, 46, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 72, 73, 74, - 75, 76, 77, 78, 79, 24, 25, 40, 43, 135, - 136, 36, 44, 46, 38, 104, 155, 40, 44, 40, - 37, 42, 127, 42, 41, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 135, 136, 135, 136, 127, 31, 155, - 137, 138, 155, 8, 11, 12, 14, 15, 16, 18, - 19, 20, 21, 22, 23, 39, 47, 48, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 0, 6, 7, 84, 98, 99, 100, 101, 102, 103, + 104, 161, 83, 162, 39, 0, 100, 101, 39, 64, + 49, 85, 164, 105, 161, 8, 27, 28, 29, 30, + 31, 32, 33, 35, 36, 37, 38, 39, 43, 47, + 62, 63, 79, 82, 86, 87, 88, 133, 135, 136, + 137, 138, 139, 140, 141, 142, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 40, 40, 45, 43, 141, 142, 161, 162, + 141, 142, 43, 133, 43, 44, 133, 143, 144, 145, + 161, 133, 133, 87, 88, 84, 49, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 75, 76, 77, + 78, 79, 80, 81, 82, 27, 28, 34, 43, 46, + 141, 142, 39, 47, 49, 41, 107, 161, 43, 47, + 43, 40, 45, 133, 45, 44, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 141, 142, 141, 142, 133, 161, + 143, 144, 161, 3, 4, 5, 11, 14, 15, 17, + 18, 19, 21, 22, 23, 24, 25, 26, 42, 50, + 51, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 128, 132, 133, 142, 143, 145, 149, 150, 151, 152, - 155, 127, 155, 127, 127, 41, 127, 41, 37, 36, - 127, 46, 36, 36, 36, 36, 36, 76, 158, 161, - 163, 45, 46, 46, 46, 127, 132, 145, 145, 39, - 103, 46, 46, 46, 6, 7, 9, 10, 43, 47, - 48, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 41, 42, 41, 137, 46, 127, 127, 125, - 128, 145, 155, 127, 45, 45, 45, 46, 36, 36, - 36, 36, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 41, 127, 36, 37, 37, 37, 46, - 17, 42, 37, 127, 127, 127, 127, 36, 37, 137, - 103, 103, 126, 127, 127, 155, 104, 37, 37, 42, - 37, 42, 37, 42, 137, 37, 13, 46, 37, 17, - 46, 46, 137, 46, 137, 46, 137, 37, 103, 125, - 103, 127, 37, 37, 37, 37, 37, 46, 46, 46, - 103, 103 + 125, 126, 127, 128, 129, 130, 134, 138, 139, 148, + 149, 151, 155, 156, 157, 158, 161, 133, 161, 133, + 133, 44, 133, 44, 40, 39, 49, 39, 39, 133, + 49, 39, 39, 39, 39, 39, 79, 164, 167, 169, + 48, 49, 49, 49, 133, 138, 151, 151, 42, 106, + 49, 49, 49, 9, 10, 12, 13, 50, 51, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 44, 45, 44, 143, 143, 143, 49, 133, 133, 131, + 134, 151, 161, 133, 48, 48, 48, 49, 39, 39, + 39, 39, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 44, 133, 39, 40, 40, 40, 40, + 40, 49, 20, 45, 40, 133, 133, 133, 133, 39, + 40, 143, 49, 49, 106, 106, 132, 133, 133, 161, + 107, 40, 40, 45, 40, 45, 40, 45, 143, 40, + 16, 49, 40, 20, 49, 49, 143, 49, 143, 49, + 143, 40, 106, 131, 106, 133, 40, 40, 40, 40, + 40, 49, 49, 49, 106, 106 }; const unsigned char parser::yyr1_[] = { - 0, 94, 95, 95, 96, 96, 96, 96, 97, 98, - 98, 98, 99, 100, 101, 102, 102, 102, 103, 103, - 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, - 103, 103, 103, 103, 103, 103, 103, 103, 104, 104, - 105, 105, 106, 106, 107, 108, 109, 109, 110, 111, - 111, 112, 112, 113, 114, 115, 116, 117, 118, 118, - 119, 120, 120, 120, 121, 122, 123, 124, 124, 125, - 125, 126, 126, 127, 127, 127, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 129, 129, 129, 129, 129, 129, 129, 129, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 131, - 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, - 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, - 131, 131, 131, 131, 131, 131, 131, 131, 131, 132, - 132, 132, 132, 133, 133, 133, 133, 134, 134, 134, - 134, 135, 135, 136, 136, 137, 137, 138, 138, 139, - 140, 140, 141, 142, 143, 144, 145, 145, 145, 145, - 145, 145, 145, 145, 146, 147, 148, 149, 150, 151, + 0, 97, 98, 98, 99, 99, 99, 99, 100, 101, + 101, 101, 102, 103, 104, 105, 105, 105, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 107, 107, 108, 108, 109, 109, 110, 111, 112, + 112, 113, 114, 114, 115, 115, 116, 117, 118, 119, + 120, 121, 121, 122, 123, 123, 123, 124, 125, 126, + 127, 127, 128, 129, 130, 131, 131, 132, 132, 133, + 133, 133, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 135, 135, 135, + 135, 135, 135, 135, 135, 136, 136, 136, 136, 136, + 136, 136, 136, 136, 136, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 138, 138, 138, 138, 139, + 139, 139, 139, 140, 140, 140, 140, 141, 141, 142, + 142, 143, 143, 144, 144, 145, 146, 146, 147, 148, + 149, 150, 151, 151, 151, 151, 151, 151, 151, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165 + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171 }; const signed char @@ -3867,23 +3969,23 @@ namespace xsk { namespace gsc { namespace iw7 { 0, 2, 1, 0, 2, 2, 1, 1, 3, 1, 1, 1, 5, 4, 5, 3, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, - 2, 1, 2, 2, 2, 6, 8, 6, 3, 8, - 6, 8, 6, 2, 5, 7, 5, 9, 7, 9, - 5, 3, 3, 3, 2, 2, 2, 3, 2, 1, - 0, 1, 0, 1, 1, 1, 2, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 3, 2, 2, 1, 2, 2, 2, 6, 8, + 6, 3, 8, 6, 8, 6, 2, 5, 7, 5, + 9, 7, 9, 5, 3, 3, 3, 2, 2, 2, + 3, 2, 2, 5, 5, 1, 0, 1, 0, 1, + 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 3, 3, 3, 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 3, 3, 2, 2, 3, - 3, 4, 6, 8, 9, 1, 1, 3, 1, 0, - 2, 3, 3, 4, 3, 3, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, - 1, 2, 1, 1, 1, 1, 1, 7, 2, 2, - 1, 1, 1, 1 + 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, + 2, 3, 3, 2, 2, 3, 3, 4, 6, 8, + 9, 1, 1, 3, 1, 0, 2, 3, 3, 4, + 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, + 1, 1, 1, 7, 2, 2, 1, 1, 1, 1 }; @@ -3893,26 +3995,26 @@ namespace xsk { namespace gsc { namespace iw7 { const short parser::yyrline_[] = { - 0, 231, 231, 232, 236, 238, 240, 242, 247, 252, - 253, 254, 258, 263, 268, 273, 275, 278, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 305, 306, - 310, 312, 317, 319, 324, 329, 334, 336, 341, 346, - 348, 353, 355, 360, 365, 370, 375, 380, 385, 387, - 392, 397, 399, 401, 406, 411, 416, 421, 423, 428, - 429, 433, 434, 438, 439, 440, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 462, 463, 464, 465, 466, 467, 468, 469, 473, - 474, 475, 476, 477, 478, 479, 480, 481, 482, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, - 507, 508, 509, 510, 511, 512, 513, 514, 515, 519, - 520, 521, 522, 526, 527, 528, 529, 533, 534, 535, - 536, 540, 542, 547, 549, 554, 555, 559, 561, 567, - 571, 573, 578, 583, 588, 593, 598, 599, 600, 601, - 602, 603, 604, 605, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, - 624, 625, 626, 627 + 0, 237, 237, 238, 242, 244, 246, 248, 253, 258, + 259, 260, 264, 269, 274, 279, 281, 284, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 314, 315, 319, 321, 326, 328, 333, 338, 343, + 345, 350, 355, 357, 362, 364, 369, 374, 379, 384, + 389, 394, 396, 401, 406, 408, 410, 415, 420, 425, + 430, 432, 437, 442, 447, 452, 453, 457, 458, 462, + 463, 464, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 478, 479, 480, 481, 482, 486, 487, 488, + 489, 490, 491, 492, 493, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 510, 511, 512, 513, 514, + 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, + 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, + 535, 536, 537, 538, 539, 543, 544, 545, 546, 550, + 551, 552, 553, 557, 558, 559, 560, 564, 566, 571, + 573, 578, 579, 583, 585, 591, 595, 597, 602, 607, + 612, 617, 622, 623, 624, 625, 626, 627, 628, 629, + 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, + 642, 643, 644, 645, 646, 647, 648, 649, 650, 651 }; void @@ -3945,9 +4047,9 @@ namespace xsk { namespace gsc { namespace iw7 { #line 13 "parser.ypp" } } } // xsk::gsc::iw7 -#line 3949 "parser.cpp" +#line 4051 "parser.cpp" -#line 629 "parser.ypp" +#line 653 "parser.ypp" void xsk::gsc::iw7::parser::error(const xsk::gsc::location& loc, const std::string& msg) diff --git a/src/iw7/xsk/parser.hpp b/src/iw7/xsk/parser.hpp index 36197adc..a30d8931 100644 --- a/src/iw7/xsk/parser.hpp +++ b/src/iw7/xsk/parser.hpp @@ -510,85 +510,94 @@ namespace xsk { namespace gsc { namespace iw7 { // stmt_break char dummy27[sizeof (stmt_break_ptr)]; + // stmt_breakpoint + char dummy28[sizeof (stmt_breakpoint_ptr)]; + // stmt_call - char dummy28[sizeof (stmt_call_ptr)]; + char dummy29[sizeof (stmt_call_ptr)]; // stmt_case - char dummy29[sizeof (stmt_case_ptr)]; + char dummy30[sizeof (stmt_case_ptr)]; // stmt_continue - char dummy30[sizeof (stmt_continue_ptr)]; + char dummy31[sizeof (stmt_continue_ptr)]; // stmt_default - char dummy31[sizeof (stmt_default_ptr)]; + char dummy32[sizeof (stmt_default_ptr)]; // stmt_endon - char dummy32[sizeof (stmt_endon_ptr)]; + char dummy33[sizeof (stmt_endon_ptr)]; // stmt_for - char dummy33[sizeof (stmt_for_ptr)]; + char dummy34[sizeof (stmt_for_ptr)]; // stmt_foreach - char dummy34[sizeof (stmt_foreach_ptr)]; + char dummy35[sizeof (stmt_foreach_ptr)]; // stmt_if - char dummy35[sizeof (stmt_if_ptr)]; + char dummy36[sizeof (stmt_if_ptr)]; // stmt_ifelse - char dummy36[sizeof (stmt_ifelse_ptr)]; + char dummy37[sizeof (stmt_ifelse_ptr)]; // stmt_block // stmt_list - char dummy37[sizeof (stmt_list_ptr)]; + char dummy38[sizeof (stmt_list_ptr)]; // stmt_notify - char dummy38[sizeof (stmt_notify_ptr)]; + char dummy39[sizeof (stmt_notify_ptr)]; + + // stmt_prof_begin + char dummy40[sizeof (stmt_prof_begin_ptr)]; + + // stmt_prof_end + char dummy41[sizeof (stmt_prof_end_ptr)]; // stmt // for_stmt - char dummy39[sizeof (stmt_ptr)]; + char dummy42[sizeof (stmt_ptr)]; // stmt_return - char dummy40[sizeof (stmt_return_ptr)]; + char dummy43[sizeof (stmt_return_ptr)]; // stmt_switch - char dummy41[sizeof (stmt_switch_ptr)]; + char dummy44[sizeof (stmt_switch_ptr)]; // stmt_wait - char dummy42[sizeof (stmt_wait_ptr)]; + char dummy45[sizeof (stmt_wait_ptr)]; // stmt_waittill - char dummy43[sizeof (stmt_waittill_ptr)]; + char dummy46[sizeof (stmt_waittill_ptr)]; // stmt_waittillframeend - char dummy44[sizeof (stmt_waittillframeend_ptr)]; + char dummy47[sizeof (stmt_waittillframeend_ptr)]; // stmt_waittillmatch - char dummy45[sizeof (stmt_waittillmatch_ptr)]; + char dummy48[sizeof (stmt_waittillmatch_ptr)]; // stmt_while - char dummy46[sizeof (stmt_while_ptr)]; + char dummy49[sizeof (stmt_while_ptr)]; // string - char dummy47[sizeof (string_ptr)]; + char dummy50[sizeof (string_ptr)]; // thisthread - char dummy48[sizeof (thisthread_ptr)]; + char dummy51[sizeof (thisthread_ptr)]; // thread - char dummy49[sizeof (thread_ptr)]; + char dummy52[sizeof (thread_ptr)]; // true - char dummy50[sizeof (true_ptr)]; + char dummy53[sizeof (true_ptr)]; // undefined - char dummy51[sizeof (undefined_ptr)]; + char dummy54[sizeof (undefined_ptr)]; // usingtree - char dummy52[sizeof (usingtree_ptr)]; + char dummy55[sizeof (usingtree_ptr)]; // vector - char dummy53[sizeof (vector_ptr)]; + char dummy56[sizeof (vector_ptr)]; }; /// The size of the largest semantic type. @@ -640,97 +649,100 @@ namespace xsk { namespace gsc { namespace iw7 { IW7EOF = 0, // "end of file" IW7error = 1, // error IW7UNDEF = 2, // "invalid token" - INCLUDE = 3, // "#include" - USINGTREE = 4, // "#using_animtree" - ANIMTREE = 5, // "#animtree" - ENDON = 6, // "endon" - NOTIFY = 7, // "notify" - WAIT = 8, // "wait" - WAITTILL = 9, // "waittill" - WAITTILLMATCH = 10, // "waittillmatch" - WAITTILLFRAMEEND = 11, // "waittillframeend" - IF = 12, // "if" - ELSE = 13, // "else" - WHILE = 14, // "while" - FOR = 15, // "for" - FOREACH = 16, // "foreach" - IN = 17, // "in" - SWITCH = 18, // "switch" - CASE = 19, // "case" - DEFAULT = 20, // "default" - BREAK = 21, // "break" - CONTINUE = 22, // "continue" - RETURN = 23, // "return" - THREAD = 24, // "thread" - CHILDTHREAD = 25, // "childthread" - THISTHREAD = 26, // "thisthread" - CALL = 27, // "call" - TRUE = 28, // "true" - FALSE = 29, // "false" - UNDEFINED = 30, // "undefined" - SIZE = 31, // "size" - GAME = 32, // "game" - SELF = 33, // "self" - ANIM = 34, // "anim" - LEVEL = 35, // "level" - LPAREN = 36, // "(" - RPAREN = 37, // ")" - LBRACE = 38, // "{" - RBRACE = 39, // "}" - LBRACKET = 40, // "[" - RBRACKET = 41, // "]" - COMMA = 42, // "," - DOT = 43, // "." - DOUBLECOLON = 44, // "::" - COLON = 45, // ":" - SEMICOLON = 46, // ";" - INCREMENT = 47, // "++" - DECREMENT = 48, // "--" - LSHIFT = 49, // "<<" - RSHIFT = 50, // ">>" - OR = 51, // "||" - AND = 52, // "&&" - EQUALITY = 53, // "==" - INEQUALITY = 54, // "!=" - LESS_EQUAL = 55, // "<=" - GREATER_EQUAL = 56, // ">=" - LESS = 57, // "<" - GREATER = 58, // ">" - NOT = 59, // "!" - COMPLEMENT = 60, // "~" - ASSIGN = 61, // "=" - ASSIGN_ADD = 62, // "+=" - ASSIGN_SUB = 63, // "-=" - ASSIGN_MULT = 64, // "*=" - ASSIGN_DIV = 65, // "/=" - ASSIGN_MOD = 66, // "%=" - ASSIGN_BITWISE_OR = 67, // "|=" - ASSIGN_BITWISE_AND = 68, // "&=" - ASSIGN_BITWISE_EXOR = 69, // "^=" - ASSIGN_RSHIFT = 70, // ">>=" - ASSIGN_LSHIFT = 71, // "<<=" - BITWISE_OR = 72, // "|" - BITWISE_AND = 73, // "&" - BITWISE_EXOR = 74, // "^" - ADD = 75, // "+" - SUB = 76, // "-" - MULT = 77, // "*" - DIV = 78, // "/" - MOD = 79, // "%" - FILE = 80, // "file path" - NAME = 81, // "identifier" - STRING = 82, // "string literal" - ISTRING = 83, // "localized string" - FLOAT = 84, // "float" - INTEGER = 85, // "int" - ADD_ARRAY = 86, // ADD_ARRAY - THEN = 87, // THEN - NEG = 88, // NEG - ANIMREF = 89, // ANIMREF - PREINC = 90, // PREINC - PREDEC = 91, // PREDEC - POSTINC = 92, // POSTINC - POSTDEC = 93 // POSTDEC + BREAKPOINT = 3, // "breakpoint" + PROFBEGIN = 4, // "prof_begin" + PROFEND = 5, // "prof_end" + INCLUDE = 6, // "#include" + USINGTREE = 7, // "#using_animtree" + ANIMTREE = 8, // "#animtree" + ENDON = 9, // "endon" + NOTIFY = 10, // "notify" + WAIT = 11, // "wait" + WAITTILL = 12, // "waittill" + WAITTILLMATCH = 13, // "waittillmatch" + WAITTILLFRAMEEND = 14, // "waittillframeend" + IF = 15, // "if" + ELSE = 16, // "else" + WHILE = 17, // "while" + FOR = 18, // "for" + FOREACH = 19, // "foreach" + IN = 20, // "in" + SWITCH = 21, // "switch" + CASE = 22, // "case" + DEFAULT = 23, // "default" + BREAK = 24, // "break" + CONTINUE = 25, // "continue" + RETURN = 26, // "return" + THREAD = 27, // "thread" + CHILDTHREAD = 28, // "childthread" + THISTHREAD = 29, // "thisthread" + CALL = 30, // "call" + TRUE = 31, // "true" + FALSE = 32, // "false" + UNDEFINED = 33, // "undefined" + SIZE = 34, // ".size" + GAME = 35, // "game" + SELF = 36, // "self" + ANIM = 37, // "anim" + LEVEL = 38, // "level" + LPAREN = 39, // "(" + RPAREN = 40, // ")" + LBRACE = 41, // "{" + RBRACE = 42, // "}" + LBRACKET = 43, // "[" + RBRACKET = 44, // "]" + COMMA = 45, // "," + DOT = 46, // "." + DOUBLECOLON = 47, // "::" + COLON = 48, // ":" + SEMICOLON = 49, // ";" + INCREMENT = 50, // "++" + DECREMENT = 51, // "--" + LSHIFT = 52, // "<<" + RSHIFT = 53, // ">>" + OR = 54, // "||" + AND = 55, // "&&" + EQUALITY = 56, // "==" + INEQUALITY = 57, // "!=" + LESS_EQUAL = 58, // "<=" + GREATER_EQUAL = 59, // ">=" + LESS = 60, // "<" + GREATER = 61, // ">" + NOT = 62, // "!" + COMPLEMENT = 63, // "~" + ASSIGN = 64, // "=" + ASSIGN_ADD = 65, // "+=" + ASSIGN_SUB = 66, // "-=" + ASSIGN_MULT = 67, // "*=" + ASSIGN_DIV = 68, // "/=" + ASSIGN_MOD = 69, // "%=" + ASSIGN_BITWISE_OR = 70, // "|=" + ASSIGN_BITWISE_AND = 71, // "&=" + ASSIGN_BITWISE_EXOR = 72, // "^=" + ASSIGN_RSHIFT = 73, // ">>=" + ASSIGN_LSHIFT = 74, // "<<=" + BITWISE_OR = 75, // "|" + BITWISE_AND = 76, // "&" + BITWISE_EXOR = 77, // "^" + ADD = 78, // "+" + SUB = 79, // "-" + MULT = 80, // "*" + DIV = 81, // "/" + MOD = 82, // "%" + FILE = 83, // "file path" + NAME = 84, // "identifier" + STRING = 85, // "string literal" + ISTRING = 86, // "localized string" + FLOAT = 87, // "float" + INTEGER = 88, // "int" + ADD_ARRAY = 89, // ADD_ARRAY + THEN = 90, // THEN + NEG = 91, // NEG + ANIMREF = 92, // ANIMREF + PREINC = 93, // PREINC + PREDEC = 94, // PREDEC + POSTINC = 95, // POSTINC + POSTDEC = 96 // POSTDEC }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; @@ -747,174 +759,180 @@ namespace xsk { namespace gsc { namespace iw7 { { enum symbol_kind_type { - YYNTOKENS = 94, ///< Number of tokens. + YYNTOKENS = 97, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error S_YYUNDEF = 2, // "invalid token" - S_INCLUDE = 3, // "#include" - S_USINGTREE = 4, // "#using_animtree" - S_ANIMTREE = 5, // "#animtree" - S_ENDON = 6, // "endon" - S_NOTIFY = 7, // "notify" - S_WAIT = 8, // "wait" - S_WAITTILL = 9, // "waittill" - S_WAITTILLMATCH = 10, // "waittillmatch" - S_WAITTILLFRAMEEND = 11, // "waittillframeend" - S_IF = 12, // "if" - S_ELSE = 13, // "else" - S_WHILE = 14, // "while" - S_FOR = 15, // "for" - S_FOREACH = 16, // "foreach" - S_IN = 17, // "in" - S_SWITCH = 18, // "switch" - S_CASE = 19, // "case" - S_DEFAULT = 20, // "default" - S_BREAK = 21, // "break" - S_CONTINUE = 22, // "continue" - S_RETURN = 23, // "return" - S_THREAD = 24, // "thread" - S_CHILDTHREAD = 25, // "childthread" - S_THISTHREAD = 26, // "thisthread" - S_CALL = 27, // "call" - S_TRUE = 28, // "true" - S_FALSE = 29, // "false" - S_UNDEFINED = 30, // "undefined" - S_SIZE = 31, // "size" - S_GAME = 32, // "game" - S_SELF = 33, // "self" - S_ANIM = 34, // "anim" - S_LEVEL = 35, // "level" - S_LPAREN = 36, // "(" - S_RPAREN = 37, // ")" - S_LBRACE = 38, // "{" - S_RBRACE = 39, // "}" - S_LBRACKET = 40, // "[" - S_RBRACKET = 41, // "]" - S_COMMA = 42, // "," - S_DOT = 43, // "." - S_DOUBLECOLON = 44, // "::" - S_COLON = 45, // ":" - S_SEMICOLON = 46, // ";" - S_INCREMENT = 47, // "++" - S_DECREMENT = 48, // "--" - S_LSHIFT = 49, // "<<" - S_RSHIFT = 50, // ">>" - S_OR = 51, // "||" - S_AND = 52, // "&&" - S_EQUALITY = 53, // "==" - S_INEQUALITY = 54, // "!=" - S_LESS_EQUAL = 55, // "<=" - S_GREATER_EQUAL = 56, // ">=" - S_LESS = 57, // "<" - S_GREATER = 58, // ">" - S_NOT = 59, // "!" - S_COMPLEMENT = 60, // "~" - S_ASSIGN = 61, // "=" - S_ASSIGN_ADD = 62, // "+=" - S_ASSIGN_SUB = 63, // "-=" - S_ASSIGN_MULT = 64, // "*=" - S_ASSIGN_DIV = 65, // "/=" - S_ASSIGN_MOD = 66, // "%=" - S_ASSIGN_BITWISE_OR = 67, // "|=" - S_ASSIGN_BITWISE_AND = 68, // "&=" - S_ASSIGN_BITWISE_EXOR = 69, // "^=" - S_ASSIGN_RSHIFT = 70, // ">>=" - S_ASSIGN_LSHIFT = 71, // "<<=" - S_BITWISE_OR = 72, // "|" - S_BITWISE_AND = 73, // "&" - S_BITWISE_EXOR = 74, // "^" - S_ADD = 75, // "+" - S_SUB = 76, // "-" - S_MULT = 77, // "*" - S_DIV = 78, // "/" - S_MOD = 79, // "%" - S_FILE = 80, // "file path" - S_NAME = 81, // "identifier" - S_STRING = 82, // "string literal" - S_ISTRING = 83, // "localized string" - S_FLOAT = 84, // "float" - S_INTEGER = 85, // "int" - S_ADD_ARRAY = 86, // ADD_ARRAY - S_THEN = 87, // THEN - S_NEG = 88, // NEG - S_ANIMREF = 89, // ANIMREF - S_PREINC = 90, // PREINC - S_PREDEC = 91, // PREDEC - S_POSTINC = 92, // POSTINC - S_POSTDEC = 93, // POSTDEC - S_YYACCEPT = 94, // $accept - S_root = 95, // root - S_program = 96, // program - S_include = 97, // include - S_define = 98, // define - S_usingtree = 99, // usingtree - S_constant = 100, // constant - S_thread = 101, // thread - S_parameters = 102, // parameters - S_stmt = 103, // stmt - S_stmt_block = 104, // stmt_block - S_stmt_list = 105, // stmt_list - S_stmt_call = 106, // stmt_call - S_stmt_assign = 107, // stmt_assign - S_stmt_endon = 108, // stmt_endon - S_stmt_notify = 109, // stmt_notify - S_stmt_wait = 110, // stmt_wait - S_stmt_waittill = 111, // stmt_waittill - S_stmt_waittillmatch = 112, // stmt_waittillmatch - S_stmt_waittillframeend = 113, // stmt_waittillframeend - S_stmt_if = 114, // stmt_if - S_stmt_ifelse = 115, // stmt_ifelse - S_stmt_while = 116, // stmt_while - S_stmt_for = 117, // stmt_for - S_stmt_foreach = 118, // stmt_foreach - S_stmt_switch = 119, // stmt_switch - S_stmt_case = 120, // stmt_case - S_stmt_default = 121, // stmt_default - S_stmt_break = 122, // stmt_break - S_stmt_continue = 123, // stmt_continue - S_stmt_return = 124, // stmt_return - S_for_stmt = 125, // for_stmt - S_for_expr = 126, // for_expr - S_expr = 127, // expr - S_expr_assign = 128, // expr_assign - S_expr_compare = 129, // expr_compare - S_expr_binary = 130, // expr_binary - S_expr_primitive = 131, // expr_primitive - S_expr_call = 132, // expr_call - S_expr_call_thread = 133, // expr_call_thread - S_expr_call_childthread = 134, // expr_call_childthread - S_expr_call_function = 135, // expr_call_function - S_expr_call_pointer = 136, // expr_call_pointer - S_expr_arguments = 137, // expr_arguments - S_expr_arguments_filled = 138, // expr_arguments_filled - S_expr_arguments_empty = 139, // expr_arguments_empty - S_expr_function = 140, // expr_function - S_expr_add_array = 141, // expr_add_array - S_expr_array = 142, // expr_array - S_expr_field = 143, // expr_field - S_expr_size = 144, // expr_size - S_object = 145, // object - S_thisthread = 146, // thisthread - S_empty_array = 147, // empty_array - S_undefined = 148, // undefined - S_game = 149, // game - S_self = 150, // self - S_anim = 151, // anim - S_level = 152, // level - S_animation = 153, // animation - S_animtree = 154, // animtree - S_name = 155, // name - S_file = 156, // file - S_istring = 157, // istring - S_string = 158, // string - S_vector = 159, // vector - S_neg_float = 160, // neg_float - S_neg_integer = 161, // neg_integer - S_float = 162, // float - S_integer = 163, // integer - S_false = 164, // false - S_true = 165 // true + S_BREAKPOINT = 3, // "breakpoint" + S_PROFBEGIN = 4, // "prof_begin" + S_PROFEND = 5, // "prof_end" + S_INCLUDE = 6, // "#include" + S_USINGTREE = 7, // "#using_animtree" + S_ANIMTREE = 8, // "#animtree" + S_ENDON = 9, // "endon" + S_NOTIFY = 10, // "notify" + S_WAIT = 11, // "wait" + S_WAITTILL = 12, // "waittill" + S_WAITTILLMATCH = 13, // "waittillmatch" + S_WAITTILLFRAMEEND = 14, // "waittillframeend" + S_IF = 15, // "if" + S_ELSE = 16, // "else" + S_WHILE = 17, // "while" + S_FOR = 18, // "for" + S_FOREACH = 19, // "foreach" + S_IN = 20, // "in" + S_SWITCH = 21, // "switch" + S_CASE = 22, // "case" + S_DEFAULT = 23, // "default" + S_BREAK = 24, // "break" + S_CONTINUE = 25, // "continue" + S_RETURN = 26, // "return" + S_THREAD = 27, // "thread" + S_CHILDTHREAD = 28, // "childthread" + S_THISTHREAD = 29, // "thisthread" + S_CALL = 30, // "call" + S_TRUE = 31, // "true" + S_FALSE = 32, // "false" + S_UNDEFINED = 33, // "undefined" + S_SIZE = 34, // ".size" + S_GAME = 35, // "game" + S_SELF = 36, // "self" + S_ANIM = 37, // "anim" + S_LEVEL = 38, // "level" + S_LPAREN = 39, // "(" + S_RPAREN = 40, // ")" + S_LBRACE = 41, // "{" + S_RBRACE = 42, // "}" + S_LBRACKET = 43, // "[" + S_RBRACKET = 44, // "]" + S_COMMA = 45, // "," + S_DOT = 46, // "." + S_DOUBLECOLON = 47, // "::" + S_COLON = 48, // ":" + S_SEMICOLON = 49, // ";" + S_INCREMENT = 50, // "++" + S_DECREMENT = 51, // "--" + S_LSHIFT = 52, // "<<" + S_RSHIFT = 53, // ">>" + S_OR = 54, // "||" + S_AND = 55, // "&&" + S_EQUALITY = 56, // "==" + S_INEQUALITY = 57, // "!=" + S_LESS_EQUAL = 58, // "<=" + S_GREATER_EQUAL = 59, // ">=" + S_LESS = 60, // "<" + S_GREATER = 61, // ">" + S_NOT = 62, // "!" + S_COMPLEMENT = 63, // "~" + S_ASSIGN = 64, // "=" + S_ASSIGN_ADD = 65, // "+=" + S_ASSIGN_SUB = 66, // "-=" + S_ASSIGN_MULT = 67, // "*=" + S_ASSIGN_DIV = 68, // "/=" + S_ASSIGN_MOD = 69, // "%=" + S_ASSIGN_BITWISE_OR = 70, // "|=" + S_ASSIGN_BITWISE_AND = 71, // "&=" + S_ASSIGN_BITWISE_EXOR = 72, // "^=" + S_ASSIGN_RSHIFT = 73, // ">>=" + S_ASSIGN_LSHIFT = 74, // "<<=" + S_BITWISE_OR = 75, // "|" + S_BITWISE_AND = 76, // "&" + S_BITWISE_EXOR = 77, // "^" + S_ADD = 78, // "+" + S_SUB = 79, // "-" + S_MULT = 80, // "*" + S_DIV = 81, // "/" + S_MOD = 82, // "%" + S_FILE = 83, // "file path" + S_NAME = 84, // "identifier" + S_STRING = 85, // "string literal" + S_ISTRING = 86, // "localized string" + S_FLOAT = 87, // "float" + S_INTEGER = 88, // "int" + S_ADD_ARRAY = 89, // ADD_ARRAY + S_THEN = 90, // THEN + S_NEG = 91, // NEG + S_ANIMREF = 92, // ANIMREF + S_PREINC = 93, // PREINC + S_PREDEC = 94, // PREDEC + S_POSTINC = 95, // POSTINC + S_POSTDEC = 96, // POSTDEC + S_YYACCEPT = 97, // $accept + S_root = 98, // root + S_program = 99, // program + S_include = 100, // include + S_define = 101, // define + S_usingtree = 102, // usingtree + S_constant = 103, // constant + S_thread = 104, // thread + S_parameters = 105, // parameters + S_stmt = 106, // stmt + S_stmt_block = 107, // stmt_block + S_stmt_list = 108, // stmt_list + S_stmt_call = 109, // stmt_call + S_stmt_assign = 110, // stmt_assign + S_stmt_endon = 111, // stmt_endon + S_stmt_notify = 112, // stmt_notify + S_stmt_wait = 113, // stmt_wait + S_stmt_waittill = 114, // stmt_waittill + S_stmt_waittillmatch = 115, // stmt_waittillmatch + S_stmt_waittillframeend = 116, // stmt_waittillframeend + S_stmt_if = 117, // stmt_if + S_stmt_ifelse = 118, // stmt_ifelse + S_stmt_while = 119, // stmt_while + S_stmt_for = 120, // stmt_for + S_stmt_foreach = 121, // stmt_foreach + S_stmt_switch = 122, // stmt_switch + S_stmt_case = 123, // stmt_case + S_stmt_default = 124, // stmt_default + S_stmt_break = 125, // stmt_break + S_stmt_continue = 126, // stmt_continue + S_stmt_return = 127, // stmt_return + S_stmt_breakpoint = 128, // stmt_breakpoint + S_stmt_prof_begin = 129, // stmt_prof_begin + S_stmt_prof_end = 130, // stmt_prof_end + S_for_stmt = 131, // for_stmt + S_for_expr = 132, // for_expr + S_expr = 133, // expr + S_expr_assign = 134, // expr_assign + S_expr_compare = 135, // expr_compare + S_expr_binary = 136, // expr_binary + S_expr_primitive = 137, // expr_primitive + S_expr_call = 138, // expr_call + S_expr_call_thread = 139, // expr_call_thread + S_expr_call_childthread = 140, // expr_call_childthread + S_expr_call_function = 141, // expr_call_function + S_expr_call_pointer = 142, // expr_call_pointer + S_expr_arguments = 143, // expr_arguments + S_expr_arguments_filled = 144, // expr_arguments_filled + S_expr_arguments_empty = 145, // expr_arguments_empty + S_expr_function = 146, // expr_function + S_expr_add_array = 147, // expr_add_array + S_expr_array = 148, // expr_array + S_expr_field = 149, // expr_field + S_expr_size = 150, // expr_size + S_object = 151, // object + S_thisthread = 152, // thisthread + S_empty_array = 153, // empty_array + S_undefined = 154, // undefined + S_game = 155, // game + S_self = 156, // self + S_anim = 157, // anim + S_level = 158, // level + S_animation = 159, // animation + S_animtree = 160, // animtree + S_name = 161, // name + S_file = 162, // file + S_istring = 163, // istring + S_string = 164, // string + S_vector = 165, // vector + S_neg_float = 166, // neg_float + S_neg_integer = 167, // neg_integer + S_float = 168, // float + S_integer = 169, // integer + S_false = 170, // false + S_true = 171 // true }; }; @@ -1080,6 +1098,10 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< stmt_break_ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.move< stmt_breakpoint_ptr > (std::move (that.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.move< stmt_call_ptr > (std::move (that.value)); break; @@ -1125,6 +1147,14 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< stmt_notify_ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.move< stmt_prof_begin_ptr > (std::move (that.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.move< stmt_prof_end_ptr > (std::move (that.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.move< stmt_ptr > (std::move (that.value)); @@ -1587,6 +1617,20 @@ namespace xsk { namespace gsc { namespace iw7 { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, stmt_breakpoint_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_breakpoint_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_call_ptr&& v, location_type&& l) : Base (t) @@ -1741,6 +1785,34 @@ namespace xsk { namespace gsc { namespace iw7 { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, stmt_prof_begin_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_prof_begin_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_prof_end_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_prof_end_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_ptr&& v, location_type&& l) : Base (t) @@ -2102,6 +2174,10 @@ switch (yykind) value.template destroy< stmt_break_ptr > (); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.template destroy< stmt_breakpoint_ptr > (); + break; + case symbol_kind::S_stmt_call: // stmt_call value.template destroy< stmt_call_ptr > (); break; @@ -2147,6 +2223,14 @@ switch (yykind) value.template destroy< stmt_notify_ptr > (); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.template destroy< stmt_prof_begin_ptr > (); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.template destroy< stmt_prof_end_ptr > (); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.template destroy< stmt_ptr > (); @@ -2409,6 +2493,51 @@ switch (yykind) return symbol_type (token::IW7UNDEF, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_BREAKPOINT (location_type l) + { + return symbol_type (token::BREAKPOINT, std::move (l)); + } +#else + static + symbol_type + make_BREAKPOINT (const location_type& l) + { + return symbol_type (token::BREAKPOINT, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_PROFBEGIN (location_type l) + { + return symbol_type (token::PROFBEGIN, std::move (l)); + } +#else + static + symbol_type + make_PROFBEGIN (const location_type& l) + { + return symbol_type (token::PROFBEGIN, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_PROFEND (location_type l) + { + return symbol_type (token::PROFEND, std::move (l)); + } +#else + static + symbol_type + make_PROFEND (const location_type& l) + { + return symbol_type (token::PROFEND, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4118,8 +4247,8 @@ switch (yykind) /// Constants. enum { - yylast_ = 1580, ///< Last index in yytable_. - yynnts_ = 72, ///< Number of nonterminal symbols. + yylast_ = 1591, ///< Last index in yytable_. + yynnts_ = 75, ///< Number of nonterminal symbols. yyfinal_ = 15 ///< Termination state number. }; @@ -4276,6 +4405,10 @@ switch (yykind) value.copy< stmt_break_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.copy< stmt_breakpoint_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.copy< stmt_call_ptr > (YY_MOVE (that.value)); break; @@ -4321,6 +4454,14 @@ switch (yykind) value.copy< stmt_notify_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.copy< stmt_prof_begin_ptr > (YY_MOVE (that.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.copy< stmt_prof_end_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.copy< stmt_ptr > (YY_MOVE (that.value)); @@ -4540,6 +4681,10 @@ switch (yykind) value.move< stmt_break_ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.move< stmt_breakpoint_ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.move< stmt_call_ptr > (YY_MOVE (s.value)); break; @@ -4585,6 +4730,14 @@ switch (yykind) value.move< stmt_notify_ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.move< stmt_prof_begin_ptr > (YY_MOVE (s.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.move< stmt_prof_end_ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.move< stmt_ptr > (YY_MOVE (s.value)); @@ -4709,7 +4862,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::iw7 -#line 4713 "parser.hpp" +#line 4866 "parser.hpp" diff --git a/src/s1/xsk/lexer.cpp b/src/s1/xsk/lexer.cpp index d1b802a0..ef65c383 100644 --- a/src/s1/xsk/lexer.cpp +++ b/src/s1/xsk/lexer.cpp @@ -553,8 +553,8 @@ static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 97 -#define YY_END_OF_BUFFER 98 +#define YY_NUM_RULES 100 +#define YY_END_OF_BUFFER 101 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -562,39 +562,42 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[286] = +static const flex_int16_t yy_accept[305] = { 0, - 0, 0, 0, 0, 0, 0, 98, 96, 1, 2, - 85, 96, 96, 84, 88, 96, 46, 47, 82, 80, - 52, 81, 53, 83, 95, 55, 56, 69, 79, 70, - 91, 50, 51, 89, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 48, - 87, 49, 86, 5, 6, 5, 9, 10, 9, 66, - 0, 93, 0, 0, 0, 0, 75, 0, 64, 0, - 77, 0, 0, 73, 57, 71, 58, 72, 94, 8, - 4, 3, 74, 94, 95, 0, 0, 54, 61, 67, - 65, 68, 62, 91, 78, 91, 91, 91, 91, 91, + 0, 0, 0, 0, 0, 0, 101, 99, 1, 2, + 88, 99, 99, 87, 91, 99, 49, 50, 85, 83, + 55, 84, 56, 86, 98, 58, 59, 72, 82, 73, + 94, 53, 54, 92, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 51, 90, 52, 89, 5, 6, 5, 9, 10, 9, + 69, 0, 96, 0, 0, 0, 0, 78, 0, 67, + 0, 80, 0, 0, 76, 60, 74, 61, 75, 97, + 0, 8, 4, 3, 77, 97, 98, 0, 0, 57, + 64, 70, 68, 71, 65, 94, 81, 94, 94, 94, - 91, 91, 91, 91, 91, 91, 22, 27, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 76, - 63, 7, 11, 0, 93, 0, 0, 0, 0, 0, - 92, 0, 0, 0, 0, 93, 0, 94, 3, 94, - 94, 90, 59, 60, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 25, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 0, 0, - 0, 0, 92, 0, 0, 92, 0, 44, 91, 37, - 29, 91, 91, 91, 23, 91, 91, 91, 42, 91, - 91, 91, 43, 41, 91, 91, 91, 38, 91, 17, + 94, 94, 94, 94, 94, 94, 94, 94, 25, 30, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 79, 66, 7, 11, 0, 96, 0, 0, 0, + 0, 0, 95, 0, 0, 0, 0, 96, 0, 97, + 0, 3, 97, 97, 93, 62, 63, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 28, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 0, 0, 0, 0, 95, 0, 0, 95, 0, + 0, 47, 94, 40, 32, 94, 94, 94, 26, 94, + 94, 94, 45, 94, 94, 94, 94, 46, 94, 94, - 91, 0, 0, 0, 31, 91, 91, 91, 15, 39, - 91, 45, 91, 91, 91, 91, 91, 91, 91, 91, - 24, 0, 0, 0, 91, 91, 91, 91, 16, 33, - 28, 91, 34, 91, 91, 91, 0, 0, 0, 91, - 91, 30, 26, 91, 91, 91, 91, 0, 12, 0, - 91, 32, 91, 91, 91, 18, 14, 0, 91, 91, - 40, 21, 91, 91, 0, 91, 36, 91, 91, 0, - 35, 91, 91, 0, 91, 91, 0, 91, 19, 0, - 91, 13, 91, 20, 0 + 94, 41, 94, 20, 94, 0, 0, 0, 44, 34, + 94, 94, 94, 18, 42, 94, 48, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 27, 0, 0, 0, + 94, 94, 94, 94, 94, 19, 94, 94, 36, 31, + 94, 37, 94, 94, 94, 0, 0, 0, 94, 94, + 94, 33, 29, 94, 94, 94, 94, 94, 94, 0, + 15, 0, 94, 94, 35, 94, 14, 94, 94, 94, + 21, 17, 0, 94, 94, 94, 94, 43, 24, 94, + 94, 0, 12, 94, 13, 39, 94, 94, 0, 38, + 94, 94, 0, 94, 94, 0, 94, 22, 0, 94, + + 16, 94, 23, 0 } ; static const YY_CHAR yy_ec[256] = @@ -611,8 +614,8 @@ static const YY_CHAR yy_ec[256] = 25, 26, 27, 28, 29, 1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 24, 39, 40, 41, 42, - 43, 24, 24, 44, 45, 46, 47, 48, 49, 24, - 50, 51, 52, 53, 54, 55, 1, 1, 1, 1, + 43, 44, 24, 45, 46, 47, 48, 49, 50, 24, + 51, 52, 53, 54, 55, 56, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -629,228 +632,240 @@ static const YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static const YY_CHAR yy_meta[56] = +static const YY_CHAR yy_meta[57] = { 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 4, 1, 1, 1, 1, 1, 4, 1, 5, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 1, 1, 1, 1 + 4, 4, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[300] = +static const flex_int16_t yy_base[319] = { 0, - 0, 0, 53, 54, 55, 56, 540, 541, 541, 541, - 517, 55, 33, 516, 64, 58, 541, 541, 515, 55, - 541, 60, 518, 73, 71, 516, 541, 70, 512, 71, - 507, 541, 541, 510, 57, 44, 70, 72, 75, 78, - 48, 76, 86, 79, 90, 93, 88, 84, 103, 541, - 81, 541, 541, 541, 541, 514, 541, 541, 513, 541, - 104, 541, 132, 487, 486, 482, 541, 118, 541, 119, - 541, 127, 138, 541, 541, 541, 541, 541, 120, 541, - 541, 0, 541, 121, 133, 134, 0, 541, 504, 541, - 541, 541, 503, 498, 541, 38, 120, 117, 135, 126, + 0, 0, 54, 55, 56, 57, 574, 575, 575, 575, + 551, 56, 35, 550, 63, 55, 575, 575, 549, 56, + 575, 55, 56, 74, 71, 551, 575, 54, 547, 70, + 542, 575, 575, 545, 53, 58, 64, 72, 73, 74, + 79, 84, 82, 85, 86, 88, 95, 97, 94, 107, + 575, 96, 575, 575, 575, 575, 549, 575, 575, 548, + 575, 120, 575, 127, 522, 521, 516, 575, 122, 575, + 115, 575, 126, 140, 575, 575, 575, 575, 575, 120, + 523, 575, 575, 0, 575, 121, 141, 135, 0, 575, + 538, 575, 575, 575, 537, 532, 575, 132, 128, 134, - 137, 122, 143, 139, 140, 144, 497, 496, 145, 148, - 149, 151, 152, 154, 160, 155, 156, 161, 162, 541, - 541, 541, 541, 185, 191, 202, 483, 488, 481, 192, - 541, 203, 200, 207, 204, 205, 212, 541, 0, 201, - 541, 492, 541, 541, 186, 194, 197, 206, 199, 196, - 215, 209, 208, 218, 220, 221, 222, 223, 224, 227, - 226, 231, 233, 232, 238, 239, 241, 242, 476, 476, - 473, 264, 265, 271, 266, 270, 277, 488, 255, 487, - 486, 262, 263, 257, 485, 258, 259, 272, 484, 273, - 279, 157, 483, 482, 280, 281, 285, 481, 282, 283, + 137, 139, 138, 142, 114, 143, 145, 146, 531, 530, + 150, 151, 152, 153, 156, 159, 163, 158, 160, 165, + 166, 575, 575, 575, 575, 189, 197, 202, 517, 522, + 515, 204, 575, 207, 205, 208, 209, 210, 213, 575, + 500, 0, 202, 575, 525, 575, 575, 199, 212, 187, + 195, 206, 198, 217, 215, 218, 222, 224, 225, 226, + 227, 228, 229, 231, 236, 230, 238, 241, 244, 243, + 245, 509, 509, 506, 268, 269, 276, 271, 273, 283, + 513, 520, 261, 519, 518, 258, 263, 262, 517, 270, + 272, 277, 516, 278, 279, 282, 287, 515, 289, 290, - 290, 460, 458, 468, 477, 284, 293, 294, 476, 475, - 296, 474, 295, 297, 299, 300, 305, 306, 307, 314, - 473, 454, 464, 467, 316, 315, 317, 320, 469, 468, - 467, 321, 466, 322, 324, 329, 457, 456, 459, 323, - 332, 462, 461, 334, 344, 330, 333, 452, 541, 443, - 346, 458, 349, 348, 350, 351, 541, 445, 357, 356, - 456, 455, 359, 364, 426, 362, 393, 367, 365, 372, - 391, 372, 370, 371, 373, 375, 380, 374, 384, 372, - 378, 541, 383, 379, 541, 420, 425, 430, 435, 438, - 440, 445, 450, 455, 460, 465, 357, 470, 475 + 293, 514, 291, 294, 296, 492, 490, 501, 575, 298, + 299, 301, 305, 510, 509, 302, 508, 307, 313, 309, + 312, 322, 324, 314, 310, 327, 507, 487, 498, 501, + 328, 330, 334, 336, 335, 503, 340, 337, 502, 501, + 342, 500, 338, 343, 344, 491, 490, 493, 350, 349, + 351, 496, 495, 355, 360, 363, 364, 366, 369, 486, + 575, 477, 370, 374, 492, 373, 491, 375, 377, 380, + 378, 575, 478, 376, 390, 389, 391, 489, 488, 392, + 395, 472, 486, 396, 472, 424, 400, 401, 402, 421, + 402, 406, 397, 407, 408, 406, 410, 352, 259, 409, + 575, 413, 200, 575, 451, 456, 461, 466, 469, 471, + 476, 481, 486, 491, 496, 84, 501, 506 } ; -static const flex_int16_t yy_def[300] = +static const flex_int16_t yy_def[319] = { 0, - 285, 1, 286, 286, 287, 287, 285, 285, 285, 285, - 285, 288, 285, 285, 285, 289, 285, 285, 285, 285, - 285, 285, 285, 285, 290, 285, 285, 285, 285, 285, - 291, 285, 285, 285, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 288, 285, 292, 285, 285, 285, 285, 293, 285, 294, - 285, 289, 295, 285, 285, 285, 285, 285, 285, 285, - 285, 296, 285, 285, 290, 290, 297, 285, 285, 285, - 285, 285, 285, 291, 285, 291, 291, 291, 291, 291, + 304, 1, 305, 305, 306, 306, 304, 304, 304, 304, + 304, 307, 304, 304, 304, 308, 304, 304, 304, 304, + 304, 304, 304, 304, 309, 304, 304, 304, 304, 304, + 310, 304, 304, 304, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 307, 304, 311, 304, 304, 304, 304, 312, 304, + 313, 304, 308, 314, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 315, 304, 304, 309, 309, 316, 304, + 304, 304, 304, 304, 304, 310, 304, 310, 310, 310, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 285, - 285, 285, 285, 288, 288, 292, 285, 285, 285, 293, - 285, 298, 294, 299, 289, 289, 295, 285, 296, 285, - 285, 297, 285, 285, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 285, 285, - 285, 293, 293, 298, 294, 294, 299, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 304, 304, 304, 304, 307, 307, 311, 304, 304, + 304, 312, 304, 317, 313, 318, 308, 308, 314, 304, + 304, 315, 304, 304, 316, 304, 304, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 304, 304, 304, 312, 312, 317, 313, 313, 318, + 304, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 291, 285, 285, 285, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 285, 285, 285, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 285, 285, 285, 291, - 291, 291, 291, 291, 291, 291, 291, 285, 285, 285, - 291, 291, 291, 291, 291, 291, 285, 285, 291, 291, - 291, 291, 291, 291, 285, 291, 291, 291, 291, 285, - 291, 291, 291, 285, 291, 291, 285, 291, 291, 285, - 291, 285, 291, 291, 0, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285 + 310, 310, 310, 310, 310, 304, 304, 304, 304, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 304, 304, 304, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 304, 304, 304, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 304, + 304, 304, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 304, 304, 310, 310, 310, 310, 310, 310, 310, + 310, 304, 310, 310, 310, 310, 310, 310, 304, 310, + 310, 310, 304, 310, 310, 304, 310, 310, 304, 310, + 304, 310, 310, 0, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304 } ; -static const flex_int16_t yy_nxt[597] = +static const flex_int16_t yy_nxt[632] = { 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 8, 33, 34, 31, 35, 36, 37, 38, 39, 40, 41, 31, 42, 31, 43, - 31, 44, 31, 45, 46, 47, 48, 31, 49, 31, - 31, 50, 51, 52, 53, 55, 55, 58, 58, 62, - 59, 59, 64, 87, 56, 56, 62, 75, 68, 87, - 65, 69, 70, 87, 77, 145, 76, 106, 80, 66, - 63, 78, 87, 73, 81, 71, 84, 97, 85, 82, - 89, 90, 92, 93, 83, 87, 87, 87, 96, 98, + 31, 44, 31, 45, 46, 47, 48, 49, 31, 50, + 31, 31, 51, 52, 53, 54, 56, 56, 59, 59, + 63, 60, 60, 63, 65, 57, 57, 69, 76, 78, + 70, 71, 66, 80, 91, 92, 79, 77, 89, 82, + 74, 64, 67, 89, 72, 83, 86, 145, 87, 89, + 84, 94, 95, 100, 98, 85, 89, 89, 89, 89, - 87, 87, 120, 87, 87, 101, 99, 104, 62, 87, - 107, 87, 100, 87, 102, 87, 103, 108, 87, 109, - 105, 110, 131, 111, 115, 117, 112, 131, 87, 63, - 113, 116, 118, 121, 61, 62, 125, 79, 140, 119, - 72, 114, 87, 132, 134, 87, 136, 87, 84, 285, - 85, 87, 73, 146, 138, 141, 147, 126, 87, 87, - 87, 148, 87, 137, 87, 87, 152, 150, 87, 87, - 87, 151, 149, 87, 87, 153, 87, 87, 154, 87, - 87, 87, 87, 155, 156, 87, 87, 87, 166, 62, - 160, 162, 157, 158, 159, 62, 131, 163, 167, 168, + 101, 81, 99, 106, 89, 103, 102, 89, 108, 89, + 89, 89, 104, 89, 105, 111, 107, 122, 109, 89, + 89, 114, 89, 133, 63, 110, 133, 112, 115, 62, + 113, 127, 89, 117, 63, 119, 120, 80, 143, 89, + 136, 118, 73, 121, 116, 64, 156, 134, 138, 123, + 304, 74, 128, 89, 140, 144, 86, 89, 87, 89, + 89, 149, 89, 89, 89, 139, 89, 89, 89, 148, + 89, 89, 154, 150, 152, 89, 89, 89, 89, 151, + 153, 89, 157, 89, 89, 89, 159, 155, 89, 158, + 89, 89, 169, 63, 162, 164, 165, 161, 160, 163, - 214, 165, 161, 164, 61, 130, 125, 173, 131, 133, - 63, 87, 62, 62, 72, 176, 63, 132, 140, 87, - 136, 87, 87, 179, 87, 134, 178, 126, 174, 73, - 73, 87, 177, 87, 87, 141, 180, 137, 182, 181, - 87, 183, 185, 87, 184, 87, 87, 87, 87, 87, - 186, 87, 87, 188, 189, 190, 87, 87, 87, 194, - 191, 193, 187, 87, 87, 197, 87, 87, 131, 131, - 192, 198, 199, 130, 131, 173, 195, 196, 131, 133, - 87, 201, 87, 87, 87, 176, 200, 87, 87, 132, - 132, 134, 210, 205, 206, 134, 174, 87, 87, 209, + 166, 63, 170, 171, 62, 168, 127, 167, 133, 132, + 135, 176, 89, 133, 64, 73, 179, 63, 63, 143, + 89, 138, 64, 89, 89, 89, 184, 128, 185, 134, + 136, 89, 177, 180, 74, 74, 144, 89, 139, 182, + 89, 183, 89, 89, 187, 186, 188, 89, 189, 89, + 89, 89, 89, 89, 89, 89, 89, 192, 193, 194, + 190, 89, 196, 89, 195, 198, 89, 191, 89, 89, + 89, 201, 133, 133, 202, 200, 197, 203, 132, 133, + 176, 133, 199, 89, 205, 135, 89, 89, 89, 204, + 211, 179, 301, 134, 134, 89, 136, 89, 136, 210, - 207, 211, 177, 208, 87, 87, 87, 87, 87, 87, - 87, 215, 212, 213, 217, 87, 218, 219, 87, 87, - 87, 87, 87, 221, 87, 87, 216, 228, 220, 225, - 87, 87, 87, 227, 226, 231, 232, 233, 230, 87, - 87, 87, 87, 234, 229, 87, 87, 87, 87, 87, - 235, 236, 240, 246, 87, 87, 243, 87, 87, 87, - 142, 241, 242, 245, 244, 252, 251, 253, 247, 87, - 255, 87, 256, 87, 87, 87, 87, 254, 260, 259, - 261, 87, 87, 262, 87, 263, 266, 87, 267, 87, - 87, 264, 87, 269, 271, 87, 272, 87, 87, 87, + 212, 177, 89, 89, 89, 215, 216, 89, 180, 213, + 219, 214, 89, 218, 89, 89, 89, 217, 89, 89, + 221, 89, 223, 89, 89, 224, 89, 89, 225, 227, + 89, 220, 89, 235, 89, 89, 222, 89, 89, 89, + 226, 231, 233, 237, 234, 232, 238, 89, 240, 89, + 239, 243, 89, 89, 244, 89, 242, 236, 241, 89, + 89, 89, 89, 89, 245, 89, 250, 89, 89, 89, + 249, 253, 258, 254, 89, 89, 89, 89, 255, 257, + 89, 251, 252, 259, 265, 89, 256, 263, 89, 89, + 266, 89, 267, 264, 89, 89, 268, 269, 89, 89, - 87, 276, 268, 87, 87, 282, 278, 281, 87, 87, - 273, 279, 275, 280, 277, 284, 87, 274, 87, 283, - 54, 54, 54, 54, 54, 57, 57, 57, 57, 57, - 61, 61, 61, 61, 61, 72, 72, 72, 72, 72, - 86, 86, 86, 94, 94, 124, 124, 124, 124, 124, - 130, 130, 130, 130, 130, 133, 133, 133, 133, 133, - 135, 135, 135, 135, 135, 139, 270, 139, 139, 139, - 172, 172, 172, 172, 172, 175, 175, 175, 175, 175, - 87, 87, 265, 87, 258, 257, 87, 87, 250, 249, - 248, 87, 87, 87, 87, 239, 238, 237, 87, 87, + 89, 89, 89, 89, 277, 89, 270, 275, 271, 278, + 276, 274, 280, 279, 89, 89, 89, 89, 281, 284, + 89, 89, 283, 286, 288, 89, 89, 89, 290, 291, + 285, 89, 89, 89, 89, 89, 287, 295, 89, 299, + 297, 296, 294, 300, 298, 303, 89, 292, 293, 89, + 302, 55, 55, 55, 55, 55, 58, 58, 58, 58, + 58, 62, 62, 62, 62, 62, 73, 73, 73, 73, + 73, 88, 88, 88, 96, 96, 126, 126, 126, 126, + 126, 132, 132, 132, 132, 132, 135, 135, 135, 135, + 135, 137, 137, 137, 137, 137, 142, 89, 142, 142, - 87, 87, 87, 224, 223, 222, 87, 87, 87, 87, - 87, 87, 87, 87, 204, 203, 202, 87, 171, 170, - 169, 87, 87, 87, 144, 143, 129, 128, 127, 123, - 122, 95, 87, 91, 88, 79, 74, 67, 60, 285, - 7, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285 + 142, 175, 175, 175, 175, 175, 178, 178, 178, 178, + 178, 89, 289, 89, 89, 282, 89, 89, 273, 272, + 89, 89, 262, 261, 260, 89, 89, 89, 89, 248, + 247, 246, 89, 89, 89, 89, 230, 229, 228, 89, + 89, 89, 89, 89, 89, 89, 209, 208, 207, 206, + 89, 181, 174, 173, 172, 89, 89, 89, 147, 146, + 141, 131, 130, 129, 125, 124, 97, 89, 93, 90, + 75, 68, 61, 304, 7, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304 } ; -static const flex_int16_t yy_chk[597] = +static const flex_int16_t yy_chk[632] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 4, 5, 6, 12, - 5, 6, 13, 96, 3, 4, 16, 20, 15, 36, - 13, 15, 15, 41, 22, 96, 20, 41, 24, 13, - 12, 22, 35, 16, 24, 15, 25, 36, 25, 24, - 28, 28, 30, 30, 24, 37, 25, 38, 35, 37, + 1, 1, 1, 1, 1, 1, 3, 4, 5, 6, + 12, 5, 6, 16, 13, 3, 4, 15, 20, 22, + 15, 15, 13, 23, 28, 28, 22, 20, 35, 24, + 16, 12, 13, 36, 15, 24, 25, 316, 25, 37, + 24, 30, 30, 37, 35, 24, 25, 38, 39, 40, - 39, 42, 51, 40, 44, 38, 37, 40, 61, 48, - 42, 43, 37, 47, 39, 45, 39, 42, 46, 43, - 40, 44, 68, 45, 47, 48, 46, 70, 49, 61, - 46, 47, 49, 51, 63, 72, 63, 79, 84, 49, - 73, 46, 98, 68, 70, 97, 73, 102, 85, 86, - 85, 100, 72, 97, 79, 84, 98, 63, 85, 86, - 99, 98, 101, 73, 104, 105, 102, 100, 103, 106, - 109, 101, 99, 110, 111, 103, 112, 113, 104, 114, - 116, 117, 192, 105, 106, 115, 118, 119, 117, 124, - 112, 114, 109, 110, 111, 125, 130, 115, 118, 119, + 37, 23, 36, 40, 41, 38, 37, 43, 41, 42, + 44, 45, 39, 46, 39, 43, 40, 52, 42, 49, + 47, 46, 48, 71, 62, 42, 69, 44, 47, 64, + 45, 64, 50, 48, 73, 49, 50, 80, 86, 105, + 71, 48, 74, 50, 47, 62, 105, 69, 74, 52, + 88, 73, 64, 99, 80, 86, 87, 98, 87, 100, + 88, 99, 101, 103, 102, 74, 87, 104, 106, 98, + 107, 108, 103, 100, 101, 111, 112, 113, 114, 100, + 102, 115, 106, 118, 116, 119, 108, 104, 117, 107, + 120, 121, 119, 126, 113, 115, 116, 112, 111, 114, - 192, 116, 113, 115, 126, 132, 126, 132, 133, 134, - 124, 145, 135, 136, 137, 134, 125, 130, 140, 146, - 137, 150, 147, 146, 149, 133, 145, 126, 132, 135, - 136, 148, 134, 153, 152, 140, 147, 137, 149, 148, - 151, 150, 152, 154, 151, 155, 156, 157, 158, 159, - 153, 161, 160, 155, 156, 157, 162, 164, 163, 161, - 158, 160, 154, 165, 166, 164, 167, 168, 172, 173, - 159, 165, 166, 174, 175, 174, 162, 163, 176, 177, - 179, 168, 184, 186, 187, 177, 167, 182, 183, 172, - 173, 175, 187, 179, 182, 176, 174, 188, 190, 186, + 117, 127, 120, 121, 128, 118, 128, 117, 132, 134, + 136, 134, 150, 135, 126, 139, 136, 137, 138, 143, + 151, 139, 127, 153, 148, 303, 150, 128, 151, 132, + 135, 152, 134, 136, 137, 138, 143, 149, 139, 148, + 155, 149, 154, 156, 153, 152, 154, 157, 155, 158, + 159, 160, 161, 162, 163, 166, 164, 158, 159, 160, + 156, 165, 162, 167, 161, 164, 168, 157, 170, 169, + 171, 167, 175, 176, 168, 166, 163, 169, 177, 178, + 177, 179, 165, 186, 171, 180, 183, 188, 187, 170, + 186, 180, 299, 175, 176, 190, 178, 191, 179, 183, - 183, 188, 177, 184, 191, 195, 196, 199, 200, 206, - 197, 195, 190, 191, 197, 201, 199, 200, 207, 208, - 213, 211, 214, 201, 215, 216, 196, 211, 200, 206, - 217, 218, 219, 208, 207, 215, 216, 217, 214, 220, - 226, 225, 227, 218, 213, 228, 232, 234, 240, 235, - 219, 220, 225, 235, 236, 246, 228, 241, 247, 244, - 297, 226, 227, 234, 232, 241, 240, 244, 236, 245, - 246, 251, 247, 254, 253, 255, 256, 245, 253, 251, - 254, 260, 259, 255, 263, 256, 259, 266, 260, 264, - 269, 256, 268, 264, 266, 273, 268, 272, 275, 278, + 187, 177, 192, 194, 195, 191, 192, 196, 180, 188, + 196, 190, 197, 195, 199, 200, 203, 194, 201, 204, + 199, 205, 201, 210, 211, 203, 212, 216, 204, 205, + 213, 197, 218, 216, 220, 225, 200, 221, 219, 224, + 204, 210, 212, 219, 213, 211, 219, 222, 221, 223, + 220, 224, 226, 231, 225, 232, 223, 218, 222, 233, + 235, 234, 238, 243, 226, 237, 232, 241, 244, 245, + 231, 235, 244, 237, 250, 249, 251, 298, 238, 243, + 254, 233, 234, 245, 251, 255, 241, 249, 256, 257, + 254, 258, 255, 250, 259, 263, 256, 257, 266, 264, - 276, 273, 263, 281, 284, 280, 275, 278, 283, 279, - 269, 276, 272, 277, 274, 283, 271, 270, 267, 281, - 286, 286, 286, 286, 286, 287, 287, 287, 287, 287, - 288, 288, 288, 288, 288, 289, 289, 289, 289, 289, - 290, 290, 290, 291, 291, 292, 292, 292, 292, 292, - 293, 293, 293, 293, 293, 294, 294, 294, 294, 294, - 295, 295, 295, 295, 295, 296, 265, 296, 296, 296, - 298, 298, 298, 298, 298, 299, 299, 299, 299, 299, - 262, 261, 258, 252, 250, 248, 243, 242, 239, 238, - 237, 233, 231, 230, 229, 224, 223, 222, 221, 212, + 268, 274, 269, 271, 268, 270, 258, 264, 259, 269, + 266, 263, 271, 270, 276, 275, 277, 280, 271, 275, + 281, 284, 274, 277, 281, 287, 288, 291, 284, 287, + 276, 292, 294, 295, 300, 297, 280, 292, 302, 296, + 294, 293, 291, 297, 295, 302, 290, 288, 289, 286, + 300, 305, 305, 305, 305, 305, 306, 306, 306, 306, + 306, 307, 307, 307, 307, 307, 308, 308, 308, 308, + 308, 309, 309, 309, 310, 310, 311, 311, 311, 311, + 311, 312, 312, 312, 312, 312, 313, 313, 313, 313, + 313, 314, 314, 314, 314, 314, 315, 285, 315, 315, - 210, 209, 205, 204, 203, 202, 198, 194, 193, 189, - 185, 181, 180, 178, 171, 170, 169, 142, 129, 128, - 127, 108, 107, 94, 93, 89, 66, 65, 64, 59, - 56, 34, 31, 29, 26, 23, 19, 14, 11, 7, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285 + 315, 317, 317, 317, 317, 317, 318, 318, 318, 318, + 318, 283, 282, 279, 278, 273, 267, 265, 262, 260, + 253, 252, 248, 247, 246, 242, 240, 239, 236, 230, + 229, 228, 227, 217, 215, 214, 208, 207, 206, 202, + 198, 193, 189, 185, 184, 182, 181, 174, 173, 172, + 145, 141, 131, 130, 129, 110, 109, 96, 95, 91, + 81, 67, 66, 65, 60, 57, 34, 31, 29, 26, + 19, 14, 11, 7, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304 } ; /* The intent behind this definition is that it'll catch @@ -871,9 +886,9 @@ static const flex_int16_t yy_chk[597] = #line 23 "lexer.lpp" #define YY_USER_ACTION loc.columns(yyleng); -#line 874 "lexer.cpp" +#line 889 "lexer.cpp" -#line 876 "lexer.cpp" +#line 891 "lexer.cpp" #define INITIAL 0 #define COMMENT_BLOCK_STATE 1 @@ -1141,7 +1156,7 @@ YY_DECL loc.step(); -#line 1144 "lexer.cpp" +#line 1159 "lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1168,13 +1183,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 286 ) + if ( yy_current_state >= 305 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 285 ); + while ( yy_current_state != 304 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -1255,443 +1270,458 @@ YY_RULE_SETUP case 12: YY_RULE_SETUP #line 59 "lexer.lpp" -{ return s1::parser::make_INCLUDE(loc); } +{ return s1::parser::make_BREAKPOINT(loc); } YY_BREAK case 13: YY_RULE_SETUP #line 60 "lexer.lpp" -{ return s1::parser::make_USINGTREE(loc); } +{ return s1::parser::make_PROFBEGIN(loc); } YY_BREAK case 14: YY_RULE_SETUP #line 61 "lexer.lpp" -{ return s1::parser::make_ANIMTREE(loc); } +{ return s1::parser::make_PROFEND(loc); } YY_BREAK case 15: YY_RULE_SETUP #line 62 "lexer.lpp" -{ return s1::parser::make_ENDON(loc); } +{ return s1::parser::make_INCLUDE(loc); } YY_BREAK case 16: YY_RULE_SETUP #line 63 "lexer.lpp" -{ return s1::parser::make_NOTIFY(loc); } +{ return s1::parser::make_USINGTREE(loc); } YY_BREAK case 17: YY_RULE_SETUP #line 64 "lexer.lpp" -{ return s1::parser::make_WAIT(loc); } +{ return s1::parser::make_ANIMTREE(loc); } YY_BREAK case 18: YY_RULE_SETUP #line 65 "lexer.lpp" -{ return s1::parser::make_WAITTILL(loc); } +{ return s1::parser::make_ENDON(loc); } YY_BREAK case 19: YY_RULE_SETUP #line 66 "lexer.lpp" -{ return s1::parser::make_WAITTILLMATCH(loc); } +{ return s1::parser::make_NOTIFY(loc); } YY_BREAK case 20: YY_RULE_SETUP #line 67 "lexer.lpp" -{ return s1::parser::make_WAITTILLFRAMEEND(loc); } +{ return s1::parser::make_WAIT(loc); } YY_BREAK case 21: YY_RULE_SETUP #line 68 "lexer.lpp" -{ return s1::parser::make_WAITFRAME(loc); } +{ return s1::parser::make_WAITTILL(loc); } YY_BREAK case 22: YY_RULE_SETUP #line 69 "lexer.lpp" -{ return s1::parser::make_IF(loc); } +{ return s1::parser::make_WAITTILLMATCH(loc); } YY_BREAK case 23: YY_RULE_SETUP #line 70 "lexer.lpp" -{ return s1::parser::make_ELSE(loc); } +{ return s1::parser::make_WAITTILLFRAMEEND(loc); } YY_BREAK case 24: YY_RULE_SETUP #line 71 "lexer.lpp" -{ return s1::parser::make_WHILE(loc); } +{ return s1::parser::make_WAITFRAME(loc); } YY_BREAK case 25: YY_RULE_SETUP #line 72 "lexer.lpp" -{ return s1::parser::make_FOR(loc); } +{ return s1::parser::make_IF(loc); } YY_BREAK case 26: YY_RULE_SETUP #line 73 "lexer.lpp" -{ return s1::parser::make_FOREACH(loc); } +{ return s1::parser::make_ELSE(loc); } YY_BREAK case 27: YY_RULE_SETUP #line 74 "lexer.lpp" -{ return s1::parser::make_IN(loc); } +{ return s1::parser::make_WHILE(loc); } YY_BREAK case 28: YY_RULE_SETUP #line 75 "lexer.lpp" -{ return s1::parser::make_SWITCH(loc); } +{ return s1::parser::make_FOR(loc); } YY_BREAK case 29: YY_RULE_SETUP #line 76 "lexer.lpp" -{ return s1::parser::make_CASE(loc); } +{ return s1::parser::make_FOREACH(loc); } YY_BREAK case 30: YY_RULE_SETUP #line 77 "lexer.lpp" -{ return s1::parser::make_DEFAULT(loc); } +{ return s1::parser::make_IN(loc); } YY_BREAK case 31: YY_RULE_SETUP #line 78 "lexer.lpp" -{ return s1::parser::make_BREAK(loc); } +{ return s1::parser::make_SWITCH(loc); } YY_BREAK case 32: YY_RULE_SETUP #line 79 "lexer.lpp" -{ return s1::parser::make_CONTINUE(loc); } +{ return s1::parser::make_CASE(loc); } YY_BREAK case 33: YY_RULE_SETUP #line 80 "lexer.lpp" -{ return s1::parser::make_RETURN(loc); } +{ return s1::parser::make_DEFAULT(loc); } YY_BREAK case 34: YY_RULE_SETUP #line 81 "lexer.lpp" -{ return s1::parser::make_THREAD(loc); } +{ return s1::parser::make_BREAK(loc); } YY_BREAK case 35: YY_RULE_SETUP #line 82 "lexer.lpp" -{ return s1::parser::make_CHILDTHREAD(loc); } +{ return s1::parser::make_CONTINUE(loc); } YY_BREAK case 36: YY_RULE_SETUP #line 83 "lexer.lpp" -{ return s1::parser::make_THISTHREAD(loc); } +{ return s1::parser::make_RETURN(loc); } YY_BREAK case 37: YY_RULE_SETUP #line 84 "lexer.lpp" -{ return s1::parser::make_CALL(loc); } +{ return s1::parser::make_THREAD(loc); } YY_BREAK case 38: YY_RULE_SETUP #line 85 "lexer.lpp" -{ return s1::parser::make_TRUE(loc); } +{ return s1::parser::make_CHILDTHREAD(loc); } YY_BREAK case 39: YY_RULE_SETUP #line 86 "lexer.lpp" -{ return s1::parser::make_FALSE(loc); } +{ return s1::parser::make_THISTHREAD(loc); } YY_BREAK case 40: YY_RULE_SETUP #line 87 "lexer.lpp" -{ return s1::parser::make_UNDEFINED(loc); } +{ return s1::parser::make_CALL(loc); } YY_BREAK case 41: YY_RULE_SETUP #line 88 "lexer.lpp" -{ return s1::parser::make_SIZE(loc); } +{ return s1::parser::make_TRUE(loc); } YY_BREAK case 42: YY_RULE_SETUP #line 89 "lexer.lpp" -{ return s1::parser::make_GAME(loc); } +{ return s1::parser::make_FALSE(loc); } YY_BREAK case 43: YY_RULE_SETUP #line 90 "lexer.lpp" -{ return s1::parser::make_SELF(loc); } +{ return s1::parser::make_UNDEFINED(loc); } YY_BREAK case 44: YY_RULE_SETUP #line 91 "lexer.lpp" -{ return s1::parser::make_ANIM(loc); } +{ return s1::parser::make_SIZE(loc); } YY_BREAK case 45: YY_RULE_SETUP #line 92 "lexer.lpp" -{ return s1::parser::make_LEVEL(loc); } +{ return s1::parser::make_GAME(loc); } YY_BREAK case 46: YY_RULE_SETUP #line 93 "lexer.lpp" -{ return s1::parser::make_LPAREN(loc); } +{ return s1::parser::make_SELF(loc); } YY_BREAK case 47: YY_RULE_SETUP #line 94 "lexer.lpp" -{ return s1::parser::make_RPAREN(loc); } +{ return s1::parser::make_ANIM(loc); } YY_BREAK case 48: YY_RULE_SETUP #line 95 "lexer.lpp" -{ return s1::parser::make_LBRACE(loc); } +{ return s1::parser::make_LEVEL(loc); } YY_BREAK case 49: YY_RULE_SETUP #line 96 "lexer.lpp" -{ return s1::parser::make_RBRACE(loc); } +{ return s1::parser::make_LPAREN(loc); } YY_BREAK case 50: YY_RULE_SETUP #line 97 "lexer.lpp" -{ return s1::parser::make_LBRACKET(loc); } +{ return s1::parser::make_RPAREN(loc); } YY_BREAK case 51: YY_RULE_SETUP #line 98 "lexer.lpp" -{ return s1::parser::make_RBRACKET(loc); } +{ return s1::parser::make_LBRACE(loc); } YY_BREAK case 52: YY_RULE_SETUP #line 99 "lexer.lpp" -{ return s1::parser::make_COMMA(loc); } +{ return s1::parser::make_RBRACE(loc); } YY_BREAK case 53: YY_RULE_SETUP #line 100 "lexer.lpp" -{ return s1::parser::make_DOT(loc); } +{ return s1::parser::make_LBRACKET(loc); } YY_BREAK case 54: YY_RULE_SETUP #line 101 "lexer.lpp" -{ return s1::parser::make_DOUBLECOLON(loc); } +{ return s1::parser::make_RBRACKET(loc); } YY_BREAK case 55: YY_RULE_SETUP #line 102 "lexer.lpp" -{ return s1::parser::make_COLON(loc); } +{ return s1::parser::make_COMMA(loc); } YY_BREAK case 56: YY_RULE_SETUP #line 103 "lexer.lpp" -{ return s1::parser::make_SEMICOLON(loc); } +{ return s1::parser::make_DOT(loc); } YY_BREAK case 57: YY_RULE_SETUP #line 104 "lexer.lpp" -{ return s1::parser::make_INCREMENT(loc); } +{ return s1::parser::make_DOUBLECOLON(loc); } YY_BREAK case 58: YY_RULE_SETUP #line 105 "lexer.lpp" -{ return s1::parser::make_DECREMENT(loc); } +{ return s1::parser::make_COLON(loc); } YY_BREAK case 59: YY_RULE_SETUP #line 106 "lexer.lpp" -{ return s1::parser::make_ASSIGN_LSHIFT(loc); } +{ return s1::parser::make_SEMICOLON(loc); } YY_BREAK case 60: YY_RULE_SETUP #line 107 "lexer.lpp" -{ return s1::parser::make_ASSIGN_RSHIFT(loc); } +{ return s1::parser::make_INCREMENT(loc); } YY_BREAK case 61: YY_RULE_SETUP #line 108 "lexer.lpp" -{ return s1::parser::make_LSHIFT(loc); } +{ return s1::parser::make_DECREMENT(loc); } YY_BREAK case 62: YY_RULE_SETUP #line 109 "lexer.lpp" -{ return s1::parser::make_RSHIFT(loc); } +{ return s1::parser::make_ASSIGN_LSHIFT(loc); } YY_BREAK case 63: YY_RULE_SETUP #line 110 "lexer.lpp" -{ return s1::parser::make_OR(loc); } +{ return s1::parser::make_ASSIGN_RSHIFT(loc); } YY_BREAK case 64: YY_RULE_SETUP #line 111 "lexer.lpp" -{ return s1::parser::make_AND(loc); } +{ return s1::parser::make_LSHIFT(loc); } YY_BREAK case 65: YY_RULE_SETUP #line 112 "lexer.lpp" -{ return s1::parser::make_EQUALITY(loc); } +{ return s1::parser::make_RSHIFT(loc); } YY_BREAK case 66: YY_RULE_SETUP #line 113 "lexer.lpp" -{ return s1::parser::make_INEQUALITY(loc); } +{ return s1::parser::make_OR(loc); } YY_BREAK case 67: YY_RULE_SETUP #line 114 "lexer.lpp" -{ return s1::parser::make_LESS_EQUAL(loc); } +{ return s1::parser::make_AND(loc); } YY_BREAK case 68: YY_RULE_SETUP #line 115 "lexer.lpp" -{ return s1::parser::make_GREATER_EQUAL(loc); } +{ return s1::parser::make_EQUALITY(loc); } YY_BREAK case 69: YY_RULE_SETUP #line 116 "lexer.lpp" -{ return s1::parser::make_LESS(loc); } +{ return s1::parser::make_INEQUALITY(loc); } YY_BREAK case 70: YY_RULE_SETUP #line 117 "lexer.lpp" -{ return s1::parser::make_GREATER(loc); } +{ return s1::parser::make_LESS_EQUAL(loc); } YY_BREAK case 71: YY_RULE_SETUP #line 118 "lexer.lpp" -{ return s1::parser::make_ASSIGN_ADD(loc); } +{ return s1::parser::make_GREATER_EQUAL(loc); } YY_BREAK case 72: YY_RULE_SETUP #line 119 "lexer.lpp" -{ return s1::parser::make_ASSIGN_SUB(loc); } +{ return s1::parser::make_LESS(loc); } YY_BREAK case 73: YY_RULE_SETUP #line 120 "lexer.lpp" -{ return s1::parser::make_ASSIGN_MULT(loc); } +{ return s1::parser::make_GREATER(loc); } YY_BREAK case 74: YY_RULE_SETUP #line 121 "lexer.lpp" -{ return s1::parser::make_ASSIGN_DIV(loc); } +{ return s1::parser::make_ASSIGN_ADD(loc); } YY_BREAK case 75: YY_RULE_SETUP #line 122 "lexer.lpp" -{ return s1::parser::make_ASSIGN_MOD(loc); } +{ return s1::parser::make_ASSIGN_SUB(loc); } YY_BREAK case 76: YY_RULE_SETUP #line 123 "lexer.lpp" -{ return s1::parser::make_ASSIGN_BITWISE_OR(loc); } +{ return s1::parser::make_ASSIGN_MULT(loc); } YY_BREAK case 77: YY_RULE_SETUP #line 124 "lexer.lpp" -{ return s1::parser::make_ASSIGN_BITWISE_AND(loc); } +{ return s1::parser::make_ASSIGN_DIV(loc); } YY_BREAK case 78: YY_RULE_SETUP #line 125 "lexer.lpp" -{ return s1::parser::make_ASSIGN_BITWISE_EXOR(loc); } +{ return s1::parser::make_ASSIGN_MOD(loc); } YY_BREAK case 79: YY_RULE_SETUP #line 126 "lexer.lpp" -{ return s1::parser::make_ASSIGN(loc); } +{ return s1::parser::make_ASSIGN_BITWISE_OR(loc); } YY_BREAK case 80: YY_RULE_SETUP #line 127 "lexer.lpp" -{ return s1::parser::make_ADD(loc); } +{ return s1::parser::make_ASSIGN_BITWISE_AND(loc); } YY_BREAK case 81: YY_RULE_SETUP #line 128 "lexer.lpp" -{ return s1::parser::make_SUB(loc); } +{ return s1::parser::make_ASSIGN_BITWISE_EXOR(loc); } YY_BREAK case 82: YY_RULE_SETUP #line 129 "lexer.lpp" -{ return s1::parser::make_MULT(loc); } +{ return s1::parser::make_ASSIGN(loc); } YY_BREAK case 83: YY_RULE_SETUP #line 130 "lexer.lpp" -{ return s1::parser::make_DIV(loc); } +{ return s1::parser::make_ADD(loc); } YY_BREAK case 84: YY_RULE_SETUP #line 131 "lexer.lpp" -{ return s1::parser::make_MOD(loc); } +{ return s1::parser::make_SUB(loc); } YY_BREAK case 85: YY_RULE_SETUP #line 132 "lexer.lpp" -{ return s1::parser::make_NOT(loc); } +{ return s1::parser::make_MULT(loc); } YY_BREAK case 86: YY_RULE_SETUP #line 133 "lexer.lpp" -{ return s1::parser::make_COMPLEMENT(loc); } +{ return s1::parser::make_DIV(loc); } YY_BREAK case 87: YY_RULE_SETUP #line 134 "lexer.lpp" -{ return s1::parser::make_BITWISE_OR(loc); } +{ return s1::parser::make_MOD(loc); } YY_BREAK case 88: YY_RULE_SETUP #line 135 "lexer.lpp" -{ return s1::parser::make_BITWISE_AND(loc); } +{ return s1::parser::make_NOT(loc); } YY_BREAK case 89: YY_RULE_SETUP #line 136 "lexer.lpp" -{ return s1::parser::make_BITWISE_EXOR(loc); } +{ return s1::parser::make_COMPLEMENT(loc); } YY_BREAK case 90: YY_RULE_SETUP #line 137 "lexer.lpp" -{ return s1::parser::make_FILE(utils::string::fordslash(yytext), loc); } +{ return s1::parser::make_BITWISE_OR(loc); } YY_BREAK case 91: YY_RULE_SETUP #line 138 "lexer.lpp" -{ return s1::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); } +{ return s1::parser::make_BITWISE_AND(loc); } YY_BREAK case 92: -/* rule 92 can match eol */ YY_RULE_SETUP #line 139 "lexer.lpp" -{ return s1::parser::make_ISTRING(std::string(yytext).substr(1), loc); } +{ return s1::parser::make_BITWISE_EXOR(loc); } YY_BREAK case 93: -/* rule 93 can match eol */ YY_RULE_SETUP #line 140 "lexer.lpp" -{ return s1::parser::make_STRING(std::string(yytext), loc); } +{ return s1::parser::make_FILE(utils::string::fordslash(yytext), loc); } YY_BREAK case 94: YY_RULE_SETUP #line 141 "lexer.lpp" -{ return s1::parser::make_FLOAT(std::string(yytext), loc); } +{ return s1::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); } YY_BREAK case 95: +/* rule 95 can match eol */ YY_RULE_SETUP #line 142 "lexer.lpp" +{ return s1::parser::make_ISTRING(std::string(yytext).substr(1), loc); } + YY_BREAK +case 96: +/* rule 96 can match eol */ +YY_RULE_SETUP +#line 143 "lexer.lpp" +{ return s1::parser::make_STRING(std::string(yytext), loc); } + YY_BREAK +case 97: +YY_RULE_SETUP +#line 144 "lexer.lpp" +{ return s1::parser::make_FLOAT(std::string(yytext), loc); } + YY_BREAK +case 98: +YY_RULE_SETUP +#line 145 "lexer.lpp" { return s1::parser::make_INTEGER(std::string(yytext), loc); } YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT_BLOCK_STATE): case YY_STATE_EOF(DEVELOPER_BLOCK_STATE): -#line 143 "lexer.lpp" +#line 146 "lexer.lpp" { return s1::parser::make_S1EOF(loc); } YY_BREAK -case 96: -/* rule 96 can match eol */ +case 99: +/* rule 99 can match eol */ YY_RULE_SETUP -#line 144 "lexer.lpp" +#line 147 "lexer.lpp" { throw s1::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); } YY_BREAK -case 97: +case 100: YY_RULE_SETUP -#line 146 "lexer.lpp" +#line 149 "lexer.lpp" ECHO; YY_BREAK -#line 1694 "lexer.cpp" +#line 1724 "lexer.cpp" case YY_END_OF_BUFFER: { @@ -1989,7 +2019,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 286 ) + if ( yy_current_state >= 305 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2018,11 +2048,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 286 ) + if ( yy_current_state >= 305 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 285); + yy_is_jam = (yy_current_state == 304); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -2821,6 +2851,6 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 146 "lexer.lpp" +#line 149 "lexer.lpp" diff --git a/src/s1/xsk/lexer.hpp b/src/s1/xsk/lexer.hpp index 6d8b6a37..29b11006 100644 --- a/src/s1/xsk/lexer.hpp +++ b/src/s1/xsk/lexer.hpp @@ -700,7 +700,7 @@ extern int yylex (yyscan_t yyscanner); #undef yyTABLES_NAME #endif -#line 146 "lexer.lpp" +#line 149 "lexer.lpp" #line 706 "lexer.hpp" diff --git a/src/s1/xsk/parser.cpp b/src/s1/xsk/parser.cpp index 5245817c..3fdfd00a 100644 --- a/src/s1/xsk/parser.cpp +++ b/src/s1/xsk/parser.cpp @@ -345,6 +345,10 @@ namespace xsk { namespace gsc { namespace s1 { value.YY_MOVE_OR_COPY< stmt_break_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.YY_MOVE_OR_COPY< stmt_breakpoint_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.YY_MOVE_OR_COPY< stmt_call_ptr > (YY_MOVE (that.value)); break; @@ -390,6 +394,14 @@ namespace xsk { namespace gsc { namespace s1 { value.YY_MOVE_OR_COPY< stmt_notify_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.YY_MOVE_OR_COPY< stmt_prof_begin_ptr > (YY_MOVE (that.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.YY_MOVE_OR_COPY< stmt_prof_end_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.YY_MOVE_OR_COPY< stmt_ptr > (YY_MOVE (that.value)); @@ -599,6 +611,10 @@ namespace xsk { namespace gsc { namespace s1 { value.move< stmt_break_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.move< stmt_breakpoint_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.move< stmt_call_ptr > (YY_MOVE (that.value)); break; @@ -644,6 +660,14 @@ namespace xsk { namespace gsc { namespace s1 { value.move< stmt_notify_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.move< stmt_prof_begin_ptr > (YY_MOVE (that.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.move< stmt_prof_end_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.move< stmt_ptr > (YY_MOVE (that.value)); @@ -853,6 +877,10 @@ namespace xsk { namespace gsc { namespace s1 { value.copy< stmt_break_ptr > (that.value); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.copy< stmt_breakpoint_ptr > (that.value); + break; + case symbol_kind::S_stmt_call: // stmt_call value.copy< stmt_call_ptr > (that.value); break; @@ -898,6 +926,14 @@ namespace xsk { namespace gsc { namespace s1 { value.copy< stmt_notify_ptr > (that.value); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.copy< stmt_prof_begin_ptr > (that.value); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.copy< stmt_prof_end_ptr > (that.value); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.copy< stmt_ptr > (that.value); @@ -1106,6 +1142,10 @@ namespace xsk { namespace gsc { namespace s1 { value.move< stmt_break_ptr > (that.value); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.move< stmt_breakpoint_ptr > (that.value); + break; + case symbol_kind::S_stmt_call: // stmt_call value.move< stmt_call_ptr > (that.value); break; @@ -1151,6 +1191,14 @@ namespace xsk { namespace gsc { namespace s1 { value.move< stmt_notify_ptr > (that.value); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.move< stmt_prof_begin_ptr > (that.value); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.move< stmt_prof_end_ptr > (that.value); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.move< stmt_ptr > (that.value); @@ -1614,6 +1662,10 @@ namespace xsk { namespace gsc { namespace s1 { yylhs.value.emplace< stmt_break_ptr > (); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + yylhs.value.emplace< stmt_breakpoint_ptr > (); + break; + case symbol_kind::S_stmt_call: // stmt_call yylhs.value.emplace< stmt_call_ptr > (); break; @@ -1659,6 +1711,14 @@ namespace xsk { namespace gsc { namespace s1 { yylhs.value.emplace< stmt_notify_ptr > (); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + yylhs.value.emplace< stmt_prof_begin_ptr > (); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + yylhs.value.emplace< stmt_prof_end_ptr > (); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt yylhs.value.emplace< stmt_ptr > (); @@ -1745,1177 +1805,1213 @@ namespace xsk { namespace gsc { namespace s1 { switch (yyn) { case 2: // root: program -#line 233 "parser.ypp" - { ast = std::move(yystack_[0].value.as < program_ptr > ()); } -#line 1751 "parser.cpp" - break; - - case 3: // root: %empty -#line 234 "parser.ypp" - { ast = std::make_unique(yylhs.location); } -#line 1757 "parser.cpp" - break; - - case 4: // program: program include #line 239 "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 1763 "parser.cpp" - break; - - case 5: // program: program define -#line 241 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } -#line 1769 "parser.cpp" - break; - - case 6: // program: include -#line 243 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } -#line 1775 "parser.cpp" - break; - - case 7: // program: define -#line 245 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } -#line 1781 "parser.cpp" - break; - - case 8: // include: "#include" file ";" -#line 250 "parser.ypp" - { yylhs.value.as < include_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < file_ptr > ())); } -#line 1787 "parser.cpp" - break; - - case 9: // define: usingtree -#line 254 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_usingtree = std::move(yystack_[0].value.as < usingtree_ptr > ()); } -#line 1793 "parser.cpp" - break; - - case 10: // define: constant -#line 255 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_constant = std::move(yystack_[0].value.as < constant_ptr > ()); } -#line 1799 "parser.cpp" - break; - - case 11: // define: thread -#line 256 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_thread = std::move(yystack_[0].value.as < thread_ptr > ()); } -#line 1805 "parser.cpp" - break; - - case 12: // usingtree: "#using_animtree" "(" string ")" ";" -#line 261 "parser.ypp" - { yylhs.value.as < usingtree_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < string_ptr > ())); } + { ast = std::move(yystack_[0].value.as < program_ptr > ()); } #line 1811 "parser.cpp" break; - case 13: // constant: name "=" expr ";" -#line 266 "parser.ypp" - { yylhs.value.as < constant_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 3: // root: %empty +#line 240 "parser.ypp" + { ast = std::make_unique(yylhs.location); } #line 1817 "parser.cpp" break; - case 14: // thread: name "(" parameters ")" stmt_block -#line 271 "parser.ypp" - { yylhs.value.as < thread_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < name_ptr > ()), std::move(yystack_[2].value.as < parameters_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } + case 4: // program: program include +#line 245 "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 1823 "parser.cpp" break; - case 15: // parameters: parameters "," name -#line 276 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::move(yystack_[2].value.as < parameters_ptr > ()); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } + case 5: // program: program define +#line 247 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1829 "parser.cpp" break; - case 16: // parameters: name -#line 278 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } + case 6: // program: include +#line 249 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } #line 1835 "parser.cpp" break; - case 17: // parameters: %empty -#line 280 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); } + case 7: // program: define +#line 251 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1841 "parser.cpp" break; - case 18: // stmt: stmt_block -#line 284 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_list = std::move(yystack_[0].value.as < stmt_list_ptr > ()); } + case 8: // include: "#include" file ";" +#line 256 "parser.ypp" + { yylhs.value.as < include_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < file_ptr > ())); } #line 1847 "parser.cpp" break; - case 19: // stmt: stmt_call -#line 285 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_call = std::move(yystack_[0].value.as < stmt_call_ptr > ()); } + case 9: // define: usingtree +#line 260 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_usingtree = std::move(yystack_[0].value.as < usingtree_ptr > ()); } #line 1853 "parser.cpp" break; - case 20: // stmt: stmt_assign -#line 286 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_assign = std::move(yystack_[0].value.as < stmt_assign_ptr > ()); } + case 10: // define: constant +#line 261 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_constant = std::move(yystack_[0].value.as < constant_ptr > ()); } #line 1859 "parser.cpp" break; - case 21: // stmt: stmt_endon -#line 287 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_endon = std::move(yystack_[0].value.as < stmt_endon_ptr > ()); } + case 11: // define: thread +#line 262 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_thread = std::move(yystack_[0].value.as < thread_ptr > ()); } #line 1865 "parser.cpp" break; - case 22: // stmt: stmt_notify -#line 288 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_notify = std::move(yystack_[0].value.as < stmt_notify_ptr > ()); } + case 12: // usingtree: "#using_animtree" "(" string ")" ";" +#line 267 "parser.ypp" + { yylhs.value.as < usingtree_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < string_ptr > ())); } #line 1871 "parser.cpp" break; - case 23: // stmt: stmt_wait -#line 289 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_wait = std::move(yystack_[0].value.as < stmt_wait_ptr > ()); } + case 13: // constant: name "=" expr ";" +#line 272 "parser.ypp" + { yylhs.value.as < constant_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } #line 1877 "parser.cpp" break; - case 24: // stmt: stmt_waittill -#line 290 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill_ptr > ()); } + case 14: // thread: name "(" parameters ")" stmt_block +#line 277 "parser.ypp" + { yylhs.value.as < thread_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < name_ptr > ()), std::move(yystack_[2].value.as < parameters_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } #line 1883 "parser.cpp" break; - case 25: // stmt: stmt_waittillmatch -#line 291 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch_ptr > ()); } + case 15: // parameters: parameters "," name +#line 282 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::move(yystack_[2].value.as < parameters_ptr > ()); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } #line 1889 "parser.cpp" break; - case 26: // stmt: stmt_waittillframeend -#line 292 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend_ptr > ()); } + case 16: // parameters: name +#line 284 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } #line 1895 "parser.cpp" break; - case 27: // stmt: stmt_waitframe -#line 293 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waitframe = std::move(yystack_[0].value.as < stmt_waitframe_ptr > ()); } + case 17: // parameters: %empty +#line 286 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); } #line 1901 "parser.cpp" break; - case 28: // stmt: stmt_if -#line 294 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_if = std::move(yystack_[0].value.as < stmt_if_ptr > ()); } + case 18: // stmt: stmt_block +#line 290 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_list = std::move(yystack_[0].value.as < stmt_list_ptr > ()); } #line 1907 "parser.cpp" break; - case 29: // stmt: stmt_ifelse -#line 295 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse_ptr > ()); } + case 19: // stmt: stmt_call +#line 291 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_call = std::move(yystack_[0].value.as < stmt_call_ptr > ()); } #line 1913 "parser.cpp" break; - case 30: // stmt: stmt_while -#line 296 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_while = std::move(yystack_[0].value.as < stmt_while_ptr > ()); } + case 20: // stmt: stmt_assign +#line 292 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_assign = std::move(yystack_[0].value.as < stmt_assign_ptr > ()); } #line 1919 "parser.cpp" break; - case 31: // stmt: stmt_for -#line 297 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_for = std::move(yystack_[0].value.as < stmt_for_ptr > ()); } + case 21: // stmt: stmt_endon +#line 293 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_endon = std::move(yystack_[0].value.as < stmt_endon_ptr > ()); } #line 1925 "parser.cpp" break; - case 32: // stmt: stmt_foreach -#line 298 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach_ptr > ()); } + case 22: // stmt: stmt_notify +#line 294 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_notify = std::move(yystack_[0].value.as < stmt_notify_ptr > ()); } #line 1931 "parser.cpp" break; - case 33: // stmt: stmt_switch -#line 299 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_switch = std::move(yystack_[0].value.as < stmt_switch_ptr > ()); } + case 23: // stmt: stmt_wait +#line 295 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_wait = std::move(yystack_[0].value.as < stmt_wait_ptr > ()); } #line 1937 "parser.cpp" break; - case 34: // stmt: stmt_case -#line 300 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_case = std::move(yystack_[0].value.as < stmt_case_ptr > ()); } + case 24: // stmt: stmt_waittill +#line 296 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill_ptr > ()); } #line 1943 "parser.cpp" break; - case 35: // stmt: stmt_default -#line 301 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_default = std::move(yystack_[0].value.as < stmt_default_ptr > ()); } + case 25: // stmt: stmt_waittillmatch +#line 297 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch_ptr > ()); } #line 1949 "parser.cpp" break; - case 36: // stmt: stmt_break -#line 302 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_break = std::move(yystack_[0].value.as < stmt_break_ptr > ()); } + case 26: // stmt: stmt_waittillframeend +#line 298 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend_ptr > ()); } #line 1955 "parser.cpp" break; - case 37: // stmt: stmt_continue -#line 303 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_continue = std::move(yystack_[0].value.as < stmt_continue_ptr > ()); } + case 27: // stmt: stmt_waitframe +#line 299 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waitframe = std::move(yystack_[0].value.as < stmt_waitframe_ptr > ()); } #line 1961 "parser.cpp" break; - case 38: // stmt: stmt_return -#line 304 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_return = std::move(yystack_[0].value.as < stmt_return_ptr > ()); } + case 28: // stmt: stmt_if +#line 300 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_if = std::move(yystack_[0].value.as < stmt_if_ptr > ()); } #line 1967 "parser.cpp" break; - case 39: // stmt_block: "{" stmt_list "}" -#line 308 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); } + case 29: // stmt: stmt_ifelse +#line 301 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse_ptr > ()); } #line 1973 "parser.cpp" break; - case 40: // stmt_block: "{" "}" -#line 309 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); } + case 30: // stmt: stmt_while +#line 302 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_while = std::move(yystack_[0].value.as < stmt_while_ptr > ()); } #line 1979 "parser.cpp" break; - case 41: // stmt_list: stmt_list stmt -#line 314 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 31: // stmt: stmt_for +#line 303 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_for = std::move(yystack_[0].value.as < stmt_for_ptr > ()); } #line 1985 "parser.cpp" break; - case 42: // stmt_list: stmt -#line 316 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 32: // stmt: stmt_foreach +#line 304 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach_ptr > ()); } #line 1991 "parser.cpp" break; - case 43: // stmt_call: expr_call ";" -#line 321 "parser.ypp" - { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } + case 33: // stmt: stmt_switch +#line 305 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_switch = std::move(yystack_[0].value.as < stmt_switch_ptr > ()); } #line 1997 "parser.cpp" break; - case 44: // stmt_call: expr_call_thread ";" -#line 323 "parser.ypp" - { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } + case 34: // stmt: stmt_case +#line 306 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_case = std::move(yystack_[0].value.as < stmt_case_ptr > ()); } #line 2003 "parser.cpp" break; - case 45: // stmt_assign: expr_assign ";" -#line 328 "parser.ypp" - { yylhs.value.as < stmt_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_assign_ptr > ())); } + case 35: // stmt: stmt_default +#line 307 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_default = std::move(yystack_[0].value.as < stmt_default_ptr > ()); } #line 2009 "parser.cpp" break; - case 46: // stmt_endon: object "endon" "(" expr ")" ";" -#line 333 "parser.ypp" - { yylhs.value.as < stmt_endon_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ())); } + case 36: // stmt: stmt_break +#line 308 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_break = std::move(yystack_[0].value.as < stmt_break_ptr > ()); } #line 2015 "parser.cpp" break; - case 47: // stmt_notify: object "notify" "(" expr "," expr_arguments ")" ";" -#line 338 "parser.ypp" - { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 37: // stmt: stmt_continue +#line 309 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_continue = std::move(yystack_[0].value.as < stmt_continue_ptr > ()); } #line 2021 "parser.cpp" break; - case 48: // stmt_notify: object "notify" "(" expr ")" ";" -#line 340 "parser.ypp" - { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 38: // stmt: stmt_return +#line 310 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_return = std::move(yystack_[0].value.as < stmt_return_ptr > ()); } #line 2027 "parser.cpp" break; - case 49: // stmt_wait: "wait" expr ";" -#line 345 "parser.ypp" - { yylhs.value.as < stmt_wait_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } + case 39: // stmt: stmt_breakpoint +#line 311 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_breakpoint = std::move(yystack_[0].value.as < stmt_breakpoint_ptr > ()); } #line 2033 "parser.cpp" break; - case 50: // stmt_waittill: object "waittill" "(" expr "," expr_arguments ")" ";" -#line 350 "parser.ypp" - { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 40: // stmt: stmt_prof_begin +#line 312 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_prof_begin = std::move(yystack_[0].value.as < stmt_prof_begin_ptr > ()); } #line 2039 "parser.cpp" break; - case 51: // stmt_waittill: object "waittill" "(" expr ")" ";" -#line 352 "parser.ypp" - { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 41: // stmt: stmt_prof_end +#line 313 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_prof_end = std::move(yystack_[0].value.as < stmt_prof_end_ptr > ()); } #line 2045 "parser.cpp" break; - case 52: // stmt_waittillmatch: object "waittillmatch" "(" expr "," expr_arguments ")" ";" -#line 357 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 42: // stmt_block: "{" stmt_list "}" +#line 317 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); } #line 2051 "parser.cpp" break; - case 53: // stmt_waittillmatch: object "waittillmatch" "(" expr ")" ";" -#line 359 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 43: // stmt_block: "{" "}" +#line 318 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); } #line 2057 "parser.cpp" break; - case 54: // stmt_waittillframeend: "waittillframeend" ";" -#line 364 "parser.ypp" - { yylhs.value.as < stmt_waittillframeend_ptr > () = std::make_unique(yylhs.location); } + case 44: // stmt_list: stmt_list stmt +#line 323 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2063 "parser.cpp" break; - case 55: // stmt_waitframe: "waitframe" ";" -#line 369 "parser.ypp" - { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } + case 45: // stmt_list: stmt +#line 325 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2069 "parser.cpp" break; - case 56: // stmt_waitframe: "waitframe" "(" ")" ";" -#line 371 "parser.ypp" - { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } + case 46: // stmt_call: expr_call ";" +#line 330 "parser.ypp" + { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } #line 2075 "parser.cpp" break; - case 57: // stmt_if: "if" "(" expr ")" stmt -#line 376 "parser.ypp" - { yylhs.value.as < stmt_if_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 47: // stmt_call: expr_call_thread ";" +#line 332 "parser.ypp" + { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } #line 2081 "parser.cpp" break; - case 58: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 381 "parser.ypp" - { yylhs.value.as < stmt_ifelse_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 48: // stmt_assign: expr_assign ";" +#line 337 "parser.ypp" + { yylhs.value.as < stmt_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_assign_ptr > ())); } #line 2087 "parser.cpp" break; - case 59: // stmt_while: "while" "(" expr ")" stmt -#line 386 "parser.ypp" - { yylhs.value.as < stmt_while_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 49: // stmt_endon: object "endon" "(" expr ")" ";" +#line 342 "parser.ypp" + { yylhs.value.as < stmt_endon_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ())); } #line 2093 "parser.cpp" break; - case 60: // stmt_for: "for" "(" for_stmt ";" for_expr ";" for_stmt ")" stmt -#line 391 "parser.ypp" - { yylhs.value.as < stmt_for_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[6].value.as < stmt_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 50: // stmt_notify: object "notify" "(" expr "," expr_arguments ")" ";" +#line 347 "parser.ypp" + { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2099 "parser.cpp" break; - case 61: // stmt_foreach: "foreach" "(" name "in" expr ")" stmt -#line 396 "parser.ypp" - { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 51: // stmt_notify: object "notify" "(" expr ")" ";" +#line 349 "parser.ypp" + { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2105 "parser.cpp" break; - case 62: // stmt_foreach: "foreach" "(" name "," name "in" expr ")" stmt -#line 398 "parser.ypp" - { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[6].value.as < name_ptr > ())), expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 52: // stmt_wait: "wait" expr ";" +#line 354 "parser.ypp" + { yylhs.value.as < stmt_wait_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2111 "parser.cpp" break; - case 63: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 403 "parser.ypp" - { yylhs.value.as < stmt_switch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } + case 53: // stmt_waittill: object "waittill" "(" expr "," expr_arguments ")" ";" +#line 359 "parser.ypp" + { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2117 "parser.cpp" break; - case 64: // stmt_case: "case" integer ":" -#line 408 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } + case 54: // stmt_waittill: object "waittill" "(" expr ")" ";" +#line 361 "parser.ypp" + { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2123 "parser.cpp" break; - case 65: // stmt_case: "case" neg_integer ":" -#line 410 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } + case 55: // stmt_waittillmatch: object "waittillmatch" "(" expr "," expr_arguments ")" ";" +#line 366 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2129 "parser.cpp" break; - case 66: // stmt_case: "case" string ":" -#line 412 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < string_ptr > ())), std::make_unique(yylhs.location)); } + case 56: // stmt_waittillmatch: object "waittillmatch" "(" expr ")" ";" +#line 368 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2135 "parser.cpp" break; - case 67: // stmt_default: "default" ":" -#line 417 "parser.ypp" - { yylhs.value.as < stmt_default_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } + case 57: // stmt_waittillframeend: "waittillframeend" ";" +#line 373 "parser.ypp" + { yylhs.value.as < stmt_waittillframeend_ptr > () = std::make_unique(yylhs.location); } #line 2141 "parser.cpp" break; - case 68: // stmt_break: "break" ";" -#line 422 "parser.ypp" - { yylhs.value.as < stmt_break_ptr > () = std::make_unique(yylhs.location); } + case 58: // stmt_waitframe: "waitframe" ";" +#line 378 "parser.ypp" + { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } #line 2147 "parser.cpp" break; - case 69: // stmt_continue: "continue" ";" -#line 427 "parser.ypp" - { yylhs.value.as < stmt_continue_ptr > () = std::make_unique(yylhs.location); } + case 59: // stmt_waitframe: "waitframe" "(" ")" ";" +#line 380 "parser.ypp" + { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } #line 2153 "parser.cpp" break; - case 70: // stmt_return: "return" expr ";" -#line 432 "parser.ypp" - { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } + case 60: // stmt_if: "if" "(" expr ")" stmt +#line 385 "parser.ypp" + { yylhs.value.as < stmt_if_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2159 "parser.cpp" break; - case 71: // stmt_return: "return" ";" -#line 434 "parser.ypp" - { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } + case 61: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 390 "parser.ypp" + { yylhs.value.as < stmt_ifelse_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2165 "parser.cpp" break; - case 72: // for_stmt: expr_assign -#line 438 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_list = std::make_unique(yylhs.location); yylhs.value.as < stmt_ptr > ().as_list->stmts.push_back(stmt_ptr(std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_assign_ptr > ())))); } + case 62: // stmt_while: "while" "(" expr ")" stmt +#line 395 "parser.ypp" + { yylhs.value.as < stmt_while_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2171 "parser.cpp" break; - case 73: // for_stmt: %empty -#line 439 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_node = std::make_unique(yylhs.location); } + case 63: // stmt_for: "for" "(" for_stmt ";" for_expr ";" for_stmt ")" stmt +#line 400 "parser.ypp" + { yylhs.value.as < stmt_for_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[6].value.as < stmt_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2177 "parser.cpp" break; - case 74: // for_expr: expr -#line 443 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 64: // stmt_foreach: "foreach" "(" name "in" expr ")" stmt +#line 405 "parser.ypp" + { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2183 "parser.cpp" break; - case 75: // for_expr: %empty -#line 444 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location); } + case 65: // stmt_foreach: "foreach" "(" name "," name "in" expr ")" stmt +#line 407 "parser.ypp" + { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[6].value.as < name_ptr > ())), expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2189 "parser.cpp" break; - case 76: // expr: expr_compare -#line 448 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 66: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 412 "parser.ypp" + { yylhs.value.as < stmt_switch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } #line 2195 "parser.cpp" break; - case 77: // expr: expr_binary -#line 449 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 67: // stmt_case: "case" integer ":" +#line 417 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } #line 2201 "parser.cpp" break; - case 78: // expr: expr_primitive -#line 450 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 68: // stmt_case: "case" neg_integer ":" +#line 419 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } #line 2207 "parser.cpp" break; - case 79: // expr_assign: "++" object -#line 454 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } + case 69: // stmt_case: "case" string ":" +#line 421 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < string_ptr > ())), std::make_unique(yylhs.location)); } #line 2213 "parser.cpp" break; - case 80: // expr_assign: "--" object -#line 455 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } + case 70: // stmt_default: "default" ":" +#line 426 "parser.ypp" + { yylhs.value.as < stmt_default_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2219 "parser.cpp" break; - case 81: // expr_assign: object "++" -#line 456 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 71: // stmt_break: "break" ";" +#line 431 "parser.ypp" + { yylhs.value.as < stmt_break_ptr > () = std::make_unique(yylhs.location); } #line 2225 "parser.cpp" break; - case 82: // expr_assign: object "--" -#line 457 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 72: // stmt_continue: "continue" ";" +#line 436 "parser.ypp" + { yylhs.value.as < stmt_continue_ptr > () = std::make_unique(yylhs.location); } #line 2231 "parser.cpp" break; - case 83: // expr_assign: object "=" expr -#line 458 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 73: // stmt_return: "return" expr ";" +#line 441 "parser.ypp" + { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2237 "parser.cpp" break; - case 84: // expr_assign: object "|=" expr -#line 459 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 74: // stmt_return: "return" ";" +#line 443 "parser.ypp" + { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2243 "parser.cpp" break; - case 85: // expr_assign: object "&=" expr -#line 460 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 75: // stmt_breakpoint: "breakpoint" ";" +#line 448 "parser.ypp" + { yylhs.value.as < stmt_breakpoint_ptr > () = std::make_unique(yylhs.location); } #line 2249 "parser.cpp" break; - case 86: // expr_assign: object "^=" expr -#line 461 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 76: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" +#line 453 "parser.ypp" + { yylhs.value.as < stmt_prof_begin_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2255 "parser.cpp" break; - case 87: // expr_assign: object "<<=" expr -#line 462 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()),std::move( yystack_[0].value.as < expr_ptr > ())); } + case 77: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" +#line 458 "parser.ypp" + { yylhs.value.as < stmt_prof_end_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2261 "parser.cpp" break; - case 88: // expr_assign: object ">>=" expr -#line 463 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 78: // for_stmt: expr_assign +#line 462 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_list = std::make_unique(yylhs.location); yylhs.value.as < stmt_ptr > ().as_list->stmts.push_back(stmt_ptr(std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_assign_ptr > ())))); } #line 2267 "parser.cpp" break; - case 89: // expr_assign: object "+=" expr -#line 464 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 79: // for_stmt: %empty +#line 463 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_node = std::make_unique(yylhs.location); } #line 2273 "parser.cpp" break; - case 90: // expr_assign: object "-=" expr -#line 465 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 80: // for_expr: expr +#line 467 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2279 "parser.cpp" break; - case 91: // expr_assign: object "*=" expr -#line 466 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 81: // for_expr: %empty +#line 468 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location); } #line 2285 "parser.cpp" break; - case 92: // expr_assign: object "/=" expr -#line 467 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 82: // expr: expr_compare +#line 472 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2291 "parser.cpp" break; - case 93: // expr_assign: object "%=" expr -#line 468 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 83: // expr: expr_binary +#line 473 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2297 "parser.cpp" break; - case 94: // expr_compare: expr "||" expr -#line 472 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 84: // expr: expr_primitive +#line 474 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2303 "parser.cpp" break; - case 95: // expr_compare: expr "&&" expr -#line 473 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 85: // expr_assign: "++" object +#line 478 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } #line 2309 "parser.cpp" break; - case 96: // expr_compare: expr "==" expr -#line 474 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 86: // expr_assign: "--" object +#line 479 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } #line 2315 "parser.cpp" break; - case 97: // expr_compare: expr "!=" expr -#line 475 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 87: // expr_assign: object "++" +#line 480 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2321 "parser.cpp" break; - case 98: // expr_compare: expr "<=" expr -#line 476 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 88: // expr_assign: object "--" +#line 481 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2327 "parser.cpp" break; - case 99: // expr_compare: expr ">=" expr -#line 477 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 89: // expr_assign: object "=" expr +#line 482 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2333 "parser.cpp" break; - case 100: // expr_compare: expr "<" expr -#line 478 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 90: // expr_assign: object "|=" expr +#line 483 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2339 "parser.cpp" break; - case 101: // expr_compare: expr ">" expr -#line 479 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 91: // expr_assign: object "&=" expr +#line 484 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2345 "parser.cpp" break; - case 102: // expr_binary: expr "|" expr -#line 483 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 92: // expr_assign: object "^=" expr +#line 485 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2351 "parser.cpp" break; - case 103: // expr_binary: expr "&" expr -#line 484 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 93: // expr_assign: object "<<=" expr +#line 486 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()),std::move( yystack_[0].value.as < expr_ptr > ())); } #line 2357 "parser.cpp" break; - case 104: // expr_binary: expr "^" expr -#line 485 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 94: // expr_assign: object ">>=" expr +#line 487 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2363 "parser.cpp" break; - case 105: // expr_binary: expr "<<" expr -#line 486 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 95: // expr_assign: object "+=" expr +#line 488 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2369 "parser.cpp" break; - case 106: // expr_binary: expr ">>" expr -#line 487 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 96: // expr_assign: object "-=" expr +#line 489 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2375 "parser.cpp" break; - case 107: // expr_binary: expr "+" expr -#line 488 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 97: // expr_assign: object "*=" expr +#line 490 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2381 "parser.cpp" break; - case 108: // expr_binary: expr "-" expr -#line 489 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 98: // expr_assign: object "/=" expr +#line 491 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2387 "parser.cpp" break; - case 109: // expr_binary: expr "*" expr -#line 490 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 99: // expr_assign: object "%=" expr +#line 492 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2393 "parser.cpp" break; - case 110: // expr_binary: expr "/" expr -#line 491 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 100: // expr_compare: expr "||" expr +#line 496 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2399 "parser.cpp" break; - case 111: // expr_binary: expr "%" expr -#line 492 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 101: // expr_compare: expr "&&" expr +#line 497 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2405 "parser.cpp" break; - case 112: // expr_primitive: "(" expr ")" -#line 496 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[1].value.as < expr_ptr > ()); } + case 102: // expr_compare: expr "==" expr +#line 498 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2411 "parser.cpp" break; - case 113: // expr_primitive: "~" expr -#line 497 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } + case 103: // expr_compare: expr "!=" expr +#line 499 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2417 "parser.cpp" break; - case 114: // expr_primitive: "!" expr -#line 498 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } + case 104: // expr_compare: expr "<=" expr +#line 500 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2423 "parser.cpp" break; - case 115: // expr_primitive: expr_call -#line 499 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 105: // expr_compare: expr ">=" expr +#line 501 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2429 "parser.cpp" break; - case 116: // expr_primitive: expr_call_thread -#line 500 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 106: // expr_compare: expr "<" expr +#line 502 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2435 "parser.cpp" break; - case 117: // expr_primitive: expr_call_childthread -#line 501 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 107: // expr_compare: expr ">" expr +#line 503 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2441 "parser.cpp" break; - case 118: // expr_primitive: expr_function -#line 502 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 108: // expr_binary: expr "|" expr +#line 507 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2447 "parser.cpp" break; - case 119: // expr_primitive: expr_add_array -#line 503 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 109: // expr_binary: expr "&" expr +#line 508 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2453 "parser.cpp" break; - case 120: // expr_primitive: expr_array -#line 504 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 110: // expr_binary: expr "^" expr +#line 509 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2459 "parser.cpp" break; - case 121: // expr_primitive: expr_field -#line 505 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 111: // expr_binary: expr "<<" expr +#line 510 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2465 "parser.cpp" break; - case 122: // expr_primitive: expr_size -#line 506 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 112: // expr_binary: expr ">>" expr +#line 511 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2471 "parser.cpp" break; - case 123: // expr_primitive: thisthread -#line 507 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < thisthread_ptr > ()); } + case 113: // expr_binary: expr "+" expr +#line 512 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2477 "parser.cpp" break; - case 124: // expr_primitive: empty_array -#line 508 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < empty_array_ptr > ()); } + case 114: // expr_binary: expr "-" expr +#line 513 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2483 "parser.cpp" break; - case 125: // expr_primitive: undefined -#line 509 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < undefined_ptr > ()); } + case 115: // expr_binary: expr "*" expr +#line 514 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2489 "parser.cpp" break; - case 126: // expr_primitive: game -#line 510 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < game_ptr > ()); } + case 116: // expr_binary: expr "/" expr +#line 515 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2495 "parser.cpp" break; - case 127: // expr_primitive: self -#line 511 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < self_ptr > ()); } + case 117: // expr_binary: expr "%" expr +#line 516 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2501 "parser.cpp" break; - case 128: // expr_primitive: anim -#line 512 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < anim_ptr > ()); } + case 118: // expr_primitive: "(" expr ")" +#line 520 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[1].value.as < expr_ptr > ()); } #line 2507 "parser.cpp" break; - case 129: // expr_primitive: level -#line 513 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < level_ptr > ()); } + case 119: // expr_primitive: "~" expr +#line 521 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2513 "parser.cpp" break; - case 130: // expr_primitive: animation -#line 514 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animation_ptr > ()); } + case 120: // expr_primitive: "!" expr +#line 522 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2519 "parser.cpp" break; - case 131: // expr_primitive: animtree -#line 515 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animtree_ptr > ()); } + case 121: // expr_primitive: expr_call +#line 523 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2525 "parser.cpp" break; - case 132: // expr_primitive: name -#line 516 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < name_ptr > ()); } + case 122: // expr_primitive: expr_call_thread +#line 524 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2531 "parser.cpp" break; - case 133: // expr_primitive: istring -#line 517 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < istring_ptr > ()); } + case 123: // expr_primitive: expr_call_childthread +#line 525 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2537 "parser.cpp" break; - case 134: // expr_primitive: string -#line 518 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < string_ptr > ()); } + case 124: // expr_primitive: expr_function +#line 526 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2543 "parser.cpp" break; - case 135: // expr_primitive: vector -#line 519 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < vector_ptr > ()); } + case 125: // expr_primitive: expr_add_array +#line 527 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2549 "parser.cpp" break; - case 136: // expr_primitive: neg_float -#line 520 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } + case 126: // expr_primitive: expr_array +#line 528 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2555 "parser.cpp" break; - case 137: // expr_primitive: neg_integer -#line 521 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } + case 127: // expr_primitive: expr_field +#line 529 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2561 "parser.cpp" break; - case 138: // expr_primitive: float -#line 522 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } + case 128: // expr_primitive: expr_size +#line 530 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2567 "parser.cpp" break; - case 139: // expr_primitive: integer -#line 523 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } + case 129: // expr_primitive: thisthread +#line 531 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < thisthread_ptr > ()); } #line 2573 "parser.cpp" break; - case 140: // expr_primitive: false -#line 524 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < false_ptr > ()); } + case 130: // expr_primitive: empty_array +#line 532 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < empty_array_ptr > ()); } #line 2579 "parser.cpp" break; - case 141: // expr_primitive: true -#line 525 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < true_ptr > ()); } + case 131: // expr_primitive: undefined +#line 533 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < undefined_ptr > ()); } #line 2585 "parser.cpp" break; - case 142: // expr_call: expr_call_function -#line 529 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 132: // expr_primitive: game +#line 534 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < game_ptr > ()); } #line 2591 "parser.cpp" break; - case 143: // expr_call: expr_call_pointer -#line 530 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 133: // expr_primitive: self +#line 535 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < self_ptr > ()); } #line 2597 "parser.cpp" break; - case 144: // expr_call: object expr_call_function -#line 531 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 134: // expr_primitive: anim +#line 536 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < anim_ptr > ()); } #line 2603 "parser.cpp" break; - case 145: // expr_call: object expr_call_pointer -#line 532 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 135: // expr_primitive: level +#line 537 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < level_ptr > ()); } #line 2609 "parser.cpp" break; - case 146: // expr_call_thread: "thread" expr_call_function -#line 536 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 136: // expr_primitive: animation +#line 538 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animation_ptr > ()); } #line 2615 "parser.cpp" break; - case 147: // expr_call_thread: "thread" expr_call_pointer -#line 537 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 137: // expr_primitive: animtree +#line 539 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animtree_ptr > ()); } #line 2621 "parser.cpp" break; - case 148: // expr_call_thread: object "thread" expr_call_function -#line 538 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 138: // expr_primitive: name +#line 540 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < name_ptr > ()); } #line 2627 "parser.cpp" break; - case 149: // expr_call_thread: object "thread" expr_call_pointer -#line 539 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 139: // expr_primitive: istring +#line 541 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < istring_ptr > ()); } #line 2633 "parser.cpp" break; - case 150: // expr_call_childthread: "childthread" expr_call_function -#line 543 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 140: // expr_primitive: string +#line 542 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < string_ptr > ()); } #line 2639 "parser.cpp" break; - case 151: // expr_call_childthread: "childthread" expr_call_pointer -#line 544 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 141: // expr_primitive: vector +#line 543 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < vector_ptr > ()); } #line 2645 "parser.cpp" break; - case 152: // expr_call_childthread: object "childthread" expr_call_function -#line 545 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 142: // expr_primitive: neg_float +#line 544 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } #line 2651 "parser.cpp" break; - case 153: // expr_call_childthread: object "childthread" expr_call_pointer -#line 546 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 143: // expr_primitive: neg_integer +#line 545 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } #line 2657 "parser.cpp" break; - case 154: // expr_call_function: name "(" expr_arguments ")" -#line 551 "parser.ypp" - {yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::make_unique(), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 144: // expr_primitive: float +#line 546 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } #line 2663 "parser.cpp" break; - case 155: // expr_call_function: file "::" name "(" expr_arguments ")" -#line 553 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < file_ptr > ()), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 145: // expr_primitive: integer +#line 547 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } #line 2669 "parser.cpp" break; - case 156: // expr_call_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 558 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, false, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 146: // expr_primitive: false +#line 548 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < false_ptr > ()); } #line 2675 "parser.cpp" break; - case 157: // expr_call_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 560 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, true, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 147: // expr_primitive: true +#line 549 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < true_ptr > ()); } #line 2681 "parser.cpp" break; - case 158: // expr_arguments: expr_arguments_filled -#line 564 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } + case 148: // expr_call: expr_call_function +#line 553 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2687 "parser.cpp" break; - case 159: // expr_arguments: expr_arguments_empty -#line 565 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } + case 149: // expr_call: expr_call_pointer +#line 554 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2693 "parser.cpp" break; - case 160: // expr_arguments_filled: expr_arguments "," expr -#line 570 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[2].value.as < expr_arguments_ptr > ()); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } + case 150: // expr_call: object expr_call_function +#line 555 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2699 "parser.cpp" break; - case 161: // expr_arguments_filled: expr -#line 572 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } + case 151: // expr_call: object expr_call_pointer +#line 556 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2705 "parser.cpp" break; - case 162: // expr_arguments_empty: %empty -#line 577 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); } + case 152: // expr_call_thread: "thread" expr_call_function +#line 560 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2711 "parser.cpp" break; - case 163: // expr_function: "::" name -#line 582 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < name_ptr > ())); } + case 153: // expr_call_thread: "thread" expr_call_pointer +#line 561 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2717 "parser.cpp" break; - case 164: // expr_function: file "::" name -#line 584 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < file_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } + case 154: // expr_call_thread: object "thread" expr_call_function +#line 562 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2723 "parser.cpp" break; - case 165: // expr_add_array: "[" expr_arguments_filled "]" -#line 589 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 155: // expr_call_thread: object "thread" expr_call_pointer +#line 563 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2729 "parser.cpp" break; - case 166: // expr_array: object "[" expr "]" -#line 594 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < node_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 156: // expr_call_childthread: "childthread" expr_call_function +#line 567 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2735 "parser.cpp" break; - case 167: // expr_field: object "." name -#line 599 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } + case 157: // expr_call_childthread: "childthread" expr_call_pointer +#line 568 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2741 "parser.cpp" break; - case 168: // expr_size: object "." "size" -#line 604 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ())); } + case 158: // expr_call_childthread: object "childthread" expr_call_function +#line 569 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2747 "parser.cpp" break; - case 169: // object: expr_call -#line 608 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 159: // expr_call_childthread: object "childthread" expr_call_pointer +#line 570 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2753 "parser.cpp" break; - case 170: // object: expr_array -#line 609 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } + case 160: // expr_call_function: name "(" expr_arguments ")" +#line 575 "parser.ypp" + {yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::make_unique(), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2759 "parser.cpp" break; - case 171: // object: expr_field -#line 610 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } + case 161: // expr_call_function: file "::" name "(" expr_arguments ")" +#line 577 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < file_ptr > ()), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2765 "parser.cpp" break; - case 172: // object: game -#line 611 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < game_ptr > ()); } + case 162: // expr_call_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 582 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, false, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2771 "parser.cpp" break; - case 173: // object: self -#line 612 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < self_ptr > ()); } + case 163: // expr_call_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 584 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, true, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2777 "parser.cpp" break; - case 174: // object: anim -#line 613 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < anim_ptr > ()); } + case 164: // expr_arguments: expr_arguments_filled +#line 588 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } #line 2783 "parser.cpp" break; - case 175: // object: level -#line 614 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < level_ptr > ()); } + case 165: // expr_arguments: expr_arguments_empty +#line 589 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } #line 2789 "parser.cpp" break; - case 176: // object: name -#line 615 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < name_ptr > ()); } + case 166: // expr_arguments_filled: expr_arguments "," expr +#line 594 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[2].value.as < expr_arguments_ptr > ()); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2795 "parser.cpp" break; - case 177: // thisthread: "thisthread" -#line 618 "parser.ypp" - { yylhs.value.as < thisthread_ptr > () = std::make_unique(yylhs.location); } + case 167: // expr_arguments_filled: expr +#line 596 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2801 "parser.cpp" break; - case 178: // empty_array: "[" "]" -#line 619 "parser.ypp" - { yylhs.value.as < empty_array_ptr > () = std::make_unique(yylhs.location); } + case 168: // expr_arguments_empty: %empty +#line 601 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); } #line 2807 "parser.cpp" break; - case 179: // undefined: "undefined" -#line 620 "parser.ypp" - { yylhs.value.as < undefined_ptr > () = std::make_unique(yylhs.location); } + case 169: // expr_function: "::" name +#line 606 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2813 "parser.cpp" break; - case 180: // game: "game" -#line 621 "parser.ypp" - { yylhs.value.as < game_ptr > () = std::make_unique(yylhs.location); } + case 170: // expr_function: file "::" name +#line 608 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < file_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2819 "parser.cpp" break; - case 181: // self: "self" -#line 622 "parser.ypp" - { yylhs.value.as < self_ptr > () = std::make_unique(yylhs.location); } + case 171: // expr_add_array: "[" expr_arguments_filled "]" +#line 613 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2825 "parser.cpp" break; - case 182: // anim: "anim" -#line 623 "parser.ypp" - { yylhs.value.as < anim_ptr > () = std::make_unique(yylhs.location); } + case 172: // expr_array: object "[" expr "]" +#line 618 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < node_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2831 "parser.cpp" break; - case 183: // level: "level" -#line 624 "parser.ypp" - { yylhs.value.as < level_ptr > () = std::make_unique(yylhs.location); } + case 173: // expr_field: object "." name +#line 623 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2837 "parser.cpp" break; - case 184: // animation: "%" "identifier" -#line 625 "parser.ypp" - { yylhs.value.as < animation_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 174: // expr_size: object ".size" +#line 628 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2843 "parser.cpp" break; - case 185: // animtree: "#animtree" -#line 626 "parser.ypp" - { yylhs.value.as < animtree_ptr > () = std::make_unique(yylhs.location); } + case 175: // object: expr_call +#line 632 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2849 "parser.cpp" break; - case 186: // name: "identifier" -#line 627 "parser.ypp" - { yylhs.value.as < name_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 176: // object: expr_array +#line 633 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2855 "parser.cpp" break; - case 187: // file: "file path" -#line 628 "parser.ypp" - { yylhs.value.as < file_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 177: // object: expr_field +#line 634 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2861 "parser.cpp" break; - case 188: // istring: "localized string" -#line 629 "parser.ypp" - { yylhs.value.as < istring_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 178: // object: game +#line 635 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < game_ptr > ()); } #line 2867 "parser.cpp" break; - case 189: // string: "string literal" -#line 630 "parser.ypp" - { yylhs.value.as < string_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 179: // object: self +#line 636 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < self_ptr > ()); } #line 2873 "parser.cpp" break; - case 190: // vector: "(" expr "," expr "," expr ")" -#line 631 "parser.ypp" - { yylhs.value.as < vector_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[3].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 180: // object: anim +#line 637 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < anim_ptr > ()); } #line 2879 "parser.cpp" break; - case 191: // neg_float: "-" "float" -#line 632 "parser.ypp" - { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 181: // object: level +#line 638 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < level_ptr > ()); } #line 2885 "parser.cpp" break; - case 192: // neg_integer: "-" "int" -#line 633 "parser.ypp" - { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 182: // object: name +#line 639 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < name_ptr > ()); } #line 2891 "parser.cpp" break; - case 193: // float: "float" -#line 634 "parser.ypp" - { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 183: // thisthread: "thisthread" +#line 642 "parser.ypp" + { yylhs.value.as < thisthread_ptr > () = std::make_unique(yylhs.location); } #line 2897 "parser.cpp" break; - case 194: // integer: "int" -#line 635 "parser.ypp" - { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 184: // empty_array: "[" "]" +#line 643 "parser.ypp" + { yylhs.value.as < empty_array_ptr > () = std::make_unique(yylhs.location); } #line 2903 "parser.cpp" break; - case 195: // false: "false" -#line 636 "parser.ypp" - { yylhs.value.as < false_ptr > () = std::make_unique(yylhs.location); } + case 185: // undefined: "undefined" +#line 644 "parser.ypp" + { yylhs.value.as < undefined_ptr > () = std::make_unique(yylhs.location); } #line 2909 "parser.cpp" break; - case 196: // true: "true" -#line 637 "parser.ypp" - { yylhs.value.as < true_ptr > () = std::make_unique(yylhs.location); } + case 186: // game: "game" +#line 645 "parser.ypp" + { yylhs.value.as < game_ptr > () = std::make_unique(yylhs.location); } #line 2915 "parser.cpp" break; + case 187: // self: "self" +#line 646 "parser.ypp" + { yylhs.value.as < self_ptr > () = std::make_unique(yylhs.location); } +#line 2921 "parser.cpp" + break; -#line 2919 "parser.cpp" + case 188: // anim: "anim" +#line 647 "parser.ypp" + { yylhs.value.as < anim_ptr > () = std::make_unique(yylhs.location); } +#line 2927 "parser.cpp" + break; + + case 189: // level: "level" +#line 648 "parser.ypp" + { yylhs.value.as < level_ptr > () = std::make_unique(yylhs.location); } +#line 2933 "parser.cpp" + break; + + case 190: // animation: "%" "identifier" +#line 649 "parser.ypp" + { yylhs.value.as < animation_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2939 "parser.cpp" + break; + + case 191: // animtree: "#animtree" +#line 650 "parser.ypp" + { yylhs.value.as < animtree_ptr > () = std::make_unique(yylhs.location); } +#line 2945 "parser.cpp" + break; + + case 192: // name: "identifier" +#line 651 "parser.ypp" + { yylhs.value.as < name_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2951 "parser.cpp" + break; + + case 193: // file: "file path" +#line 652 "parser.ypp" + { yylhs.value.as < file_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2957 "parser.cpp" + break; + + case 194: // istring: "localized string" +#line 653 "parser.ypp" + { yylhs.value.as < istring_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2963 "parser.cpp" + break; + + case 195: // string: "string literal" +#line 654 "parser.ypp" + { yylhs.value.as < string_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2969 "parser.cpp" + break; + + case 196: // vector: "(" expr "," expr "," expr ")" +#line 655 "parser.ypp" + { yylhs.value.as < vector_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[3].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } +#line 2975 "parser.cpp" + break; + + case 197: // neg_float: "-" "float" +#line 656 "parser.ypp" + { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 2981 "parser.cpp" + break; + + case 198: // neg_integer: "-" "int" +#line 657 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 2987 "parser.cpp" + break; + + case 199: // float: "float" +#line 658 "parser.ypp" + { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2993 "parser.cpp" + break; + + case 200: // integer: "int" +#line 659 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2999 "parser.cpp" + break; + + case 201: // false: "false" +#line 660 "parser.ypp" + { yylhs.value.as < false_ptr > () = std::make_unique(yylhs.location); } +#line 3005 "parser.cpp" + break; + + case 202: // true: "true" +#line 661 "parser.ypp" + { yylhs.value.as < true_ptr > () = std::make_unique(yylhs.location); } +#line 3011 "parser.cpp" + break; + + +#line 3015 "parser.cpp" default: break; @@ -3099,24 +3195,26 @@ namespace xsk { namespace gsc { namespace s1 { { static const char *const yy_sname[] = { - "end of file", "error", "invalid token", "#include", "#using_animtree", - "#animtree", "endon", "notify", "wait", "waittill", "waittillmatch", - "waittillframeend", "waitframe", "if", "else", "while", "for", "foreach", - "in", "switch", "case", "default", "break", "continue", "return", - "thread", "childthread", "thisthread", "call", "true", "false", - "undefined", "size", "game", "self", "anim", "level", "(", ")", "{", "}", - "[", "]", ",", ".", "::", ":", ";", "++", "--", "<<", ">>", "||", "&&", - "==", "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", - "%=", "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", - "%", "file path", "identifier", "string literal", "localized string", - "float", "int", "ADD_ARRAY", "THEN", "NEG", "ANIMREF", "PREINC", - "PREDEC", "POSTINC", "POSTDEC", "$accept", "root", "program", "include", - "define", "usingtree", "constant", "thread", "parameters", "stmt", - "stmt_block", "stmt_list", "stmt_call", "stmt_assign", "stmt_endon", - "stmt_notify", "stmt_wait", "stmt_waittill", "stmt_waittillmatch", + "end of file", "error", "invalid token", "breakpoint", "prof_begin", + "prof_end", "#include", "#using_animtree", "#animtree", "endon", + "notify", "wait", "waittill", "waittillmatch", "waittillframeend", + "waitframe", "if", "else", "while", "for", "foreach", "in", "switch", + "case", "default", "break", "continue", "return", "thread", + "childthread", "thisthread", "call", "true", "false", "undefined", + ".size", "game", "self", "anim", "level", "(", ")", "{", "}", "[", "]", + ",", ".", "::", ":", ";", "++", "--", "<<", ">>", "||", "&&", "==", "!=", + "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", "|=", + "&=", "^=", ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", "%", + "file path", "identifier", "string literal", "localized string", "float", + "int", "ADD_ARRAY", "THEN", "NEG", "ANIMREF", "PREINC", "PREDEC", + "POSTINC", "POSTDEC", "$accept", "root", "program", "include", "define", + "usingtree", "constant", "thread", "parameters", "stmt", "stmt_block", + "stmt_list", "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", + "stmt_wait", "stmt_waittill", "stmt_waittillmatch", "stmt_waittillframeend", "stmt_waitframe", "stmt_if", "stmt_ifelse", "stmt_while", "stmt_for", "stmt_foreach", "stmt_switch", "stmt_case", - "stmt_default", "stmt_break", "stmt_continue", "stmt_return", "for_stmt", + "stmt_default", "stmt_break", "stmt_continue", "stmt_return", + "stmt_breakpoint", "stmt_prof_begin", "stmt_prof_end", "for_stmt", "for_expr", "expr", "expr_assign", "expr_compare", "expr_binary", "expr_primitive", "expr_call", "expr_call_thread", "expr_call_childthread", "expr_call_function", "expr_call_pointer", @@ -3390,513 +3488,532 @@ namespace xsk { namespace gsc { namespace s1 { } - const short parser::yypact_ninf_ = -230; + const short parser::yypact_ninf_ = -236; - const short parser::yytable_ninf_ = -177; + const short parser::yytable_ninf_ = -183; const short parser::yypact_[] = { - 7, -67, -20, -230, 53, 7, -230, -230, -230, -230, - -230, -21, -230, 13, -10, -230, -230, -230, -3, 607, - -230, -230, 25, -15, -230, -230, 41, 41, -230, 29, - -230, -230, -230, -230, -230, -230, -230, 607, 480, -3, - 607, 607, -50, -1, -230, -230, -230, 1341, -230, -230, - -230, 18, -230, -230, -230, -230, -230, -230, 23, 30, - -230, 332, -230, -230, -230, 446, 507, 569, 573, -230, - -230, -4, 38, -230, -230, -230, -230, -230, -230, -230, - -230, -230, 47, 85, -3, 56, -230, -230, 84, 64, - -230, -230, 86, 905, 480, -230, 1419, 90, 95, -230, - -230, -230, -230, -230, -230, -230, -230, 607, 607, 607, - 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, - 607, 607, 607, 607, 607, 41, 41, 669, -17, -230, - -230, 607, -3, -230, 787, -230, -230, 607, -3, 607, - -230, 607, 1212, 607, -230, 124, 124, 1429, 938, 1501, - 1501, 40, 40, 40, 40, 981, 1460, 1470, 101, 101, - -230, -230, -230, -230, -230, -230, -230, 1251, -230, -230, - -13, -230, 103, 607, 94, -18, 123, 126, 128, 130, - 131, 9, 125, 135, 138, 545, -230, 732, 732, -230, - -230, 826, -230, -230, -230, -230, -230, -230, -230, -230, - -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, - -230, -230, 139, 143, 148, -230, -230, 715, -230, -230, - -230, -230, 84, 1212, 103, 1290, 1328, 133, 1419, -230, - -230, 607, 1375, -230, 132, -230, 607, 607, 630, -3, - 607, 91, 151, 159, 160, -230, -230, -230, -230, 1388, - -230, 6, 6, -230, -230, -230, -230, -230, 152, 172, - 173, 174, -3, -230, -230, 607, 607, 607, 607, 607, - 607, 607, 607, 607, 607, 607, 170, 607, 176, 14, - -230, 177, 1044, 1077, 178, -230, 868, 2, 1087, -230, - -230, -230, -230, 607, 607, 607, 607, 1419, 1419, 1419, - 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 182, 1120, - 607, -230, -230, 865, 865, 607, 607, -3, 85, 1130, - 948, 991, 1034, 607, -230, 42, 207, -230, 187, 1419, - 1163, 205, -230, 188, 190, 607, 193, 607, 195, 607, - 55, -230, 865, 630, 865, 607, -230, -230, 58, -230, - 70, -230, 72, -230, -230, 206, -230, 1173, 198, 199, - 200, 865, 865, -230, -230, -230, -230, -230 + 8, -65, -6, -236, 25, 8, -236, -236, -236, -236, + -236, -32, -236, -8, -28, -236, -236, -236, -17, 774, + -236, -236, 21, 30, -236, -236, 6, 6, -236, 51, + -236, -236, -236, -236, -236, -236, -236, 774, 377, -17, + 774, 774, 10, -3, -236, -236, -236, 1403, -236, -236, + -236, 20, -236, -236, -236, -236, -236, -236, 403, 449, + -236, 472, -236, -236, -236, 739, 798, 858, 930, -236, + -236, 12, 17, -236, -236, -236, -236, -236, -236, -236, + -236, -236, 24, 50, -17, 63, -236, -236, 76, 79, + -236, -236, 80, 967, 377, -236, 1481, 71, 89, -236, + -236, -236, -236, -236, -236, -236, -236, 774, 774, 774, + 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, + 774, 774, 774, 774, 774, 6, 6, -236, 836, -17, + -236, -236, 774, -17, -236, 599, -236, -236, 774, -17, + 774, -236, 774, 1274, 774, -236, 106, 106, 1491, 1000, + 1563, 1563, 130, 130, 130, 130, 1043, 1532, 1522, -37, + -37, -236, -236, -236, -236, -236, -236, -236, 1313, -236, + 31, -236, 96, 87, 101, 104, 774, 88, -20, 123, + 124, 127, 131, 134, -26, 121, 147, 152, 712, -236, + -15, -15, -236, -236, 643, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, 153, 155, + 157, -236, -236, 882, -236, -236, -236, -236, 76, 1274, + 96, 1352, 1390, 132, 1481, -236, -236, 774, -236, 774, + 774, 1437, -236, 140, -236, 774, 774, 544, -17, 774, + 117, 159, 166, 172, -236, -236, -236, -236, 1450, -236, + 173, 173, -236, -236, -236, -236, -236, 182, 184, 187, + 189, -236, -236, 774, 774, 774, 774, 774, 774, 774, + 774, 774, 774, 774, 186, 774, 199, 39, 40, 42, + -236, 190, 1106, 1139, 191, -236, 932, -11, 1149, -236, + -236, -236, -236, 774, 774, 774, 774, 1481, 1481, 1481, + 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 205, 1182, + 774, -236, 196, 200, -236, 687, 687, 774, 774, -17, + 50, 1192, 1010, 1053, 1096, 774, -236, 48, -236, -236, + 225, -236, 203, 1481, 1225, 234, -236, 206, 209, 774, + 212, 774, 213, 774, 65, -236, 687, 544, 687, 774, + -236, -236, 69, -236, 73, -236, 82, -236, -236, 223, + -236, 1235, 217, 220, 222, 687, 687, -236, -236, -236, + -236, -236 }; const unsigned char parser::yydefact_[] = { - 3, 0, 0, 186, 0, 2, 6, 7, 9, 10, - 11, 0, 187, 0, 0, 1, 4, 5, 17, 0, - 8, 189, 0, 0, 16, 185, 0, 0, 177, 0, - 196, 195, 179, 180, 181, 182, 183, 0, 162, 0, - 0, 0, 0, 0, 188, 193, 194, 0, 76, 77, - 78, 115, 116, 117, 142, 143, 118, 119, 120, 121, - 122, 0, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 0, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 0, 0, 0, 0, 146, 147, 0, 0, - 150, 151, 0, 0, 162, 178, 161, 0, 158, 159, - 163, 114, 113, 191, 192, 184, 13, 0, 0, 0, + 3, 0, 0, 192, 0, 2, 6, 7, 9, 10, + 11, 0, 193, 0, 0, 1, 4, 5, 17, 0, + 8, 195, 0, 0, 16, 191, 0, 0, 183, 0, + 202, 201, 185, 186, 187, 188, 189, 0, 168, 0, + 0, 0, 0, 0, 194, 199, 200, 0, 82, 83, + 84, 121, 122, 123, 148, 149, 124, 125, 126, 127, + 128, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 0, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 0, 0, 0, 0, 152, 153, 0, 0, + 156, 157, 0, 0, 168, 184, 167, 0, 164, 165, + 169, 120, 119, 197, 198, 190, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, - 145, 162, 0, 12, 0, 14, 15, 0, 0, 0, - 112, 0, 161, 0, 165, 105, 106, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 107, 108, - 109, 110, 111, 148, 149, 152, 153, 0, 168, 167, - 0, 158, 164, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 40, 0, 0, 42, - 18, 0, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 0, 169, 0, 170, 171, 0, 172, 173, - 174, 175, 176, 0, 0, 0, 0, 0, 160, 166, - 154, 162, 0, 54, 0, 55, 0, 0, 73, 0, - 0, 0, 0, 0, 0, 67, 68, 69, 71, 0, - 169, 79, 80, 39, 41, 45, 43, 44, 0, 0, - 0, 0, 0, 81, 82, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 174, 0, 0, + 150, 151, 168, 0, 12, 0, 14, 15, 0, 0, + 0, 118, 0, 167, 0, 171, 111, 112, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 113, + 114, 115, 116, 117, 154, 155, 158, 159, 0, 173, + 0, 164, 170, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, + 0, 0, 45, 18, 0, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 0, 175, + 0, 176, 177, 0, 178, 179, 180, 181, 182, 0, + 0, 0, 0, 0, 166, 172, 160, 168, 75, 168, + 168, 0, 57, 0, 58, 0, 0, 79, 0, 0, + 0, 0, 0, 0, 70, 71, 72, 74, 0, 175, + 85, 86, 42, 44, 48, 46, 47, 0, 0, 0, + 0, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 49, 0, 0, 0, 0, 72, 0, 0, 0, 66, - 65, 64, 70, 0, 0, 0, 0, 83, 89, 90, - 91, 92, 93, 84, 85, 86, 88, 87, 0, 0, - 162, 155, 56, 0, 0, 75, 0, 0, 0, 0, - 0, 0, 0, 162, 190, 0, 57, 59, 0, 74, - 0, 0, 63, 0, 0, 162, 0, 162, 0, 162, - 0, 156, 0, 73, 0, 0, 46, 48, 0, 51, - 0, 53, 0, 157, 58, 0, 61, 0, 0, 0, - 0, 0, 0, 47, 50, 52, 60, 62 + 52, 0, 0, 0, 0, 78, 0, 0, 0, 69, + 68, 67, 73, 0, 0, 0, 0, 89, 95, 96, + 97, 98, 99, 90, 91, 92, 94, 93, 0, 0, + 168, 161, 0, 0, 59, 0, 0, 81, 0, 0, + 0, 0, 0, 0, 0, 168, 196, 0, 76, 77, + 60, 62, 0, 80, 0, 0, 66, 0, 0, 168, + 0, 168, 0, 168, 0, 162, 0, 79, 0, 0, + 49, 51, 0, 54, 0, 56, 0, 163, 61, 0, + 64, 0, 0, 0, 0, 0, 0, 50, 53, 55, + 63, 65 }; const short parser::yypgoto_[] = { - -230, -230, -230, 243, 244, -230, -230, -230, -230, -178, - -82, -230, -230, -230, -230, -230, -230, -230, -230, -230, - -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, - -230, -230, -93, -230, 35, -229, -230, -230, -230, 27, - 142, -230, -23, -19, 68, -26, -230, -230, -230, 39, - 73, -230, 82, -230, -230, -230, 97, 107, 134, 241, - -230, -230, 0, 5, -230, -12, -230, -230, 74, -230, - 77, -230, -230 + -236, -236, -236, 272, 273, -236, -236, -236, -236, -183, + -76, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -78, -236, 38, -235, -236, + -236, -236, -82, -107, -236, -25, -23, -119, -21, -236, + -236, -236, -22, 98, -236, 156, -236, -236, -236, 192, + 197, 202, 236, -236, -236, 0, 5, -236, -5, -236, + -236, 97, -236, 102, -236, -236 }; const short parser::yydefgoto_[] = { - 0, 4, 5, 6, 7, 8, 9, 10, 23, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 284, 328, 96, 212, 48, 49, 50, 51, - 52, 53, 54, 55, 97, 171, 99, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81 + 0, 4, 5, 6, 7, 8, 9, 10, 23, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 294, 342, 96, 218, 48, + 49, 50, 51, 52, 53, 54, 55, 97, 171, 99, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81 }; const short parser::yytable_[] = { - 11, 135, 22, 86, 90, 11, 13, 87, 91, 285, - 1, 2, 98, 254, 12, 168, 18, 14, 24, 234, - 316, -176, -176, 83, -176, 230, 88, 88, 84, 235, - 143, 89, 89, 131, 29, 103, 104, -176, 129, 100, - -176, 19, 130, -169, -169, 317, -169, 127, -170, -170, - 262, -170, 311, 15, 47, -171, -171, 143, -171, -169, - 20, 88, -169, 82, -170, 3, 89, -170, 98, 29, - 92, -171, 93, 21, -171, 101, 102, -176, -176, 3, - 341, 105, 85, 132, 136, 143, 241, 12, 3, 3, - 107, 108, 21, 353, 133, 46, 358, 137, 143, -169, - -169, 143, 163, 165, -170, -170, 164, 166, 359, 138, - 360, -171, -171, 143, 285, 143, 120, 121, 122, 123, - 124, 131, 12, 3, 134, 88, 88, 139, 169, 142, - 89, 89, 172, 143, 222, 326, 327, 144, 224, 89, - 231, 233, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 236, 213, 167, 237, 354, 238, 356, 239, 240, 242, - 281, 245, 223, 215, 225, 278, 226, 104, 228, 122, - 123, 124, 246, 366, 367, 247, 255, 222, 222, 293, - 256, 222, 89, 89, 129, 257, 89, 289, 130, 170, - 120, 121, 122, 123, 124, 290, 291, 216, 232, 294, - 295, 296, 308, 310, 250, 250, 217, 88, 213, 323, - 249, 342, 89, 345, 312, 315, 215, 215, 129, 129, - 215, 218, 130, 130, 343, 346, 332, 347, 222, 287, - 349, 219, 351, 89, 361, 363, 364, 365, 16, 17, - 355, 88, 88, 0, 0, 243, 89, 89, 244, 0, - 216, 216, 169, 129, 216, 250, 0, 130, 220, 251, - 252, 282, 283, 217, 0, 288, 214, 215, 0, 0, - 0, 0, 0, 0, 218, 218, 88, 0, 218, 0, - 0, 89, 0, 0, 219, 219, 0, 0, 219, 279, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 216, 309, 222, 222, 0, 0, 331, 89, 89, - 286, 220, 220, 0, 0, 220, 0, 0, 319, 320, - 321, 322, 0, 214, 0, 218, 0, 0, 0, 0, - 213, 213, 222, 222, 222, 219, 0, 89, 89, 89, - 329, 330, 215, 215, 0, 0, 0, 125, 126, 0, - 29, 222, 222, 0, 0, 0, 89, 89, 0, 213, - 250, 213, 220, 127, 0, 221, 128, 0, 325, 0, - 357, 215, 215, 215, 0, 0, 216, 216, 213, 213, - 0, 340, 0, 0, 0, 217, 217, 0, 0, 0, - 215, 215, 0, 348, 0, 350, 0, 352, 0, 0, - 218, 218, 0, 12, 3, 216, 216, 216, 0, 0, - 219, 219, 0, 0, 217, 286, 217, 0, 221, 221, - 0, 0, 221, 0, 216, 216, 0, 0, 0, 218, - 218, 218, 0, 217, 217, 0, 0, 220, 220, 219, - 219, 219, 0, 0, 0, 214, 214, 0, 218, 218, - 0, 0, 0, 0, 0, 0, 0, 0, 219, 219, - 0, -172, -172, 0, -172, 0, 220, 220, 220, 221, - 0, 0, 0, 0, 214, 25, 214, -172, 0, 0, - -172, 0, 0, 0, 0, 220, 220, 0, 0, 0, - 0, 0, 0, 214, 214, 26, 27, 28, 29, 30, + 11, 86, 90, 87, 91, 11, 13, 136, 18, 22, + 328, 263, 295, 170, 1, 2, 29, 98, 24, 12, + 243, 33, 34, 35, 36, 15, 88, 88, 220, 85, + 244, 89, 89, 19, 14, 329, 130, 29, 131, 100, + -182, -182, 20, -182, 122, 123, 124, -182, -175, -175, + 85, -175, 132, 219, 250, -175, -182, 47, 21, -182, + 21, 88, 82, 46, -175, 133, 89, -175, 3, 12, + 3, 83, 236, 98, 134, 93, 84, 144, 101, 102, + 321, 322, 105, 323, 137, 144, 144, 220, 144, 355, + 12, 3, 135, 3, 144, 92, -182, -182, 103, 104, + 164, 166, 165, 167, -175, -175, 367, 138, 259, 259, + 372, 144, 219, 221, 373, 144, 132, 144, 287, 144, + 288, 289, 295, 374, 140, 88, 88, 139, 144, 169, + 89, 89, 143, 172, 145, 228, 237, 238, 242, 230, + 89, 239, 340, 341, 240, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 245, 246, 259, 168, 247, 221, 221, + 254, 248, 221, 368, 249, 370, 229, 286, 231, 251, + 232, 291, 234, 107, 108, 120, 121, 122, 123, 124, + 228, 228, 380, 381, 228, 89, 89, 255, 130, 89, + 131, 337, 256, 264, 29, 265, 104, 266, 299, 120, + 121, 122, 123, 124, 241, 300, 354, 128, 220, 220, + 129, 301, 303, 88, 304, 221, 258, 305, 89, 306, + 362, 318, 364, 222, 366, 130, 130, 131, 131, 320, + 324, 327, 356, 219, 219, 335, 338, 228, 297, 220, + 339, 220, 89, 357, 346, 359, 360, 12, 3, 361, + 88, 88, 363, 365, 375, 89, 89, 377, 220, 220, + 378, 130, 379, 131, 219, 259, 219, 16, 17, 369, + 0, 252, 0, 292, 293, 0, 253, 298, 222, 222, + 0, 223, 222, 219, 219, 0, 88, 0, 0, 0, + 0, 89, 0, 221, 221, 0, 0, 0, 0, 0, + 0, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 0, 319, 0, 228, 228, 224, 0, 345, + 89, 89, 225, 0, 221, 221, 221, 226, 0, 0, + 0, 331, 332, 333, 334, 222, 260, 261, 0, 0, + 223, 0, 0, 221, 221, 0, 228, 228, 228, 0, + 0, 89, 89, 89, 0, 343, 344, 0, 0, 0, + 0, 227, 0, 0, 0, 228, 228, 0, 0, 0, + 89, 89, 224, 224, 0, 25, 224, 225, 225, 0, + 0, 225, 226, 226, 0, 0, 226, 371, 0, 0, + 0, 0, 0, 296, 0, 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, 35, 36, 37, 0, 0, - 0, 94, 95, 0, 0, 39, 0, -172, -172, 0, - 0, 0, -173, -173, 0, -173, 0, 0, 0, 0, - 40, 41, 0, 0, 0, 0, 0, 0, -173, 0, - 25, -173, 0, 0, 221, 221, 0, 42, 0, 0, + 0, 94, 95, 222, 222, 39, 227, 227, 0, 0, + 227, -176, -176, 0, -176, 0, 0, 0, -176, 224, + 40, 41, 0, 0, 225, 0, 0, -176, 0, 226, + -176, 0, 0, 0, 222, 222, 222, 42, 0, 0, 43, 12, 3, 21, 44, 45, 46, 0, 0, 0, + 0, 0, 0, 222, 222, 0, 0, -177, -177, 0, + -177, 223, 223, 227, -177, 0, 0, -176, -176, 0, + 0, 0, 0, -177, 0, 0, -177, 0, 0, 0, + 125, 126, 0, 29, 0, 0, 0, 127, 0, 0, + 0, 0, 223, 296, 223, 0, 128, 224, 224, 129, + 0, 0, 225, 225, 0, 0, 0, 226, 226, 0, + 0, 223, 223, -177, -177, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, + 224, 0, 0, 225, 225, 225, 12, 3, 226, 226, + 226, 227, 227, 0, 0, 0, 0, 224, 224, 0, + 0, 0, 225, 225, 0, 29, 0, 226, 226, 0, + 33, 34, 35, 36, 0, 0, 0, 0, 85, 0, + 0, 0, 227, 227, 227, 190, 191, 0, 0, 0, + 0, 0, 173, 174, 175, 0, 0, 0, 0, 0, + 176, 227, 227, 177, 178, 179, 0, 180, 181, 182, + 0, 183, 184, 185, 186, 187, 188, 26, 12, 3, + 29, 0, 0, 0, 0, 33, 34, 35, 36, 0, + 0, 135, 189, 85, 0, 0, 173, 174, 175, 0, + 190, 191, 0, 0, 176, 0, 0, 177, 178, 179, + 0, 180, 181, 182, 0, 183, 184, 185, 186, 187, + 188, 26, 0, 0, 29, 0, 0, 0, 0, 33, + 34, 35, 36, 12, 3, 135, 262, 85, 0, 0, + 173, 174, 175, 0, 190, 191, 0, 0, 176, 0, + 0, 177, 178, 179, 0, 180, 181, 182, 0, 183, + 184, 185, 186, 187, 188, 26, 0, 0, 29, 0, + 25, 0, 0, 33, 34, 35, 36, 12, 3, 135, + 0, 85, 0, 0, 0, 0, 0, 0, 190, 191, 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, - 35, 36, 37, 221, 221, 221, 38, 0, -173, -173, - 39, 0, 248, 0, -174, -174, 0, -174, -175, -175, - 0, -175, 221, 221, 0, 40, 41, 0, 0, 0, - -174, 0, 25, -174, -175, 0, 0, -175, 0, 0, + 35, 36, 37, 0, 0, 0, 38, 0, 0, 0, + 39, 0, 257, 0, 0, 0, 0, -178, -178, 0, + -178, 12, 3, 0, -178, 40, 41, 0, 0, 0, + 0, 0, 25, -178, 0, 0, -178, 0, 0, 0, 0, 0, 42, 0, 0, 43, 12, 3, 21, 44, 45, 46, 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, 35, 36, 37, 0, 0, 0, 38, 0, - -174, -174, 39, 0, -175, -175, 0, 0, 29, 0, - 0, 0, 0, 33, 34, 35, 36, 40, 41, 0, - 0, 85, 0, 0, 25, 0, 0, 0, 187, 188, + 0, 0, 39, -178, -178, 0, -179, -179, 0, -179, + 0, 0, 0, -179, 0, 0, 0, 40, 41, 0, + 0, 0, -179, 0, 25, -179, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 43, 12, 3, 21, 44, 45, 46, 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, 35, 36, 37, 0, 0, 0, - 94, 12, 3, 0, 39, 0, 0, 0, 0, 0, - 0, 258, 259, 0, 260, 261, 0, 0, 0, 40, - 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 94, 0, -179, -179, 39, 0, -180, -180, 0, -180, + 0, 267, 268, -180, 269, 270, 0, 0, 0, 40, + 41, 0, -180, 0, 0, -180, 0, 0, 0, 0, 125, 0, 0, 29, 0, 0, 42, 0, 0, 43, - 12, 3, 21, 44, 45, 46, 127, 0, 0, 262, - 29, 0, 0, 263, 264, 33, 34, 35, 36, 0, - 0, 0, 0, 85, 0, 0, 0, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 0, 0, - 0, 0, 0, 0, 0, 173, 12, 3, 174, 175, - 176, 0, 177, 178, 179, 0, 180, 181, 182, 183, - 184, 185, 26, 12, 3, 29, 0, 0, 0, 0, - 33, 34, 35, 36, 0, 0, 134, 186, 85, 0, - 0, 0, 0, 0, 173, 187, 188, 174, 175, 176, - 0, 177, 178, 179, 0, 180, 181, 182, 183, 184, - 185, 26, 0, 0, 29, 0, 0, 0, 0, 33, - 34, 35, 36, 0, 0, 134, 253, 85, 12, 3, - 0, 0, 0, 173, 187, 188, 174, 175, 176, 0, - 177, 178, 179, 0, 180, 181, 182, 183, 184, 185, - 26, 0, 0, 29, 0, 0, 29, 0, 33, 34, - 35, 36, 0, 0, 134, 0, 85, 12, 3, 127, - 0, 0, 262, 187, 188, 0, 263, 264, 0, 0, + 12, 3, 21, 44, 45, 46, 128, 0, 0, 129, + 0, 0, 0, 271, 272, 0, 0, 0, 0, 0, + 0, 0, -180, -180, 0, 0, 0, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, -181, -181, + 0, -181, 0, 29, 0, -181, 12, 3, 0, 0, + 0, 0, 0, 0, -181, 0, 128, -181, 0, 129, + 0, 0, 0, 271, 272, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 141, 0, + 0, 0, 0, 142, -181, -181, 12, 3, 0, 0, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 0, 0, 140, 0, 0, 12, 3, 141, 12, - 3, 0, 0, 0, 0, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, - 119, 120, 121, 122, 123, 124, 334, 0, 107, 108, - 0, 335, 111, 112, 113, 114, 115, 116, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 336, - 0, 107, 108, 0, 337, 111, 112, 113, 114, 115, - 116, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 0, 0, 0, 0, 118, 119, 120, 121, 122, - 123, 124, 0, 0, 117, 118, 119, 120, 121, 122, - 123, 124, 338, 0, 0, 0, 0, 339, 0, 0, - 0, 0, 313, 0, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 0, 0, 0, 117, 118, 119, - 120, 121, 122, 123, 124, 314, 0, 117, 118, 119, - 120, 121, 122, 123, 124, 318, 0, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, - 117, 118, 119, 120, 121, 122, 123, 124, 324, 0, - 117, 118, 119, 120, 121, 122, 123, 124, 333, 0, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 344, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 362, 0, 107, 108, 109, 110, 111, 112, 113, + 124, 348, 0, 107, 108, 0, 349, 111, 112, 113, 114, 115, 116, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, 124, 0, 0, 117, 118, 119, 120, - 121, 122, 123, 124, 227, 0, 0, 0, 0, 0, - 0, 0, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 229, 0, 0, 0, 0, 0, 0, - 0, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 117, 118, 119, 120, 121, 122, - 123, 124, 276, 0, 0, 0, 0, 0, 0, 0, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 277, 0, 0, 0, 0, 0, 0, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 106, 0, - 0, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 0, - 0, 0, 0, 0, 117, 118, 119, 120, 121, 122, - 123, 124, 280, 0, 0, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 292, 0, 0, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 0, 0, 0, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 107, + 121, 122, 123, 124, 350, 0, 107, 108, 0, 351, + 111, 112, 113, 114, 115, 116, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 0, 0, 0, 0, + 118, 119, 120, 121, 122, 123, 124, 0, 0, 117, + 118, 119, 120, 121, 122, 123, 124, 352, 0, 0, + 0, 0, 353, 0, 0, 0, 0, 325, 0, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 107, - 108, 0, 110, 111, 112, 113, 114, 115, 116, 0, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, 124, - 0, 0, 117, 118, 119, 120, 121, 122, 123, 124, - 107, 108, 0, 0, 111, 112, 113, 114, 115, 116, - 107, 108, 0, 0, 111, 112, 113, 114, 115, 116, - 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, - 124, 0, 0, 0, 0, 0, 120, 121, 122, 123, - 124, 107, 108, 0, 0, 0, 0, 113, 114, 115, - 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 120, 121, 122, - 123, 124 + 326, 0, 117, 118, 119, 120, 121, 122, 123, 124, + 330, 0, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 0, 0, 0, 117, 118, 119, 120, 121, + 122, 123, 124, 336, 0, 117, 118, 119, 120, 121, + 122, 123, 124, 347, 0, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 0, 0, 0, 117, 118, + 119, 120, 121, 122, 123, 124, 358, 0, 117, 118, + 119, 120, 121, 122, 123, 124, 376, 0, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, + 0, 117, 118, 119, 120, 121, 122, 123, 124, 0, + 0, 117, 118, 119, 120, 121, 122, 123, 124, 233, + 0, 0, 0, 0, 0, 0, 0, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 117, 118, 119, 120, 121, 122, 123, 124, 235, 0, + 0, 0, 0, 0, 0, 0, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, + 118, 119, 120, 121, 122, 123, 124, 284, 0, 0, + 0, 0, 0, 0, 0, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, + 119, 120, 121, 122, 123, 124, 285, 0, 0, 0, + 0, 0, 0, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 106, 0, 0, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 0, 0, 0, 0, 0, 117, + 118, 119, 120, 121, 122, 123, 124, 290, 0, 0, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 302, 0, 0, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 0, 0, 0, 0, 0, 117, 118, 119, 120, + 121, 122, 123, 124, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 107, 108, 0, 110, 111, 112, + 113, 114, 115, 116, 0, 0, 0, 117, 118, 119, + 120, 121, 122, 123, 124, 0, 0, 117, 118, 119, + 120, 121, 122, 123, 124, 107, 108, 0, 0, 111, + 112, 113, 114, 115, 116, 107, 108, 0, 0, 111, + 112, 113, 114, 115, 116, 0, 0, 0, 0, 118, + 0, 120, 121, 122, 123, 124, 0, 0, 0, 0, + 0, 120, 121, 122, 123, 124, 107, 108, 0, 0, + 0, 0, 113, 114, 115, 116, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 120, 121, 122, 123, 124 }; const short parser::yycheck_[] = { - 0, 83, 14, 26, 27, 5, 1, 26, 27, 238, - 3, 4, 38, 191, 81, 32, 37, 37, 18, 37, - 18, 25, 26, 38, 28, 38, 26, 27, 43, 47, - 43, 26, 27, 37, 28, 85, 86, 41, 61, 39, - 44, 62, 61, 25, 26, 43, 28, 41, 25, 26, - 44, 28, 38, 0, 19, 25, 26, 43, 28, 41, - 47, 61, 44, 38, 41, 82, 61, 44, 94, 28, - 41, 41, 37, 83, 44, 40, 41, 81, 82, 82, - 38, 82, 41, 45, 84, 43, 77, 81, 82, 82, - 50, 51, 83, 38, 47, 86, 38, 41, 43, 81, - 82, 43, 125, 126, 81, 82, 125, 126, 38, 45, - 38, 81, 82, 43, 343, 43, 76, 77, 78, 79, - 80, 37, 81, 82, 39, 125, 126, 41, 128, 94, - 125, 126, 132, 43, 134, 313, 314, 42, 138, 134, - 37, 47, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 37, 134, 127, 37, 342, 37, 344, 37, 37, 181, - 38, 46, 137, 134, 139, 42, 141, 86, 143, 78, - 79, 80, 47, 361, 362, 47, 47, 187, 188, 37, - 47, 191, 187, 188, 217, 47, 191, 46, 217, 131, - 76, 77, 78, 79, 80, 46, 46, 134, 173, 37, - 37, 37, 42, 37, 187, 188, 134, 217, 191, 37, - 185, 14, 217, 18, 47, 47, 187, 188, 251, 252, - 191, 134, 251, 252, 47, 47, 318, 47, 238, 239, - 47, 134, 47, 238, 38, 47, 47, 47, 5, 5, - 343, 251, 252, -1, -1, 181, 251, 252, 181, -1, - 187, 188, 262, 286, 191, 238, -1, 286, 134, 187, - 188, 236, 237, 191, -1, 240, 134, 238, -1, -1, - -1, -1, -1, -1, 187, 188, 286, -1, 191, -1, - -1, 286, -1, -1, 187, 188, -1, -1, 191, 231, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 238, 277, 313, 314, -1, -1, 317, 313, 314, - 238, 187, 188, -1, -1, 191, -1, -1, 293, 294, - 295, 296, -1, 191, -1, 238, -1, -1, -1, -1, - 313, 314, 342, 343, 344, 238, -1, 342, 343, 344, - 315, 316, 313, 314, -1, -1, -1, 25, 26, -1, - 28, 361, 362, -1, -1, -1, 361, 362, -1, 342, - 343, 344, 238, 41, -1, 134, 44, -1, 310, -1, - 345, 342, 343, 344, -1, -1, 313, 314, 361, 362, - -1, 323, -1, -1, -1, 313, 314, -1, -1, -1, - 361, 362, -1, 335, -1, 337, -1, 339, -1, -1, - 313, 314, -1, 81, 82, 342, 343, 344, -1, -1, - 313, 314, -1, -1, 342, 343, 344, -1, 187, 188, - -1, -1, 191, -1, 361, 362, -1, -1, -1, 342, - 343, 344, -1, 361, 362, -1, -1, 313, 314, 342, - 343, 344, -1, -1, -1, 313, 314, -1, 361, 362, - -1, -1, -1, -1, -1, -1, -1, -1, 361, 362, - -1, 25, 26, -1, 28, -1, 342, 343, 344, 238, - -1, -1, -1, -1, 342, 5, 344, 41, -1, -1, - 44, -1, -1, -1, -1, 361, 362, -1, -1, -1, - -1, -1, -1, 361, 362, 25, 26, 27, 28, 29, - 30, 31, -1, 33, 34, 35, 36, 37, -1, -1, - -1, 41, 42, -1, -1, 45, -1, 81, 82, -1, - -1, -1, 25, 26, -1, 28, -1, -1, -1, -1, - 60, 61, -1, -1, -1, -1, -1, -1, 41, -1, - 5, 44, -1, -1, 313, 314, -1, 77, -1, -1, - 80, 81, 82, 83, 84, 85, 86, -1, -1, -1, - 25, 26, 27, 28, 29, 30, 31, -1, 33, 34, - 35, 36, 37, 342, 343, 344, 41, -1, 81, 82, - 45, -1, 47, -1, 25, 26, -1, 28, 25, 26, - -1, 28, 361, 362, -1, 60, 61, -1, -1, -1, - 41, -1, 5, 44, 41, -1, -1, 44, -1, -1, - -1, -1, 77, -1, -1, 80, 81, 82, 83, 84, - 85, 86, 25, 26, 27, 28, 29, 30, 31, -1, - 33, 34, 35, 36, 37, -1, -1, -1, 41, -1, - 81, 82, 45, -1, 81, 82, -1, -1, 28, -1, - -1, -1, -1, 33, 34, 35, 36, 60, 61, -1, - -1, 41, -1, -1, 5, -1, -1, -1, 48, 49, - -1, -1, -1, -1, 77, -1, -1, 80, 81, 82, - 83, 84, 85, 86, 25, 26, 27, 28, 29, 30, - 31, -1, 33, 34, 35, 36, 37, -1, -1, -1, - 41, 81, 82, -1, 45, -1, -1, -1, -1, -1, - -1, 6, 7, -1, 9, 10, -1, -1, -1, 60, - 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 25, -1, -1, 28, -1, -1, 77, -1, -1, 80, - 81, 82, 83, 84, 85, 86, 41, -1, -1, 44, - 28, -1, -1, 48, 49, 33, 34, 35, 36, -1, - -1, -1, -1, 41, -1, -1, -1, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, -1, -1, - -1, -1, -1, -1, -1, 8, 81, 82, 11, 12, - 13, -1, 15, 16, 17, -1, 19, 20, 21, 22, - 23, 24, 25, 81, 82, 28, -1, -1, -1, -1, - 33, 34, 35, 36, -1, -1, 39, 40, 41, -1, - -1, -1, -1, -1, 8, 48, 49, 11, 12, 13, - -1, 15, 16, 17, -1, 19, 20, 21, 22, 23, - 24, 25, -1, -1, 28, -1, -1, -1, -1, 33, - 34, 35, 36, -1, -1, 39, 40, 41, 81, 82, - -1, -1, -1, 8, 48, 49, 11, 12, 13, -1, - 15, 16, 17, -1, 19, 20, 21, 22, 23, 24, - 25, -1, -1, 28, -1, -1, 28, -1, 33, 34, - 35, 36, -1, -1, 39, -1, 41, 81, 82, 41, - -1, -1, 44, 48, 49, -1, 48, 49, -1, -1, + 0, 26, 27, 26, 27, 5, 1, 83, 40, 14, + 21, 194, 247, 132, 6, 7, 31, 38, 18, 84, + 40, 36, 37, 38, 39, 0, 26, 27, 135, 44, + 50, 26, 27, 65, 40, 46, 61, 31, 61, 39, + 28, 29, 50, 31, 81, 82, 83, 35, 28, 29, + 44, 31, 40, 135, 80, 35, 44, 19, 86, 47, + 86, 61, 41, 89, 44, 48, 61, 47, 85, 84, + 85, 41, 41, 94, 50, 37, 46, 46, 40, 41, + 41, 41, 85, 41, 84, 46, 46, 194, 46, 41, + 84, 85, 42, 85, 46, 44, 84, 85, 88, 89, + 125, 126, 125, 126, 84, 85, 41, 44, 190, 191, + 41, 46, 194, 135, 41, 46, 40, 46, 237, 46, + 239, 240, 357, 41, 44, 125, 126, 48, 46, 129, + 125, 126, 94, 133, 45, 135, 40, 50, 50, 139, + 135, 40, 325, 326, 40, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 40, 40, 247, 128, 40, 190, 191, + 49, 40, 194, 356, 40, 358, 138, 45, 140, 184, + 142, 41, 144, 53, 54, 79, 80, 81, 82, 83, + 190, 191, 375, 376, 194, 190, 191, 50, 223, 194, + 223, 320, 50, 50, 31, 50, 89, 50, 49, 79, + 80, 81, 82, 83, 176, 49, 335, 44, 325, 326, + 47, 49, 40, 223, 40, 247, 188, 40, 223, 40, + 349, 45, 351, 135, 353, 260, 261, 260, 261, 40, + 50, 50, 17, 325, 326, 40, 50, 247, 248, 356, + 50, 358, 247, 50, 330, 21, 50, 84, 85, 50, + 260, 261, 50, 50, 41, 260, 261, 50, 375, 376, + 50, 296, 50, 296, 356, 357, 358, 5, 5, 357, + -1, 184, -1, 245, 246, -1, 184, 249, 190, 191, + -1, 135, 194, 375, 376, -1, 296, -1, -1, -1, + -1, 296, -1, 325, 326, -1, -1, -1, -1, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, -1, 285, -1, 325, 326, 135, -1, 329, + 325, 326, 135, -1, 356, 357, 358, 135, -1, -1, + -1, 303, 304, 305, 306, 247, 190, 191, -1, -1, + 194, -1, -1, 375, 376, -1, 356, 357, 358, -1, + -1, 356, 357, 358, -1, 327, 328, -1, -1, -1, + -1, 135, -1, -1, -1, 375, 376, -1, -1, -1, + 375, 376, 190, 191, -1, 8, 194, 190, 191, -1, + -1, 194, 190, 191, -1, -1, 194, 359, -1, -1, + -1, -1, -1, 247, -1, 28, 29, 30, 31, 32, + 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, + -1, 44, 45, 325, 326, 48, 190, 191, -1, -1, + 194, 28, 29, -1, 31, -1, -1, -1, 35, 247, + 63, 64, -1, -1, 247, -1, -1, 44, -1, 247, + 47, -1, -1, -1, 356, 357, 358, 80, -1, -1, + 83, 84, 85, 86, 87, 88, 89, -1, -1, -1, + -1, -1, -1, 375, 376, -1, -1, 28, 29, -1, + 31, 325, 326, 247, 35, -1, -1, 84, 85, -1, + -1, -1, -1, 44, -1, -1, 47, -1, -1, -1, + 28, 29, -1, 31, -1, -1, -1, 35, -1, -1, + -1, -1, 356, 357, 358, -1, 44, 325, 326, 47, + -1, -1, 325, 326, -1, -1, -1, 325, 326, -1, + -1, 375, 376, 84, 85, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 356, 357, + 358, -1, -1, 356, 357, 358, 84, 85, 356, 357, + 358, 325, 326, -1, -1, -1, -1, 375, 376, -1, + -1, -1, 375, 376, -1, 31, -1, 375, 376, -1, + 36, 37, 38, 39, -1, -1, -1, -1, 44, -1, + -1, -1, 356, 357, 358, 51, 52, -1, -1, -1, + -1, -1, 3, 4, 5, -1, -1, -1, -1, -1, + 11, 375, 376, 14, 15, 16, -1, 18, 19, 20, + -1, 22, 23, 24, 25, 26, 27, 28, 84, 85, + 31, -1, -1, -1, -1, 36, 37, 38, 39, -1, + -1, 42, 43, 44, -1, -1, 3, 4, 5, -1, + 51, 52, -1, -1, 11, -1, -1, 14, 15, 16, + -1, 18, 19, 20, -1, 22, 23, 24, 25, 26, + 27, 28, -1, -1, 31, -1, -1, -1, -1, 36, + 37, 38, 39, 84, 85, 42, 43, 44, -1, -1, + 3, 4, 5, -1, 51, 52, -1, -1, 11, -1, + -1, 14, 15, 16, -1, 18, 19, 20, -1, 22, + 23, 24, 25, 26, 27, 28, -1, -1, 31, -1, + 8, -1, -1, 36, 37, 38, 39, 84, 85, 42, + -1, 44, -1, -1, -1, -1, -1, -1, 51, 52, + 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, + 38, 39, 40, -1, -1, -1, 44, -1, -1, -1, + 48, -1, 50, -1, -1, -1, -1, 28, 29, -1, + 31, 84, 85, -1, 35, 63, 64, -1, -1, -1, + -1, -1, 8, 44, -1, -1, 47, -1, -1, -1, + -1, -1, 80, -1, -1, 83, 84, 85, 86, 87, + 88, 89, 28, 29, 30, 31, 32, 33, 34, -1, + 36, 37, 38, 39, 40, -1, -1, -1, 44, -1, + -1, -1, 48, 84, 85, -1, 28, 29, -1, 31, + -1, -1, -1, 35, -1, -1, -1, 63, 64, -1, + -1, -1, 44, -1, 8, 47, -1, -1, -1, -1, + -1, -1, -1, -1, 80, -1, -1, 83, 84, 85, + 86, 87, 88, 89, 28, 29, 30, 31, 32, 33, + 34, -1, 36, 37, 38, 39, 40, -1, -1, -1, + 44, -1, 84, 85, 48, -1, 28, 29, -1, 31, + -1, 9, 10, 35, 12, 13, -1, -1, -1, 63, + 64, -1, 44, -1, -1, 47, -1, -1, -1, -1, + 28, -1, -1, 31, -1, -1, 80, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 44, -1, -1, 47, + -1, -1, -1, 51, 52, -1, -1, -1, -1, -1, + -1, -1, 84, 85, -1, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 28, 29, + -1, 31, -1, 31, -1, 35, 84, 85, -1, -1, + -1, -1, -1, -1, 44, -1, 44, 47, -1, 47, + -1, -1, -1, 51, 52, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 41, -1, + -1, -1, -1, 46, 84, 85, 84, 85, -1, -1, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, -1, -1, 38, -1, -1, 81, 82, 43, 81, - 82, -1, -1, -1, -1, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 73, 74, - 75, 76, 77, 78, 79, 80, 38, -1, 50, 51, - -1, 43, 54, 55, 56, 57, 58, 59, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, -1, -1, - -1, 73, 74, 75, 76, 77, 78, 79, 80, -1, - -1, 73, 74, 75, 76, 77, 78, 79, 80, 38, - -1, 50, 51, -1, 43, 54, 55, 56, 57, 58, - 59, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, -1, -1, -1, -1, 74, 75, 76, 77, 78, - 79, 80, -1, -1, 73, 74, 75, 76, 77, 78, - 79, 80, 38, -1, -1, -1, -1, 43, -1, -1, - -1, -1, 38, -1, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, -1, -1, -1, 73, 74, 75, - 76, 77, 78, 79, 80, 38, -1, 73, 74, 75, - 76, 77, 78, 79, 80, 38, -1, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, -1, -1, -1, - 73, 74, 75, 76, 77, 78, 79, 80, 38, -1, - 73, 74, 75, 76, 77, 78, 79, 80, 38, -1, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - -1, -1, -1, 73, 74, 75, 76, 77, 78, 79, - 80, 38, -1, 73, 74, 75, 76, 77, 78, 79, - 80, 38, -1, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, -1, -1, -1, 73, 74, 75, 76, - 77, 78, 79, 80, -1, -1, 73, 74, 75, 76, - 77, 78, 79, 80, 42, -1, -1, -1, -1, -1, - -1, -1, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 73, 74, 75, 76, 77, - 78, 79, 80, 42, -1, -1, -1, -1, -1, -1, - -1, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 73, 74, 75, 76, 77, 78, - 79, 80, 42, -1, -1, -1, -1, -1, -1, -1, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + -1, -1, -1, 76, 77, 78, 79, 80, 81, 82, + 83, 41, -1, 53, 54, -1, 46, 57, 58, 59, + 60, 61, 62, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, -1, -1, -1, 76, 77, 78, 79, + 80, 81, 82, 83, -1, -1, 76, 77, 78, 79, + 80, 81, 82, 83, 41, -1, 53, 54, -1, 46, + 57, 58, 59, 60, 61, 62, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, + 77, 78, 79, 80, 81, 82, 83, -1, -1, 76, + 77, 78, 79, 80, 81, 82, 83, 41, -1, -1, + -1, -1, 46, -1, -1, -1, -1, 41, -1, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, -1, + -1, -1, 76, 77, 78, 79, 80, 81, 82, 83, + 41, -1, 76, 77, 78, 79, 80, 81, 82, 83, + 41, -1, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, -1, -1, -1, 76, 77, 78, 79, 80, + 81, 82, 83, 41, -1, 76, 77, 78, 79, 80, + 81, 82, 83, 41, -1, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, -1, -1, -1, 76, 77, + 78, 79, 80, 81, 82, 83, 41, -1, 76, 77, + 78, 79, 80, 81, 82, 83, 41, -1, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, + -1, 76, 77, 78, 79, 80, 81, 82, 83, -1, + -1, 76, 77, 78, 79, 80, 81, 82, 83, 45, + -1, -1, -1, -1, -1, -1, -1, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 73, 74, 75, 76, 77, 78, 79, - 80, 43, -1, -1, -1, -1, -1, -1, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 47, -1, - -1, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 73, 74, 75, 76, 77, 78, 79, 80, -1, - -1, -1, -1, -1, 73, 74, 75, 76, 77, 78, - 79, 80, 47, -1, -1, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 47, -1, -1, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 73, 74, - 75, 76, 77, 78, 79, 80, -1, -1, -1, -1, - -1, 73, 74, 75, 76, 77, 78, 79, 80, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 50, - 51, -1, 53, 54, 55, 56, 57, 58, 59, -1, - -1, -1, 73, 74, 75, 76, 77, 78, 79, 80, - -1, -1, 73, 74, 75, 76, 77, 78, 79, 80, - 50, 51, -1, -1, 54, 55, 56, 57, 58, 59, - 50, 51, -1, -1, 54, 55, 56, 57, 58, 59, - -1, -1, -1, -1, -1, 75, 76, 77, 78, 79, - 80, -1, -1, -1, -1, -1, 76, 77, 78, 79, - 80, 50, 51, -1, -1, -1, -1, 56, 57, 58, - 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 76, 77, 78, - 79, 80 + 76, 77, 78, 79, 80, 81, 82, 83, 45, -1, + -1, -1, -1, -1, -1, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, + 77, 78, 79, 80, 81, 82, 83, 45, -1, -1, + -1, -1, -1, -1, -1, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 76, 77, + 78, 79, 80, 81, 82, 83, 46, -1, -1, -1, + -1, -1, -1, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 50, -1, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 76, 77, 78, 79, + 80, 81, 82, 83, -1, -1, -1, -1, -1, 76, + 77, 78, 79, 80, 81, 82, 83, 50, -1, -1, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 50, -1, -1, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 76, 77, 78, 79, 80, 81, 82, + 83, -1, -1, -1, -1, -1, 76, 77, 78, 79, + 80, 81, 82, 83, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 53, 54, -1, 56, 57, 58, + 59, 60, 61, 62, -1, -1, -1, 76, 77, 78, + 79, 80, 81, 82, 83, -1, -1, 76, 77, 78, + 79, 80, 81, 82, 83, 53, 54, -1, -1, 57, + 58, 59, 60, 61, 62, 53, 54, -1, -1, 57, + 58, 59, 60, 61, 62, -1, -1, -1, -1, 77, + -1, 79, 80, 81, 82, 83, -1, -1, -1, -1, + -1, 79, 80, 81, 82, 83, 53, 54, -1, -1, + -1, -1, 59, 60, 61, 62, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 79, 80, 81, 82, 83 }; const unsigned char parser::yystos_[] = { - 0, 3, 4, 82, 96, 97, 98, 99, 100, 101, - 102, 157, 81, 158, 37, 0, 98, 99, 37, 62, - 47, 83, 160, 103, 157, 5, 25, 26, 27, 28, - 29, 30, 31, 33, 34, 35, 36, 37, 41, 45, - 60, 61, 77, 80, 84, 85, 86, 129, 131, 132, - 133, 134, 135, 136, 137, 138, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 38, 38, 43, 41, 137, 138, 157, 158, - 137, 138, 41, 129, 41, 42, 129, 139, 140, 141, - 157, 129, 129, 85, 86, 82, 47, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 73, 74, 75, - 76, 77, 78, 79, 80, 25, 26, 41, 44, 137, - 138, 37, 45, 47, 39, 105, 157, 41, 45, 41, - 38, 43, 129, 43, 42, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 137, 138, 137, 138, 129, 32, 157, - 139, 140, 157, 8, 11, 12, 13, 15, 16, 17, - 19, 20, 21, 22, 23, 24, 40, 48, 49, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 0, 6, 7, 85, 99, 100, 101, 102, 103, 104, + 105, 163, 84, 164, 40, 0, 101, 102, 40, 65, + 50, 86, 166, 106, 163, 8, 28, 29, 30, 31, + 32, 33, 34, 36, 37, 38, 39, 40, 44, 48, + 63, 64, 80, 83, 87, 88, 89, 135, 137, 138, + 139, 140, 141, 142, 143, 144, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 41, 41, 46, 44, 143, 144, 163, 164, + 143, 144, 44, 135, 44, 45, 135, 145, 146, 147, + 163, 135, 135, 88, 89, 85, 50, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 76, 77, 78, + 79, 80, 81, 82, 83, 28, 29, 35, 44, 47, + 143, 144, 40, 48, 50, 42, 108, 163, 44, 48, + 44, 41, 46, 135, 46, 45, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 143, 144, 143, 144, 135, 163, + 145, 146, 163, 3, 4, 5, 11, 14, 15, 16, + 18, 19, 20, 22, 23, 24, 25, 26, 27, 43, + 51, 52, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 130, 134, 135, 144, 145, 147, 151, 152, - 153, 154, 157, 129, 157, 129, 129, 42, 129, 42, - 38, 37, 129, 47, 37, 47, 37, 37, 37, 37, - 37, 77, 160, 163, 165, 46, 47, 47, 47, 129, - 134, 147, 147, 40, 104, 47, 47, 47, 6, 7, - 9, 10, 44, 48, 49, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 42, 43, 42, 139, - 47, 38, 129, 129, 127, 130, 147, 157, 129, 46, - 46, 46, 47, 37, 37, 37, 37, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 42, 129, - 37, 38, 47, 38, 38, 47, 18, 43, 38, 129, - 129, 129, 129, 37, 38, 139, 104, 104, 128, 129, - 129, 157, 105, 38, 38, 43, 38, 43, 38, 43, - 139, 38, 14, 47, 38, 18, 47, 47, 139, 47, - 139, 47, 139, 38, 104, 127, 104, 129, 38, 38, - 38, 38, 38, 47, 47, 47, 104, 104 + 125, 126, 127, 128, 129, 130, 131, 132, 136, 140, + 141, 150, 151, 153, 157, 158, 159, 160, 163, 135, + 163, 135, 135, 45, 135, 45, 41, 40, 50, 40, + 40, 135, 50, 40, 50, 40, 40, 40, 40, 40, + 80, 166, 169, 171, 49, 50, 50, 50, 135, 140, + 153, 153, 43, 107, 50, 50, 50, 9, 10, 12, + 13, 51, 52, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 45, 46, 45, 145, 145, 145, + 50, 41, 135, 135, 133, 136, 153, 163, 135, 49, + 49, 49, 50, 40, 40, 40, 40, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 45, 135, + 40, 41, 41, 41, 50, 41, 41, 50, 21, 46, + 41, 135, 135, 135, 135, 40, 41, 145, 50, 50, + 107, 107, 134, 135, 135, 163, 108, 41, 41, 46, + 41, 46, 41, 46, 145, 41, 17, 50, 41, 21, + 50, 50, 145, 50, 145, 50, 145, 41, 107, 133, + 107, 135, 41, 41, 41, 41, 41, 50, 50, 50, + 107, 107 }; const unsigned char parser::yyr1_[] = { - 0, 95, 96, 96, 97, 97, 97, 97, 98, 99, - 99, 99, 100, 101, 102, 103, 103, 103, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 105, - 105, 106, 106, 107, 107, 108, 109, 110, 110, 111, - 112, 112, 113, 113, 114, 115, 115, 116, 117, 118, - 119, 120, 120, 121, 122, 122, 122, 123, 124, 125, - 126, 126, 127, 127, 128, 128, 129, 129, 129, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 131, 131, 131, 131, 131, 131, - 131, 131, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 134, 134, 134, 134, 135, 135, 135, 135, - 136, 136, 136, 136, 137, 137, 138, 138, 139, 139, - 140, 140, 141, 142, 142, 143, 144, 145, 146, 147, - 147, 147, 147, 147, 147, 147, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167 + 0, 98, 99, 99, 100, 100, 100, 100, 101, 102, + 102, 102, 103, 104, 105, 106, 106, 106, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 108, 108, 109, 109, 110, 110, 111, 112, + 113, 113, 114, 115, 115, 116, 116, 117, 118, 118, + 119, 120, 121, 122, 123, 123, 124, 125, 125, 125, + 126, 127, 128, 129, 129, 130, 131, 132, 133, 133, + 134, 134, 135, 135, 135, 136, 136, 136, 136, 136, + 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, + 137, 137, 137, 137, 137, 137, 137, 137, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 140, 140, + 140, 140, 141, 141, 141, 141, 142, 142, 142, 142, + 143, 143, 144, 144, 145, 145, 146, 146, 147, 148, + 148, 149, 150, 151, 152, 153, 153, 153, 153, 153, + 153, 153, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173 }; const signed char @@ -3905,23 +4022,24 @@ namespace xsk { namespace gsc { namespace s1 { 0, 2, 1, 0, 2, 2, 1, 1, 3, 1, 1, 1, 5, 4, 5, 3, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, - 2, 2, 1, 2, 2, 2, 6, 8, 6, 3, - 8, 6, 8, 6, 2, 2, 4, 5, 7, 5, - 9, 7, 9, 5, 3, 3, 3, 2, 2, 2, - 3, 2, 1, 0, 1, 0, 1, 1, 1, 2, - 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 3, 2, 2, 1, 2, 2, 2, 6, + 8, 6, 3, 8, 6, 8, 6, 2, 2, 4, + 5, 7, 5, 9, 7, 9, 5, 3, 3, 3, + 2, 2, 2, 3, 2, 2, 5, 5, 1, 0, + 1, 0, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, - 2, 2, 3, 3, 4, 6, 8, 9, 1, 1, - 3, 1, 0, 2, 3, 3, 4, 3, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, + 2, 2, 2, 2, 3, 3, 2, 2, 3, 3, + 4, 6, 8, 9, 1, 1, 3, 1, 0, 2, + 3, 3, 4, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, - 7, 2, 2, 1, 1, 1, 1 + 2, 1, 1, 1, 1, 1, 7, 2, 2, 1, + 1, 1, 1 }; @@ -3931,26 +4049,27 @@ namespace xsk { namespace gsc { namespace s1 { const short parser::yyrline_[] = { - 0, 233, 233, 234, 238, 240, 242, 244, 249, 254, - 255, 256, 260, 265, 270, 275, 277, 280, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 308, - 309, 313, 315, 320, 322, 327, 332, 337, 339, 344, - 349, 351, 356, 358, 363, 368, 370, 375, 380, 385, - 390, 395, 397, 402, 407, 409, 411, 416, 421, 426, - 431, 433, 438, 439, 443, 444, 448, 449, 450, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 472, 473, 474, 475, 476, 477, - 478, 479, 483, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 496, 497, 498, 499, 500, 501, 502, 503, - 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, - 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, - 524, 525, 529, 530, 531, 532, 536, 537, 538, 539, - 543, 544, 545, 546, 550, 552, 557, 559, 564, 565, - 569, 571, 577, 581, 583, 588, 593, 598, 603, 608, - 609, 610, 611, 612, 613, 614, 615, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, - 631, 632, 633, 634, 635, 636, 637 + 0, 239, 239, 240, 244, 246, 248, 250, 255, 260, + 261, 262, 266, 271, 276, 281, 283, 286, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 317, 318, 322, 324, 329, 331, 336, 341, + 346, 348, 353, 358, 360, 365, 367, 372, 377, 379, + 384, 389, 394, 399, 404, 406, 411, 416, 418, 420, + 425, 430, 435, 440, 442, 447, 452, 457, 462, 463, + 467, 468, 472, 473, 474, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, + 496, 497, 498, 499, 500, 501, 502, 503, 507, 508, + 509, 510, 511, 512, 513, 514, 515, 516, 520, 521, + 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 553, 554, + 555, 556, 560, 561, 562, 563, 567, 568, 569, 570, + 574, 576, 581, 583, 588, 589, 593, 595, 601, 605, + 607, 612, 617, 622, 627, 632, 633, 634, 635, 636, + 637, 638, 639, 642, 643, 644, 645, 646, 647, 648, + 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, + 659, 660, 661 }; void @@ -3983,9 +4102,9 @@ namespace xsk { namespace gsc { namespace s1 { #line 13 "parser.ypp" } } } // xsk::gsc::s1 -#line 3987 "parser.cpp" +#line 4106 "parser.cpp" -#line 639 "parser.ypp" +#line 663 "parser.ypp" void xsk::gsc::s1::parser::error(const xsk::gsc::location& loc, const std::string& msg) diff --git a/src/s1/xsk/parser.hpp b/src/s1/xsk/parser.hpp index a1028ddc..d096df8c 100644 --- a/src/s1/xsk/parser.hpp +++ b/src/s1/xsk/parser.hpp @@ -510,88 +510,97 @@ namespace xsk { namespace gsc { namespace s1 { // stmt_break char dummy27[sizeof (stmt_break_ptr)]; + // stmt_breakpoint + char dummy28[sizeof (stmt_breakpoint_ptr)]; + // stmt_call - char dummy28[sizeof (stmt_call_ptr)]; + char dummy29[sizeof (stmt_call_ptr)]; // stmt_case - char dummy29[sizeof (stmt_case_ptr)]; + char dummy30[sizeof (stmt_case_ptr)]; // stmt_continue - char dummy30[sizeof (stmt_continue_ptr)]; + char dummy31[sizeof (stmt_continue_ptr)]; // stmt_default - char dummy31[sizeof (stmt_default_ptr)]; + char dummy32[sizeof (stmt_default_ptr)]; // stmt_endon - char dummy32[sizeof (stmt_endon_ptr)]; + char dummy33[sizeof (stmt_endon_ptr)]; // stmt_for - char dummy33[sizeof (stmt_for_ptr)]; + char dummy34[sizeof (stmt_for_ptr)]; // stmt_foreach - char dummy34[sizeof (stmt_foreach_ptr)]; + char dummy35[sizeof (stmt_foreach_ptr)]; // stmt_if - char dummy35[sizeof (stmt_if_ptr)]; + char dummy36[sizeof (stmt_if_ptr)]; // stmt_ifelse - char dummy36[sizeof (stmt_ifelse_ptr)]; + char dummy37[sizeof (stmt_ifelse_ptr)]; // stmt_block // stmt_list - char dummy37[sizeof (stmt_list_ptr)]; + char dummy38[sizeof (stmt_list_ptr)]; // stmt_notify - char dummy38[sizeof (stmt_notify_ptr)]; + char dummy39[sizeof (stmt_notify_ptr)]; + + // stmt_prof_begin + char dummy40[sizeof (stmt_prof_begin_ptr)]; + + // stmt_prof_end + char dummy41[sizeof (stmt_prof_end_ptr)]; // stmt // for_stmt - char dummy39[sizeof (stmt_ptr)]; + char dummy42[sizeof (stmt_ptr)]; // stmt_return - char dummy40[sizeof (stmt_return_ptr)]; + char dummy43[sizeof (stmt_return_ptr)]; // stmt_switch - char dummy41[sizeof (stmt_switch_ptr)]; + char dummy44[sizeof (stmt_switch_ptr)]; // stmt_wait - char dummy42[sizeof (stmt_wait_ptr)]; + char dummy45[sizeof (stmt_wait_ptr)]; // stmt_waitframe - char dummy43[sizeof (stmt_waitframe_ptr)]; + char dummy46[sizeof (stmt_waitframe_ptr)]; // stmt_waittill - char dummy44[sizeof (stmt_waittill_ptr)]; + char dummy47[sizeof (stmt_waittill_ptr)]; // stmt_waittillframeend - char dummy45[sizeof (stmt_waittillframeend_ptr)]; + char dummy48[sizeof (stmt_waittillframeend_ptr)]; // stmt_waittillmatch - char dummy46[sizeof (stmt_waittillmatch_ptr)]; + char dummy49[sizeof (stmt_waittillmatch_ptr)]; // stmt_while - char dummy47[sizeof (stmt_while_ptr)]; + char dummy50[sizeof (stmt_while_ptr)]; // string - char dummy48[sizeof (string_ptr)]; + char dummy51[sizeof (string_ptr)]; // thisthread - char dummy49[sizeof (thisthread_ptr)]; + char dummy52[sizeof (thisthread_ptr)]; // thread - char dummy50[sizeof (thread_ptr)]; + char dummy53[sizeof (thread_ptr)]; // true - char dummy51[sizeof (true_ptr)]; + char dummy54[sizeof (true_ptr)]; // undefined - char dummy52[sizeof (undefined_ptr)]; + char dummy55[sizeof (undefined_ptr)]; // usingtree - char dummy53[sizeof (usingtree_ptr)]; + char dummy56[sizeof (usingtree_ptr)]; // vector - char dummy54[sizeof (vector_ptr)]; + char dummy57[sizeof (vector_ptr)]; }; /// The size of the largest semantic type. @@ -643,98 +652,101 @@ namespace xsk { namespace gsc { namespace s1 { S1EOF = 0, // "end of file" S1error = 1, // error S1UNDEF = 2, // "invalid token" - INCLUDE = 3, // "#include" - USINGTREE = 4, // "#using_animtree" - ANIMTREE = 5, // "#animtree" - ENDON = 6, // "endon" - NOTIFY = 7, // "notify" - WAIT = 8, // "wait" - WAITTILL = 9, // "waittill" - WAITTILLMATCH = 10, // "waittillmatch" - WAITTILLFRAMEEND = 11, // "waittillframeend" - WAITFRAME = 12, // "waitframe" - IF = 13, // "if" - ELSE = 14, // "else" - WHILE = 15, // "while" - FOR = 16, // "for" - FOREACH = 17, // "foreach" - IN = 18, // "in" - SWITCH = 19, // "switch" - CASE = 20, // "case" - DEFAULT = 21, // "default" - BREAK = 22, // "break" - CONTINUE = 23, // "continue" - RETURN = 24, // "return" - THREAD = 25, // "thread" - CHILDTHREAD = 26, // "childthread" - THISTHREAD = 27, // "thisthread" - CALL = 28, // "call" - TRUE = 29, // "true" - FALSE = 30, // "false" - UNDEFINED = 31, // "undefined" - SIZE = 32, // "size" - GAME = 33, // "game" - SELF = 34, // "self" - ANIM = 35, // "anim" - LEVEL = 36, // "level" - LPAREN = 37, // "(" - RPAREN = 38, // ")" - LBRACE = 39, // "{" - RBRACE = 40, // "}" - LBRACKET = 41, // "[" - RBRACKET = 42, // "]" - COMMA = 43, // "," - DOT = 44, // "." - DOUBLECOLON = 45, // "::" - COLON = 46, // ":" - SEMICOLON = 47, // ";" - INCREMENT = 48, // "++" - DECREMENT = 49, // "--" - LSHIFT = 50, // "<<" - RSHIFT = 51, // ">>" - OR = 52, // "||" - AND = 53, // "&&" - EQUALITY = 54, // "==" - INEQUALITY = 55, // "!=" - LESS_EQUAL = 56, // "<=" - GREATER_EQUAL = 57, // ">=" - LESS = 58, // "<" - GREATER = 59, // ">" - NOT = 60, // "!" - COMPLEMENT = 61, // "~" - ASSIGN = 62, // "=" - ASSIGN_ADD = 63, // "+=" - ASSIGN_SUB = 64, // "-=" - ASSIGN_MULT = 65, // "*=" - ASSIGN_DIV = 66, // "/=" - ASSIGN_MOD = 67, // "%=" - ASSIGN_BITWISE_OR = 68, // "|=" - ASSIGN_BITWISE_AND = 69, // "&=" - ASSIGN_BITWISE_EXOR = 70, // "^=" - ASSIGN_RSHIFT = 71, // ">>=" - ASSIGN_LSHIFT = 72, // "<<=" - BITWISE_OR = 73, // "|" - BITWISE_AND = 74, // "&" - BITWISE_EXOR = 75, // "^" - ADD = 76, // "+" - SUB = 77, // "-" - MULT = 78, // "*" - DIV = 79, // "/" - MOD = 80, // "%" - FILE = 81, // "file path" - NAME = 82, // "identifier" - STRING = 83, // "string literal" - ISTRING = 84, // "localized string" - FLOAT = 85, // "float" - INTEGER = 86, // "int" - ADD_ARRAY = 87, // ADD_ARRAY - THEN = 88, // THEN - NEG = 89, // NEG - ANIMREF = 90, // ANIMREF - PREINC = 91, // PREINC - PREDEC = 92, // PREDEC - POSTINC = 93, // POSTINC - POSTDEC = 94 // POSTDEC + BREAKPOINT = 3, // "breakpoint" + PROFBEGIN = 4, // "prof_begin" + PROFEND = 5, // "prof_end" + INCLUDE = 6, // "#include" + USINGTREE = 7, // "#using_animtree" + ANIMTREE = 8, // "#animtree" + ENDON = 9, // "endon" + NOTIFY = 10, // "notify" + WAIT = 11, // "wait" + WAITTILL = 12, // "waittill" + WAITTILLMATCH = 13, // "waittillmatch" + WAITTILLFRAMEEND = 14, // "waittillframeend" + WAITFRAME = 15, // "waitframe" + IF = 16, // "if" + ELSE = 17, // "else" + WHILE = 18, // "while" + FOR = 19, // "for" + FOREACH = 20, // "foreach" + IN = 21, // "in" + SWITCH = 22, // "switch" + CASE = 23, // "case" + DEFAULT = 24, // "default" + BREAK = 25, // "break" + CONTINUE = 26, // "continue" + RETURN = 27, // "return" + THREAD = 28, // "thread" + CHILDTHREAD = 29, // "childthread" + THISTHREAD = 30, // "thisthread" + CALL = 31, // "call" + TRUE = 32, // "true" + FALSE = 33, // "false" + UNDEFINED = 34, // "undefined" + SIZE = 35, // ".size" + GAME = 36, // "game" + SELF = 37, // "self" + ANIM = 38, // "anim" + LEVEL = 39, // "level" + LPAREN = 40, // "(" + RPAREN = 41, // ")" + LBRACE = 42, // "{" + RBRACE = 43, // "}" + LBRACKET = 44, // "[" + RBRACKET = 45, // "]" + COMMA = 46, // "," + DOT = 47, // "." + DOUBLECOLON = 48, // "::" + COLON = 49, // ":" + SEMICOLON = 50, // ";" + INCREMENT = 51, // "++" + DECREMENT = 52, // "--" + LSHIFT = 53, // "<<" + RSHIFT = 54, // ">>" + OR = 55, // "||" + AND = 56, // "&&" + EQUALITY = 57, // "==" + INEQUALITY = 58, // "!=" + LESS_EQUAL = 59, // "<=" + GREATER_EQUAL = 60, // ">=" + LESS = 61, // "<" + GREATER = 62, // ">" + NOT = 63, // "!" + COMPLEMENT = 64, // "~" + ASSIGN = 65, // "=" + ASSIGN_ADD = 66, // "+=" + ASSIGN_SUB = 67, // "-=" + ASSIGN_MULT = 68, // "*=" + ASSIGN_DIV = 69, // "/=" + ASSIGN_MOD = 70, // "%=" + ASSIGN_BITWISE_OR = 71, // "|=" + ASSIGN_BITWISE_AND = 72, // "&=" + ASSIGN_BITWISE_EXOR = 73, // "^=" + ASSIGN_RSHIFT = 74, // ">>=" + ASSIGN_LSHIFT = 75, // "<<=" + BITWISE_OR = 76, // "|" + BITWISE_AND = 77, // "&" + BITWISE_EXOR = 78, // "^" + ADD = 79, // "+" + SUB = 80, // "-" + MULT = 81, // "*" + DIV = 82, // "/" + MOD = 83, // "%" + FILE = 84, // "file path" + NAME = 85, // "identifier" + STRING = 86, // "string literal" + ISTRING = 87, // "localized string" + FLOAT = 88, // "float" + INTEGER = 89, // "int" + ADD_ARRAY = 90, // ADD_ARRAY + THEN = 91, // THEN + NEG = 92, // NEG + ANIMREF = 93, // ANIMREF + PREINC = 94, // PREINC + PREDEC = 95, // PREDEC + POSTINC = 96, // POSTINC + POSTDEC = 97 // POSTDEC }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; @@ -751,176 +763,182 @@ namespace xsk { namespace gsc { namespace s1 { { enum symbol_kind_type { - YYNTOKENS = 95, ///< Number of tokens. + YYNTOKENS = 98, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error S_YYUNDEF = 2, // "invalid token" - S_INCLUDE = 3, // "#include" - S_USINGTREE = 4, // "#using_animtree" - S_ANIMTREE = 5, // "#animtree" - S_ENDON = 6, // "endon" - S_NOTIFY = 7, // "notify" - S_WAIT = 8, // "wait" - S_WAITTILL = 9, // "waittill" - S_WAITTILLMATCH = 10, // "waittillmatch" - S_WAITTILLFRAMEEND = 11, // "waittillframeend" - S_WAITFRAME = 12, // "waitframe" - S_IF = 13, // "if" - S_ELSE = 14, // "else" - S_WHILE = 15, // "while" - S_FOR = 16, // "for" - S_FOREACH = 17, // "foreach" - S_IN = 18, // "in" - S_SWITCH = 19, // "switch" - S_CASE = 20, // "case" - S_DEFAULT = 21, // "default" - S_BREAK = 22, // "break" - S_CONTINUE = 23, // "continue" - S_RETURN = 24, // "return" - S_THREAD = 25, // "thread" - S_CHILDTHREAD = 26, // "childthread" - S_THISTHREAD = 27, // "thisthread" - S_CALL = 28, // "call" - S_TRUE = 29, // "true" - S_FALSE = 30, // "false" - S_UNDEFINED = 31, // "undefined" - S_SIZE = 32, // "size" - S_GAME = 33, // "game" - S_SELF = 34, // "self" - S_ANIM = 35, // "anim" - S_LEVEL = 36, // "level" - S_LPAREN = 37, // "(" - S_RPAREN = 38, // ")" - S_LBRACE = 39, // "{" - S_RBRACE = 40, // "}" - S_LBRACKET = 41, // "[" - S_RBRACKET = 42, // "]" - S_COMMA = 43, // "," - S_DOT = 44, // "." - S_DOUBLECOLON = 45, // "::" - S_COLON = 46, // ":" - S_SEMICOLON = 47, // ";" - S_INCREMENT = 48, // "++" - S_DECREMENT = 49, // "--" - S_LSHIFT = 50, // "<<" - S_RSHIFT = 51, // ">>" - S_OR = 52, // "||" - S_AND = 53, // "&&" - S_EQUALITY = 54, // "==" - S_INEQUALITY = 55, // "!=" - S_LESS_EQUAL = 56, // "<=" - S_GREATER_EQUAL = 57, // ">=" - S_LESS = 58, // "<" - S_GREATER = 59, // ">" - S_NOT = 60, // "!" - S_COMPLEMENT = 61, // "~" - S_ASSIGN = 62, // "=" - S_ASSIGN_ADD = 63, // "+=" - S_ASSIGN_SUB = 64, // "-=" - S_ASSIGN_MULT = 65, // "*=" - S_ASSIGN_DIV = 66, // "/=" - S_ASSIGN_MOD = 67, // "%=" - S_ASSIGN_BITWISE_OR = 68, // "|=" - S_ASSIGN_BITWISE_AND = 69, // "&=" - S_ASSIGN_BITWISE_EXOR = 70, // "^=" - S_ASSIGN_RSHIFT = 71, // ">>=" - S_ASSIGN_LSHIFT = 72, // "<<=" - S_BITWISE_OR = 73, // "|" - S_BITWISE_AND = 74, // "&" - S_BITWISE_EXOR = 75, // "^" - S_ADD = 76, // "+" - S_SUB = 77, // "-" - S_MULT = 78, // "*" - S_DIV = 79, // "/" - S_MOD = 80, // "%" - S_FILE = 81, // "file path" - S_NAME = 82, // "identifier" - S_STRING = 83, // "string literal" - S_ISTRING = 84, // "localized string" - S_FLOAT = 85, // "float" - S_INTEGER = 86, // "int" - S_ADD_ARRAY = 87, // ADD_ARRAY - S_THEN = 88, // THEN - S_NEG = 89, // NEG - S_ANIMREF = 90, // ANIMREF - S_PREINC = 91, // PREINC - S_PREDEC = 92, // PREDEC - S_POSTINC = 93, // POSTINC - S_POSTDEC = 94, // POSTDEC - S_YYACCEPT = 95, // $accept - S_root = 96, // root - S_program = 97, // program - S_include = 98, // include - S_define = 99, // define - S_usingtree = 100, // usingtree - S_constant = 101, // constant - S_thread = 102, // thread - S_parameters = 103, // parameters - S_stmt = 104, // stmt - S_stmt_block = 105, // stmt_block - S_stmt_list = 106, // stmt_list - S_stmt_call = 107, // stmt_call - S_stmt_assign = 108, // stmt_assign - S_stmt_endon = 109, // stmt_endon - S_stmt_notify = 110, // stmt_notify - S_stmt_wait = 111, // stmt_wait - S_stmt_waittill = 112, // stmt_waittill - S_stmt_waittillmatch = 113, // stmt_waittillmatch - S_stmt_waittillframeend = 114, // stmt_waittillframeend - S_stmt_waitframe = 115, // stmt_waitframe - S_stmt_if = 116, // stmt_if - S_stmt_ifelse = 117, // stmt_ifelse - S_stmt_while = 118, // stmt_while - S_stmt_for = 119, // stmt_for - S_stmt_foreach = 120, // stmt_foreach - S_stmt_switch = 121, // stmt_switch - S_stmt_case = 122, // stmt_case - S_stmt_default = 123, // stmt_default - S_stmt_break = 124, // stmt_break - S_stmt_continue = 125, // stmt_continue - S_stmt_return = 126, // stmt_return - S_for_stmt = 127, // for_stmt - S_for_expr = 128, // for_expr - S_expr = 129, // expr - S_expr_assign = 130, // expr_assign - S_expr_compare = 131, // expr_compare - S_expr_binary = 132, // expr_binary - S_expr_primitive = 133, // expr_primitive - S_expr_call = 134, // expr_call - S_expr_call_thread = 135, // expr_call_thread - S_expr_call_childthread = 136, // expr_call_childthread - S_expr_call_function = 137, // expr_call_function - S_expr_call_pointer = 138, // expr_call_pointer - S_expr_arguments = 139, // expr_arguments - S_expr_arguments_filled = 140, // expr_arguments_filled - S_expr_arguments_empty = 141, // expr_arguments_empty - S_expr_function = 142, // expr_function - S_expr_add_array = 143, // expr_add_array - S_expr_array = 144, // expr_array - S_expr_field = 145, // expr_field - S_expr_size = 146, // expr_size - S_object = 147, // object - S_thisthread = 148, // thisthread - S_empty_array = 149, // empty_array - S_undefined = 150, // undefined - S_game = 151, // game - S_self = 152, // self - S_anim = 153, // anim - S_level = 154, // level - S_animation = 155, // animation - S_animtree = 156, // animtree - S_name = 157, // name - S_file = 158, // file - S_istring = 159, // istring - S_string = 160, // string - S_vector = 161, // vector - S_neg_float = 162, // neg_float - S_neg_integer = 163, // neg_integer - S_float = 164, // float - S_integer = 165, // integer - S_false = 166, // false - S_true = 167 // true + S_BREAKPOINT = 3, // "breakpoint" + S_PROFBEGIN = 4, // "prof_begin" + S_PROFEND = 5, // "prof_end" + S_INCLUDE = 6, // "#include" + S_USINGTREE = 7, // "#using_animtree" + S_ANIMTREE = 8, // "#animtree" + S_ENDON = 9, // "endon" + S_NOTIFY = 10, // "notify" + S_WAIT = 11, // "wait" + S_WAITTILL = 12, // "waittill" + S_WAITTILLMATCH = 13, // "waittillmatch" + S_WAITTILLFRAMEEND = 14, // "waittillframeend" + S_WAITFRAME = 15, // "waitframe" + S_IF = 16, // "if" + S_ELSE = 17, // "else" + S_WHILE = 18, // "while" + S_FOR = 19, // "for" + S_FOREACH = 20, // "foreach" + S_IN = 21, // "in" + S_SWITCH = 22, // "switch" + S_CASE = 23, // "case" + S_DEFAULT = 24, // "default" + S_BREAK = 25, // "break" + S_CONTINUE = 26, // "continue" + S_RETURN = 27, // "return" + S_THREAD = 28, // "thread" + S_CHILDTHREAD = 29, // "childthread" + S_THISTHREAD = 30, // "thisthread" + S_CALL = 31, // "call" + S_TRUE = 32, // "true" + S_FALSE = 33, // "false" + S_UNDEFINED = 34, // "undefined" + S_SIZE = 35, // ".size" + S_GAME = 36, // "game" + S_SELF = 37, // "self" + S_ANIM = 38, // "anim" + S_LEVEL = 39, // "level" + S_LPAREN = 40, // "(" + S_RPAREN = 41, // ")" + S_LBRACE = 42, // "{" + S_RBRACE = 43, // "}" + S_LBRACKET = 44, // "[" + S_RBRACKET = 45, // "]" + S_COMMA = 46, // "," + S_DOT = 47, // "." + S_DOUBLECOLON = 48, // "::" + S_COLON = 49, // ":" + S_SEMICOLON = 50, // ";" + S_INCREMENT = 51, // "++" + S_DECREMENT = 52, // "--" + S_LSHIFT = 53, // "<<" + S_RSHIFT = 54, // ">>" + S_OR = 55, // "||" + S_AND = 56, // "&&" + S_EQUALITY = 57, // "==" + S_INEQUALITY = 58, // "!=" + S_LESS_EQUAL = 59, // "<=" + S_GREATER_EQUAL = 60, // ">=" + S_LESS = 61, // "<" + S_GREATER = 62, // ">" + S_NOT = 63, // "!" + S_COMPLEMENT = 64, // "~" + S_ASSIGN = 65, // "=" + S_ASSIGN_ADD = 66, // "+=" + S_ASSIGN_SUB = 67, // "-=" + S_ASSIGN_MULT = 68, // "*=" + S_ASSIGN_DIV = 69, // "/=" + S_ASSIGN_MOD = 70, // "%=" + S_ASSIGN_BITWISE_OR = 71, // "|=" + S_ASSIGN_BITWISE_AND = 72, // "&=" + S_ASSIGN_BITWISE_EXOR = 73, // "^=" + S_ASSIGN_RSHIFT = 74, // ">>=" + S_ASSIGN_LSHIFT = 75, // "<<=" + S_BITWISE_OR = 76, // "|" + S_BITWISE_AND = 77, // "&" + S_BITWISE_EXOR = 78, // "^" + S_ADD = 79, // "+" + S_SUB = 80, // "-" + S_MULT = 81, // "*" + S_DIV = 82, // "/" + S_MOD = 83, // "%" + S_FILE = 84, // "file path" + S_NAME = 85, // "identifier" + S_STRING = 86, // "string literal" + S_ISTRING = 87, // "localized string" + S_FLOAT = 88, // "float" + S_INTEGER = 89, // "int" + S_ADD_ARRAY = 90, // ADD_ARRAY + S_THEN = 91, // THEN + S_NEG = 92, // NEG + S_ANIMREF = 93, // ANIMREF + S_PREINC = 94, // PREINC + S_PREDEC = 95, // PREDEC + S_POSTINC = 96, // POSTINC + S_POSTDEC = 97, // POSTDEC + S_YYACCEPT = 98, // $accept + S_root = 99, // root + S_program = 100, // program + S_include = 101, // include + S_define = 102, // define + S_usingtree = 103, // usingtree + S_constant = 104, // constant + S_thread = 105, // thread + S_parameters = 106, // parameters + S_stmt = 107, // stmt + S_stmt_block = 108, // stmt_block + S_stmt_list = 109, // stmt_list + S_stmt_call = 110, // stmt_call + S_stmt_assign = 111, // stmt_assign + S_stmt_endon = 112, // stmt_endon + S_stmt_notify = 113, // stmt_notify + S_stmt_wait = 114, // stmt_wait + S_stmt_waittill = 115, // stmt_waittill + S_stmt_waittillmatch = 116, // stmt_waittillmatch + S_stmt_waittillframeend = 117, // stmt_waittillframeend + S_stmt_waitframe = 118, // stmt_waitframe + S_stmt_if = 119, // stmt_if + S_stmt_ifelse = 120, // stmt_ifelse + S_stmt_while = 121, // stmt_while + S_stmt_for = 122, // stmt_for + S_stmt_foreach = 123, // stmt_foreach + S_stmt_switch = 124, // stmt_switch + S_stmt_case = 125, // stmt_case + S_stmt_default = 126, // stmt_default + S_stmt_break = 127, // stmt_break + S_stmt_continue = 128, // stmt_continue + S_stmt_return = 129, // stmt_return + S_stmt_breakpoint = 130, // stmt_breakpoint + S_stmt_prof_begin = 131, // stmt_prof_begin + S_stmt_prof_end = 132, // stmt_prof_end + S_for_stmt = 133, // for_stmt + S_for_expr = 134, // for_expr + S_expr = 135, // expr + S_expr_assign = 136, // expr_assign + S_expr_compare = 137, // expr_compare + S_expr_binary = 138, // expr_binary + S_expr_primitive = 139, // expr_primitive + S_expr_call = 140, // expr_call + S_expr_call_thread = 141, // expr_call_thread + S_expr_call_childthread = 142, // expr_call_childthread + S_expr_call_function = 143, // expr_call_function + S_expr_call_pointer = 144, // expr_call_pointer + S_expr_arguments = 145, // expr_arguments + S_expr_arguments_filled = 146, // expr_arguments_filled + S_expr_arguments_empty = 147, // expr_arguments_empty + S_expr_function = 148, // expr_function + S_expr_add_array = 149, // expr_add_array + S_expr_array = 150, // expr_array + S_expr_field = 151, // expr_field + S_expr_size = 152, // expr_size + S_object = 153, // object + S_thisthread = 154, // thisthread + S_empty_array = 155, // empty_array + S_undefined = 156, // undefined + S_game = 157, // game + S_self = 158, // self + S_anim = 159, // anim + S_level = 160, // level + S_animation = 161, // animation + S_animtree = 162, // animtree + S_name = 163, // name + S_file = 164, // file + S_istring = 165, // istring + S_string = 166, // string + S_vector = 167, // vector + S_neg_float = 168, // neg_float + S_neg_integer = 169, // neg_integer + S_float = 170, // float + S_integer = 171, // integer + S_false = 172, // false + S_true = 173 // true }; }; @@ -1086,6 +1104,10 @@ namespace xsk { namespace gsc { namespace s1 { value.move< stmt_break_ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.move< stmt_breakpoint_ptr > (std::move (that.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.move< stmt_call_ptr > (std::move (that.value)); break; @@ -1131,6 +1153,14 @@ namespace xsk { namespace gsc { namespace s1 { value.move< stmt_notify_ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.move< stmt_prof_begin_ptr > (std::move (that.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.move< stmt_prof_end_ptr > (std::move (that.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.move< stmt_ptr > (std::move (that.value)); @@ -1597,6 +1627,20 @@ namespace xsk { namespace gsc { namespace s1 { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, stmt_breakpoint_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_breakpoint_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_call_ptr&& v, location_type&& l) : Base (t) @@ -1751,6 +1795,34 @@ namespace xsk { namespace gsc { namespace s1 { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, stmt_prof_begin_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_prof_begin_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_prof_end_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_prof_end_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_ptr&& v, location_type&& l) : Base (t) @@ -2126,6 +2198,10 @@ switch (yykind) value.template destroy< stmt_break_ptr > (); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.template destroy< stmt_breakpoint_ptr > (); + break; + case symbol_kind::S_stmt_call: // stmt_call value.template destroy< stmt_call_ptr > (); break; @@ -2171,6 +2247,14 @@ switch (yykind) value.template destroy< stmt_notify_ptr > (); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.template destroy< stmt_prof_begin_ptr > (); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.template destroy< stmt_prof_end_ptr > (); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.template destroy< stmt_ptr > (); @@ -2437,6 +2521,51 @@ switch (yykind) return symbol_type (token::S1UNDEF, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_BREAKPOINT (location_type l) + { + return symbol_type (token::BREAKPOINT, std::move (l)); + } +#else + static + symbol_type + make_BREAKPOINT (const location_type& l) + { + return symbol_type (token::BREAKPOINT, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_PROFBEGIN (location_type l) + { + return symbol_type (token::PROFBEGIN, std::move (l)); + } +#else + static + symbol_type + make_PROFBEGIN (const location_type& l) + { + return symbol_type (token::PROFBEGIN, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_PROFEND (location_type l) + { + return symbol_type (token::PROFEND, std::move (l)); + } +#else + static + symbol_type + make_PROFEND (const location_type& l) + { + return symbol_type (token::PROFEND, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4161,8 +4290,8 @@ switch (yykind) /// Constants. enum { - yylast_ = 1581, ///< Last index in yytable_. - yynnts_ = 73, ///< Number of nonterminal symbols. + yylast_ = 1646, ///< Last index in yytable_. + yynnts_ = 76, ///< Number of nonterminal symbols. yyfinal_ = 15 ///< Termination state number. }; @@ -4319,6 +4448,10 @@ switch (yykind) value.copy< stmt_break_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.copy< stmt_breakpoint_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.copy< stmt_call_ptr > (YY_MOVE (that.value)); break; @@ -4364,6 +4497,14 @@ switch (yykind) value.copy< stmt_notify_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.copy< stmt_prof_begin_ptr > (YY_MOVE (that.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.copy< stmt_prof_end_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.copy< stmt_ptr > (YY_MOVE (that.value)); @@ -4587,6 +4728,10 @@ switch (yykind) value.move< stmt_break_ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.move< stmt_breakpoint_ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.move< stmt_call_ptr > (YY_MOVE (s.value)); break; @@ -4632,6 +4777,14 @@ switch (yykind) value.move< stmt_notify_ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.move< stmt_prof_begin_ptr > (YY_MOVE (s.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.move< stmt_prof_end_ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.move< stmt_ptr > (YY_MOVE (s.value)); @@ -4760,7 +4913,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::s1 -#line 4764 "parser.hpp" +#line 4917 "parser.hpp" diff --git a/src/s2/xsk/lexer.cpp b/src/s2/xsk/lexer.cpp index 32c82aaa..1895a54c 100644 --- a/src/s2/xsk/lexer.cpp +++ b/src/s2/xsk/lexer.cpp @@ -553,8 +553,8 @@ static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 97 -#define YY_END_OF_BUFFER 98 +#define YY_NUM_RULES 100 +#define YY_END_OF_BUFFER 101 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -562,39 +562,42 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[286] = +static const flex_int16_t yy_accept[305] = { 0, - 0, 0, 0, 0, 0, 0, 98, 96, 1, 2, - 85, 96, 96, 84, 88, 96, 46, 47, 82, 80, - 52, 81, 53, 83, 95, 55, 56, 69, 79, 70, - 91, 50, 51, 89, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 48, - 87, 49, 86, 5, 6, 5, 9, 10, 9, 66, - 0, 93, 0, 0, 0, 0, 75, 0, 64, 0, - 77, 0, 0, 73, 57, 71, 58, 72, 94, 8, - 4, 3, 74, 94, 95, 0, 0, 54, 61, 67, - 65, 68, 62, 91, 78, 91, 91, 91, 91, 91, + 0, 0, 0, 0, 0, 0, 101, 99, 1, 2, + 88, 99, 99, 87, 91, 99, 49, 50, 85, 83, + 55, 84, 56, 86, 98, 58, 59, 72, 82, 73, + 94, 53, 54, 92, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 51, 90, 52, 89, 5, 6, 5, 9, 10, 9, + 69, 0, 96, 0, 0, 0, 0, 78, 0, 67, + 0, 80, 0, 0, 76, 60, 74, 61, 75, 97, + 0, 8, 4, 3, 77, 97, 98, 0, 0, 57, + 64, 70, 68, 71, 65, 94, 81, 94, 94, 94, - 91, 91, 91, 91, 91, 91, 22, 27, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 76, - 63, 7, 11, 0, 93, 0, 0, 0, 0, 0, - 92, 0, 0, 0, 0, 93, 0, 94, 3, 94, - 94, 90, 59, 60, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 25, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 0, 0, - 0, 0, 92, 0, 0, 92, 0, 44, 91, 37, - 29, 91, 91, 91, 23, 91, 91, 91, 42, 91, - 91, 91, 43, 41, 91, 91, 91, 38, 91, 17, + 94, 94, 94, 94, 94, 94, 94, 94, 25, 30, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 79, 66, 7, 11, 0, 96, 0, 0, 0, + 0, 0, 95, 0, 0, 0, 0, 96, 0, 97, + 0, 3, 97, 97, 93, 62, 63, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 28, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 0, 0, 0, 0, 95, 0, 0, 95, 0, + 0, 47, 94, 40, 32, 94, 94, 94, 26, 94, + 94, 94, 45, 94, 94, 94, 94, 46, 94, 94, - 91, 0, 0, 0, 31, 91, 91, 91, 15, 39, - 91, 45, 91, 91, 91, 91, 91, 91, 91, 91, - 24, 0, 0, 0, 91, 91, 91, 91, 16, 33, - 28, 91, 34, 91, 91, 91, 0, 0, 0, 91, - 91, 30, 26, 91, 91, 91, 91, 0, 12, 0, - 91, 32, 91, 91, 91, 18, 14, 0, 91, 91, - 40, 21, 91, 91, 0, 91, 36, 91, 91, 0, - 35, 91, 91, 0, 91, 91, 0, 91, 19, 0, - 91, 13, 91, 20, 0 + 94, 41, 94, 20, 94, 0, 0, 0, 44, 34, + 94, 94, 94, 18, 42, 94, 48, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 27, 0, 0, 0, + 94, 94, 94, 94, 94, 19, 94, 94, 36, 31, + 94, 37, 94, 94, 94, 0, 0, 0, 94, 94, + 94, 33, 29, 94, 94, 94, 94, 94, 94, 0, + 15, 0, 94, 94, 35, 94, 14, 94, 94, 94, + 21, 17, 0, 94, 94, 94, 94, 43, 24, 94, + 94, 0, 12, 94, 13, 39, 94, 94, 0, 38, + 94, 94, 0, 94, 94, 0, 94, 22, 0, 94, + + 16, 94, 23, 0 } ; static const YY_CHAR yy_ec[256] = @@ -611,8 +614,8 @@ static const YY_CHAR yy_ec[256] = 25, 26, 27, 28, 29, 1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 24, 39, 40, 41, 42, - 43, 24, 24, 44, 45, 46, 47, 48, 49, 24, - 50, 51, 52, 53, 54, 55, 1, 1, 1, 1, + 43, 44, 24, 45, 46, 47, 48, 49, 50, 24, + 51, 52, 53, 54, 55, 56, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -629,228 +632,240 @@ static const YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static const YY_CHAR yy_meta[56] = +static const YY_CHAR yy_meta[57] = { 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 4, 1, 1, 1, 1, 1, 4, 1, 5, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 1, 1, 1, 1 + 4, 4, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[300] = +static const flex_int16_t yy_base[319] = { 0, - 0, 0, 53, 54, 55, 56, 540, 541, 541, 541, - 517, 55, 33, 516, 64, 58, 541, 541, 515, 55, - 541, 60, 518, 73, 71, 516, 541, 70, 512, 71, - 507, 541, 541, 510, 57, 44, 70, 72, 75, 78, - 48, 76, 86, 79, 90, 93, 88, 84, 103, 541, - 81, 541, 541, 541, 541, 514, 541, 541, 513, 541, - 104, 541, 132, 487, 486, 482, 541, 118, 541, 119, - 541, 127, 138, 541, 541, 541, 541, 541, 120, 541, - 541, 0, 541, 121, 133, 134, 0, 541, 504, 541, - 541, 541, 503, 498, 541, 38, 120, 117, 135, 126, + 0, 0, 54, 55, 56, 57, 574, 575, 575, 575, + 551, 56, 35, 550, 63, 55, 575, 575, 549, 56, + 575, 55, 56, 74, 71, 551, 575, 54, 547, 70, + 542, 575, 575, 545, 53, 58, 64, 72, 73, 74, + 79, 84, 82, 85, 86, 88, 95, 97, 94, 107, + 575, 96, 575, 575, 575, 575, 549, 575, 575, 548, + 575, 120, 575, 127, 522, 521, 516, 575, 122, 575, + 115, 575, 126, 140, 575, 575, 575, 575, 575, 120, + 523, 575, 575, 0, 575, 121, 141, 135, 0, 575, + 538, 575, 575, 575, 537, 532, 575, 132, 128, 134, - 137, 122, 143, 139, 140, 144, 497, 496, 145, 148, - 149, 151, 152, 154, 160, 155, 156, 161, 162, 541, - 541, 541, 541, 185, 191, 202, 483, 488, 481, 192, - 541, 203, 200, 207, 204, 205, 212, 541, 0, 201, - 541, 492, 541, 541, 186, 194, 197, 206, 199, 196, - 215, 209, 208, 218, 220, 221, 222, 223, 224, 227, - 226, 231, 233, 232, 238, 239, 241, 242, 476, 476, - 473, 264, 265, 271, 266, 270, 277, 488, 255, 487, - 486, 262, 263, 257, 485, 258, 259, 272, 484, 273, - 279, 157, 483, 482, 280, 281, 285, 481, 282, 283, + 137, 139, 138, 142, 114, 143, 145, 146, 531, 530, + 150, 151, 152, 153, 156, 159, 163, 158, 160, 165, + 166, 575, 575, 575, 575, 189, 197, 202, 517, 522, + 515, 204, 575, 207, 205, 208, 209, 210, 213, 575, + 500, 0, 202, 575, 525, 575, 575, 199, 212, 187, + 195, 206, 198, 217, 215, 218, 222, 224, 225, 226, + 227, 228, 229, 231, 236, 230, 238, 241, 244, 243, + 245, 509, 509, 506, 268, 269, 276, 271, 273, 283, + 513, 520, 261, 519, 518, 258, 263, 262, 517, 270, + 272, 277, 516, 278, 279, 282, 287, 515, 289, 290, - 290, 460, 458, 468, 477, 284, 293, 294, 476, 475, - 296, 474, 295, 297, 299, 300, 305, 306, 307, 314, - 473, 454, 464, 467, 316, 315, 317, 320, 469, 468, - 467, 321, 466, 322, 324, 329, 457, 456, 459, 323, - 332, 462, 461, 334, 344, 330, 333, 452, 541, 443, - 346, 458, 349, 348, 350, 351, 541, 445, 357, 356, - 456, 455, 359, 364, 426, 362, 393, 367, 365, 372, - 391, 372, 370, 371, 373, 375, 380, 374, 384, 372, - 378, 541, 383, 379, 541, 420, 425, 430, 435, 438, - 440, 445, 450, 455, 460, 465, 357, 470, 475 + 293, 514, 291, 294, 296, 492, 490, 501, 575, 298, + 299, 301, 305, 510, 509, 302, 508, 307, 313, 309, + 312, 322, 324, 314, 310, 327, 507, 487, 498, 501, + 328, 330, 334, 336, 335, 503, 340, 337, 502, 501, + 342, 500, 338, 343, 344, 491, 490, 493, 350, 349, + 351, 496, 495, 355, 360, 363, 364, 366, 369, 486, + 575, 477, 370, 374, 492, 373, 491, 375, 377, 380, + 378, 575, 478, 376, 390, 389, 391, 489, 488, 392, + 395, 472, 486, 396, 472, 424, 400, 401, 402, 421, + 402, 406, 397, 407, 408, 406, 410, 352, 259, 409, + 575, 413, 200, 575, 451, 456, 461, 466, 469, 471, + 476, 481, 486, 491, 496, 84, 501, 506 } ; -static const flex_int16_t yy_def[300] = +static const flex_int16_t yy_def[319] = { 0, - 285, 1, 286, 286, 287, 287, 285, 285, 285, 285, - 285, 288, 285, 285, 285, 289, 285, 285, 285, 285, - 285, 285, 285, 285, 290, 285, 285, 285, 285, 285, - 291, 285, 285, 285, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 288, 285, 292, 285, 285, 285, 285, 293, 285, 294, - 285, 289, 295, 285, 285, 285, 285, 285, 285, 285, - 285, 296, 285, 285, 290, 290, 297, 285, 285, 285, - 285, 285, 285, 291, 285, 291, 291, 291, 291, 291, + 304, 1, 305, 305, 306, 306, 304, 304, 304, 304, + 304, 307, 304, 304, 304, 308, 304, 304, 304, 304, + 304, 304, 304, 304, 309, 304, 304, 304, 304, 304, + 310, 304, 304, 304, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 307, 304, 311, 304, 304, 304, 304, 312, 304, + 313, 304, 308, 314, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 315, 304, 304, 309, 309, 316, 304, + 304, 304, 304, 304, 304, 310, 304, 310, 310, 310, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 285, - 285, 285, 285, 288, 288, 292, 285, 285, 285, 293, - 285, 298, 294, 299, 289, 289, 295, 285, 296, 285, - 285, 297, 285, 285, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 285, 285, - 285, 293, 293, 298, 294, 294, 299, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 304, 304, 304, 304, 307, 307, 311, 304, 304, + 304, 312, 304, 317, 313, 318, 308, 308, 314, 304, + 304, 315, 304, 304, 316, 304, 304, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 304, 304, 304, 312, 312, 317, 313, 313, 318, + 304, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 291, 285, 285, 285, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 285, 285, 285, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 285, 285, 285, 291, - 291, 291, 291, 291, 291, 291, 291, 285, 285, 285, - 291, 291, 291, 291, 291, 291, 285, 285, 291, 291, - 291, 291, 291, 291, 285, 291, 291, 291, 291, 285, - 291, 291, 291, 285, 291, 291, 285, 291, 291, 285, - 291, 285, 291, 291, 0, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285 + 310, 310, 310, 310, 310, 304, 304, 304, 304, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 304, 304, 304, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 304, 304, 304, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 304, + 304, 304, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 304, 304, 310, 310, 310, 310, 310, 310, 310, + 310, 304, 310, 310, 310, 310, 310, 310, 304, 310, + 310, 310, 304, 310, 310, 304, 310, 310, 304, 310, + 304, 310, 310, 0, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304 } ; -static const flex_int16_t yy_nxt[597] = +static const flex_int16_t yy_nxt[632] = { 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 8, 33, 34, 31, 35, 36, 37, 38, 39, 40, 41, 31, 42, 31, 43, - 31, 44, 31, 45, 46, 47, 48, 31, 49, 31, - 31, 50, 51, 52, 53, 55, 55, 58, 58, 62, - 59, 59, 64, 87, 56, 56, 62, 75, 68, 87, - 65, 69, 70, 87, 77, 145, 76, 106, 80, 66, - 63, 78, 87, 73, 81, 71, 84, 97, 85, 82, - 89, 90, 92, 93, 83, 87, 87, 87, 96, 98, + 31, 44, 31, 45, 46, 47, 48, 49, 31, 50, + 31, 31, 51, 52, 53, 54, 56, 56, 59, 59, + 63, 60, 60, 63, 65, 57, 57, 69, 76, 78, + 70, 71, 66, 80, 91, 92, 79, 77, 89, 82, + 74, 64, 67, 89, 72, 83, 86, 145, 87, 89, + 84, 94, 95, 100, 98, 85, 89, 89, 89, 89, - 87, 87, 120, 87, 87, 101, 99, 104, 62, 87, - 107, 87, 100, 87, 102, 87, 103, 108, 87, 109, - 105, 110, 131, 111, 115, 117, 112, 131, 87, 63, - 113, 116, 118, 121, 61, 62, 125, 79, 140, 119, - 72, 114, 87, 132, 134, 87, 136, 87, 84, 285, - 85, 87, 73, 146, 138, 141, 147, 126, 87, 87, - 87, 148, 87, 137, 87, 87, 152, 150, 87, 87, - 87, 151, 149, 87, 87, 153, 87, 87, 154, 87, - 87, 87, 87, 155, 156, 87, 87, 87, 166, 62, - 160, 162, 157, 158, 159, 62, 131, 163, 167, 168, + 101, 81, 99, 106, 89, 103, 102, 89, 108, 89, + 89, 89, 104, 89, 105, 111, 107, 122, 109, 89, + 89, 114, 89, 133, 63, 110, 133, 112, 115, 62, + 113, 127, 89, 117, 63, 119, 120, 80, 143, 89, + 136, 118, 73, 121, 116, 64, 156, 134, 138, 123, + 304, 74, 128, 89, 140, 144, 86, 89, 87, 89, + 89, 149, 89, 89, 89, 139, 89, 89, 89, 148, + 89, 89, 154, 150, 152, 89, 89, 89, 89, 151, + 153, 89, 157, 89, 89, 89, 159, 155, 89, 158, + 89, 89, 169, 63, 162, 164, 165, 161, 160, 163, - 214, 165, 161, 164, 61, 130, 125, 173, 131, 133, - 63, 87, 62, 62, 72, 176, 63, 132, 140, 87, - 136, 87, 87, 179, 87, 134, 178, 126, 174, 73, - 73, 87, 177, 87, 87, 141, 180, 137, 182, 181, - 87, 183, 185, 87, 184, 87, 87, 87, 87, 87, - 186, 87, 87, 188, 189, 190, 87, 87, 87, 194, - 191, 193, 187, 87, 87, 197, 87, 87, 131, 131, - 192, 198, 199, 130, 131, 173, 195, 196, 131, 133, - 87, 201, 87, 87, 87, 176, 200, 87, 87, 132, - 132, 134, 210, 205, 206, 134, 174, 87, 87, 209, + 166, 63, 170, 171, 62, 168, 127, 167, 133, 132, + 135, 176, 89, 133, 64, 73, 179, 63, 63, 143, + 89, 138, 64, 89, 89, 89, 184, 128, 185, 134, + 136, 89, 177, 180, 74, 74, 144, 89, 139, 182, + 89, 183, 89, 89, 187, 186, 188, 89, 189, 89, + 89, 89, 89, 89, 89, 89, 89, 192, 193, 194, + 190, 89, 196, 89, 195, 198, 89, 191, 89, 89, + 89, 201, 133, 133, 202, 200, 197, 203, 132, 133, + 176, 133, 199, 89, 205, 135, 89, 89, 89, 204, + 211, 179, 301, 134, 134, 89, 136, 89, 136, 210, - 207, 211, 177, 208, 87, 87, 87, 87, 87, 87, - 87, 215, 212, 213, 217, 87, 218, 219, 87, 87, - 87, 87, 87, 221, 87, 87, 216, 228, 220, 225, - 87, 87, 87, 227, 226, 231, 232, 233, 230, 87, - 87, 87, 87, 234, 229, 87, 87, 87, 87, 87, - 235, 236, 240, 246, 87, 87, 243, 87, 87, 87, - 142, 241, 242, 245, 244, 252, 251, 253, 247, 87, - 255, 87, 256, 87, 87, 87, 87, 254, 260, 259, - 261, 87, 87, 262, 87, 263, 266, 87, 267, 87, - 87, 264, 87, 269, 271, 87, 272, 87, 87, 87, + 212, 177, 89, 89, 89, 215, 216, 89, 180, 213, + 219, 214, 89, 218, 89, 89, 89, 217, 89, 89, + 221, 89, 223, 89, 89, 224, 89, 89, 225, 227, + 89, 220, 89, 235, 89, 89, 222, 89, 89, 89, + 226, 231, 233, 237, 234, 232, 238, 89, 240, 89, + 239, 243, 89, 89, 244, 89, 242, 236, 241, 89, + 89, 89, 89, 89, 245, 89, 250, 89, 89, 89, + 249, 253, 258, 254, 89, 89, 89, 89, 255, 257, + 89, 251, 252, 259, 265, 89, 256, 263, 89, 89, + 266, 89, 267, 264, 89, 89, 268, 269, 89, 89, - 87, 276, 268, 87, 87, 282, 278, 281, 87, 87, - 273, 279, 275, 280, 277, 284, 87, 274, 87, 283, - 54, 54, 54, 54, 54, 57, 57, 57, 57, 57, - 61, 61, 61, 61, 61, 72, 72, 72, 72, 72, - 86, 86, 86, 94, 94, 124, 124, 124, 124, 124, - 130, 130, 130, 130, 130, 133, 133, 133, 133, 133, - 135, 135, 135, 135, 135, 139, 270, 139, 139, 139, - 172, 172, 172, 172, 172, 175, 175, 175, 175, 175, - 87, 87, 265, 87, 258, 257, 87, 87, 250, 249, - 248, 87, 87, 87, 87, 239, 238, 237, 87, 87, + 89, 89, 89, 89, 277, 89, 270, 275, 271, 278, + 276, 274, 280, 279, 89, 89, 89, 89, 281, 284, + 89, 89, 283, 286, 288, 89, 89, 89, 290, 291, + 285, 89, 89, 89, 89, 89, 287, 295, 89, 299, + 297, 296, 294, 300, 298, 303, 89, 292, 293, 89, + 302, 55, 55, 55, 55, 55, 58, 58, 58, 58, + 58, 62, 62, 62, 62, 62, 73, 73, 73, 73, + 73, 88, 88, 88, 96, 96, 126, 126, 126, 126, + 126, 132, 132, 132, 132, 132, 135, 135, 135, 135, + 135, 137, 137, 137, 137, 137, 142, 89, 142, 142, - 87, 87, 87, 224, 223, 222, 87, 87, 87, 87, - 87, 87, 87, 87, 204, 203, 202, 87, 171, 170, - 169, 87, 87, 87, 144, 143, 129, 128, 127, 123, - 122, 95, 87, 91, 88, 79, 74, 67, 60, 285, - 7, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285 + 142, 175, 175, 175, 175, 175, 178, 178, 178, 178, + 178, 89, 289, 89, 89, 282, 89, 89, 273, 272, + 89, 89, 262, 261, 260, 89, 89, 89, 89, 248, + 247, 246, 89, 89, 89, 89, 230, 229, 228, 89, + 89, 89, 89, 89, 89, 89, 209, 208, 207, 206, + 89, 181, 174, 173, 172, 89, 89, 89, 147, 146, + 141, 131, 130, 129, 125, 124, 97, 89, 93, 90, + 75, 68, 61, 304, 7, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304 } ; -static const flex_int16_t yy_chk[597] = +static const flex_int16_t yy_chk[632] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 4, 5, 6, 12, - 5, 6, 13, 96, 3, 4, 16, 20, 15, 36, - 13, 15, 15, 41, 22, 96, 20, 41, 24, 13, - 12, 22, 35, 16, 24, 15, 25, 36, 25, 24, - 28, 28, 30, 30, 24, 37, 25, 38, 35, 37, + 1, 1, 1, 1, 1, 1, 3, 4, 5, 6, + 12, 5, 6, 16, 13, 3, 4, 15, 20, 22, + 15, 15, 13, 23, 28, 28, 22, 20, 35, 24, + 16, 12, 13, 36, 15, 24, 25, 316, 25, 37, + 24, 30, 30, 37, 35, 24, 25, 38, 39, 40, - 39, 42, 51, 40, 44, 38, 37, 40, 61, 48, - 42, 43, 37, 47, 39, 45, 39, 42, 46, 43, - 40, 44, 68, 45, 47, 48, 46, 70, 49, 61, - 46, 47, 49, 51, 63, 72, 63, 79, 84, 49, - 73, 46, 98, 68, 70, 97, 73, 102, 85, 86, - 85, 100, 72, 97, 79, 84, 98, 63, 85, 86, - 99, 98, 101, 73, 104, 105, 102, 100, 103, 106, - 109, 101, 99, 110, 111, 103, 112, 113, 104, 114, - 116, 117, 192, 105, 106, 115, 118, 119, 117, 124, - 112, 114, 109, 110, 111, 125, 130, 115, 118, 119, + 37, 23, 36, 40, 41, 38, 37, 43, 41, 42, + 44, 45, 39, 46, 39, 43, 40, 52, 42, 49, + 47, 46, 48, 71, 62, 42, 69, 44, 47, 64, + 45, 64, 50, 48, 73, 49, 50, 80, 86, 105, + 71, 48, 74, 50, 47, 62, 105, 69, 74, 52, + 88, 73, 64, 99, 80, 86, 87, 98, 87, 100, + 88, 99, 101, 103, 102, 74, 87, 104, 106, 98, + 107, 108, 103, 100, 101, 111, 112, 113, 114, 100, + 102, 115, 106, 118, 116, 119, 108, 104, 117, 107, + 120, 121, 119, 126, 113, 115, 116, 112, 111, 114, - 192, 116, 113, 115, 126, 132, 126, 132, 133, 134, - 124, 145, 135, 136, 137, 134, 125, 130, 140, 146, - 137, 150, 147, 146, 149, 133, 145, 126, 132, 135, - 136, 148, 134, 153, 152, 140, 147, 137, 149, 148, - 151, 150, 152, 154, 151, 155, 156, 157, 158, 159, - 153, 161, 160, 155, 156, 157, 162, 164, 163, 161, - 158, 160, 154, 165, 166, 164, 167, 168, 172, 173, - 159, 165, 166, 174, 175, 174, 162, 163, 176, 177, - 179, 168, 184, 186, 187, 177, 167, 182, 183, 172, - 173, 175, 187, 179, 182, 176, 174, 188, 190, 186, + 117, 127, 120, 121, 128, 118, 128, 117, 132, 134, + 136, 134, 150, 135, 126, 139, 136, 137, 138, 143, + 151, 139, 127, 153, 148, 303, 150, 128, 151, 132, + 135, 152, 134, 136, 137, 138, 143, 149, 139, 148, + 155, 149, 154, 156, 153, 152, 154, 157, 155, 158, + 159, 160, 161, 162, 163, 166, 164, 158, 159, 160, + 156, 165, 162, 167, 161, 164, 168, 157, 170, 169, + 171, 167, 175, 176, 168, 166, 163, 169, 177, 178, + 177, 179, 165, 186, 171, 180, 183, 188, 187, 170, + 186, 180, 299, 175, 176, 190, 178, 191, 179, 183, - 183, 188, 177, 184, 191, 195, 196, 199, 200, 206, - 197, 195, 190, 191, 197, 201, 199, 200, 207, 208, - 213, 211, 214, 201, 215, 216, 196, 211, 200, 206, - 217, 218, 219, 208, 207, 215, 216, 217, 214, 220, - 226, 225, 227, 218, 213, 228, 232, 234, 240, 235, - 219, 220, 225, 235, 236, 246, 228, 241, 247, 244, - 297, 226, 227, 234, 232, 241, 240, 244, 236, 245, - 246, 251, 247, 254, 253, 255, 256, 245, 253, 251, - 254, 260, 259, 255, 263, 256, 259, 266, 260, 264, - 269, 256, 268, 264, 266, 273, 268, 272, 275, 278, + 187, 177, 192, 194, 195, 191, 192, 196, 180, 188, + 196, 190, 197, 195, 199, 200, 203, 194, 201, 204, + 199, 205, 201, 210, 211, 203, 212, 216, 204, 205, + 213, 197, 218, 216, 220, 225, 200, 221, 219, 224, + 204, 210, 212, 219, 213, 211, 219, 222, 221, 223, + 220, 224, 226, 231, 225, 232, 223, 218, 222, 233, + 235, 234, 238, 243, 226, 237, 232, 241, 244, 245, + 231, 235, 244, 237, 250, 249, 251, 298, 238, 243, + 254, 233, 234, 245, 251, 255, 241, 249, 256, 257, + 254, 258, 255, 250, 259, 263, 256, 257, 266, 264, - 276, 273, 263, 281, 284, 280, 275, 278, 283, 279, - 269, 276, 272, 277, 274, 283, 271, 270, 267, 281, - 286, 286, 286, 286, 286, 287, 287, 287, 287, 287, - 288, 288, 288, 288, 288, 289, 289, 289, 289, 289, - 290, 290, 290, 291, 291, 292, 292, 292, 292, 292, - 293, 293, 293, 293, 293, 294, 294, 294, 294, 294, - 295, 295, 295, 295, 295, 296, 265, 296, 296, 296, - 298, 298, 298, 298, 298, 299, 299, 299, 299, 299, - 262, 261, 258, 252, 250, 248, 243, 242, 239, 238, - 237, 233, 231, 230, 229, 224, 223, 222, 221, 212, + 268, 274, 269, 271, 268, 270, 258, 264, 259, 269, + 266, 263, 271, 270, 276, 275, 277, 280, 271, 275, + 281, 284, 274, 277, 281, 287, 288, 291, 284, 287, + 276, 292, 294, 295, 300, 297, 280, 292, 302, 296, + 294, 293, 291, 297, 295, 302, 290, 288, 289, 286, + 300, 305, 305, 305, 305, 305, 306, 306, 306, 306, + 306, 307, 307, 307, 307, 307, 308, 308, 308, 308, + 308, 309, 309, 309, 310, 310, 311, 311, 311, 311, + 311, 312, 312, 312, 312, 312, 313, 313, 313, 313, + 313, 314, 314, 314, 314, 314, 315, 285, 315, 315, - 210, 209, 205, 204, 203, 202, 198, 194, 193, 189, - 185, 181, 180, 178, 171, 170, 169, 142, 129, 128, - 127, 108, 107, 94, 93, 89, 66, 65, 64, 59, - 56, 34, 31, 29, 26, 23, 19, 14, 11, 7, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285 + 315, 317, 317, 317, 317, 317, 318, 318, 318, 318, + 318, 283, 282, 279, 278, 273, 267, 265, 262, 260, + 253, 252, 248, 247, 246, 242, 240, 239, 236, 230, + 229, 228, 227, 217, 215, 214, 208, 207, 206, 202, + 198, 193, 189, 185, 184, 182, 181, 174, 173, 172, + 145, 141, 131, 130, 129, 110, 109, 96, 95, 91, + 81, 67, 66, 65, 60, 57, 34, 31, 29, 26, + 19, 14, 11, 7, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304 } ; /* The intent behind this definition is that it'll catch @@ -871,9 +886,9 @@ static const flex_int16_t yy_chk[597] = #line 23 "lexer.lpp" #define YY_USER_ACTION loc.columns(yyleng); -#line 874 "lexer.cpp" +#line 889 "lexer.cpp" -#line 876 "lexer.cpp" +#line 891 "lexer.cpp" #define INITIAL 0 #define COMMENT_BLOCK_STATE 1 @@ -1141,7 +1156,7 @@ YY_DECL loc.step(); -#line 1144 "lexer.cpp" +#line 1159 "lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1168,13 +1183,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 286 ) + if ( yy_current_state >= 305 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 285 ); + while ( yy_current_state != 304 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -1255,443 +1270,458 @@ YY_RULE_SETUP case 12: YY_RULE_SETUP #line 59 "lexer.lpp" -{ return s2::parser::make_INCLUDE(loc); } +{ return s2::parser::make_BREAKPOINT(loc); } YY_BREAK case 13: YY_RULE_SETUP #line 60 "lexer.lpp" -{ return s2::parser::make_USINGTREE(loc); } +{ return s2::parser::make_PROFBEGIN(loc); } YY_BREAK case 14: YY_RULE_SETUP #line 61 "lexer.lpp" -{ return s2::parser::make_ANIMTREE(loc); } +{ return s2::parser::make_PROFEND(loc); } YY_BREAK case 15: YY_RULE_SETUP #line 62 "lexer.lpp" -{ return s2::parser::make_ENDON(loc); } +{ return s2::parser::make_INCLUDE(loc); } YY_BREAK case 16: YY_RULE_SETUP #line 63 "lexer.lpp" -{ return s2::parser::make_NOTIFY(loc); } +{ return s2::parser::make_USINGTREE(loc); } YY_BREAK case 17: YY_RULE_SETUP #line 64 "lexer.lpp" -{ return s2::parser::make_WAIT(loc); } +{ return s2::parser::make_ANIMTREE(loc); } YY_BREAK case 18: YY_RULE_SETUP #line 65 "lexer.lpp" -{ return s2::parser::make_WAITTILL(loc); } +{ return s2::parser::make_ENDON(loc); } YY_BREAK case 19: YY_RULE_SETUP #line 66 "lexer.lpp" -{ return s2::parser::make_WAITTILLMATCH(loc); } +{ return s2::parser::make_NOTIFY(loc); } YY_BREAK case 20: YY_RULE_SETUP #line 67 "lexer.lpp" -{ return s2::parser::make_WAITTILLFRAMEEND(loc); } +{ return s2::parser::make_WAIT(loc); } YY_BREAK case 21: YY_RULE_SETUP #line 68 "lexer.lpp" -{ return s2::parser::make_WAITFRAME(loc); } +{ return s2::parser::make_WAITTILL(loc); } YY_BREAK case 22: YY_RULE_SETUP #line 69 "lexer.lpp" -{ return s2::parser::make_IF(loc); } +{ return s2::parser::make_WAITTILLMATCH(loc); } YY_BREAK case 23: YY_RULE_SETUP #line 70 "lexer.lpp" -{ return s2::parser::make_ELSE(loc); } +{ return s2::parser::make_WAITTILLFRAMEEND(loc); } YY_BREAK case 24: YY_RULE_SETUP #line 71 "lexer.lpp" -{ return s2::parser::make_WHILE(loc); } +{ return s2::parser::make_WAITFRAME(loc); } YY_BREAK case 25: YY_RULE_SETUP #line 72 "lexer.lpp" -{ return s2::parser::make_FOR(loc); } +{ return s2::parser::make_IF(loc); } YY_BREAK case 26: YY_RULE_SETUP #line 73 "lexer.lpp" -{ return s2::parser::make_FOREACH(loc); } +{ return s2::parser::make_ELSE(loc); } YY_BREAK case 27: YY_RULE_SETUP #line 74 "lexer.lpp" -{ return s2::parser::make_IN(loc); } +{ return s2::parser::make_WHILE(loc); } YY_BREAK case 28: YY_RULE_SETUP #line 75 "lexer.lpp" -{ return s2::parser::make_SWITCH(loc); } +{ return s2::parser::make_FOR(loc); } YY_BREAK case 29: YY_RULE_SETUP #line 76 "lexer.lpp" -{ return s2::parser::make_CASE(loc); } +{ return s2::parser::make_FOREACH(loc); } YY_BREAK case 30: YY_RULE_SETUP #line 77 "lexer.lpp" -{ return s2::parser::make_DEFAULT(loc); } +{ return s2::parser::make_IN(loc); } YY_BREAK case 31: YY_RULE_SETUP #line 78 "lexer.lpp" -{ return s2::parser::make_BREAK(loc); } +{ return s2::parser::make_SWITCH(loc); } YY_BREAK case 32: YY_RULE_SETUP #line 79 "lexer.lpp" -{ return s2::parser::make_CONTINUE(loc); } +{ return s2::parser::make_CASE(loc); } YY_BREAK case 33: YY_RULE_SETUP #line 80 "lexer.lpp" -{ return s2::parser::make_RETURN(loc); } +{ return s2::parser::make_DEFAULT(loc); } YY_BREAK case 34: YY_RULE_SETUP #line 81 "lexer.lpp" -{ return s2::parser::make_THREAD(loc); } +{ return s2::parser::make_BREAK(loc); } YY_BREAK case 35: YY_RULE_SETUP #line 82 "lexer.lpp" -{ return s2::parser::make_CHILDTHREAD(loc); } +{ return s2::parser::make_CONTINUE(loc); } YY_BREAK case 36: YY_RULE_SETUP #line 83 "lexer.lpp" -{ return s2::parser::make_THISTHREAD(loc); } +{ return s2::parser::make_RETURN(loc); } YY_BREAK case 37: YY_RULE_SETUP #line 84 "lexer.lpp" -{ return s2::parser::make_CALL(loc); } +{ return s2::parser::make_THREAD(loc); } YY_BREAK case 38: YY_RULE_SETUP #line 85 "lexer.lpp" -{ return s2::parser::make_TRUE(loc); } +{ return s2::parser::make_CHILDTHREAD(loc); } YY_BREAK case 39: YY_RULE_SETUP #line 86 "lexer.lpp" -{ return s2::parser::make_FALSE(loc); } +{ return s2::parser::make_THISTHREAD(loc); } YY_BREAK case 40: YY_RULE_SETUP #line 87 "lexer.lpp" -{ return s2::parser::make_UNDEFINED(loc); } +{ return s2::parser::make_CALL(loc); } YY_BREAK case 41: YY_RULE_SETUP #line 88 "lexer.lpp" -{ return s2::parser::make_SIZE(loc); } +{ return s2::parser::make_TRUE(loc); } YY_BREAK case 42: YY_RULE_SETUP #line 89 "lexer.lpp" -{ return s2::parser::make_GAME(loc); } +{ return s2::parser::make_FALSE(loc); } YY_BREAK case 43: YY_RULE_SETUP #line 90 "lexer.lpp" -{ return s2::parser::make_SELF(loc); } +{ return s2::parser::make_UNDEFINED(loc); } YY_BREAK case 44: YY_RULE_SETUP #line 91 "lexer.lpp" -{ return s2::parser::make_ANIM(loc); } +{ return s2::parser::make_SIZE(loc); } YY_BREAK case 45: YY_RULE_SETUP #line 92 "lexer.lpp" -{ return s2::parser::make_LEVEL(loc); } +{ return s2::parser::make_GAME(loc); } YY_BREAK case 46: YY_RULE_SETUP #line 93 "lexer.lpp" -{ return s2::parser::make_LPAREN(loc); } +{ return s2::parser::make_SELF(loc); } YY_BREAK case 47: YY_RULE_SETUP #line 94 "lexer.lpp" -{ return s2::parser::make_RPAREN(loc); } +{ return s2::parser::make_ANIM(loc); } YY_BREAK case 48: YY_RULE_SETUP #line 95 "lexer.lpp" -{ return s2::parser::make_LBRACE(loc); } +{ return s2::parser::make_LEVEL(loc); } YY_BREAK case 49: YY_RULE_SETUP #line 96 "lexer.lpp" -{ return s2::parser::make_RBRACE(loc); } +{ return s2::parser::make_LPAREN(loc); } YY_BREAK case 50: YY_RULE_SETUP #line 97 "lexer.lpp" -{ return s2::parser::make_LBRACKET(loc); } +{ return s2::parser::make_RPAREN(loc); } YY_BREAK case 51: YY_RULE_SETUP #line 98 "lexer.lpp" -{ return s2::parser::make_RBRACKET(loc); } +{ return s2::parser::make_LBRACE(loc); } YY_BREAK case 52: YY_RULE_SETUP #line 99 "lexer.lpp" -{ return s2::parser::make_COMMA(loc); } +{ return s2::parser::make_RBRACE(loc); } YY_BREAK case 53: YY_RULE_SETUP #line 100 "lexer.lpp" -{ return s2::parser::make_DOT(loc); } +{ return s2::parser::make_LBRACKET(loc); } YY_BREAK case 54: YY_RULE_SETUP #line 101 "lexer.lpp" -{ return s2::parser::make_DOUBLECOLON(loc); } +{ return s2::parser::make_RBRACKET(loc); } YY_BREAK case 55: YY_RULE_SETUP #line 102 "lexer.lpp" -{ return s2::parser::make_COLON(loc); } +{ return s2::parser::make_COMMA(loc); } YY_BREAK case 56: YY_RULE_SETUP #line 103 "lexer.lpp" -{ return s2::parser::make_SEMICOLON(loc); } +{ return s2::parser::make_DOT(loc); } YY_BREAK case 57: YY_RULE_SETUP #line 104 "lexer.lpp" -{ return s2::parser::make_INCREMENT(loc); } +{ return s2::parser::make_DOUBLECOLON(loc); } YY_BREAK case 58: YY_RULE_SETUP #line 105 "lexer.lpp" -{ return s2::parser::make_DECREMENT(loc); } +{ return s2::parser::make_COLON(loc); } YY_BREAK case 59: YY_RULE_SETUP #line 106 "lexer.lpp" -{ return s2::parser::make_ASSIGN_LSHIFT(loc); } +{ return s2::parser::make_SEMICOLON(loc); } YY_BREAK case 60: YY_RULE_SETUP #line 107 "lexer.lpp" -{ return s2::parser::make_ASSIGN_RSHIFT(loc); } +{ return s2::parser::make_INCREMENT(loc); } YY_BREAK case 61: YY_RULE_SETUP #line 108 "lexer.lpp" -{ return s2::parser::make_LSHIFT(loc); } +{ return s2::parser::make_DECREMENT(loc); } YY_BREAK case 62: YY_RULE_SETUP #line 109 "lexer.lpp" -{ return s2::parser::make_RSHIFT(loc); } +{ return s2::parser::make_ASSIGN_LSHIFT(loc); } YY_BREAK case 63: YY_RULE_SETUP #line 110 "lexer.lpp" -{ return s2::parser::make_OR(loc); } +{ return s2::parser::make_ASSIGN_RSHIFT(loc); } YY_BREAK case 64: YY_RULE_SETUP #line 111 "lexer.lpp" -{ return s2::parser::make_AND(loc); } +{ return s2::parser::make_LSHIFT(loc); } YY_BREAK case 65: YY_RULE_SETUP #line 112 "lexer.lpp" -{ return s2::parser::make_EQUALITY(loc); } +{ return s2::parser::make_RSHIFT(loc); } YY_BREAK case 66: YY_RULE_SETUP #line 113 "lexer.lpp" -{ return s2::parser::make_INEQUALITY(loc); } +{ return s2::parser::make_OR(loc); } YY_BREAK case 67: YY_RULE_SETUP #line 114 "lexer.lpp" -{ return s2::parser::make_LESS_EQUAL(loc); } +{ return s2::parser::make_AND(loc); } YY_BREAK case 68: YY_RULE_SETUP #line 115 "lexer.lpp" -{ return s2::parser::make_GREATER_EQUAL(loc); } +{ return s2::parser::make_EQUALITY(loc); } YY_BREAK case 69: YY_RULE_SETUP #line 116 "lexer.lpp" -{ return s2::parser::make_LESS(loc); } +{ return s2::parser::make_INEQUALITY(loc); } YY_BREAK case 70: YY_RULE_SETUP #line 117 "lexer.lpp" -{ return s2::parser::make_GREATER(loc); } +{ return s2::parser::make_LESS_EQUAL(loc); } YY_BREAK case 71: YY_RULE_SETUP #line 118 "lexer.lpp" -{ return s2::parser::make_ASSIGN_ADD(loc); } +{ return s2::parser::make_GREATER_EQUAL(loc); } YY_BREAK case 72: YY_RULE_SETUP #line 119 "lexer.lpp" -{ return s2::parser::make_ASSIGN_SUB(loc); } +{ return s2::parser::make_LESS(loc); } YY_BREAK case 73: YY_RULE_SETUP #line 120 "lexer.lpp" -{ return s2::parser::make_ASSIGN_MULT(loc); } +{ return s2::parser::make_GREATER(loc); } YY_BREAK case 74: YY_RULE_SETUP #line 121 "lexer.lpp" -{ return s2::parser::make_ASSIGN_DIV(loc); } +{ return s2::parser::make_ASSIGN_ADD(loc); } YY_BREAK case 75: YY_RULE_SETUP #line 122 "lexer.lpp" -{ return s2::parser::make_ASSIGN_MOD(loc); } +{ return s2::parser::make_ASSIGN_SUB(loc); } YY_BREAK case 76: YY_RULE_SETUP #line 123 "lexer.lpp" -{ return s2::parser::make_ASSIGN_BITWISE_OR(loc); } +{ return s2::parser::make_ASSIGN_MULT(loc); } YY_BREAK case 77: YY_RULE_SETUP #line 124 "lexer.lpp" -{ return s2::parser::make_ASSIGN_BITWISE_AND(loc); } +{ return s2::parser::make_ASSIGN_DIV(loc); } YY_BREAK case 78: YY_RULE_SETUP #line 125 "lexer.lpp" -{ return s2::parser::make_ASSIGN_BITWISE_EXOR(loc); } +{ return s2::parser::make_ASSIGN_MOD(loc); } YY_BREAK case 79: YY_RULE_SETUP #line 126 "lexer.lpp" -{ return s2::parser::make_ASSIGN(loc); } +{ return s2::parser::make_ASSIGN_BITWISE_OR(loc); } YY_BREAK case 80: YY_RULE_SETUP #line 127 "lexer.lpp" -{ return s2::parser::make_ADD(loc); } +{ return s2::parser::make_ASSIGN_BITWISE_AND(loc); } YY_BREAK case 81: YY_RULE_SETUP #line 128 "lexer.lpp" -{ return s2::parser::make_SUB(loc); } +{ return s2::parser::make_ASSIGN_BITWISE_EXOR(loc); } YY_BREAK case 82: YY_RULE_SETUP #line 129 "lexer.lpp" -{ return s2::parser::make_MULT(loc); } +{ return s2::parser::make_ASSIGN(loc); } YY_BREAK case 83: YY_RULE_SETUP #line 130 "lexer.lpp" -{ return s2::parser::make_DIV(loc); } +{ return s2::parser::make_ADD(loc); } YY_BREAK case 84: YY_RULE_SETUP #line 131 "lexer.lpp" -{ return s2::parser::make_MOD(loc); } +{ return s2::parser::make_SUB(loc); } YY_BREAK case 85: YY_RULE_SETUP #line 132 "lexer.lpp" -{ return s2::parser::make_NOT(loc); } +{ return s2::parser::make_MULT(loc); } YY_BREAK case 86: YY_RULE_SETUP #line 133 "lexer.lpp" -{ return s2::parser::make_COMPLEMENT(loc); } +{ return s2::parser::make_DIV(loc); } YY_BREAK case 87: YY_RULE_SETUP #line 134 "lexer.lpp" -{ return s2::parser::make_BITWISE_OR(loc); } +{ return s2::parser::make_MOD(loc); } YY_BREAK case 88: YY_RULE_SETUP #line 135 "lexer.lpp" -{ return s2::parser::make_BITWISE_AND(loc); } +{ return s2::parser::make_NOT(loc); } YY_BREAK case 89: YY_RULE_SETUP #line 136 "lexer.lpp" -{ return s2::parser::make_BITWISE_EXOR(loc); } +{ return s2::parser::make_COMPLEMENT(loc); } YY_BREAK case 90: YY_RULE_SETUP #line 137 "lexer.lpp" -{ return s2::parser::make_FILE(utils::string::fordslash(yytext), loc); } +{ return s2::parser::make_BITWISE_OR(loc); } YY_BREAK case 91: YY_RULE_SETUP #line 138 "lexer.lpp" -{ return s2::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); } +{ return s2::parser::make_BITWISE_AND(loc); } YY_BREAK case 92: -/* rule 92 can match eol */ YY_RULE_SETUP #line 139 "lexer.lpp" -{ return s2::parser::make_ISTRING(std::string(yytext).substr(1), loc); } +{ return s2::parser::make_BITWISE_EXOR(loc); } YY_BREAK case 93: -/* rule 93 can match eol */ YY_RULE_SETUP #line 140 "lexer.lpp" -{ return s2::parser::make_STRING(std::string(yytext), loc); } +{ return s2::parser::make_FILE(utils::string::fordslash(yytext), loc); } YY_BREAK case 94: YY_RULE_SETUP #line 141 "lexer.lpp" -{ return s2::parser::make_FLOAT(std::string(yytext), loc); } +{ return s2::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); } YY_BREAK case 95: +/* rule 95 can match eol */ YY_RULE_SETUP #line 142 "lexer.lpp" +{ return s2::parser::make_ISTRING(std::string(yytext).substr(1), loc); } + YY_BREAK +case 96: +/* rule 96 can match eol */ +YY_RULE_SETUP +#line 143 "lexer.lpp" +{ return s2::parser::make_STRING(std::string(yytext), loc); } + YY_BREAK +case 97: +YY_RULE_SETUP +#line 144 "lexer.lpp" +{ return s2::parser::make_FLOAT(std::string(yytext), loc); } + YY_BREAK +case 98: +YY_RULE_SETUP +#line 145 "lexer.lpp" { return s2::parser::make_INTEGER(std::string(yytext), loc); } YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT_BLOCK_STATE): case YY_STATE_EOF(DEVELOPER_BLOCK_STATE): -#line 143 "lexer.lpp" +#line 146 "lexer.lpp" { return s2::parser::make_S2EOF(loc); } YY_BREAK -case 96: -/* rule 96 can match eol */ +case 99: +/* rule 99 can match eol */ YY_RULE_SETUP -#line 144 "lexer.lpp" +#line 147 "lexer.lpp" { throw s2::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); } YY_BREAK -case 97: +case 100: YY_RULE_SETUP -#line 146 "lexer.lpp" +#line 149 "lexer.lpp" ECHO; YY_BREAK -#line 1694 "lexer.cpp" +#line 1724 "lexer.cpp" case YY_END_OF_BUFFER: { @@ -1989,7 +2019,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 286 ) + if ( yy_current_state >= 305 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2018,11 +2048,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 286 ) + if ( yy_current_state >= 305 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 285); + yy_is_jam = (yy_current_state == 304); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -2821,6 +2851,6 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 146 "lexer.lpp" +#line 149 "lexer.lpp" diff --git a/src/s2/xsk/lexer.hpp b/src/s2/xsk/lexer.hpp index a9440c1f..d9dad53e 100644 --- a/src/s2/xsk/lexer.hpp +++ b/src/s2/xsk/lexer.hpp @@ -700,7 +700,7 @@ extern int yylex (yyscan_t yyscanner); #undef yyTABLES_NAME #endif -#line 146 "lexer.lpp" +#line 149 "lexer.lpp" #line 706 "lexer.hpp" diff --git a/src/s2/xsk/parser.cpp b/src/s2/xsk/parser.cpp index 470d160c..57d14bdb 100644 --- a/src/s2/xsk/parser.cpp +++ b/src/s2/xsk/parser.cpp @@ -345,6 +345,10 @@ namespace xsk { namespace gsc { namespace s2 { value.YY_MOVE_OR_COPY< stmt_break_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.YY_MOVE_OR_COPY< stmt_breakpoint_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.YY_MOVE_OR_COPY< stmt_call_ptr > (YY_MOVE (that.value)); break; @@ -390,6 +394,14 @@ namespace xsk { namespace gsc { namespace s2 { value.YY_MOVE_OR_COPY< stmt_notify_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.YY_MOVE_OR_COPY< stmt_prof_begin_ptr > (YY_MOVE (that.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.YY_MOVE_OR_COPY< stmt_prof_end_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.YY_MOVE_OR_COPY< stmt_ptr > (YY_MOVE (that.value)); @@ -599,6 +611,10 @@ namespace xsk { namespace gsc { namespace s2 { value.move< stmt_break_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.move< stmt_breakpoint_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.move< stmt_call_ptr > (YY_MOVE (that.value)); break; @@ -644,6 +660,14 @@ namespace xsk { namespace gsc { namespace s2 { value.move< stmt_notify_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.move< stmt_prof_begin_ptr > (YY_MOVE (that.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.move< stmt_prof_end_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.move< stmt_ptr > (YY_MOVE (that.value)); @@ -853,6 +877,10 @@ namespace xsk { namespace gsc { namespace s2 { value.copy< stmt_break_ptr > (that.value); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.copy< stmt_breakpoint_ptr > (that.value); + break; + case symbol_kind::S_stmt_call: // stmt_call value.copy< stmt_call_ptr > (that.value); break; @@ -898,6 +926,14 @@ namespace xsk { namespace gsc { namespace s2 { value.copy< stmt_notify_ptr > (that.value); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.copy< stmt_prof_begin_ptr > (that.value); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.copy< stmt_prof_end_ptr > (that.value); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.copy< stmt_ptr > (that.value); @@ -1106,6 +1142,10 @@ namespace xsk { namespace gsc { namespace s2 { value.move< stmt_break_ptr > (that.value); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.move< stmt_breakpoint_ptr > (that.value); + break; + case symbol_kind::S_stmt_call: // stmt_call value.move< stmt_call_ptr > (that.value); break; @@ -1151,6 +1191,14 @@ namespace xsk { namespace gsc { namespace s2 { value.move< stmt_notify_ptr > (that.value); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.move< stmt_prof_begin_ptr > (that.value); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.move< stmt_prof_end_ptr > (that.value); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.move< stmt_ptr > (that.value); @@ -1614,6 +1662,10 @@ namespace xsk { namespace gsc { namespace s2 { yylhs.value.emplace< stmt_break_ptr > (); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + yylhs.value.emplace< stmt_breakpoint_ptr > (); + break; + case symbol_kind::S_stmt_call: // stmt_call yylhs.value.emplace< stmt_call_ptr > (); break; @@ -1659,6 +1711,14 @@ namespace xsk { namespace gsc { namespace s2 { yylhs.value.emplace< stmt_notify_ptr > (); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + yylhs.value.emplace< stmt_prof_begin_ptr > (); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + yylhs.value.emplace< stmt_prof_end_ptr > (); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt yylhs.value.emplace< stmt_ptr > (); @@ -1745,1177 +1805,1213 @@ namespace xsk { namespace gsc { namespace s2 { switch (yyn) { case 2: // root: program -#line 233 "parser.ypp" - { ast = std::move(yystack_[0].value.as < program_ptr > ()); } -#line 1751 "parser.cpp" - break; - - case 3: // root: %empty -#line 234 "parser.ypp" - { ast = std::make_unique(yylhs.location); } -#line 1757 "parser.cpp" - break; - - case 4: // program: program include #line 239 "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 1763 "parser.cpp" - break; - - case 5: // program: program define -#line 241 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } -#line 1769 "parser.cpp" - break; - - case 6: // program: include -#line 243 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } -#line 1775 "parser.cpp" - break; - - case 7: // program: define -#line 245 "parser.ypp" - { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } -#line 1781 "parser.cpp" - break; - - case 8: // include: "#include" file ";" -#line 250 "parser.ypp" - { yylhs.value.as < include_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < file_ptr > ())); } -#line 1787 "parser.cpp" - break; - - case 9: // define: usingtree -#line 254 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_usingtree = std::move(yystack_[0].value.as < usingtree_ptr > ()); } -#line 1793 "parser.cpp" - break; - - case 10: // define: constant -#line 255 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_constant = std::move(yystack_[0].value.as < constant_ptr > ()); } -#line 1799 "parser.cpp" - break; - - case 11: // define: thread -#line 256 "parser.ypp" - { yylhs.value.as < define_ptr > ().as_thread = std::move(yystack_[0].value.as < thread_ptr > ()); } -#line 1805 "parser.cpp" - break; - - case 12: // usingtree: "#using_animtree" "(" string ")" ";" -#line 261 "parser.ypp" - { yylhs.value.as < usingtree_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < string_ptr > ())); } + { ast = std::move(yystack_[0].value.as < program_ptr > ()); } #line 1811 "parser.cpp" break; - case 13: // constant: name "=" expr ";" -#line 266 "parser.ypp" - { yylhs.value.as < constant_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 3: // root: %empty +#line 240 "parser.ypp" + { ast = std::make_unique(yylhs.location); } #line 1817 "parser.cpp" break; - case 14: // thread: name "(" parameters ")" stmt_block -#line 271 "parser.ypp" - { yylhs.value.as < thread_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < name_ptr > ()), std::move(yystack_[2].value.as < parameters_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } + case 4: // program: program include +#line 245 "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 1823 "parser.cpp" break; - case 15: // parameters: parameters "," name -#line 276 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::move(yystack_[2].value.as < parameters_ptr > ()); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } + case 5: // program: program define +#line 247 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::move(yystack_[1].value.as < program_ptr > ()); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1829 "parser.cpp" break; - case 16: // parameters: name -#line 278 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } + case 6: // program: include +#line 249 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->includes.push_back(std::move(yystack_[0].value.as < include_ptr > ())); } #line 1835 "parser.cpp" break; - case 17: // parameters: %empty -#line 280 "parser.ypp" - { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); } + case 7: // program: define +#line 251 "parser.ypp" + { yylhs.value.as < program_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < program_ptr > ()->definitions.push_back(std::move(yystack_[0].value.as < define_ptr > ())); } #line 1841 "parser.cpp" break; - case 18: // stmt: stmt_block -#line 284 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_list = std::move(yystack_[0].value.as < stmt_list_ptr > ()); } + case 8: // include: "#include" file ";" +#line 256 "parser.ypp" + { yylhs.value.as < include_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < file_ptr > ())); } #line 1847 "parser.cpp" break; - case 19: // stmt: stmt_call -#line 285 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_call = std::move(yystack_[0].value.as < stmt_call_ptr > ()); } + case 9: // define: usingtree +#line 260 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_usingtree = std::move(yystack_[0].value.as < usingtree_ptr > ()); } #line 1853 "parser.cpp" break; - case 20: // stmt: stmt_assign -#line 286 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_assign = std::move(yystack_[0].value.as < stmt_assign_ptr > ()); } + case 10: // define: constant +#line 261 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_constant = std::move(yystack_[0].value.as < constant_ptr > ()); } #line 1859 "parser.cpp" break; - case 21: // stmt: stmt_endon -#line 287 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_endon = std::move(yystack_[0].value.as < stmt_endon_ptr > ()); } + case 11: // define: thread +#line 262 "parser.ypp" + { yylhs.value.as < define_ptr > ().as_thread = std::move(yystack_[0].value.as < thread_ptr > ()); } #line 1865 "parser.cpp" break; - case 22: // stmt: stmt_notify -#line 288 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_notify = std::move(yystack_[0].value.as < stmt_notify_ptr > ()); } + case 12: // usingtree: "#using_animtree" "(" string ")" ";" +#line 267 "parser.ypp" + { yylhs.value.as < usingtree_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < string_ptr > ())); } #line 1871 "parser.cpp" break; - case 23: // stmt: stmt_wait -#line 289 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_wait = std::move(yystack_[0].value.as < stmt_wait_ptr > ()); } + case 13: // constant: name "=" expr ";" +#line 272 "parser.ypp" + { yylhs.value.as < constant_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } #line 1877 "parser.cpp" break; - case 24: // stmt: stmt_waittill -#line 290 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill_ptr > ()); } + case 14: // thread: name "(" parameters ")" stmt_block +#line 277 "parser.ypp" + { yylhs.value.as < thread_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < name_ptr > ()), std::move(yystack_[2].value.as < parameters_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } #line 1883 "parser.cpp" break; - case 25: // stmt: stmt_waittillmatch -#line 291 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch_ptr > ()); } + case 15: // parameters: parameters "," name +#line 282 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::move(yystack_[2].value.as < parameters_ptr > ()); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } #line 1889 "parser.cpp" break; - case 26: // stmt: stmt_waittillframeend -#line 292 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend_ptr > ()); } + case 16: // parameters: name +#line 284 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < parameters_ptr > ()->list.push_back(std::move(yystack_[0].value.as < name_ptr > ())); } #line 1895 "parser.cpp" break; - case 27: // stmt: stmt_waitframe -#line 293 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_waitframe = std::move(yystack_[0].value.as < stmt_waitframe_ptr > ()); } + case 17: // parameters: %empty +#line 286 "parser.ypp" + { yylhs.value.as < parameters_ptr > () = std::make_unique(yylhs.location); } #line 1901 "parser.cpp" break; - case 28: // stmt: stmt_if -#line 294 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_if = std::move(yystack_[0].value.as < stmt_if_ptr > ()); } + case 18: // stmt: stmt_block +#line 290 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_list = std::move(yystack_[0].value.as < stmt_list_ptr > ()); } #line 1907 "parser.cpp" break; - case 29: // stmt: stmt_ifelse -#line 295 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse_ptr > ()); } + case 19: // stmt: stmt_call +#line 291 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_call = std::move(yystack_[0].value.as < stmt_call_ptr > ()); } #line 1913 "parser.cpp" break; - case 30: // stmt: stmt_while -#line 296 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_while = std::move(yystack_[0].value.as < stmt_while_ptr > ()); } + case 20: // stmt: stmt_assign +#line 292 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_assign = std::move(yystack_[0].value.as < stmt_assign_ptr > ()); } #line 1919 "parser.cpp" break; - case 31: // stmt: stmt_for -#line 297 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_for = std::move(yystack_[0].value.as < stmt_for_ptr > ()); } + case 21: // stmt: stmt_endon +#line 293 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_endon = std::move(yystack_[0].value.as < stmt_endon_ptr > ()); } #line 1925 "parser.cpp" break; - case 32: // stmt: stmt_foreach -#line 298 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach_ptr > ()); } + case 22: // stmt: stmt_notify +#line 294 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_notify = std::move(yystack_[0].value.as < stmt_notify_ptr > ()); } #line 1931 "parser.cpp" break; - case 33: // stmt: stmt_switch -#line 299 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_switch = std::move(yystack_[0].value.as < stmt_switch_ptr > ()); } + case 23: // stmt: stmt_wait +#line 295 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_wait = std::move(yystack_[0].value.as < stmt_wait_ptr > ()); } #line 1937 "parser.cpp" break; - case 34: // stmt: stmt_case -#line 300 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_case = std::move(yystack_[0].value.as < stmt_case_ptr > ()); } + case 24: // stmt: stmt_waittill +#line 296 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittill = std::move(yystack_[0].value.as < stmt_waittill_ptr > ()); } #line 1943 "parser.cpp" break; - case 35: // stmt: stmt_default -#line 301 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_default = std::move(yystack_[0].value.as < stmt_default_ptr > ()); } + case 25: // stmt: stmt_waittillmatch +#line 297 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittillmatch = std::move(yystack_[0].value.as < stmt_waittillmatch_ptr > ()); } #line 1949 "parser.cpp" break; - case 36: // stmt: stmt_break -#line 302 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_break = std::move(yystack_[0].value.as < stmt_break_ptr > ()); } + case 26: // stmt: stmt_waittillframeend +#line 298 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waittillframeend = std::move(yystack_[0].value.as < stmt_waittillframeend_ptr > ()); } #line 1955 "parser.cpp" break; - case 37: // stmt: stmt_continue -#line 303 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_continue = std::move(yystack_[0].value.as < stmt_continue_ptr > ()); } + case 27: // stmt: stmt_waitframe +#line 299 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_waitframe = std::move(yystack_[0].value.as < stmt_waitframe_ptr > ()); } #line 1961 "parser.cpp" break; - case 38: // stmt: stmt_return -#line 304 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_return = std::move(yystack_[0].value.as < stmt_return_ptr > ()); } + case 28: // stmt: stmt_if +#line 300 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_if = std::move(yystack_[0].value.as < stmt_if_ptr > ()); } #line 1967 "parser.cpp" break; - case 39: // stmt_block: "{" stmt_list "}" -#line 308 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); } + case 29: // stmt: stmt_ifelse +#line 301 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_ifelse = std::move(yystack_[0].value.as < stmt_ifelse_ptr > ()); } #line 1973 "parser.cpp" break; - case 40: // stmt_block: "{" "}" -#line 309 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); } + case 30: // stmt: stmt_while +#line 302 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_while = std::move(yystack_[0].value.as < stmt_while_ptr > ()); } #line 1979 "parser.cpp" break; - case 41: // stmt_list: stmt_list stmt -#line 314 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 31: // stmt: stmt_for +#line 303 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_for = std::move(yystack_[0].value.as < stmt_for_ptr > ()); } #line 1985 "parser.cpp" break; - case 42: // stmt_list: stmt -#line 316 "parser.ypp" - { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 32: // stmt: stmt_foreach +#line 304 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_foreach = std::move(yystack_[0].value.as < stmt_foreach_ptr > ()); } #line 1991 "parser.cpp" break; - case 43: // stmt_call: expr_call ";" -#line 321 "parser.ypp" - { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } + case 33: // stmt: stmt_switch +#line 305 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_switch = std::move(yystack_[0].value.as < stmt_switch_ptr > ()); } #line 1997 "parser.cpp" break; - case 44: // stmt_call: expr_call_thread ";" -#line 323 "parser.ypp" - { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } + case 34: // stmt: stmt_case +#line 306 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_case = std::move(yystack_[0].value.as < stmt_case_ptr > ()); } #line 2003 "parser.cpp" break; - case 45: // stmt_assign: expr_assign ";" -#line 328 "parser.ypp" - { yylhs.value.as < stmt_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_assign_ptr > ())); } + case 35: // stmt: stmt_default +#line 307 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_default = std::move(yystack_[0].value.as < stmt_default_ptr > ()); } #line 2009 "parser.cpp" break; - case 46: // stmt_endon: object "endon" "(" expr ")" ";" -#line 333 "parser.ypp" - { yylhs.value.as < stmt_endon_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ())); } + case 36: // stmt: stmt_break +#line 308 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_break = std::move(yystack_[0].value.as < stmt_break_ptr > ()); } #line 2015 "parser.cpp" break; - case 47: // stmt_notify: object "notify" "(" expr "," expr_arguments ")" ";" -#line 338 "parser.ypp" - { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 37: // stmt: stmt_continue +#line 309 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_continue = std::move(yystack_[0].value.as < stmt_continue_ptr > ()); } #line 2021 "parser.cpp" break; - case 48: // stmt_notify: object "notify" "(" expr ")" ";" -#line 340 "parser.ypp" - { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 38: // stmt: stmt_return +#line 310 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_return = std::move(yystack_[0].value.as < stmt_return_ptr > ()); } #line 2027 "parser.cpp" break; - case 49: // stmt_wait: "wait" expr ";" -#line 345 "parser.ypp" - { yylhs.value.as < stmt_wait_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } + case 39: // stmt: stmt_breakpoint +#line 311 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_breakpoint = std::move(yystack_[0].value.as < stmt_breakpoint_ptr > ()); } #line 2033 "parser.cpp" break; - case 50: // stmt_waittill: object "waittill" "(" expr "," expr_arguments ")" ";" -#line 350 "parser.ypp" - { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 40: // stmt: stmt_prof_begin +#line 312 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_prof_begin = std::move(yystack_[0].value.as < stmt_prof_begin_ptr > ()); } #line 2039 "parser.cpp" break; - case 51: // stmt_waittill: object "waittill" "(" expr ")" ";" -#line 352 "parser.ypp" - { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 41: // stmt: stmt_prof_end +#line 313 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_prof_end = std::move(yystack_[0].value.as < stmt_prof_end_ptr > ()); } #line 2045 "parser.cpp" break; - case 52: // stmt_waittillmatch: object "waittillmatch" "(" expr "," expr_arguments ")" ";" -#line 357 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } + case 42: // stmt_block: "{" stmt_list "}" +#line 317 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); } #line 2051 "parser.cpp" break; - case 53: // stmt_waittillmatch: object "waittillmatch" "(" expr ")" ";" -#line 359 "parser.ypp" - { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } + case 43: // stmt_block: "{" "}" +#line 318 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); } #line 2057 "parser.cpp" break; - case 54: // stmt_waittillframeend: "waittillframeend" ";" -#line 364 "parser.ypp" - { yylhs.value.as < stmt_waittillframeend_ptr > () = std::make_unique(yylhs.location); } + case 44: // stmt_list: stmt_list stmt +#line 323 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::move(yystack_[1].value.as < stmt_list_ptr > ()); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2063 "parser.cpp" break; - case 55: // stmt_waitframe: "waitframe" ";" -#line 369 "parser.ypp" - { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } + case 45: // stmt_list: stmt +#line 325 "parser.ypp" + { yylhs.value.as < stmt_list_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < stmt_list_ptr > ()->stmts.push_back(std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2069 "parser.cpp" break; - case 56: // stmt_waitframe: "waitframe" "(" ")" ";" -#line 371 "parser.ypp" - { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } + case 46: // stmt_call: expr_call ";" +#line 330 "parser.ypp" + { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } #line 2075 "parser.cpp" break; - case 57: // stmt_if: "if" "(" expr ")" stmt -#line 376 "parser.ypp" - { yylhs.value.as < stmt_if_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 47: // stmt_call: expr_call_thread ";" +#line 332 "parser.ypp" + { yylhs.value.as < stmt_call_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_call_ptr > ())); } #line 2081 "parser.cpp" break; - case 58: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 381 "parser.ypp" - { yylhs.value.as < stmt_ifelse_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 48: // stmt_assign: expr_assign ";" +#line 337 "parser.ypp" + { yylhs.value.as < stmt_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_assign_ptr > ())); } #line 2087 "parser.cpp" break; - case 59: // stmt_while: "while" "(" expr ")" stmt -#line 386 "parser.ypp" - { yylhs.value.as < stmt_while_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 49: // stmt_endon: object "endon" "(" expr ")" ";" +#line 342 "parser.ypp" + { yylhs.value.as < stmt_endon_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ())); } #line 2093 "parser.cpp" break; - case 60: // stmt_for: "for" "(" for_stmt ";" for_expr ";" for_stmt ")" stmt -#line 391 "parser.ypp" - { yylhs.value.as < stmt_for_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[6].value.as < stmt_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 50: // stmt_notify: object "notify" "(" expr "," expr_arguments ")" ";" +#line 347 "parser.ypp" + { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2099 "parser.cpp" break; - case 61: // stmt_foreach: "foreach" "(" name "in" expr ")" stmt -#line 396 "parser.ypp" - { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 51: // stmt_notify: object "notify" "(" expr ")" ";" +#line 349 "parser.ypp" + { yylhs.value.as < stmt_notify_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2105 "parser.cpp" break; - case 62: // stmt_foreach: "foreach" "(" name "," name "in" expr ")" stmt -#line 398 "parser.ypp" - { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[6].value.as < name_ptr > ())), expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } + case 52: // stmt_wait: "wait" expr ";" +#line 354 "parser.ypp" + { yylhs.value.as < stmt_wait_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2111 "parser.cpp" break; - case 63: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 403 "parser.ypp" - { yylhs.value.as < stmt_switch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } + case 53: // stmt_waittill: object "waittill" "(" expr "," expr_arguments ")" ";" +#line 359 "parser.ypp" + { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2117 "parser.cpp" break; - case 64: // stmt_case: "case" integer ":" -#line 408 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } + case 54: // stmt_waittill: object "waittill" "(" expr ")" ";" +#line 361 "parser.ypp" + { yylhs.value.as < stmt_waittill_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2123 "parser.cpp" break; - case 65: // stmt_case: "case" neg_integer ":" -#line 410 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } + case 55: // stmt_waittillmatch: object "waittillmatch" "(" expr "," expr_arguments ")" ";" +#line 366 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < node_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2129 "parser.cpp" break; - case 66: // stmt_case: "case" string ":" -#line 412 "parser.ypp" - { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < string_ptr > ())), std::make_unique(yylhs.location)); } + case 56: // stmt_waittillmatch: object "waittillmatch" "(" expr ")" ";" +#line 368 "parser.ypp" + { yylhs.value.as < stmt_waittillmatch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < node_ptr > ()), std::move(yystack_[2].value.as < expr_ptr > ()), std::make_unique(yylhs.location)); } #line 2135 "parser.cpp" break; - case 67: // stmt_default: "default" ":" -#line 417 "parser.ypp" - { yylhs.value.as < stmt_default_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } + case 57: // stmt_waittillframeend: "waittillframeend" ";" +#line 373 "parser.ypp" + { yylhs.value.as < stmt_waittillframeend_ptr > () = std::make_unique(yylhs.location); } #line 2141 "parser.cpp" break; - case 68: // stmt_break: "break" ";" -#line 422 "parser.ypp" - { yylhs.value.as < stmt_break_ptr > () = std::make_unique(yylhs.location); } + case 58: // stmt_waitframe: "waitframe" ";" +#line 378 "parser.ypp" + { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } #line 2147 "parser.cpp" break; - case 69: // stmt_continue: "continue" ";" -#line 427 "parser.ypp" - { yylhs.value.as < stmt_continue_ptr > () = std::make_unique(yylhs.location); } + case 59: // stmt_waitframe: "waitframe" "(" ")" ";" +#line 380 "parser.ypp" + { yylhs.value.as < stmt_waitframe_ptr > () = std::make_unique(yylhs.location); } #line 2153 "parser.cpp" break; - case 70: // stmt_return: "return" expr ";" -#line 432 "parser.ypp" - { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } + case 60: // stmt_if: "if" "(" expr ")" stmt +#line 385 "parser.ypp" + { yylhs.value.as < stmt_if_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2159 "parser.cpp" break; - case 71: // stmt_return: "return" ";" -#line 434 "parser.ypp" - { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } + case 61: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 390 "parser.ypp" + { yylhs.value.as < stmt_ifelse_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2165 "parser.cpp" break; - case 72: // for_stmt: expr_assign -#line 438 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_list = std::make_unique(yylhs.location); yylhs.value.as < stmt_ptr > ().as_list->stmts.push_back(stmt_ptr(std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_assign_ptr > ())))); } + case 62: // stmt_while: "while" "(" expr ")" stmt +#line 395 "parser.ypp" + { yylhs.value.as < stmt_while_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2171 "parser.cpp" break; - case 73: // for_stmt: %empty -#line 439 "parser.ypp" - { yylhs.value.as < stmt_ptr > ().as_node = std::make_unique(yylhs.location); } + case 63: // stmt_for: "for" "(" for_stmt ";" for_expr ";" for_stmt ")" stmt +#line 400 "parser.ypp" + { yylhs.value.as < stmt_for_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[6].value.as < stmt_ptr > ()), std::move(yystack_[4].value.as < expr_ptr > ()), std::move(yystack_[2].value.as < stmt_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2177 "parser.cpp" break; - case 74: // for_expr: expr -#line 443 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 64: // stmt_foreach: "foreach" "(" name "in" expr ")" stmt +#line 405 "parser.ypp" + { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2183 "parser.cpp" break; - case 75: // for_expr: %empty -#line 444 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location); } + case 65: // stmt_foreach: "foreach" "(" name "," name "in" expr ")" stmt +#line 407 "parser.ypp" + { yylhs.value.as < stmt_foreach_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[6].value.as < name_ptr > ())), expr_ptr(std::move(yystack_[4].value.as < name_ptr > ())), std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_ptr > ())); } #line 2189 "parser.cpp" break; - case 76: // expr: expr_compare -#line 448 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 66: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 412 "parser.ypp" + { yylhs.value.as < stmt_switch_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < stmt_list_ptr > ())); } #line 2195 "parser.cpp" break; - case 77: // expr: expr_binary -#line 449 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 67: // stmt_case: "case" integer ":" +#line 417 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } #line 2201 "parser.cpp" break; - case 78: // expr: expr_primitive -#line 450 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } + case 68: // stmt_case: "case" neg_integer ":" +#line 419 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < integer_ptr > ())), std::make_unique(yylhs.location)); } #line 2207 "parser.cpp" break; - case 79: // expr_assign: "++" object -#line 454 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } + case 69: // stmt_case: "case" string ":" +#line 421 "parser.ypp" + { yylhs.value.as < stmt_case_ptr > () = std::make_unique(yylhs.location, expr_ptr(std::move(yystack_[1].value.as < string_ptr > ())), std::make_unique(yylhs.location)); } #line 2213 "parser.cpp" break; - case 80: // expr_assign: "--" object -#line 455 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } + case 70: // stmt_default: "default" ":" +#line 426 "parser.ypp" + { yylhs.value.as < stmt_default_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2219 "parser.cpp" break; - case 81: // expr_assign: object "++" -#line 456 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 71: // stmt_break: "break" ";" +#line 431 "parser.ypp" + { yylhs.value.as < stmt_break_ptr > () = std::make_unique(yylhs.location); } #line 2225 "parser.cpp" break; - case 82: // expr_assign: object "--" -#line 457 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } + case 72: // stmt_continue: "continue" ";" +#line 436 "parser.ypp" + { yylhs.value.as < stmt_continue_ptr > () = std::make_unique(yylhs.location); } #line 2231 "parser.cpp" break; - case 83: // expr_assign: object "=" expr -#line 458 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 73: // stmt_return: "return" expr ";" +#line 441 "parser.ypp" + { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2237 "parser.cpp" break; - case 84: // expr_assign: object "|=" expr -#line 459 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 74: // stmt_return: "return" ";" +#line 443 "parser.ypp" + { yylhs.value.as < stmt_return_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2243 "parser.cpp" break; - case 85: // expr_assign: object "&=" expr -#line 460 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 75: // stmt_breakpoint: "breakpoint" ";" +#line 448 "parser.ypp" + { yylhs.value.as < stmt_breakpoint_ptr > () = std::make_unique(yylhs.location); } #line 2249 "parser.cpp" break; - case 86: // expr_assign: object "^=" expr -#line 461 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 76: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" +#line 453 "parser.ypp" + { yylhs.value.as < stmt_prof_begin_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2255 "parser.cpp" break; - case 87: // expr_assign: object "<<=" expr -#line 462 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()),std::move( yystack_[0].value.as < expr_ptr > ())); } + case 77: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" +#line 458 "parser.ypp" + { yylhs.value.as < stmt_prof_end_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_arguments_ptr > ())); } #line 2261 "parser.cpp" break; - case 88: // expr_assign: object ">>=" expr -#line 463 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 78: // for_stmt: expr_assign +#line 462 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_list = std::make_unique(yylhs.location); yylhs.value.as < stmt_ptr > ().as_list->stmts.push_back(stmt_ptr(std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_assign_ptr > ())))); } #line 2267 "parser.cpp" break; - case 89: // expr_assign: object "+=" expr -#line 464 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 79: // for_stmt: %empty +#line 463 "parser.ypp" + { yylhs.value.as < stmt_ptr > ().as_node = std::make_unique(yylhs.location); } #line 2273 "parser.cpp" break; - case 90: // expr_assign: object "-=" expr -#line 465 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 80: // for_expr: expr +#line 467 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2279 "parser.cpp" break; - case 91: // expr_assign: object "*=" expr -#line 466 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 81: // for_expr: %empty +#line 468 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location); } #line 2285 "parser.cpp" break; - case 92: // expr_assign: object "/=" expr -#line 467 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 82: // expr: expr_compare +#line 472 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2291 "parser.cpp" break; - case 93: // expr_assign: object "%=" expr -#line 468 "parser.ypp" - { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 83: // expr: expr_binary +#line 473 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2297 "parser.cpp" break; - case 94: // expr_compare: expr "||" expr -#line 472 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 84: // expr: expr_primitive +#line 474 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[0].value.as < expr_ptr > ()); } #line 2303 "parser.cpp" break; - case 95: // expr_compare: expr "&&" expr -#line 473 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 85: // expr_assign: "++" object +#line 478 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } #line 2309 "parser.cpp" break; - case 96: // expr_compare: expr "==" expr -#line 474 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 86: // expr_assign: "--" object +#line 479 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < node_ptr > ())); } #line 2315 "parser.cpp" break; - case 97: // expr_compare: expr "!=" expr -#line 475 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 87: // expr_assign: object "++" +#line 480 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2321 "parser.cpp" break; - case 98: // expr_compare: expr "<=" expr -#line 476 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 88: // expr_assign: object "--" +#line 481 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2327 "parser.cpp" break; - case 99: // expr_compare: expr ">=" expr -#line 477 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 89: // expr_assign: object "=" expr +#line 482 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2333 "parser.cpp" break; - case 100: // expr_compare: expr "<" expr -#line 478 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 90: // expr_assign: object "|=" expr +#line 483 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2339 "parser.cpp" break; - case 101: // expr_compare: expr ">" expr -#line 479 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 91: // expr_assign: object "&=" expr +#line 484 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2345 "parser.cpp" break; - case 102: // expr_binary: expr "|" expr -#line 483 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 92: // expr_assign: object "^=" expr +#line 485 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2351 "parser.cpp" break; - case 103: // expr_binary: expr "&" expr -#line 484 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 93: // expr_assign: object "<<=" expr +#line 486 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()),std::move( yystack_[0].value.as < expr_ptr > ())); } #line 2357 "parser.cpp" break; - case 104: // expr_binary: expr "^" expr -#line 485 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 94: // expr_assign: object ">>=" expr +#line 487 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2363 "parser.cpp" break; - case 105: // expr_binary: expr "<<" expr -#line 486 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 95: // expr_assign: object "+=" expr +#line 488 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2369 "parser.cpp" break; - case 106: // expr_binary: expr ">>" expr -#line 487 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 96: // expr_assign: object "-=" expr +#line 489 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2375 "parser.cpp" break; - case 107: // expr_binary: expr "+" expr -#line 488 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 97: // expr_assign: object "*=" expr +#line 490 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2381 "parser.cpp" break; - case 108: // expr_binary: expr "-" expr -#line 489 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 98: // expr_assign: object "/=" expr +#line 491 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2387 "parser.cpp" break; - case 109: // expr_binary: expr "*" expr -#line 490 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 99: // expr_assign: object "%=" expr +#line 492 "parser.ypp" + { yylhs.value.as < expr_assign_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2393 "parser.cpp" break; - case 110: // expr_binary: expr "/" expr -#line 491 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 100: // expr_compare: expr "||" expr +#line 496 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2399 "parser.cpp" break; - case 111: // expr_binary: expr "%" expr -#line 492 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } + case 101: // expr_compare: expr "&&" expr +#line 497 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2405 "parser.cpp" break; - case 112: // expr_primitive: "(" expr ")" -#line 496 "parser.ypp" - { yylhs.value.as < expr_ptr > () = std::move(yystack_[1].value.as < expr_ptr > ()); } + case 102: // expr_compare: expr "==" expr +#line 498 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2411 "parser.cpp" break; - case 113: // expr_primitive: "~" expr -#line 497 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } + case 103: // expr_compare: expr "!=" expr +#line 499 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2417 "parser.cpp" break; - case 114: // expr_primitive: "!" expr -#line 498 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } + case 104: // expr_compare: expr "<=" expr +#line 500 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2423 "parser.cpp" break; - case 115: // expr_primitive: expr_call -#line 499 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 105: // expr_compare: expr ">=" expr +#line 501 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2429 "parser.cpp" break; - case 116: // expr_primitive: expr_call_thread -#line 500 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 106: // expr_compare: expr "<" expr +#line 502 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2435 "parser.cpp" break; - case 117: // expr_primitive: expr_call_childthread -#line 501 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 107: // expr_compare: expr ">" expr +#line 503 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2441 "parser.cpp" break; - case 118: // expr_primitive: expr_function -#line 502 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 108: // expr_binary: expr "|" expr +#line 507 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2447 "parser.cpp" break; - case 119: // expr_primitive: expr_add_array -#line 503 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 109: // expr_binary: expr "&" expr +#line 508 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2453 "parser.cpp" break; - case 120: // expr_primitive: expr_array -#line 504 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 110: // expr_binary: expr "^" expr +#line 509 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2459 "parser.cpp" break; - case 121: // expr_primitive: expr_field -#line 505 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 111: // expr_binary: expr "<<" expr +#line 510 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2465 "parser.cpp" break; - case 122: // expr_primitive: expr_size -#line 506 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } + case 112: // expr_binary: expr ">>" expr +#line 511 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2471 "parser.cpp" break; - case 123: // expr_primitive: thisthread -#line 507 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < thisthread_ptr > ()); } + case 113: // expr_binary: expr "+" expr +#line 512 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2477 "parser.cpp" break; - case 124: // expr_primitive: empty_array -#line 508 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < empty_array_ptr > ()); } + case 114: // expr_binary: expr "-" expr +#line 513 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2483 "parser.cpp" break; - case 125: // expr_primitive: undefined -#line 509 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < undefined_ptr > ()); } + case 115: // expr_binary: expr "*" expr +#line 514 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2489 "parser.cpp" break; - case 126: // expr_primitive: game -#line 510 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < game_ptr > ()); } + case 116: // expr_binary: expr "/" expr +#line 515 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2495 "parser.cpp" break; - case 127: // expr_primitive: self -#line 511 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < self_ptr > ()); } + case 117: // expr_binary: expr "%" expr +#line 516 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < expr_ptr > ()), std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2501 "parser.cpp" break; - case 128: // expr_primitive: anim -#line 512 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < anim_ptr > ()); } + case 118: // expr_primitive: "(" expr ")" +#line 520 "parser.ypp" + { yylhs.value.as < expr_ptr > () = std::move(yystack_[1].value.as < expr_ptr > ()); } #line 2507 "parser.cpp" break; - case 129: // expr_primitive: level -#line 513 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < level_ptr > ()); } + case 119: // expr_primitive: "~" expr +#line 521 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2513 "parser.cpp" break; - case 130: // expr_primitive: animation -#line 514 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animation_ptr > ()); } + case 120: // expr_primitive: "!" expr +#line 522 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2519 "parser.cpp" break; - case 131: // expr_primitive: animtree -#line 515 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animtree_ptr > ()); } + case 121: // expr_primitive: expr_call +#line 523 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2525 "parser.cpp" break; - case 132: // expr_primitive: name -#line 516 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < name_ptr > ()); } + case 122: // expr_primitive: expr_call_thread +#line 524 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2531 "parser.cpp" break; - case 133: // expr_primitive: istring -#line 517 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < istring_ptr > ()); } + case 123: // expr_primitive: expr_call_childthread +#line 525 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2537 "parser.cpp" break; - case 134: // expr_primitive: string -#line 518 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < string_ptr > ()); } + case 124: // expr_primitive: expr_function +#line 526 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2543 "parser.cpp" break; - case 135: // expr_primitive: vector -#line 519 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < vector_ptr > ()); } + case 125: // expr_primitive: expr_add_array +#line 527 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2549 "parser.cpp" break; - case 136: // expr_primitive: neg_float -#line 520 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } + case 126: // expr_primitive: expr_array +#line 528 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2555 "parser.cpp" break; - case 137: // expr_primitive: neg_integer -#line 521 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } + case 127: // expr_primitive: expr_field +#line 529 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2561 "parser.cpp" break; - case 138: // expr_primitive: float -#line 522 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } + case 128: // expr_primitive: expr_size +#line 530 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2567 "parser.cpp" break; - case 139: // expr_primitive: integer -#line 523 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } + case 129: // expr_primitive: thisthread +#line 531 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < thisthread_ptr > ()); } #line 2573 "parser.cpp" break; - case 140: // expr_primitive: false -#line 524 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < false_ptr > ()); } + case 130: // expr_primitive: empty_array +#line 532 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < empty_array_ptr > ()); } #line 2579 "parser.cpp" break; - case 141: // expr_primitive: true -#line 525 "parser.ypp" - { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < true_ptr > ()); } + case 131: // expr_primitive: undefined +#line 533 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < undefined_ptr > ()); } #line 2585 "parser.cpp" break; - case 142: // expr_call: expr_call_function -#line 529 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 132: // expr_primitive: game +#line 534 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < game_ptr > ()); } #line 2591 "parser.cpp" break; - case 143: // expr_call: expr_call_pointer -#line 530 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 133: // expr_primitive: self +#line 535 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < self_ptr > ()); } #line 2597 "parser.cpp" break; - case 144: // expr_call: object expr_call_function -#line 531 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 134: // expr_primitive: anim +#line 536 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < anim_ptr > ()); } #line 2603 "parser.cpp" break; - case 145: // expr_call: object expr_call_pointer -#line 532 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 135: // expr_primitive: level +#line 537 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < level_ptr > ()); } #line 2609 "parser.cpp" break; - case 146: // expr_call_thread: "thread" expr_call_function -#line 536 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 136: // expr_primitive: animation +#line 538 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animation_ptr > ()); } #line 2615 "parser.cpp" break; - case 147: // expr_call_thread: "thread" expr_call_pointer -#line 537 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 137: // expr_primitive: animtree +#line 539 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < animtree_ptr > ()); } #line 2621 "parser.cpp" break; - case 148: // expr_call_thread: object "thread" expr_call_function -#line 538 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 138: // expr_primitive: name +#line 540 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < name_ptr > ()); } #line 2627 "parser.cpp" break; - case 149: // expr_call_thread: object "thread" expr_call_pointer -#line 539 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 139: // expr_primitive: istring +#line 541 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < istring_ptr > ()); } #line 2633 "parser.cpp" break; - case 150: // expr_call_childthread: "childthread" expr_call_function -#line 543 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 140: // expr_primitive: string +#line 542 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < string_ptr > ()); } #line 2639 "parser.cpp" break; - case 151: // expr_call_childthread: "childthread" expr_call_pointer -#line 544 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 141: // expr_primitive: vector +#line 543 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < vector_ptr > ()); } #line 2645 "parser.cpp" break; - case 152: // expr_call_childthread: object "childthread" expr_call_function -#line 545 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 142: // expr_primitive: neg_float +#line 544 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } #line 2651 "parser.cpp" break; - case 153: // expr_call_childthread: object "childthread" expr_call_pointer -#line 546 "parser.ypp" - { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } + case 143: // expr_primitive: neg_integer +#line 545 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } #line 2657 "parser.cpp" break; - case 154: // expr_call_function: name "(" expr_arguments ")" -#line 551 "parser.ypp" - {yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::make_unique(), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 144: // expr_primitive: float +#line 546 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < float_ptr > ()); } #line 2663 "parser.cpp" break; - case 155: // expr_call_function: file "::" name "(" expr_arguments ")" -#line 553 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < file_ptr > ()), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 145: // expr_primitive: integer +#line 547 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < integer_ptr > ()); } #line 2669 "parser.cpp" break; - case 156: // expr_call_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 558 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, false, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 146: // expr_primitive: false +#line 548 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < false_ptr > ()); } #line 2675 "parser.cpp" break; - case 157: // expr_call_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 560 "parser.ypp" - { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, true, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 147: // expr_primitive: true +#line 549 "parser.ypp" + { yylhs.value.as < expr_ptr > ().as_node = std::move(yystack_[0].value.as < true_ptr > ()); } #line 2681 "parser.cpp" break; - case 158: // expr_arguments: expr_arguments_filled -#line 564 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } + case 148: // expr_call: expr_call_function +#line 553 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2687 "parser.cpp" break; - case 159: // expr_arguments: expr_arguments_empty -#line 565 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } + case 149: // expr_call: expr_call_pointer +#line 554 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2693 "parser.cpp" break; - case 160: // expr_arguments_filled: expr_arguments "," expr -#line 570 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[2].value.as < expr_arguments_ptr > ()); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } + case 150: // expr_call: object expr_call_function +#line 555 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2699 "parser.cpp" break; - case 161: // expr_arguments_filled: expr -#line 572 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } + case 151: // expr_call: object expr_call_pointer +#line 556 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, false, std::move(yystack_[1].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2705 "parser.cpp" break; - case 162: // expr_arguments_empty: %empty -#line 577 "parser.ypp" - { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); } + case 152: // expr_call_thread: "thread" expr_call_function +#line 560 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2711 "parser.cpp" break; - case 163: // expr_function: "::" name -#line 582 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < name_ptr > ())); } + case 153: // expr_call_thread: "thread" expr_call_pointer +#line 561 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2717 "parser.cpp" break; - case 164: // expr_function: file "::" name -#line 584 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < file_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } + case 154: // expr_call_thread: object "thread" expr_call_function +#line 562 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2723 "parser.cpp" break; - case 165: // expr_add_array: "[" expr_arguments_filled "]" -#line 589 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } + case 155: // expr_call_thread: object "thread" expr_call_pointer +#line 563 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, true, false, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2729 "parser.cpp" break; - case 166: // expr_array: object "[" expr "]" -#line 594 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < node_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 156: // expr_call_childthread: "childthread" expr_call_function +#line 567 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2735 "parser.cpp" break; - case 167: // expr_field: object "." name -#line 599 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } + case 157: // expr_call_childthread: "childthread" expr_call_pointer +#line 568 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2741 "parser.cpp" break; - case 168: // expr_size: object "." "size" -#line 604 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ())); } + case 158: // expr_call_childthread: object "childthread" expr_call_function +#line 569 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2747 "parser.cpp" break; - case 169: // object: expr_call -#line 608 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < expr_call_ptr > ()); } + case 159: // expr_call_childthread: object "childthread" expr_call_pointer +#line 570 "parser.ypp" + { yylhs.value.as < expr_call_ptr > () = std::make_unique(yylhs.location, false, true, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < expr_call_type_ptr > ())); } #line 2753 "parser.cpp" break; - case 170: // object: expr_array -#line 609 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } + case 160: // expr_call_function: name "(" expr_arguments ")" +#line 575 "parser.ypp" + {yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::make_unique(), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2759 "parser.cpp" break; - case 171: // object: expr_field -#line 610 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } + case 161: // expr_call_function: file "::" name "(" expr_arguments ")" +#line 577 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_func = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < file_ptr > ()), std::move(yystack_[3].value.as < name_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2765 "parser.cpp" break; - case 172: // object: game -#line 611 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < game_ptr > ()); } + case 162: // expr_call_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 582 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, false, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2771 "parser.cpp" break; - case 173: // object: self -#line 612 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < self_ptr > ()); } + case 163: // expr_call_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 584 "parser.ypp" + { yylhs.value.as < expr_call_type_ptr > ().as_pointer = std::make_unique(yylhs.location, true, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2777 "parser.cpp" break; - case 174: // object: anim -#line 613 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < anim_ptr > ()); } + case 164: // expr_arguments: expr_arguments_filled +#line 588 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } #line 2783 "parser.cpp" break; - case 175: // object: level -#line 614 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < level_ptr > ()); } + case 165: // expr_arguments: expr_arguments_empty +#line 589 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[0].value.as < expr_arguments_ptr > ()); } #line 2789 "parser.cpp" break; - case 176: // object: name -#line 615 "parser.ypp" - { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < name_ptr > ()); } + case 166: // expr_arguments_filled: expr_arguments "," expr +#line 594 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::move(yystack_[2].value.as < expr_arguments_ptr > ()); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2795 "parser.cpp" break; - case 177: // thisthread: "thisthread" -#line 618 "parser.ypp" - { yylhs.value.as < thisthread_ptr > () = std::make_unique(yylhs.location); } + case 167: // expr_arguments_filled: expr +#line 596 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); yylhs.value.as < expr_arguments_ptr > ()->list.push_back(std::move(yystack_[0].value.as < expr_ptr > ())); } #line 2801 "parser.cpp" break; - case 178: // empty_array: "[" "]" -#line 619 "parser.ypp" - { yylhs.value.as < empty_array_ptr > () = std::make_unique(yylhs.location); } + case 168: // expr_arguments_empty: %empty +#line 601 "parser.ypp" + { yylhs.value.as < expr_arguments_ptr > () = std::make_unique(yylhs.location); } #line 2807 "parser.cpp" break; - case 179: // undefined: "undefined" -#line 620 "parser.ypp" - { yylhs.value.as < undefined_ptr > () = std::make_unique(yylhs.location); } + case 169: // expr_function: "::" name +#line 606 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2813 "parser.cpp" break; - case 180: // game: "game" -#line 621 "parser.ypp" - { yylhs.value.as < game_ptr > () = std::make_unique(yylhs.location); } + case 170: // expr_function: file "::" name +#line 608 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < file_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2819 "parser.cpp" break; - case 181: // self: "self" -#line 622 "parser.ypp" - { yylhs.value.as < self_ptr > () = std::make_unique(yylhs.location); } + case 171: // expr_add_array: "[" expr_arguments_filled "]" +#line 613 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < expr_arguments_ptr > ())); } #line 2825 "parser.cpp" break; - case 182: // anim: "anim" -#line 623 "parser.ypp" - { yylhs.value.as < anim_ptr > () = std::make_unique(yylhs.location); } + case 172: // expr_array: object "[" expr "]" +#line 618 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < node_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } #line 2831 "parser.cpp" break; - case 183: // level: "level" -#line 624 "parser.ypp" - { yylhs.value.as < level_ptr > () = std::make_unique(yylhs.location); } + case 173: // expr_field: object "." name +#line 623 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < node_ptr > ()), std::move(yystack_[0].value.as < name_ptr > ())); } #line 2837 "parser.cpp" break; - case 184: // animation: "%" "identifier" -#line 625 "parser.ypp" - { yylhs.value.as < animation_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 174: // expr_size: object ".size" +#line 628 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < node_ptr > ())); } #line 2843 "parser.cpp" break; - case 185: // animtree: "#animtree" -#line 626 "parser.ypp" - { yylhs.value.as < animtree_ptr > () = std::make_unique(yylhs.location); } + case 175: // object: expr_call +#line 632 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < expr_call_ptr > ()); } #line 2849 "parser.cpp" break; - case 186: // name: "identifier" -#line 627 "parser.ypp" - { yylhs.value.as < name_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 176: // object: expr_array +#line 633 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2855 "parser.cpp" break; - case 187: // file: "file path" -#line 628 "parser.ypp" - { yylhs.value.as < file_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 177: // object: expr_field +#line 634 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < node_ptr > ()); } #line 2861 "parser.cpp" break; - case 188: // istring: "localized string" -#line 629 "parser.ypp" - { yylhs.value.as < istring_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 178: // object: game +#line 635 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < game_ptr > ()); } #line 2867 "parser.cpp" break; - case 189: // string: "string literal" -#line 630 "parser.ypp" - { yylhs.value.as < string_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 179: // object: self +#line 636 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < self_ptr > ()); } #line 2873 "parser.cpp" break; - case 190: // vector: "(" expr "," expr "," expr ")" -#line 631 "parser.ypp" - { yylhs.value.as < vector_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[3].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } + case 180: // object: anim +#line 637 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < anim_ptr > ()); } #line 2879 "parser.cpp" break; - case 191: // neg_float: "-" "float" -#line 632 "parser.ypp" - { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 181: // object: level +#line 638 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < level_ptr > ()); } #line 2885 "parser.cpp" break; - case 192: // neg_integer: "-" "int" -#line 633 "parser.ypp" - { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 182: // object: name +#line 639 "parser.ypp" + { yylhs.value.as < node_ptr > () = std::move(yystack_[0].value.as < name_ptr > ()); } #line 2891 "parser.cpp" break; - case 193: // float: "float" -#line 634 "parser.ypp" - { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 183: // thisthread: "thisthread" +#line 642 "parser.ypp" + { yylhs.value.as < thisthread_ptr > () = std::make_unique(yylhs.location); } #line 2897 "parser.cpp" break; - case 194: // integer: "int" -#line 635 "parser.ypp" - { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 184: // empty_array: "[" "]" +#line 643 "parser.ypp" + { yylhs.value.as < empty_array_ptr > () = std::make_unique(yylhs.location); } #line 2903 "parser.cpp" break; - case 195: // false: "false" -#line 636 "parser.ypp" - { yylhs.value.as < false_ptr > () = std::make_unique(yylhs.location); } + case 185: // undefined: "undefined" +#line 644 "parser.ypp" + { yylhs.value.as < undefined_ptr > () = std::make_unique(yylhs.location); } #line 2909 "parser.cpp" break; - case 196: // true: "true" -#line 637 "parser.ypp" - { yylhs.value.as < true_ptr > () = std::make_unique(yylhs.location); } + case 186: // game: "game" +#line 645 "parser.ypp" + { yylhs.value.as < game_ptr > () = std::make_unique(yylhs.location); } #line 2915 "parser.cpp" break; + case 187: // self: "self" +#line 646 "parser.ypp" + { yylhs.value.as < self_ptr > () = std::make_unique(yylhs.location); } +#line 2921 "parser.cpp" + break; -#line 2919 "parser.cpp" + case 188: // anim: "anim" +#line 647 "parser.ypp" + { yylhs.value.as < anim_ptr > () = std::make_unique(yylhs.location); } +#line 2927 "parser.cpp" + break; + + case 189: // level: "level" +#line 648 "parser.ypp" + { yylhs.value.as < level_ptr > () = std::make_unique(yylhs.location); } +#line 2933 "parser.cpp" + break; + + case 190: // animation: "%" "identifier" +#line 649 "parser.ypp" + { yylhs.value.as < animation_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2939 "parser.cpp" + break; + + case 191: // animtree: "#animtree" +#line 650 "parser.ypp" + { yylhs.value.as < animtree_ptr > () = std::make_unique(yylhs.location); } +#line 2945 "parser.cpp" + break; + + case 192: // name: "identifier" +#line 651 "parser.ypp" + { yylhs.value.as < name_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2951 "parser.cpp" + break; + + case 193: // file: "file path" +#line 652 "parser.ypp" + { yylhs.value.as < file_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2957 "parser.cpp" + break; + + case 194: // istring: "localized string" +#line 653 "parser.ypp" + { yylhs.value.as < istring_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2963 "parser.cpp" + break; + + case 195: // string: "string literal" +#line 654 "parser.ypp" + { yylhs.value.as < string_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2969 "parser.cpp" + break; + + case 196: // vector: "(" expr "," expr "," expr ")" +#line 655 "parser.ypp" + { yylhs.value.as < vector_ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < expr_ptr > ()), std::move(yystack_[3].value.as < expr_ptr > ()), std::move(yystack_[1].value.as < expr_ptr > ())); } +#line 2975 "parser.cpp" + break; + + case 197: // neg_float: "-" "float" +#line 656 "parser.ypp" + { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 2981 "parser.cpp" + break; + + case 198: // neg_integer: "-" "int" +#line 657 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } +#line 2987 "parser.cpp" + break; + + case 199: // float: "float" +#line 658 "parser.ypp" + { yylhs.value.as < float_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2993 "parser.cpp" + break; + + case 200: // integer: "int" +#line 659 "parser.ypp" + { yylhs.value.as < integer_ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } +#line 2999 "parser.cpp" + break; + + case 201: // false: "false" +#line 660 "parser.ypp" + { yylhs.value.as < false_ptr > () = std::make_unique(yylhs.location); } +#line 3005 "parser.cpp" + break; + + case 202: // true: "true" +#line 661 "parser.ypp" + { yylhs.value.as < true_ptr > () = std::make_unique(yylhs.location); } +#line 3011 "parser.cpp" + break; + + +#line 3015 "parser.cpp" default: break; @@ -3099,24 +3195,26 @@ namespace xsk { namespace gsc { namespace s2 { { static const char *const yy_sname[] = { - "end of file", "error", "invalid token", "#include", "#using_animtree", - "#animtree", "endon", "notify", "wait", "waittill", "waittillmatch", - "waittillframeend", "waitframe", "if", "else", "while", "for", "foreach", - "in", "switch", "case", "default", "break", "continue", "return", - "thread", "childthread", "thisthread", "call", "true", "false", - "undefined", "size", "game", "self", "anim", "level", "(", ")", "{", "}", - "[", "]", ",", ".", "::", ":", ";", "++", "--", "<<", ">>", "||", "&&", - "==", "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", - "%=", "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", - "%", "file path", "identifier", "string literal", "localized string", - "float", "int", "ADD_ARRAY", "THEN", "NEG", "ANIMREF", "PREINC", - "PREDEC", "POSTINC", "POSTDEC", "$accept", "root", "program", "include", - "define", "usingtree", "constant", "thread", "parameters", "stmt", - "stmt_block", "stmt_list", "stmt_call", "stmt_assign", "stmt_endon", - "stmt_notify", "stmt_wait", "stmt_waittill", "stmt_waittillmatch", + "end of file", "error", "invalid token", "breakpoint", "prof_begin", + "prof_end", "#include", "#using_animtree", "#animtree", "endon", + "notify", "wait", "waittill", "waittillmatch", "waittillframeend", + "waitframe", "if", "else", "while", "for", "foreach", "in", "switch", + "case", "default", "break", "continue", "return", "thread", + "childthread", "thisthread", "call", "true", "false", "undefined", + ".size", "game", "self", "anim", "level", "(", ")", "{", "}", "[", "]", + ",", ".", "::", ":", ";", "++", "--", "<<", ">>", "||", "&&", "==", "!=", + "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", "|=", + "&=", "^=", ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", "%", + "file path", "identifier", "string literal", "localized string", "float", + "int", "ADD_ARRAY", "THEN", "NEG", "ANIMREF", "PREINC", "PREDEC", + "POSTINC", "POSTDEC", "$accept", "root", "program", "include", "define", + "usingtree", "constant", "thread", "parameters", "stmt", "stmt_block", + "stmt_list", "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", + "stmt_wait", "stmt_waittill", "stmt_waittillmatch", "stmt_waittillframeend", "stmt_waitframe", "stmt_if", "stmt_ifelse", "stmt_while", "stmt_for", "stmt_foreach", "stmt_switch", "stmt_case", - "stmt_default", "stmt_break", "stmt_continue", "stmt_return", "for_stmt", + "stmt_default", "stmt_break", "stmt_continue", "stmt_return", + "stmt_breakpoint", "stmt_prof_begin", "stmt_prof_end", "for_stmt", "for_expr", "expr", "expr_assign", "expr_compare", "expr_binary", "expr_primitive", "expr_call", "expr_call_thread", "expr_call_childthread", "expr_call_function", "expr_call_pointer", @@ -3390,513 +3488,532 @@ namespace xsk { namespace gsc { namespace s2 { } - const short parser::yypact_ninf_ = -230; + const short parser::yypact_ninf_ = -236; - const short parser::yytable_ninf_ = -177; + const short parser::yytable_ninf_ = -183; const short parser::yypact_[] = { - 7, -67, -20, -230, 53, 7, -230, -230, -230, -230, - -230, -21, -230, 13, -10, -230, -230, -230, -3, 607, - -230, -230, 25, -15, -230, -230, 41, 41, -230, 29, - -230, -230, -230, -230, -230, -230, -230, 607, 480, -3, - 607, 607, -50, -1, -230, -230, -230, 1341, -230, -230, - -230, 18, -230, -230, -230, -230, -230, -230, 23, 30, - -230, 332, -230, -230, -230, 446, 507, 569, 573, -230, - -230, -4, 38, -230, -230, -230, -230, -230, -230, -230, - -230, -230, 47, 85, -3, 56, -230, -230, 84, 64, - -230, -230, 86, 905, 480, -230, 1419, 90, 95, -230, - -230, -230, -230, -230, -230, -230, -230, 607, 607, 607, - 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, - 607, 607, 607, 607, 607, 41, 41, 669, -17, -230, - -230, 607, -3, -230, 787, -230, -230, 607, -3, 607, - -230, 607, 1212, 607, -230, 124, 124, 1429, 938, 1501, - 1501, 40, 40, 40, 40, 981, 1460, 1470, 101, 101, - -230, -230, -230, -230, -230, -230, -230, 1251, -230, -230, - -13, -230, 103, 607, 94, -18, 123, 126, 128, 130, - 131, 9, 125, 135, 138, 545, -230, 732, 732, -230, - -230, 826, -230, -230, -230, -230, -230, -230, -230, -230, - -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, - -230, -230, 139, 143, 148, -230, -230, 715, -230, -230, - -230, -230, 84, 1212, 103, 1290, 1328, 133, 1419, -230, - -230, 607, 1375, -230, 132, -230, 607, 607, 630, -3, - 607, 91, 151, 159, 160, -230, -230, -230, -230, 1388, - -230, 6, 6, -230, -230, -230, -230, -230, 152, 172, - 173, 174, -3, -230, -230, 607, 607, 607, 607, 607, - 607, 607, 607, 607, 607, 607, 170, 607, 176, 14, - -230, 177, 1044, 1077, 178, -230, 868, 2, 1087, -230, - -230, -230, -230, 607, 607, 607, 607, 1419, 1419, 1419, - 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 182, 1120, - 607, -230, -230, 865, 865, 607, 607, -3, 85, 1130, - 948, 991, 1034, 607, -230, 42, 207, -230, 187, 1419, - 1163, 205, -230, 188, 190, 607, 193, 607, 195, 607, - 55, -230, 865, 630, 865, 607, -230, -230, 58, -230, - 70, -230, 72, -230, -230, 206, -230, 1173, 198, 199, - 200, 865, 865, -230, -230, -230, -230, -230 + 8, -65, -6, -236, 25, 8, -236, -236, -236, -236, + -236, -32, -236, -8, -28, -236, -236, -236, -17, 774, + -236, -236, 21, 30, -236, -236, 6, 6, -236, 51, + -236, -236, -236, -236, -236, -236, -236, 774, 377, -17, + 774, 774, 10, -3, -236, -236, -236, 1403, -236, -236, + -236, 20, -236, -236, -236, -236, -236, -236, 403, 449, + -236, 472, -236, -236, -236, 739, 798, 858, 930, -236, + -236, 12, 17, -236, -236, -236, -236, -236, -236, -236, + -236, -236, 24, 50, -17, 63, -236, -236, 76, 79, + -236, -236, 80, 967, 377, -236, 1481, 71, 89, -236, + -236, -236, -236, -236, -236, -236, -236, 774, 774, 774, + 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, + 774, 774, 774, 774, 774, 6, 6, -236, 836, -17, + -236, -236, 774, -17, -236, 599, -236, -236, 774, -17, + 774, -236, 774, 1274, 774, -236, 106, 106, 1491, 1000, + 1563, 1563, 130, 130, 130, 130, 1043, 1532, 1522, -37, + -37, -236, -236, -236, -236, -236, -236, -236, 1313, -236, + 31, -236, 96, 87, 101, 104, 774, 88, -20, 123, + 124, 127, 131, 134, -26, 121, 147, 152, 712, -236, + -15, -15, -236, -236, 643, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, 153, 155, + 157, -236, -236, 882, -236, -236, -236, -236, 76, 1274, + 96, 1352, 1390, 132, 1481, -236, -236, 774, -236, 774, + 774, 1437, -236, 140, -236, 774, 774, 544, -17, 774, + 117, 159, 166, 172, -236, -236, -236, -236, 1450, -236, + 173, 173, -236, -236, -236, -236, -236, 182, 184, 187, + 189, -236, -236, 774, 774, 774, 774, 774, 774, 774, + 774, 774, 774, 774, 186, 774, 199, 39, 40, 42, + -236, 190, 1106, 1139, 191, -236, 932, -11, 1149, -236, + -236, -236, -236, 774, 774, 774, 774, 1481, 1481, 1481, + 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 205, 1182, + 774, -236, 196, 200, -236, 687, 687, 774, 774, -17, + 50, 1192, 1010, 1053, 1096, 774, -236, 48, -236, -236, + 225, -236, 203, 1481, 1225, 234, -236, 206, 209, 774, + 212, 774, 213, 774, 65, -236, 687, 544, 687, 774, + -236, -236, 69, -236, 73, -236, 82, -236, -236, 223, + -236, 1235, 217, 220, 222, 687, 687, -236, -236, -236, + -236, -236 }; const unsigned char parser::yydefact_[] = { - 3, 0, 0, 186, 0, 2, 6, 7, 9, 10, - 11, 0, 187, 0, 0, 1, 4, 5, 17, 0, - 8, 189, 0, 0, 16, 185, 0, 0, 177, 0, - 196, 195, 179, 180, 181, 182, 183, 0, 162, 0, - 0, 0, 0, 0, 188, 193, 194, 0, 76, 77, - 78, 115, 116, 117, 142, 143, 118, 119, 120, 121, - 122, 0, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 0, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 0, 0, 0, 0, 146, 147, 0, 0, - 150, 151, 0, 0, 162, 178, 161, 0, 158, 159, - 163, 114, 113, 191, 192, 184, 13, 0, 0, 0, + 3, 0, 0, 192, 0, 2, 6, 7, 9, 10, + 11, 0, 193, 0, 0, 1, 4, 5, 17, 0, + 8, 195, 0, 0, 16, 191, 0, 0, 183, 0, + 202, 201, 185, 186, 187, 188, 189, 0, 168, 0, + 0, 0, 0, 0, 194, 199, 200, 0, 82, 83, + 84, 121, 122, 123, 148, 149, 124, 125, 126, 127, + 128, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 0, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 0, 0, 0, 0, 152, 153, 0, 0, + 156, 157, 0, 0, 168, 184, 167, 0, 164, 165, + 169, 120, 119, 197, 198, 190, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, - 145, 162, 0, 12, 0, 14, 15, 0, 0, 0, - 112, 0, 161, 0, 165, 105, 106, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 107, 108, - 109, 110, 111, 148, 149, 152, 153, 0, 168, 167, - 0, 158, 164, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 40, 0, 0, 42, - 18, 0, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 0, 169, 0, 170, 171, 0, 172, 173, - 174, 175, 176, 0, 0, 0, 0, 0, 160, 166, - 154, 162, 0, 54, 0, 55, 0, 0, 73, 0, - 0, 0, 0, 0, 0, 67, 68, 69, 71, 0, - 169, 79, 80, 39, 41, 45, 43, 44, 0, 0, - 0, 0, 0, 81, 82, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 174, 0, 0, + 150, 151, 168, 0, 12, 0, 14, 15, 0, 0, + 0, 118, 0, 167, 0, 171, 111, 112, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 113, + 114, 115, 116, 117, 154, 155, 158, 159, 0, 173, + 0, 164, 170, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, + 0, 0, 45, 18, 0, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 0, 175, + 0, 176, 177, 0, 178, 179, 180, 181, 182, 0, + 0, 0, 0, 0, 166, 172, 160, 168, 75, 168, + 168, 0, 57, 0, 58, 0, 0, 79, 0, 0, + 0, 0, 0, 0, 70, 71, 72, 74, 0, 175, + 85, 86, 42, 44, 48, 46, 47, 0, 0, 0, + 0, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 49, 0, 0, 0, 0, 72, 0, 0, 0, 66, - 65, 64, 70, 0, 0, 0, 0, 83, 89, 90, - 91, 92, 93, 84, 85, 86, 88, 87, 0, 0, - 162, 155, 56, 0, 0, 75, 0, 0, 0, 0, - 0, 0, 0, 162, 190, 0, 57, 59, 0, 74, - 0, 0, 63, 0, 0, 162, 0, 162, 0, 162, - 0, 156, 0, 73, 0, 0, 46, 48, 0, 51, - 0, 53, 0, 157, 58, 0, 61, 0, 0, 0, - 0, 0, 0, 47, 50, 52, 60, 62 + 52, 0, 0, 0, 0, 78, 0, 0, 0, 69, + 68, 67, 73, 0, 0, 0, 0, 89, 95, 96, + 97, 98, 99, 90, 91, 92, 94, 93, 0, 0, + 168, 161, 0, 0, 59, 0, 0, 81, 0, 0, + 0, 0, 0, 0, 0, 168, 196, 0, 76, 77, + 60, 62, 0, 80, 0, 0, 66, 0, 0, 168, + 0, 168, 0, 168, 0, 162, 0, 79, 0, 0, + 49, 51, 0, 54, 0, 56, 0, 163, 61, 0, + 64, 0, 0, 0, 0, 0, 0, 50, 53, 55, + 63, 65 }; const short parser::yypgoto_[] = { - -230, -230, -230, 243, 244, -230, -230, -230, -230, -178, - -82, -230, -230, -230, -230, -230, -230, -230, -230, -230, - -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, - -230, -230, -93, -230, 35, -229, -230, -230, -230, 27, - 142, -230, -23, -19, 68, -26, -230, -230, -230, 39, - 73, -230, 82, -230, -230, -230, 97, 107, 134, 241, - -230, -230, 0, 5, -230, -12, -230, -230, 74, -230, - 77, -230, -230 + -236, -236, -236, 272, 273, -236, -236, -236, -236, -183, + -76, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -78, -236, 38, -235, -236, + -236, -236, -82, -107, -236, -25, -23, -119, -21, -236, + -236, -236, -22, 98, -236, 156, -236, -236, -236, 192, + 197, 202, 236, -236, -236, 0, 5, -236, -5, -236, + -236, 97, -236, 102, -236, -236 }; const short parser::yydefgoto_[] = { - 0, 4, 5, 6, 7, 8, 9, 10, 23, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 284, 328, 96, 212, 48, 49, 50, 51, - 52, 53, 54, 55, 97, 171, 99, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81 + 0, 4, 5, 6, 7, 8, 9, 10, 23, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 294, 342, 96, 218, 48, + 49, 50, 51, 52, 53, 54, 55, 97, 171, 99, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81 }; const short parser::yytable_[] = { - 11, 135, 22, 86, 90, 11, 13, 87, 91, 285, - 1, 2, 98, 254, 12, 168, 18, 14, 24, 234, - 316, -176, -176, 83, -176, 230, 88, 88, 84, 235, - 143, 89, 89, 131, 29, 103, 104, -176, 129, 100, - -176, 19, 130, -169, -169, 317, -169, 127, -170, -170, - 262, -170, 311, 15, 47, -171, -171, 143, -171, -169, - 20, 88, -169, 82, -170, 3, 89, -170, 98, 29, - 92, -171, 93, 21, -171, 101, 102, -176, -176, 3, - 341, 105, 85, 132, 136, 143, 241, 12, 3, 3, - 107, 108, 21, 353, 133, 46, 358, 137, 143, -169, - -169, 143, 163, 165, -170, -170, 164, 166, 359, 138, - 360, -171, -171, 143, 285, 143, 120, 121, 122, 123, - 124, 131, 12, 3, 134, 88, 88, 139, 169, 142, - 89, 89, 172, 143, 222, 326, 327, 144, 224, 89, - 231, 233, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 236, 213, 167, 237, 354, 238, 356, 239, 240, 242, - 281, 245, 223, 215, 225, 278, 226, 104, 228, 122, - 123, 124, 246, 366, 367, 247, 255, 222, 222, 293, - 256, 222, 89, 89, 129, 257, 89, 289, 130, 170, - 120, 121, 122, 123, 124, 290, 291, 216, 232, 294, - 295, 296, 308, 310, 250, 250, 217, 88, 213, 323, - 249, 342, 89, 345, 312, 315, 215, 215, 129, 129, - 215, 218, 130, 130, 343, 346, 332, 347, 222, 287, - 349, 219, 351, 89, 361, 363, 364, 365, 16, 17, - 355, 88, 88, 0, 0, 243, 89, 89, 244, 0, - 216, 216, 169, 129, 216, 250, 0, 130, 220, 251, - 252, 282, 283, 217, 0, 288, 214, 215, 0, 0, - 0, 0, 0, 0, 218, 218, 88, 0, 218, 0, - 0, 89, 0, 0, 219, 219, 0, 0, 219, 279, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 216, 309, 222, 222, 0, 0, 331, 89, 89, - 286, 220, 220, 0, 0, 220, 0, 0, 319, 320, - 321, 322, 0, 214, 0, 218, 0, 0, 0, 0, - 213, 213, 222, 222, 222, 219, 0, 89, 89, 89, - 329, 330, 215, 215, 0, 0, 0, 125, 126, 0, - 29, 222, 222, 0, 0, 0, 89, 89, 0, 213, - 250, 213, 220, 127, 0, 221, 128, 0, 325, 0, - 357, 215, 215, 215, 0, 0, 216, 216, 213, 213, - 0, 340, 0, 0, 0, 217, 217, 0, 0, 0, - 215, 215, 0, 348, 0, 350, 0, 352, 0, 0, - 218, 218, 0, 12, 3, 216, 216, 216, 0, 0, - 219, 219, 0, 0, 217, 286, 217, 0, 221, 221, - 0, 0, 221, 0, 216, 216, 0, 0, 0, 218, - 218, 218, 0, 217, 217, 0, 0, 220, 220, 219, - 219, 219, 0, 0, 0, 214, 214, 0, 218, 218, - 0, 0, 0, 0, 0, 0, 0, 0, 219, 219, - 0, -172, -172, 0, -172, 0, 220, 220, 220, 221, - 0, 0, 0, 0, 214, 25, 214, -172, 0, 0, - -172, 0, 0, 0, 0, 220, 220, 0, 0, 0, - 0, 0, 0, 214, 214, 26, 27, 28, 29, 30, + 11, 86, 90, 87, 91, 11, 13, 136, 18, 22, + 328, 263, 295, 170, 1, 2, 29, 98, 24, 12, + 243, 33, 34, 35, 36, 15, 88, 88, 220, 85, + 244, 89, 89, 19, 14, 329, 130, 29, 131, 100, + -182, -182, 20, -182, 122, 123, 124, -182, -175, -175, + 85, -175, 132, 219, 250, -175, -182, 47, 21, -182, + 21, 88, 82, 46, -175, 133, 89, -175, 3, 12, + 3, 83, 236, 98, 134, 93, 84, 144, 101, 102, + 321, 322, 105, 323, 137, 144, 144, 220, 144, 355, + 12, 3, 135, 3, 144, 92, -182, -182, 103, 104, + 164, 166, 165, 167, -175, -175, 367, 138, 259, 259, + 372, 144, 219, 221, 373, 144, 132, 144, 287, 144, + 288, 289, 295, 374, 140, 88, 88, 139, 144, 169, + 89, 89, 143, 172, 145, 228, 237, 238, 242, 230, + 89, 239, 340, 341, 240, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 245, 246, 259, 168, 247, 221, 221, + 254, 248, 221, 368, 249, 370, 229, 286, 231, 251, + 232, 291, 234, 107, 108, 120, 121, 122, 123, 124, + 228, 228, 380, 381, 228, 89, 89, 255, 130, 89, + 131, 337, 256, 264, 29, 265, 104, 266, 299, 120, + 121, 122, 123, 124, 241, 300, 354, 128, 220, 220, + 129, 301, 303, 88, 304, 221, 258, 305, 89, 306, + 362, 318, 364, 222, 366, 130, 130, 131, 131, 320, + 324, 327, 356, 219, 219, 335, 338, 228, 297, 220, + 339, 220, 89, 357, 346, 359, 360, 12, 3, 361, + 88, 88, 363, 365, 375, 89, 89, 377, 220, 220, + 378, 130, 379, 131, 219, 259, 219, 16, 17, 369, + 0, 252, 0, 292, 293, 0, 253, 298, 222, 222, + 0, 223, 222, 219, 219, 0, 88, 0, 0, 0, + 0, 89, 0, 221, 221, 0, 0, 0, 0, 0, + 0, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 0, 319, 0, 228, 228, 224, 0, 345, + 89, 89, 225, 0, 221, 221, 221, 226, 0, 0, + 0, 331, 332, 333, 334, 222, 260, 261, 0, 0, + 223, 0, 0, 221, 221, 0, 228, 228, 228, 0, + 0, 89, 89, 89, 0, 343, 344, 0, 0, 0, + 0, 227, 0, 0, 0, 228, 228, 0, 0, 0, + 89, 89, 224, 224, 0, 25, 224, 225, 225, 0, + 0, 225, 226, 226, 0, 0, 226, 371, 0, 0, + 0, 0, 0, 296, 0, 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, 35, 36, 37, 0, 0, - 0, 94, 95, 0, 0, 39, 0, -172, -172, 0, - 0, 0, -173, -173, 0, -173, 0, 0, 0, 0, - 40, 41, 0, 0, 0, 0, 0, 0, -173, 0, - 25, -173, 0, 0, 221, 221, 0, 42, 0, 0, + 0, 94, 95, 222, 222, 39, 227, 227, 0, 0, + 227, -176, -176, 0, -176, 0, 0, 0, -176, 224, + 40, 41, 0, 0, 225, 0, 0, -176, 0, 226, + -176, 0, 0, 0, 222, 222, 222, 42, 0, 0, 43, 12, 3, 21, 44, 45, 46, 0, 0, 0, + 0, 0, 0, 222, 222, 0, 0, -177, -177, 0, + -177, 223, 223, 227, -177, 0, 0, -176, -176, 0, + 0, 0, 0, -177, 0, 0, -177, 0, 0, 0, + 125, 126, 0, 29, 0, 0, 0, 127, 0, 0, + 0, 0, 223, 296, 223, 0, 128, 224, 224, 129, + 0, 0, 225, 225, 0, 0, 0, 226, 226, 0, + 0, 223, 223, -177, -177, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, + 224, 0, 0, 225, 225, 225, 12, 3, 226, 226, + 226, 227, 227, 0, 0, 0, 0, 224, 224, 0, + 0, 0, 225, 225, 0, 29, 0, 226, 226, 0, + 33, 34, 35, 36, 0, 0, 0, 0, 85, 0, + 0, 0, 227, 227, 227, 190, 191, 0, 0, 0, + 0, 0, 173, 174, 175, 0, 0, 0, 0, 0, + 176, 227, 227, 177, 178, 179, 0, 180, 181, 182, + 0, 183, 184, 185, 186, 187, 188, 26, 12, 3, + 29, 0, 0, 0, 0, 33, 34, 35, 36, 0, + 0, 135, 189, 85, 0, 0, 173, 174, 175, 0, + 190, 191, 0, 0, 176, 0, 0, 177, 178, 179, + 0, 180, 181, 182, 0, 183, 184, 185, 186, 187, + 188, 26, 0, 0, 29, 0, 0, 0, 0, 33, + 34, 35, 36, 12, 3, 135, 262, 85, 0, 0, + 173, 174, 175, 0, 190, 191, 0, 0, 176, 0, + 0, 177, 178, 179, 0, 180, 181, 182, 0, 183, + 184, 185, 186, 187, 188, 26, 0, 0, 29, 0, + 25, 0, 0, 33, 34, 35, 36, 12, 3, 135, + 0, 85, 0, 0, 0, 0, 0, 0, 190, 191, 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, - 35, 36, 37, 221, 221, 221, 38, 0, -173, -173, - 39, 0, 248, 0, -174, -174, 0, -174, -175, -175, - 0, -175, 221, 221, 0, 40, 41, 0, 0, 0, - -174, 0, 25, -174, -175, 0, 0, -175, 0, 0, + 35, 36, 37, 0, 0, 0, 38, 0, 0, 0, + 39, 0, 257, 0, 0, 0, 0, -178, -178, 0, + -178, 12, 3, 0, -178, 40, 41, 0, 0, 0, + 0, 0, 25, -178, 0, 0, -178, 0, 0, 0, 0, 0, 42, 0, 0, 43, 12, 3, 21, 44, 45, 46, 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, 35, 36, 37, 0, 0, 0, 38, 0, - -174, -174, 39, 0, -175, -175, 0, 0, 29, 0, - 0, 0, 0, 33, 34, 35, 36, 40, 41, 0, - 0, 85, 0, 0, 25, 0, 0, 0, 187, 188, + 0, 0, 39, -178, -178, 0, -179, -179, 0, -179, + 0, 0, 0, -179, 0, 0, 0, 40, 41, 0, + 0, 0, -179, 0, 25, -179, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 43, 12, 3, 21, 44, 45, 46, 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, 35, 36, 37, 0, 0, 0, - 94, 12, 3, 0, 39, 0, 0, 0, 0, 0, - 0, 258, 259, 0, 260, 261, 0, 0, 0, 40, - 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 94, 0, -179, -179, 39, 0, -180, -180, 0, -180, + 0, 267, 268, -180, 269, 270, 0, 0, 0, 40, + 41, 0, -180, 0, 0, -180, 0, 0, 0, 0, 125, 0, 0, 29, 0, 0, 42, 0, 0, 43, - 12, 3, 21, 44, 45, 46, 127, 0, 0, 262, - 29, 0, 0, 263, 264, 33, 34, 35, 36, 0, - 0, 0, 0, 85, 0, 0, 0, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 0, 0, - 0, 0, 0, 0, 0, 173, 12, 3, 174, 175, - 176, 0, 177, 178, 179, 0, 180, 181, 182, 183, - 184, 185, 26, 12, 3, 29, 0, 0, 0, 0, - 33, 34, 35, 36, 0, 0, 134, 186, 85, 0, - 0, 0, 0, 0, 173, 187, 188, 174, 175, 176, - 0, 177, 178, 179, 0, 180, 181, 182, 183, 184, - 185, 26, 0, 0, 29, 0, 0, 0, 0, 33, - 34, 35, 36, 0, 0, 134, 253, 85, 12, 3, - 0, 0, 0, 173, 187, 188, 174, 175, 176, 0, - 177, 178, 179, 0, 180, 181, 182, 183, 184, 185, - 26, 0, 0, 29, 0, 0, 29, 0, 33, 34, - 35, 36, 0, 0, 134, 0, 85, 12, 3, 127, - 0, 0, 262, 187, 188, 0, 263, 264, 0, 0, + 12, 3, 21, 44, 45, 46, 128, 0, 0, 129, + 0, 0, 0, 271, 272, 0, 0, 0, 0, 0, + 0, 0, -180, -180, 0, 0, 0, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, -181, -181, + 0, -181, 0, 29, 0, -181, 12, 3, 0, 0, + 0, 0, 0, 0, -181, 0, 128, -181, 0, 129, + 0, 0, 0, 271, 272, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 141, 0, + 0, 0, 0, 142, -181, -181, 12, 3, 0, 0, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 0, 0, 140, 0, 0, 12, 3, 141, 12, - 3, 0, 0, 0, 0, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, - 119, 120, 121, 122, 123, 124, 334, 0, 107, 108, - 0, 335, 111, 112, 113, 114, 115, 116, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 336, - 0, 107, 108, 0, 337, 111, 112, 113, 114, 115, - 116, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 0, 0, 0, 0, 118, 119, 120, 121, 122, - 123, 124, 0, 0, 117, 118, 119, 120, 121, 122, - 123, 124, 338, 0, 0, 0, 0, 339, 0, 0, - 0, 0, 313, 0, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 0, 0, 0, 117, 118, 119, - 120, 121, 122, 123, 124, 314, 0, 117, 118, 119, - 120, 121, 122, 123, 124, 318, 0, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, - 117, 118, 119, 120, 121, 122, 123, 124, 324, 0, - 117, 118, 119, 120, 121, 122, 123, 124, 333, 0, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 344, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 362, 0, 107, 108, 109, 110, 111, 112, 113, + 124, 348, 0, 107, 108, 0, 349, 111, 112, 113, 114, 115, 116, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, 124, 0, 0, 117, 118, 119, 120, - 121, 122, 123, 124, 227, 0, 0, 0, 0, 0, - 0, 0, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 124, 229, 0, 0, 0, 0, 0, 0, - 0, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 117, 118, 119, 120, 121, 122, - 123, 124, 276, 0, 0, 0, 0, 0, 0, 0, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 124, 277, 0, 0, 0, 0, 0, 0, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 106, 0, - 0, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 0, - 0, 0, 0, 0, 117, 118, 119, 120, 121, 122, - 123, 124, 280, 0, 0, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 292, 0, 0, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 0, 0, 0, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 124, 107, + 121, 122, 123, 124, 350, 0, 107, 108, 0, 351, + 111, 112, 113, 114, 115, 116, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 0, 0, 0, 0, + 118, 119, 120, 121, 122, 123, 124, 0, 0, 117, + 118, 119, 120, 121, 122, 123, 124, 352, 0, 0, + 0, 0, 353, 0, 0, 0, 0, 325, 0, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 107, - 108, 0, 110, 111, 112, 113, 114, 115, 116, 0, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, 124, - 0, 0, 117, 118, 119, 120, 121, 122, 123, 124, - 107, 108, 0, 0, 111, 112, 113, 114, 115, 116, - 107, 108, 0, 0, 111, 112, 113, 114, 115, 116, - 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, - 124, 0, 0, 0, 0, 0, 120, 121, 122, 123, - 124, 107, 108, 0, 0, 0, 0, 113, 114, 115, - 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 120, 121, 122, - 123, 124 + 326, 0, 117, 118, 119, 120, 121, 122, 123, 124, + 330, 0, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 0, 0, 0, 117, 118, 119, 120, 121, + 122, 123, 124, 336, 0, 117, 118, 119, 120, 121, + 122, 123, 124, 347, 0, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 0, 0, 0, 117, 118, + 119, 120, 121, 122, 123, 124, 358, 0, 117, 118, + 119, 120, 121, 122, 123, 124, 376, 0, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, + 0, 117, 118, 119, 120, 121, 122, 123, 124, 0, + 0, 117, 118, 119, 120, 121, 122, 123, 124, 233, + 0, 0, 0, 0, 0, 0, 0, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 117, 118, 119, 120, 121, 122, 123, 124, 235, 0, + 0, 0, 0, 0, 0, 0, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, + 118, 119, 120, 121, 122, 123, 124, 284, 0, 0, + 0, 0, 0, 0, 0, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, + 119, 120, 121, 122, 123, 124, 285, 0, 0, 0, + 0, 0, 0, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 106, 0, 0, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 0, 0, 0, 0, 0, 117, + 118, 119, 120, 121, 122, 123, 124, 290, 0, 0, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 302, 0, 0, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 0, 0, 0, 0, 0, 117, 118, 119, 120, + 121, 122, 123, 124, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 107, 108, 0, 110, 111, 112, + 113, 114, 115, 116, 0, 0, 0, 117, 118, 119, + 120, 121, 122, 123, 124, 0, 0, 117, 118, 119, + 120, 121, 122, 123, 124, 107, 108, 0, 0, 111, + 112, 113, 114, 115, 116, 107, 108, 0, 0, 111, + 112, 113, 114, 115, 116, 0, 0, 0, 0, 118, + 0, 120, 121, 122, 123, 124, 0, 0, 0, 0, + 0, 120, 121, 122, 123, 124, 107, 108, 0, 0, + 0, 0, 113, 114, 115, 116, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 120, 121, 122, 123, 124 }; const short parser::yycheck_[] = { - 0, 83, 14, 26, 27, 5, 1, 26, 27, 238, - 3, 4, 38, 191, 81, 32, 37, 37, 18, 37, - 18, 25, 26, 38, 28, 38, 26, 27, 43, 47, - 43, 26, 27, 37, 28, 85, 86, 41, 61, 39, - 44, 62, 61, 25, 26, 43, 28, 41, 25, 26, - 44, 28, 38, 0, 19, 25, 26, 43, 28, 41, - 47, 61, 44, 38, 41, 82, 61, 44, 94, 28, - 41, 41, 37, 83, 44, 40, 41, 81, 82, 82, - 38, 82, 41, 45, 84, 43, 77, 81, 82, 82, - 50, 51, 83, 38, 47, 86, 38, 41, 43, 81, - 82, 43, 125, 126, 81, 82, 125, 126, 38, 45, - 38, 81, 82, 43, 343, 43, 76, 77, 78, 79, - 80, 37, 81, 82, 39, 125, 126, 41, 128, 94, - 125, 126, 132, 43, 134, 313, 314, 42, 138, 134, - 37, 47, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 37, 134, 127, 37, 342, 37, 344, 37, 37, 181, - 38, 46, 137, 134, 139, 42, 141, 86, 143, 78, - 79, 80, 47, 361, 362, 47, 47, 187, 188, 37, - 47, 191, 187, 188, 217, 47, 191, 46, 217, 131, - 76, 77, 78, 79, 80, 46, 46, 134, 173, 37, - 37, 37, 42, 37, 187, 188, 134, 217, 191, 37, - 185, 14, 217, 18, 47, 47, 187, 188, 251, 252, - 191, 134, 251, 252, 47, 47, 318, 47, 238, 239, - 47, 134, 47, 238, 38, 47, 47, 47, 5, 5, - 343, 251, 252, -1, -1, 181, 251, 252, 181, -1, - 187, 188, 262, 286, 191, 238, -1, 286, 134, 187, - 188, 236, 237, 191, -1, 240, 134, 238, -1, -1, - -1, -1, -1, -1, 187, 188, 286, -1, 191, -1, - -1, 286, -1, -1, 187, 188, -1, -1, 191, 231, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 238, 277, 313, 314, -1, -1, 317, 313, 314, - 238, 187, 188, -1, -1, 191, -1, -1, 293, 294, - 295, 296, -1, 191, -1, 238, -1, -1, -1, -1, - 313, 314, 342, 343, 344, 238, -1, 342, 343, 344, - 315, 316, 313, 314, -1, -1, -1, 25, 26, -1, - 28, 361, 362, -1, -1, -1, 361, 362, -1, 342, - 343, 344, 238, 41, -1, 134, 44, -1, 310, -1, - 345, 342, 343, 344, -1, -1, 313, 314, 361, 362, - -1, 323, -1, -1, -1, 313, 314, -1, -1, -1, - 361, 362, -1, 335, -1, 337, -1, 339, -1, -1, - 313, 314, -1, 81, 82, 342, 343, 344, -1, -1, - 313, 314, -1, -1, 342, 343, 344, -1, 187, 188, - -1, -1, 191, -1, 361, 362, -1, -1, -1, 342, - 343, 344, -1, 361, 362, -1, -1, 313, 314, 342, - 343, 344, -1, -1, -1, 313, 314, -1, 361, 362, - -1, -1, -1, -1, -1, -1, -1, -1, 361, 362, - -1, 25, 26, -1, 28, -1, 342, 343, 344, 238, - -1, -1, -1, -1, 342, 5, 344, 41, -1, -1, - 44, -1, -1, -1, -1, 361, 362, -1, -1, -1, - -1, -1, -1, 361, 362, 25, 26, 27, 28, 29, - 30, 31, -1, 33, 34, 35, 36, 37, -1, -1, - -1, 41, 42, -1, -1, 45, -1, 81, 82, -1, - -1, -1, 25, 26, -1, 28, -1, -1, -1, -1, - 60, 61, -1, -1, -1, -1, -1, -1, 41, -1, - 5, 44, -1, -1, 313, 314, -1, 77, -1, -1, - 80, 81, 82, 83, 84, 85, 86, -1, -1, -1, - 25, 26, 27, 28, 29, 30, 31, -1, 33, 34, - 35, 36, 37, 342, 343, 344, 41, -1, 81, 82, - 45, -1, 47, -1, 25, 26, -1, 28, 25, 26, - -1, 28, 361, 362, -1, 60, 61, -1, -1, -1, - 41, -1, 5, 44, 41, -1, -1, 44, -1, -1, - -1, -1, 77, -1, -1, 80, 81, 82, 83, 84, - 85, 86, 25, 26, 27, 28, 29, 30, 31, -1, - 33, 34, 35, 36, 37, -1, -1, -1, 41, -1, - 81, 82, 45, -1, 81, 82, -1, -1, 28, -1, - -1, -1, -1, 33, 34, 35, 36, 60, 61, -1, - -1, 41, -1, -1, 5, -1, -1, -1, 48, 49, - -1, -1, -1, -1, 77, -1, -1, 80, 81, 82, - 83, 84, 85, 86, 25, 26, 27, 28, 29, 30, - 31, -1, 33, 34, 35, 36, 37, -1, -1, -1, - 41, 81, 82, -1, 45, -1, -1, -1, -1, -1, - -1, 6, 7, -1, 9, 10, -1, -1, -1, 60, - 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 25, -1, -1, 28, -1, -1, 77, -1, -1, 80, - 81, 82, 83, 84, 85, 86, 41, -1, -1, 44, - 28, -1, -1, 48, 49, 33, 34, 35, 36, -1, - -1, -1, -1, 41, -1, -1, -1, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, -1, -1, - -1, -1, -1, -1, -1, 8, 81, 82, 11, 12, - 13, -1, 15, 16, 17, -1, 19, 20, 21, 22, - 23, 24, 25, 81, 82, 28, -1, -1, -1, -1, - 33, 34, 35, 36, -1, -1, 39, 40, 41, -1, - -1, -1, -1, -1, 8, 48, 49, 11, 12, 13, - -1, 15, 16, 17, -1, 19, 20, 21, 22, 23, - 24, 25, -1, -1, 28, -1, -1, -1, -1, 33, - 34, 35, 36, -1, -1, 39, 40, 41, 81, 82, - -1, -1, -1, 8, 48, 49, 11, 12, 13, -1, - 15, 16, 17, -1, 19, 20, 21, 22, 23, 24, - 25, -1, -1, 28, -1, -1, 28, -1, 33, 34, - 35, 36, -1, -1, 39, -1, 41, 81, 82, 41, - -1, -1, 44, 48, 49, -1, 48, 49, -1, -1, + 0, 26, 27, 26, 27, 5, 1, 83, 40, 14, + 21, 194, 247, 132, 6, 7, 31, 38, 18, 84, + 40, 36, 37, 38, 39, 0, 26, 27, 135, 44, + 50, 26, 27, 65, 40, 46, 61, 31, 61, 39, + 28, 29, 50, 31, 81, 82, 83, 35, 28, 29, + 44, 31, 40, 135, 80, 35, 44, 19, 86, 47, + 86, 61, 41, 89, 44, 48, 61, 47, 85, 84, + 85, 41, 41, 94, 50, 37, 46, 46, 40, 41, + 41, 41, 85, 41, 84, 46, 46, 194, 46, 41, + 84, 85, 42, 85, 46, 44, 84, 85, 88, 89, + 125, 126, 125, 126, 84, 85, 41, 44, 190, 191, + 41, 46, 194, 135, 41, 46, 40, 46, 237, 46, + 239, 240, 357, 41, 44, 125, 126, 48, 46, 129, + 125, 126, 94, 133, 45, 135, 40, 50, 50, 139, + 135, 40, 325, 326, 40, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 40, 40, 247, 128, 40, 190, 191, + 49, 40, 194, 356, 40, 358, 138, 45, 140, 184, + 142, 41, 144, 53, 54, 79, 80, 81, 82, 83, + 190, 191, 375, 376, 194, 190, 191, 50, 223, 194, + 223, 320, 50, 50, 31, 50, 89, 50, 49, 79, + 80, 81, 82, 83, 176, 49, 335, 44, 325, 326, + 47, 49, 40, 223, 40, 247, 188, 40, 223, 40, + 349, 45, 351, 135, 353, 260, 261, 260, 261, 40, + 50, 50, 17, 325, 326, 40, 50, 247, 248, 356, + 50, 358, 247, 50, 330, 21, 50, 84, 85, 50, + 260, 261, 50, 50, 41, 260, 261, 50, 375, 376, + 50, 296, 50, 296, 356, 357, 358, 5, 5, 357, + -1, 184, -1, 245, 246, -1, 184, 249, 190, 191, + -1, 135, 194, 375, 376, -1, 296, -1, -1, -1, + -1, 296, -1, 325, 326, -1, -1, -1, -1, -1, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, -1, 285, -1, 325, 326, 135, -1, 329, + 325, 326, 135, -1, 356, 357, 358, 135, -1, -1, + -1, 303, 304, 305, 306, 247, 190, 191, -1, -1, + 194, -1, -1, 375, 376, -1, 356, 357, 358, -1, + -1, 356, 357, 358, -1, 327, 328, -1, -1, -1, + -1, 135, -1, -1, -1, 375, 376, -1, -1, -1, + 375, 376, 190, 191, -1, 8, 194, 190, 191, -1, + -1, 194, 190, 191, -1, -1, 194, 359, -1, -1, + -1, -1, -1, 247, -1, 28, 29, 30, 31, 32, + 33, 34, -1, 36, 37, 38, 39, 40, -1, -1, + -1, 44, 45, 325, 326, 48, 190, 191, -1, -1, + 194, 28, 29, -1, 31, -1, -1, -1, 35, 247, + 63, 64, -1, -1, 247, -1, -1, 44, -1, 247, + 47, -1, -1, -1, 356, 357, 358, 80, -1, -1, + 83, 84, 85, 86, 87, 88, 89, -1, -1, -1, + -1, -1, -1, 375, 376, -1, -1, 28, 29, -1, + 31, 325, 326, 247, 35, -1, -1, 84, 85, -1, + -1, -1, -1, 44, -1, -1, 47, -1, -1, -1, + 28, 29, -1, 31, -1, -1, -1, 35, -1, -1, + -1, -1, 356, 357, 358, -1, 44, 325, 326, 47, + -1, -1, 325, 326, -1, -1, -1, 325, 326, -1, + -1, 375, 376, 84, 85, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 356, 357, + 358, -1, -1, 356, 357, 358, 84, 85, 356, 357, + 358, 325, 326, -1, -1, -1, -1, 375, 376, -1, + -1, -1, 375, 376, -1, 31, -1, 375, 376, -1, + 36, 37, 38, 39, -1, -1, -1, -1, 44, -1, + -1, -1, 356, 357, 358, 51, 52, -1, -1, -1, + -1, -1, 3, 4, 5, -1, -1, -1, -1, -1, + 11, 375, 376, 14, 15, 16, -1, 18, 19, 20, + -1, 22, 23, 24, 25, 26, 27, 28, 84, 85, + 31, -1, -1, -1, -1, 36, 37, 38, 39, -1, + -1, 42, 43, 44, -1, -1, 3, 4, 5, -1, + 51, 52, -1, -1, 11, -1, -1, 14, 15, 16, + -1, 18, 19, 20, -1, 22, 23, 24, 25, 26, + 27, 28, -1, -1, 31, -1, -1, -1, -1, 36, + 37, 38, 39, 84, 85, 42, 43, 44, -1, -1, + 3, 4, 5, -1, 51, 52, -1, -1, 11, -1, + -1, 14, 15, 16, -1, 18, 19, 20, -1, 22, + 23, 24, 25, 26, 27, 28, -1, -1, 31, -1, + 8, -1, -1, 36, 37, 38, 39, 84, 85, 42, + -1, 44, -1, -1, -1, -1, -1, -1, 51, 52, + 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, + 38, 39, 40, -1, -1, -1, 44, -1, -1, -1, + 48, -1, 50, -1, -1, -1, -1, 28, 29, -1, + 31, 84, 85, -1, 35, 63, 64, -1, -1, -1, + -1, -1, 8, 44, -1, -1, 47, -1, -1, -1, + -1, -1, 80, -1, -1, 83, 84, 85, 86, 87, + 88, 89, 28, 29, 30, 31, 32, 33, 34, -1, + 36, 37, 38, 39, 40, -1, -1, -1, 44, -1, + -1, -1, 48, 84, 85, -1, 28, 29, -1, 31, + -1, -1, -1, 35, -1, -1, -1, 63, 64, -1, + -1, -1, 44, -1, 8, 47, -1, -1, -1, -1, + -1, -1, -1, -1, 80, -1, -1, 83, 84, 85, + 86, 87, 88, 89, 28, 29, 30, 31, 32, 33, + 34, -1, 36, 37, 38, 39, 40, -1, -1, -1, + 44, -1, 84, 85, 48, -1, 28, 29, -1, 31, + -1, 9, 10, 35, 12, 13, -1, -1, -1, 63, + 64, -1, 44, -1, -1, 47, -1, -1, -1, -1, + 28, -1, -1, 31, -1, -1, 80, -1, -1, 83, + 84, 85, 86, 87, 88, 89, 44, -1, -1, 47, + -1, -1, -1, 51, 52, -1, -1, -1, -1, -1, + -1, -1, 84, 85, -1, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 28, 29, + -1, 31, -1, 31, -1, 35, 84, 85, -1, -1, + -1, -1, -1, -1, 44, -1, 44, 47, -1, 47, + -1, -1, -1, 51, 52, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 41, -1, + -1, -1, -1, 46, 84, 85, 84, 85, -1, -1, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, -1, -1, 38, -1, -1, 81, 82, 43, 81, - 82, -1, -1, -1, -1, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 73, 74, - 75, 76, 77, 78, 79, 80, 38, -1, 50, 51, - -1, 43, 54, 55, 56, 57, 58, 59, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, -1, -1, - -1, 73, 74, 75, 76, 77, 78, 79, 80, -1, - -1, 73, 74, 75, 76, 77, 78, 79, 80, 38, - -1, 50, 51, -1, 43, 54, 55, 56, 57, 58, - 59, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, -1, -1, -1, -1, 74, 75, 76, 77, 78, - 79, 80, -1, -1, 73, 74, 75, 76, 77, 78, - 79, 80, 38, -1, -1, -1, -1, 43, -1, -1, - -1, -1, 38, -1, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, -1, -1, -1, 73, 74, 75, - 76, 77, 78, 79, 80, 38, -1, 73, 74, 75, - 76, 77, 78, 79, 80, 38, -1, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, -1, -1, -1, - 73, 74, 75, 76, 77, 78, 79, 80, 38, -1, - 73, 74, 75, 76, 77, 78, 79, 80, 38, -1, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - -1, -1, -1, 73, 74, 75, 76, 77, 78, 79, - 80, 38, -1, 73, 74, 75, 76, 77, 78, 79, - 80, 38, -1, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, -1, -1, -1, 73, 74, 75, 76, - 77, 78, 79, 80, -1, -1, 73, 74, 75, 76, - 77, 78, 79, 80, 42, -1, -1, -1, -1, -1, - -1, -1, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 73, 74, 75, 76, 77, - 78, 79, 80, 42, -1, -1, -1, -1, -1, -1, - -1, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 73, 74, 75, 76, 77, 78, - 79, 80, 42, -1, -1, -1, -1, -1, -1, -1, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + -1, -1, -1, 76, 77, 78, 79, 80, 81, 82, + 83, 41, -1, 53, 54, -1, 46, 57, 58, 59, + 60, 61, 62, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, -1, -1, -1, 76, 77, 78, 79, + 80, 81, 82, 83, -1, -1, 76, 77, 78, 79, + 80, 81, 82, 83, 41, -1, 53, 54, -1, 46, + 57, 58, 59, 60, 61, 62, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, + 77, 78, 79, 80, 81, 82, 83, -1, -1, 76, + 77, 78, 79, 80, 81, 82, 83, 41, -1, -1, + -1, -1, 46, -1, -1, -1, -1, 41, -1, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, -1, + -1, -1, 76, 77, 78, 79, 80, 81, 82, 83, + 41, -1, 76, 77, 78, 79, 80, 81, 82, 83, + 41, -1, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, -1, -1, -1, 76, 77, 78, 79, 80, + 81, 82, 83, 41, -1, 76, 77, 78, 79, 80, + 81, 82, 83, 41, -1, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, -1, -1, -1, 76, 77, + 78, 79, 80, 81, 82, 83, 41, -1, 76, 77, + 78, 79, 80, 81, 82, 83, 41, -1, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, + -1, 76, 77, 78, 79, 80, 81, 82, 83, -1, + -1, 76, 77, 78, 79, 80, 81, 82, 83, 45, + -1, -1, -1, -1, -1, -1, -1, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 73, 74, 75, 76, 77, 78, 79, - 80, 43, -1, -1, -1, -1, -1, -1, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 47, -1, - -1, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 73, 74, 75, 76, 77, 78, 79, 80, -1, - -1, -1, -1, -1, 73, 74, 75, 76, 77, 78, - 79, 80, 47, -1, -1, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 47, -1, -1, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 73, 74, - 75, 76, 77, 78, 79, 80, -1, -1, -1, -1, - -1, 73, 74, 75, 76, 77, 78, 79, 80, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 50, - 51, -1, 53, 54, 55, 56, 57, 58, 59, -1, - -1, -1, 73, 74, 75, 76, 77, 78, 79, 80, - -1, -1, 73, 74, 75, 76, 77, 78, 79, 80, - 50, 51, -1, -1, 54, 55, 56, 57, 58, 59, - 50, 51, -1, -1, 54, 55, 56, 57, 58, 59, - -1, -1, -1, -1, -1, 75, 76, 77, 78, 79, - 80, -1, -1, -1, -1, -1, 76, 77, 78, 79, - 80, 50, 51, -1, -1, -1, -1, 56, 57, 58, - 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 76, 77, 78, - 79, 80 + 76, 77, 78, 79, 80, 81, 82, 83, 45, -1, + -1, -1, -1, -1, -1, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, + 77, 78, 79, 80, 81, 82, 83, 45, -1, -1, + -1, -1, -1, -1, -1, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 76, 77, + 78, 79, 80, 81, 82, 83, 46, -1, -1, -1, + -1, -1, -1, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 50, -1, -1, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 76, 77, 78, 79, + 80, 81, 82, 83, -1, -1, -1, -1, -1, 76, + 77, 78, 79, 80, 81, 82, 83, 50, -1, -1, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 50, -1, -1, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 76, 77, 78, 79, 80, 81, 82, + 83, -1, -1, -1, -1, -1, 76, 77, 78, 79, + 80, 81, 82, 83, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 53, 54, -1, 56, 57, 58, + 59, 60, 61, 62, -1, -1, -1, 76, 77, 78, + 79, 80, 81, 82, 83, -1, -1, 76, 77, 78, + 79, 80, 81, 82, 83, 53, 54, -1, -1, 57, + 58, 59, 60, 61, 62, 53, 54, -1, -1, 57, + 58, 59, 60, 61, 62, -1, -1, -1, -1, 77, + -1, 79, 80, 81, 82, 83, -1, -1, -1, -1, + -1, 79, 80, 81, 82, 83, 53, 54, -1, -1, + -1, -1, 59, 60, 61, 62, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 79, 80, 81, 82, 83 }; const unsigned char parser::yystos_[] = { - 0, 3, 4, 82, 96, 97, 98, 99, 100, 101, - 102, 157, 81, 158, 37, 0, 98, 99, 37, 62, - 47, 83, 160, 103, 157, 5, 25, 26, 27, 28, - 29, 30, 31, 33, 34, 35, 36, 37, 41, 45, - 60, 61, 77, 80, 84, 85, 86, 129, 131, 132, - 133, 134, 135, 136, 137, 138, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 38, 38, 43, 41, 137, 138, 157, 158, - 137, 138, 41, 129, 41, 42, 129, 139, 140, 141, - 157, 129, 129, 85, 86, 82, 47, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 73, 74, 75, - 76, 77, 78, 79, 80, 25, 26, 41, 44, 137, - 138, 37, 45, 47, 39, 105, 157, 41, 45, 41, - 38, 43, 129, 43, 42, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 137, 138, 137, 138, 129, 32, 157, - 139, 140, 157, 8, 11, 12, 13, 15, 16, 17, - 19, 20, 21, 22, 23, 24, 40, 48, 49, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 0, 6, 7, 85, 99, 100, 101, 102, 103, 104, + 105, 163, 84, 164, 40, 0, 101, 102, 40, 65, + 50, 86, 166, 106, 163, 8, 28, 29, 30, 31, + 32, 33, 34, 36, 37, 38, 39, 40, 44, 48, + 63, 64, 80, 83, 87, 88, 89, 135, 137, 138, + 139, 140, 141, 142, 143, 144, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 41, 41, 46, 44, 143, 144, 163, 164, + 143, 144, 44, 135, 44, 45, 135, 145, 146, 147, + 163, 135, 135, 88, 89, 85, 50, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 76, 77, 78, + 79, 80, 81, 82, 83, 28, 29, 35, 44, 47, + 143, 144, 40, 48, 50, 42, 108, 163, 44, 48, + 44, 41, 46, 135, 46, 45, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 143, 144, 143, 144, 135, 163, + 145, 146, 163, 3, 4, 5, 11, 14, 15, 16, + 18, 19, 20, 22, 23, 24, 25, 26, 27, 43, + 51, 52, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 130, 134, 135, 144, 145, 147, 151, 152, - 153, 154, 157, 129, 157, 129, 129, 42, 129, 42, - 38, 37, 129, 47, 37, 47, 37, 37, 37, 37, - 37, 77, 160, 163, 165, 46, 47, 47, 47, 129, - 134, 147, 147, 40, 104, 47, 47, 47, 6, 7, - 9, 10, 44, 48, 49, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 42, 43, 42, 139, - 47, 38, 129, 129, 127, 130, 147, 157, 129, 46, - 46, 46, 47, 37, 37, 37, 37, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 42, 129, - 37, 38, 47, 38, 38, 47, 18, 43, 38, 129, - 129, 129, 129, 37, 38, 139, 104, 104, 128, 129, - 129, 157, 105, 38, 38, 43, 38, 43, 38, 43, - 139, 38, 14, 47, 38, 18, 47, 47, 139, 47, - 139, 47, 139, 38, 104, 127, 104, 129, 38, 38, - 38, 38, 38, 47, 47, 47, 104, 104 + 125, 126, 127, 128, 129, 130, 131, 132, 136, 140, + 141, 150, 151, 153, 157, 158, 159, 160, 163, 135, + 163, 135, 135, 45, 135, 45, 41, 40, 50, 40, + 40, 135, 50, 40, 50, 40, 40, 40, 40, 40, + 80, 166, 169, 171, 49, 50, 50, 50, 135, 140, + 153, 153, 43, 107, 50, 50, 50, 9, 10, 12, + 13, 51, 52, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 45, 46, 45, 145, 145, 145, + 50, 41, 135, 135, 133, 136, 153, 163, 135, 49, + 49, 49, 50, 40, 40, 40, 40, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 45, 135, + 40, 41, 41, 41, 50, 41, 41, 50, 21, 46, + 41, 135, 135, 135, 135, 40, 41, 145, 50, 50, + 107, 107, 134, 135, 135, 163, 108, 41, 41, 46, + 41, 46, 41, 46, 145, 41, 17, 50, 41, 21, + 50, 50, 145, 50, 145, 50, 145, 41, 107, 133, + 107, 135, 41, 41, 41, 41, 41, 50, 50, 50, + 107, 107 }; const unsigned char parser::yyr1_[] = { - 0, 95, 96, 96, 97, 97, 97, 97, 98, 99, - 99, 99, 100, 101, 102, 103, 103, 103, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 105, - 105, 106, 106, 107, 107, 108, 109, 110, 110, 111, - 112, 112, 113, 113, 114, 115, 115, 116, 117, 118, - 119, 120, 120, 121, 122, 122, 122, 123, 124, 125, - 126, 126, 127, 127, 128, 128, 129, 129, 129, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 131, 131, 131, 131, 131, 131, - 131, 131, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 134, 134, 134, 134, 135, 135, 135, 135, - 136, 136, 136, 136, 137, 137, 138, 138, 139, 139, - 140, 140, 141, 142, 142, 143, 144, 145, 146, 147, - 147, 147, 147, 147, 147, 147, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167 + 0, 98, 99, 99, 100, 100, 100, 100, 101, 102, + 102, 102, 103, 104, 105, 106, 106, 106, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 108, 108, 109, 109, 110, 110, 111, 112, + 113, 113, 114, 115, 115, 116, 116, 117, 118, 118, + 119, 120, 121, 122, 123, 123, 124, 125, 125, 125, + 126, 127, 128, 129, 129, 130, 131, 132, 133, 133, + 134, 134, 135, 135, 135, 136, 136, 136, 136, 136, + 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, + 137, 137, 137, 137, 137, 137, 137, 137, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 140, 140, + 140, 140, 141, 141, 141, 141, 142, 142, 142, 142, + 143, 143, 144, 144, 145, 145, 146, 146, 147, 148, + 148, 149, 150, 151, 152, 153, 153, 153, 153, 153, + 153, 153, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173 }; const signed char @@ -3905,23 +4022,24 @@ namespace xsk { namespace gsc { namespace s2 { 0, 2, 1, 0, 2, 2, 1, 1, 3, 1, 1, 1, 5, 4, 5, 3, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, - 2, 2, 1, 2, 2, 2, 6, 8, 6, 3, - 8, 6, 8, 6, 2, 2, 4, 5, 7, 5, - 9, 7, 9, 5, 3, 3, 3, 2, 2, 2, - 3, 2, 1, 0, 1, 0, 1, 1, 1, 2, - 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 3, 2, 2, 1, 2, 2, 2, 6, + 8, 6, 3, 8, 6, 8, 6, 2, 2, 4, + 5, 7, 5, 9, 7, 9, 5, 3, 3, 3, + 2, 2, 2, 3, 2, 2, 5, 5, 1, 0, + 1, 0, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, - 2, 2, 3, 3, 4, 6, 8, 9, 1, 1, - 3, 1, 0, 2, 3, 3, 4, 3, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, + 2, 2, 2, 2, 3, 3, 2, 2, 3, 3, + 4, 6, 8, 9, 1, 1, 3, 1, 0, 2, + 3, 3, 4, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, - 7, 2, 2, 1, 1, 1, 1 + 2, 1, 1, 1, 1, 1, 7, 2, 2, 1, + 1, 1, 1 }; @@ -3931,26 +4049,27 @@ namespace xsk { namespace gsc { namespace s2 { const short parser::yyrline_[] = { - 0, 233, 233, 234, 238, 240, 242, 244, 249, 254, - 255, 256, 260, 265, 270, 275, 277, 280, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 308, - 309, 313, 315, 320, 322, 327, 332, 337, 339, 344, - 349, 351, 356, 358, 363, 368, 370, 375, 380, 385, - 390, 395, 397, 402, 407, 409, 411, 416, 421, 426, - 431, 433, 438, 439, 443, 444, 448, 449, 450, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 472, 473, 474, 475, 476, 477, - 478, 479, 483, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 496, 497, 498, 499, 500, 501, 502, 503, - 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, - 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, - 524, 525, 529, 530, 531, 532, 536, 537, 538, 539, - 543, 544, 545, 546, 550, 552, 557, 559, 564, 565, - 569, 571, 577, 581, 583, 588, 593, 598, 603, 608, - 609, 610, 611, 612, 613, 614, 615, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, - 631, 632, 633, 634, 635, 636, 637 + 0, 239, 239, 240, 244, 246, 248, 250, 255, 260, + 261, 262, 266, 271, 276, 281, 283, 286, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 317, 318, 322, 324, 329, 331, 336, 341, + 346, 348, 353, 358, 360, 365, 367, 372, 377, 379, + 384, 389, 394, 399, 404, 406, 411, 416, 418, 420, + 425, 430, 435, 440, 442, 447, 452, 457, 462, 463, + 467, 468, 472, 473, 474, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, + 496, 497, 498, 499, 500, 501, 502, 503, 507, 508, + 509, 510, 511, 512, 513, 514, 515, 516, 520, 521, + 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 553, 554, + 555, 556, 560, 561, 562, 563, 567, 568, 569, 570, + 574, 576, 581, 583, 588, 589, 593, 595, 601, 605, + 607, 612, 617, 622, 627, 632, 633, 634, 635, 636, + 637, 638, 639, 642, 643, 644, 645, 646, 647, 648, + 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, + 659, 660, 661 }; void @@ -3983,9 +4102,9 @@ namespace xsk { namespace gsc { namespace s2 { #line 13 "parser.ypp" } } } // xsk::gsc::s2 -#line 3987 "parser.cpp" +#line 4106 "parser.cpp" -#line 639 "parser.ypp" +#line 663 "parser.ypp" void xsk::gsc::s2::parser::error(const xsk::gsc::location& loc, const std::string& msg) diff --git a/src/s2/xsk/parser.hpp b/src/s2/xsk/parser.hpp index 782ef27b..bd67691a 100644 --- a/src/s2/xsk/parser.hpp +++ b/src/s2/xsk/parser.hpp @@ -510,88 +510,97 @@ namespace xsk { namespace gsc { namespace s2 { // stmt_break char dummy27[sizeof (stmt_break_ptr)]; + // stmt_breakpoint + char dummy28[sizeof (stmt_breakpoint_ptr)]; + // stmt_call - char dummy28[sizeof (stmt_call_ptr)]; + char dummy29[sizeof (stmt_call_ptr)]; // stmt_case - char dummy29[sizeof (stmt_case_ptr)]; + char dummy30[sizeof (stmt_case_ptr)]; // stmt_continue - char dummy30[sizeof (stmt_continue_ptr)]; + char dummy31[sizeof (stmt_continue_ptr)]; // stmt_default - char dummy31[sizeof (stmt_default_ptr)]; + char dummy32[sizeof (stmt_default_ptr)]; // stmt_endon - char dummy32[sizeof (stmt_endon_ptr)]; + char dummy33[sizeof (stmt_endon_ptr)]; // stmt_for - char dummy33[sizeof (stmt_for_ptr)]; + char dummy34[sizeof (stmt_for_ptr)]; // stmt_foreach - char dummy34[sizeof (stmt_foreach_ptr)]; + char dummy35[sizeof (stmt_foreach_ptr)]; // stmt_if - char dummy35[sizeof (stmt_if_ptr)]; + char dummy36[sizeof (stmt_if_ptr)]; // stmt_ifelse - char dummy36[sizeof (stmt_ifelse_ptr)]; + char dummy37[sizeof (stmt_ifelse_ptr)]; // stmt_block // stmt_list - char dummy37[sizeof (stmt_list_ptr)]; + char dummy38[sizeof (stmt_list_ptr)]; // stmt_notify - char dummy38[sizeof (stmt_notify_ptr)]; + char dummy39[sizeof (stmt_notify_ptr)]; + + // stmt_prof_begin + char dummy40[sizeof (stmt_prof_begin_ptr)]; + + // stmt_prof_end + char dummy41[sizeof (stmt_prof_end_ptr)]; // stmt // for_stmt - char dummy39[sizeof (stmt_ptr)]; + char dummy42[sizeof (stmt_ptr)]; // stmt_return - char dummy40[sizeof (stmt_return_ptr)]; + char dummy43[sizeof (stmt_return_ptr)]; // stmt_switch - char dummy41[sizeof (stmt_switch_ptr)]; + char dummy44[sizeof (stmt_switch_ptr)]; // stmt_wait - char dummy42[sizeof (stmt_wait_ptr)]; + char dummy45[sizeof (stmt_wait_ptr)]; // stmt_waitframe - char dummy43[sizeof (stmt_waitframe_ptr)]; + char dummy46[sizeof (stmt_waitframe_ptr)]; // stmt_waittill - char dummy44[sizeof (stmt_waittill_ptr)]; + char dummy47[sizeof (stmt_waittill_ptr)]; // stmt_waittillframeend - char dummy45[sizeof (stmt_waittillframeend_ptr)]; + char dummy48[sizeof (stmt_waittillframeend_ptr)]; // stmt_waittillmatch - char dummy46[sizeof (stmt_waittillmatch_ptr)]; + char dummy49[sizeof (stmt_waittillmatch_ptr)]; // stmt_while - char dummy47[sizeof (stmt_while_ptr)]; + char dummy50[sizeof (stmt_while_ptr)]; // string - char dummy48[sizeof (string_ptr)]; + char dummy51[sizeof (string_ptr)]; // thisthread - char dummy49[sizeof (thisthread_ptr)]; + char dummy52[sizeof (thisthread_ptr)]; // thread - char dummy50[sizeof (thread_ptr)]; + char dummy53[sizeof (thread_ptr)]; // true - char dummy51[sizeof (true_ptr)]; + char dummy54[sizeof (true_ptr)]; // undefined - char dummy52[sizeof (undefined_ptr)]; + char dummy55[sizeof (undefined_ptr)]; // usingtree - char dummy53[sizeof (usingtree_ptr)]; + char dummy56[sizeof (usingtree_ptr)]; // vector - char dummy54[sizeof (vector_ptr)]; + char dummy57[sizeof (vector_ptr)]; }; /// The size of the largest semantic type. @@ -643,98 +652,101 @@ namespace xsk { namespace gsc { namespace s2 { S2EOF = 0, // "end of file" S2error = 1, // error S2UNDEF = 2, // "invalid token" - INCLUDE = 3, // "#include" - USINGTREE = 4, // "#using_animtree" - ANIMTREE = 5, // "#animtree" - ENDON = 6, // "endon" - NOTIFY = 7, // "notify" - WAIT = 8, // "wait" - WAITTILL = 9, // "waittill" - WAITTILLMATCH = 10, // "waittillmatch" - WAITTILLFRAMEEND = 11, // "waittillframeend" - WAITFRAME = 12, // "waitframe" - IF = 13, // "if" - ELSE = 14, // "else" - WHILE = 15, // "while" - FOR = 16, // "for" - FOREACH = 17, // "foreach" - IN = 18, // "in" - SWITCH = 19, // "switch" - CASE = 20, // "case" - DEFAULT = 21, // "default" - BREAK = 22, // "break" - CONTINUE = 23, // "continue" - RETURN = 24, // "return" - THREAD = 25, // "thread" - CHILDTHREAD = 26, // "childthread" - THISTHREAD = 27, // "thisthread" - CALL = 28, // "call" - TRUE = 29, // "true" - FALSE = 30, // "false" - UNDEFINED = 31, // "undefined" - SIZE = 32, // "size" - GAME = 33, // "game" - SELF = 34, // "self" - ANIM = 35, // "anim" - LEVEL = 36, // "level" - LPAREN = 37, // "(" - RPAREN = 38, // ")" - LBRACE = 39, // "{" - RBRACE = 40, // "}" - LBRACKET = 41, // "[" - RBRACKET = 42, // "]" - COMMA = 43, // "," - DOT = 44, // "." - DOUBLECOLON = 45, // "::" - COLON = 46, // ":" - SEMICOLON = 47, // ";" - INCREMENT = 48, // "++" - DECREMENT = 49, // "--" - LSHIFT = 50, // "<<" - RSHIFT = 51, // ">>" - OR = 52, // "||" - AND = 53, // "&&" - EQUALITY = 54, // "==" - INEQUALITY = 55, // "!=" - LESS_EQUAL = 56, // "<=" - GREATER_EQUAL = 57, // ">=" - LESS = 58, // "<" - GREATER = 59, // ">" - NOT = 60, // "!" - COMPLEMENT = 61, // "~" - ASSIGN = 62, // "=" - ASSIGN_ADD = 63, // "+=" - ASSIGN_SUB = 64, // "-=" - ASSIGN_MULT = 65, // "*=" - ASSIGN_DIV = 66, // "/=" - ASSIGN_MOD = 67, // "%=" - ASSIGN_BITWISE_OR = 68, // "|=" - ASSIGN_BITWISE_AND = 69, // "&=" - ASSIGN_BITWISE_EXOR = 70, // "^=" - ASSIGN_RSHIFT = 71, // ">>=" - ASSIGN_LSHIFT = 72, // "<<=" - BITWISE_OR = 73, // "|" - BITWISE_AND = 74, // "&" - BITWISE_EXOR = 75, // "^" - ADD = 76, // "+" - SUB = 77, // "-" - MULT = 78, // "*" - DIV = 79, // "/" - MOD = 80, // "%" - FILE = 81, // "file path" - NAME = 82, // "identifier" - STRING = 83, // "string literal" - ISTRING = 84, // "localized string" - FLOAT = 85, // "float" - INTEGER = 86, // "int" - ADD_ARRAY = 87, // ADD_ARRAY - THEN = 88, // THEN - NEG = 89, // NEG - ANIMREF = 90, // ANIMREF - PREINC = 91, // PREINC - PREDEC = 92, // PREDEC - POSTINC = 93, // POSTINC - POSTDEC = 94 // POSTDEC + BREAKPOINT = 3, // "breakpoint" + PROFBEGIN = 4, // "prof_begin" + PROFEND = 5, // "prof_end" + INCLUDE = 6, // "#include" + USINGTREE = 7, // "#using_animtree" + ANIMTREE = 8, // "#animtree" + ENDON = 9, // "endon" + NOTIFY = 10, // "notify" + WAIT = 11, // "wait" + WAITTILL = 12, // "waittill" + WAITTILLMATCH = 13, // "waittillmatch" + WAITTILLFRAMEEND = 14, // "waittillframeend" + WAITFRAME = 15, // "waitframe" + IF = 16, // "if" + ELSE = 17, // "else" + WHILE = 18, // "while" + FOR = 19, // "for" + FOREACH = 20, // "foreach" + IN = 21, // "in" + SWITCH = 22, // "switch" + CASE = 23, // "case" + DEFAULT = 24, // "default" + BREAK = 25, // "break" + CONTINUE = 26, // "continue" + RETURN = 27, // "return" + THREAD = 28, // "thread" + CHILDTHREAD = 29, // "childthread" + THISTHREAD = 30, // "thisthread" + CALL = 31, // "call" + TRUE = 32, // "true" + FALSE = 33, // "false" + UNDEFINED = 34, // "undefined" + SIZE = 35, // ".size" + GAME = 36, // "game" + SELF = 37, // "self" + ANIM = 38, // "anim" + LEVEL = 39, // "level" + LPAREN = 40, // "(" + RPAREN = 41, // ")" + LBRACE = 42, // "{" + RBRACE = 43, // "}" + LBRACKET = 44, // "[" + RBRACKET = 45, // "]" + COMMA = 46, // "," + DOT = 47, // "." + DOUBLECOLON = 48, // "::" + COLON = 49, // ":" + SEMICOLON = 50, // ";" + INCREMENT = 51, // "++" + DECREMENT = 52, // "--" + LSHIFT = 53, // "<<" + RSHIFT = 54, // ">>" + OR = 55, // "||" + AND = 56, // "&&" + EQUALITY = 57, // "==" + INEQUALITY = 58, // "!=" + LESS_EQUAL = 59, // "<=" + GREATER_EQUAL = 60, // ">=" + LESS = 61, // "<" + GREATER = 62, // ">" + NOT = 63, // "!" + COMPLEMENT = 64, // "~" + ASSIGN = 65, // "=" + ASSIGN_ADD = 66, // "+=" + ASSIGN_SUB = 67, // "-=" + ASSIGN_MULT = 68, // "*=" + ASSIGN_DIV = 69, // "/=" + ASSIGN_MOD = 70, // "%=" + ASSIGN_BITWISE_OR = 71, // "|=" + ASSIGN_BITWISE_AND = 72, // "&=" + ASSIGN_BITWISE_EXOR = 73, // "^=" + ASSIGN_RSHIFT = 74, // ">>=" + ASSIGN_LSHIFT = 75, // "<<=" + BITWISE_OR = 76, // "|" + BITWISE_AND = 77, // "&" + BITWISE_EXOR = 78, // "^" + ADD = 79, // "+" + SUB = 80, // "-" + MULT = 81, // "*" + DIV = 82, // "/" + MOD = 83, // "%" + FILE = 84, // "file path" + NAME = 85, // "identifier" + STRING = 86, // "string literal" + ISTRING = 87, // "localized string" + FLOAT = 88, // "float" + INTEGER = 89, // "int" + ADD_ARRAY = 90, // ADD_ARRAY + THEN = 91, // THEN + NEG = 92, // NEG + ANIMREF = 93, // ANIMREF + PREINC = 94, // PREINC + PREDEC = 95, // PREDEC + POSTINC = 96, // POSTINC + POSTDEC = 97 // POSTDEC }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; @@ -751,176 +763,182 @@ namespace xsk { namespace gsc { namespace s2 { { enum symbol_kind_type { - YYNTOKENS = 95, ///< Number of tokens. + YYNTOKENS = 98, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error S_YYUNDEF = 2, // "invalid token" - S_INCLUDE = 3, // "#include" - S_USINGTREE = 4, // "#using_animtree" - S_ANIMTREE = 5, // "#animtree" - S_ENDON = 6, // "endon" - S_NOTIFY = 7, // "notify" - S_WAIT = 8, // "wait" - S_WAITTILL = 9, // "waittill" - S_WAITTILLMATCH = 10, // "waittillmatch" - S_WAITTILLFRAMEEND = 11, // "waittillframeend" - S_WAITFRAME = 12, // "waitframe" - S_IF = 13, // "if" - S_ELSE = 14, // "else" - S_WHILE = 15, // "while" - S_FOR = 16, // "for" - S_FOREACH = 17, // "foreach" - S_IN = 18, // "in" - S_SWITCH = 19, // "switch" - S_CASE = 20, // "case" - S_DEFAULT = 21, // "default" - S_BREAK = 22, // "break" - S_CONTINUE = 23, // "continue" - S_RETURN = 24, // "return" - S_THREAD = 25, // "thread" - S_CHILDTHREAD = 26, // "childthread" - S_THISTHREAD = 27, // "thisthread" - S_CALL = 28, // "call" - S_TRUE = 29, // "true" - S_FALSE = 30, // "false" - S_UNDEFINED = 31, // "undefined" - S_SIZE = 32, // "size" - S_GAME = 33, // "game" - S_SELF = 34, // "self" - S_ANIM = 35, // "anim" - S_LEVEL = 36, // "level" - S_LPAREN = 37, // "(" - S_RPAREN = 38, // ")" - S_LBRACE = 39, // "{" - S_RBRACE = 40, // "}" - S_LBRACKET = 41, // "[" - S_RBRACKET = 42, // "]" - S_COMMA = 43, // "," - S_DOT = 44, // "." - S_DOUBLECOLON = 45, // "::" - S_COLON = 46, // ":" - S_SEMICOLON = 47, // ";" - S_INCREMENT = 48, // "++" - S_DECREMENT = 49, // "--" - S_LSHIFT = 50, // "<<" - S_RSHIFT = 51, // ">>" - S_OR = 52, // "||" - S_AND = 53, // "&&" - S_EQUALITY = 54, // "==" - S_INEQUALITY = 55, // "!=" - S_LESS_EQUAL = 56, // "<=" - S_GREATER_EQUAL = 57, // ">=" - S_LESS = 58, // "<" - S_GREATER = 59, // ">" - S_NOT = 60, // "!" - S_COMPLEMENT = 61, // "~" - S_ASSIGN = 62, // "=" - S_ASSIGN_ADD = 63, // "+=" - S_ASSIGN_SUB = 64, // "-=" - S_ASSIGN_MULT = 65, // "*=" - S_ASSIGN_DIV = 66, // "/=" - S_ASSIGN_MOD = 67, // "%=" - S_ASSIGN_BITWISE_OR = 68, // "|=" - S_ASSIGN_BITWISE_AND = 69, // "&=" - S_ASSIGN_BITWISE_EXOR = 70, // "^=" - S_ASSIGN_RSHIFT = 71, // ">>=" - S_ASSIGN_LSHIFT = 72, // "<<=" - S_BITWISE_OR = 73, // "|" - S_BITWISE_AND = 74, // "&" - S_BITWISE_EXOR = 75, // "^" - S_ADD = 76, // "+" - S_SUB = 77, // "-" - S_MULT = 78, // "*" - S_DIV = 79, // "/" - S_MOD = 80, // "%" - S_FILE = 81, // "file path" - S_NAME = 82, // "identifier" - S_STRING = 83, // "string literal" - S_ISTRING = 84, // "localized string" - S_FLOAT = 85, // "float" - S_INTEGER = 86, // "int" - S_ADD_ARRAY = 87, // ADD_ARRAY - S_THEN = 88, // THEN - S_NEG = 89, // NEG - S_ANIMREF = 90, // ANIMREF - S_PREINC = 91, // PREINC - S_PREDEC = 92, // PREDEC - S_POSTINC = 93, // POSTINC - S_POSTDEC = 94, // POSTDEC - S_YYACCEPT = 95, // $accept - S_root = 96, // root - S_program = 97, // program - S_include = 98, // include - S_define = 99, // define - S_usingtree = 100, // usingtree - S_constant = 101, // constant - S_thread = 102, // thread - S_parameters = 103, // parameters - S_stmt = 104, // stmt - S_stmt_block = 105, // stmt_block - S_stmt_list = 106, // stmt_list - S_stmt_call = 107, // stmt_call - S_stmt_assign = 108, // stmt_assign - S_stmt_endon = 109, // stmt_endon - S_stmt_notify = 110, // stmt_notify - S_stmt_wait = 111, // stmt_wait - S_stmt_waittill = 112, // stmt_waittill - S_stmt_waittillmatch = 113, // stmt_waittillmatch - S_stmt_waittillframeend = 114, // stmt_waittillframeend - S_stmt_waitframe = 115, // stmt_waitframe - S_stmt_if = 116, // stmt_if - S_stmt_ifelse = 117, // stmt_ifelse - S_stmt_while = 118, // stmt_while - S_stmt_for = 119, // stmt_for - S_stmt_foreach = 120, // stmt_foreach - S_stmt_switch = 121, // stmt_switch - S_stmt_case = 122, // stmt_case - S_stmt_default = 123, // stmt_default - S_stmt_break = 124, // stmt_break - S_stmt_continue = 125, // stmt_continue - S_stmt_return = 126, // stmt_return - S_for_stmt = 127, // for_stmt - S_for_expr = 128, // for_expr - S_expr = 129, // expr - S_expr_assign = 130, // expr_assign - S_expr_compare = 131, // expr_compare - S_expr_binary = 132, // expr_binary - S_expr_primitive = 133, // expr_primitive - S_expr_call = 134, // expr_call - S_expr_call_thread = 135, // expr_call_thread - S_expr_call_childthread = 136, // expr_call_childthread - S_expr_call_function = 137, // expr_call_function - S_expr_call_pointer = 138, // expr_call_pointer - S_expr_arguments = 139, // expr_arguments - S_expr_arguments_filled = 140, // expr_arguments_filled - S_expr_arguments_empty = 141, // expr_arguments_empty - S_expr_function = 142, // expr_function - S_expr_add_array = 143, // expr_add_array - S_expr_array = 144, // expr_array - S_expr_field = 145, // expr_field - S_expr_size = 146, // expr_size - S_object = 147, // object - S_thisthread = 148, // thisthread - S_empty_array = 149, // empty_array - S_undefined = 150, // undefined - S_game = 151, // game - S_self = 152, // self - S_anim = 153, // anim - S_level = 154, // level - S_animation = 155, // animation - S_animtree = 156, // animtree - S_name = 157, // name - S_file = 158, // file - S_istring = 159, // istring - S_string = 160, // string - S_vector = 161, // vector - S_neg_float = 162, // neg_float - S_neg_integer = 163, // neg_integer - S_float = 164, // float - S_integer = 165, // integer - S_false = 166, // false - S_true = 167 // true + S_BREAKPOINT = 3, // "breakpoint" + S_PROFBEGIN = 4, // "prof_begin" + S_PROFEND = 5, // "prof_end" + S_INCLUDE = 6, // "#include" + S_USINGTREE = 7, // "#using_animtree" + S_ANIMTREE = 8, // "#animtree" + S_ENDON = 9, // "endon" + S_NOTIFY = 10, // "notify" + S_WAIT = 11, // "wait" + S_WAITTILL = 12, // "waittill" + S_WAITTILLMATCH = 13, // "waittillmatch" + S_WAITTILLFRAMEEND = 14, // "waittillframeend" + S_WAITFRAME = 15, // "waitframe" + S_IF = 16, // "if" + S_ELSE = 17, // "else" + S_WHILE = 18, // "while" + S_FOR = 19, // "for" + S_FOREACH = 20, // "foreach" + S_IN = 21, // "in" + S_SWITCH = 22, // "switch" + S_CASE = 23, // "case" + S_DEFAULT = 24, // "default" + S_BREAK = 25, // "break" + S_CONTINUE = 26, // "continue" + S_RETURN = 27, // "return" + S_THREAD = 28, // "thread" + S_CHILDTHREAD = 29, // "childthread" + S_THISTHREAD = 30, // "thisthread" + S_CALL = 31, // "call" + S_TRUE = 32, // "true" + S_FALSE = 33, // "false" + S_UNDEFINED = 34, // "undefined" + S_SIZE = 35, // ".size" + S_GAME = 36, // "game" + S_SELF = 37, // "self" + S_ANIM = 38, // "anim" + S_LEVEL = 39, // "level" + S_LPAREN = 40, // "(" + S_RPAREN = 41, // ")" + S_LBRACE = 42, // "{" + S_RBRACE = 43, // "}" + S_LBRACKET = 44, // "[" + S_RBRACKET = 45, // "]" + S_COMMA = 46, // "," + S_DOT = 47, // "." + S_DOUBLECOLON = 48, // "::" + S_COLON = 49, // ":" + S_SEMICOLON = 50, // ";" + S_INCREMENT = 51, // "++" + S_DECREMENT = 52, // "--" + S_LSHIFT = 53, // "<<" + S_RSHIFT = 54, // ">>" + S_OR = 55, // "||" + S_AND = 56, // "&&" + S_EQUALITY = 57, // "==" + S_INEQUALITY = 58, // "!=" + S_LESS_EQUAL = 59, // "<=" + S_GREATER_EQUAL = 60, // ">=" + S_LESS = 61, // "<" + S_GREATER = 62, // ">" + S_NOT = 63, // "!" + S_COMPLEMENT = 64, // "~" + S_ASSIGN = 65, // "=" + S_ASSIGN_ADD = 66, // "+=" + S_ASSIGN_SUB = 67, // "-=" + S_ASSIGN_MULT = 68, // "*=" + S_ASSIGN_DIV = 69, // "/=" + S_ASSIGN_MOD = 70, // "%=" + S_ASSIGN_BITWISE_OR = 71, // "|=" + S_ASSIGN_BITWISE_AND = 72, // "&=" + S_ASSIGN_BITWISE_EXOR = 73, // "^=" + S_ASSIGN_RSHIFT = 74, // ">>=" + S_ASSIGN_LSHIFT = 75, // "<<=" + S_BITWISE_OR = 76, // "|" + S_BITWISE_AND = 77, // "&" + S_BITWISE_EXOR = 78, // "^" + S_ADD = 79, // "+" + S_SUB = 80, // "-" + S_MULT = 81, // "*" + S_DIV = 82, // "/" + S_MOD = 83, // "%" + S_FILE = 84, // "file path" + S_NAME = 85, // "identifier" + S_STRING = 86, // "string literal" + S_ISTRING = 87, // "localized string" + S_FLOAT = 88, // "float" + S_INTEGER = 89, // "int" + S_ADD_ARRAY = 90, // ADD_ARRAY + S_THEN = 91, // THEN + S_NEG = 92, // NEG + S_ANIMREF = 93, // ANIMREF + S_PREINC = 94, // PREINC + S_PREDEC = 95, // PREDEC + S_POSTINC = 96, // POSTINC + S_POSTDEC = 97, // POSTDEC + S_YYACCEPT = 98, // $accept + S_root = 99, // root + S_program = 100, // program + S_include = 101, // include + S_define = 102, // define + S_usingtree = 103, // usingtree + S_constant = 104, // constant + S_thread = 105, // thread + S_parameters = 106, // parameters + S_stmt = 107, // stmt + S_stmt_block = 108, // stmt_block + S_stmt_list = 109, // stmt_list + S_stmt_call = 110, // stmt_call + S_stmt_assign = 111, // stmt_assign + S_stmt_endon = 112, // stmt_endon + S_stmt_notify = 113, // stmt_notify + S_stmt_wait = 114, // stmt_wait + S_stmt_waittill = 115, // stmt_waittill + S_stmt_waittillmatch = 116, // stmt_waittillmatch + S_stmt_waittillframeend = 117, // stmt_waittillframeend + S_stmt_waitframe = 118, // stmt_waitframe + S_stmt_if = 119, // stmt_if + S_stmt_ifelse = 120, // stmt_ifelse + S_stmt_while = 121, // stmt_while + S_stmt_for = 122, // stmt_for + S_stmt_foreach = 123, // stmt_foreach + S_stmt_switch = 124, // stmt_switch + S_stmt_case = 125, // stmt_case + S_stmt_default = 126, // stmt_default + S_stmt_break = 127, // stmt_break + S_stmt_continue = 128, // stmt_continue + S_stmt_return = 129, // stmt_return + S_stmt_breakpoint = 130, // stmt_breakpoint + S_stmt_prof_begin = 131, // stmt_prof_begin + S_stmt_prof_end = 132, // stmt_prof_end + S_for_stmt = 133, // for_stmt + S_for_expr = 134, // for_expr + S_expr = 135, // expr + S_expr_assign = 136, // expr_assign + S_expr_compare = 137, // expr_compare + S_expr_binary = 138, // expr_binary + S_expr_primitive = 139, // expr_primitive + S_expr_call = 140, // expr_call + S_expr_call_thread = 141, // expr_call_thread + S_expr_call_childthread = 142, // expr_call_childthread + S_expr_call_function = 143, // expr_call_function + S_expr_call_pointer = 144, // expr_call_pointer + S_expr_arguments = 145, // expr_arguments + S_expr_arguments_filled = 146, // expr_arguments_filled + S_expr_arguments_empty = 147, // expr_arguments_empty + S_expr_function = 148, // expr_function + S_expr_add_array = 149, // expr_add_array + S_expr_array = 150, // expr_array + S_expr_field = 151, // expr_field + S_expr_size = 152, // expr_size + S_object = 153, // object + S_thisthread = 154, // thisthread + S_empty_array = 155, // empty_array + S_undefined = 156, // undefined + S_game = 157, // game + S_self = 158, // self + S_anim = 159, // anim + S_level = 160, // level + S_animation = 161, // animation + S_animtree = 162, // animtree + S_name = 163, // name + S_file = 164, // file + S_istring = 165, // istring + S_string = 166, // string + S_vector = 167, // vector + S_neg_float = 168, // neg_float + S_neg_integer = 169, // neg_integer + S_float = 170, // float + S_integer = 171, // integer + S_false = 172, // false + S_true = 173 // true }; }; @@ -1086,6 +1104,10 @@ namespace xsk { namespace gsc { namespace s2 { value.move< stmt_break_ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.move< stmt_breakpoint_ptr > (std::move (that.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.move< stmt_call_ptr > (std::move (that.value)); break; @@ -1131,6 +1153,14 @@ namespace xsk { namespace gsc { namespace s2 { value.move< stmt_notify_ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.move< stmt_prof_begin_ptr > (std::move (that.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.move< stmt_prof_end_ptr > (std::move (that.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.move< stmt_ptr > (std::move (that.value)); @@ -1597,6 +1627,20 @@ namespace xsk { namespace gsc { namespace s2 { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, stmt_breakpoint_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_breakpoint_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_call_ptr&& v, location_type&& l) : Base (t) @@ -1751,6 +1795,34 @@ namespace xsk { namespace gsc { namespace s2 { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, stmt_prof_begin_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_prof_begin_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_prof_end_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_prof_end_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_ptr&& v, location_type&& l) : Base (t) @@ -2126,6 +2198,10 @@ switch (yykind) value.template destroy< stmt_break_ptr > (); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.template destroy< stmt_breakpoint_ptr > (); + break; + case symbol_kind::S_stmt_call: // stmt_call value.template destroy< stmt_call_ptr > (); break; @@ -2171,6 +2247,14 @@ switch (yykind) value.template destroy< stmt_notify_ptr > (); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.template destroy< stmt_prof_begin_ptr > (); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.template destroy< stmt_prof_end_ptr > (); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.template destroy< stmt_ptr > (); @@ -2437,6 +2521,51 @@ switch (yykind) return symbol_type (token::S2UNDEF, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_BREAKPOINT (location_type l) + { + return symbol_type (token::BREAKPOINT, std::move (l)); + } +#else + static + symbol_type + make_BREAKPOINT (const location_type& l) + { + return symbol_type (token::BREAKPOINT, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_PROFBEGIN (location_type l) + { + return symbol_type (token::PROFBEGIN, std::move (l)); + } +#else + static + symbol_type + make_PROFBEGIN (const location_type& l) + { + return symbol_type (token::PROFBEGIN, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_PROFEND (location_type l) + { + return symbol_type (token::PROFEND, std::move (l)); + } +#else + static + symbol_type + make_PROFEND (const location_type& l) + { + return symbol_type (token::PROFEND, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4161,8 +4290,8 @@ switch (yykind) /// Constants. enum { - yylast_ = 1581, ///< Last index in yytable_. - yynnts_ = 73, ///< Number of nonterminal symbols. + yylast_ = 1646, ///< Last index in yytable_. + yynnts_ = 76, ///< Number of nonterminal symbols. yyfinal_ = 15 ///< Termination state number. }; @@ -4319,6 +4448,10 @@ switch (yykind) value.copy< stmt_break_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.copy< stmt_breakpoint_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.copy< stmt_call_ptr > (YY_MOVE (that.value)); break; @@ -4364,6 +4497,14 @@ switch (yykind) value.copy< stmt_notify_ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.copy< stmt_prof_begin_ptr > (YY_MOVE (that.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.copy< stmt_prof_end_ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.copy< stmt_ptr > (YY_MOVE (that.value)); @@ -4587,6 +4728,10 @@ switch (yykind) value.move< stmt_break_ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_breakpoint: // stmt_breakpoint + value.move< stmt_breakpoint_ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_stmt_call: // stmt_call value.move< stmt_call_ptr > (YY_MOVE (s.value)); break; @@ -4632,6 +4777,14 @@ switch (yykind) value.move< stmt_notify_ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_prof_begin: // stmt_prof_begin + value.move< stmt_prof_begin_ptr > (YY_MOVE (s.value)); + break; + + case symbol_kind::S_stmt_prof_end: // stmt_prof_end + value.move< stmt_prof_end_ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_stmt: // stmt case symbol_kind::S_for_stmt: // for_stmt value.move< stmt_ptr > (YY_MOVE (s.value)); @@ -4760,7 +4913,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::s2 -#line 4764 "parser.hpp" +#line 4917 "parser.hpp" diff --git a/src/utils/xsk/gsc/nodetree.hpp b/src/utils/xsk/gsc/nodetree.hpp index fc3b805b..c97438c4 100644 --- a/src/utils/xsk/gsc/nodetree.hpp +++ b/src/utils/xsk/gsc/nodetree.hpp @@ -93,6 +93,9 @@ enum class node_t stmt_break, stmt_continue, stmt_return, + stmt_breakpoint, + stmt_prof_begin, + stmt_prof_end, parameters, thread, constant, @@ -201,6 +204,9 @@ struct node_stmt_default; struct node_stmt_break; struct node_stmt_continue; struct node_stmt_return; +struct node_stmt_breakpoint; +struct node_stmt_prof_begin; +struct node_stmt_prof_end; struct node_parameters; struct node_thread; struct node_constant; @@ -305,6 +311,9 @@ using stmt_default_ptr = std::unique_ptr; using stmt_break_ptr = std::unique_ptr; using stmt_continue_ptr = std::unique_ptr; using stmt_return_ptr = std::unique_ptr; +using stmt_breakpoint_ptr = std::unique_ptr; +using stmt_prof_begin_ptr = std::unique_ptr; +using stmt_prof_end_ptr = std::unique_ptr; using parameters_ptr = std::unique_ptr; using thread_ptr = std::unique_ptr; using constant_ptr = std::unique_ptr; @@ -447,6 +456,9 @@ union stmt_ptr stmt_break_ptr as_break; stmt_continue_ptr as_continue; stmt_return_ptr as_return; + stmt_breakpoint_ptr as_breakpoint; + stmt_prof_begin_ptr as_prof_begin; + stmt_prof_end_ptr as_prof_end; asm_loc_ptr as_loc; asm_jump_cond_ptr as_cond; asm_jump_ptr as_jump; @@ -2208,6 +2220,52 @@ struct node_stmt_return : public node }; }; +struct node_stmt_breakpoint : public node +{ + node_stmt_breakpoint() + : node(node_t::stmt_breakpoint) {} + + node_stmt_breakpoint(const location& loc) + : node(node_t::stmt_breakpoint, loc) {} + + auto print() -> std::string override + { + return "breakpoint;"; + }; +}; + +struct node_stmt_prof_begin : public node +{ + expr_arguments_ptr args; + + node_stmt_prof_begin(expr_arguments_ptr args) + : node(node_t::stmt_prof_begin), args(std::move(args)) {} + + node_stmt_prof_begin(const location& loc, expr_arguments_ptr args) + : node(node_t::stmt_prof_begin, loc), args(std::move(args)) {} + + auto print() -> std::string override + { + return "prof_begin(" + args->print() + ");"; + }; +}; + +struct node_stmt_prof_end : public node +{ + expr_arguments_ptr args; + + node_stmt_prof_end(expr_arguments_ptr args) + : node(node_t::stmt_prof_end), args(std::move(args)) {} + + node_stmt_prof_end(const location& loc, expr_arguments_ptr args) + : node(node_t::stmt_prof_end, loc), args(std::move(args)) {} + + auto print() -> std::string override + { + return "prof_end(" + args->print() + ");"; + }; +}; + struct node_parameters : public node { std::vector list;